Лет 10 назад мне нужна была какая-то система, чтобы вести блог о web-разработке и я использовал сильно хакнутый Drupal, который со временем стало невозможно обновить из-за груды костылей и постоянной нужде рыться под капотом после каждого update.
За 10 лет накопилось порядка 300 статей по верстке и front-end программированию, а также куча полезных сниппетов кода, которые я в последующем использовал для создания RevolveR Contents Management Framework на фирменной архитектуре KMV(Kernel<-Model<-View).
![Kernel Model View архитектура](https://revolvercmf.ru/public/uploads/KMV.png)
С Drupal была стянута идея использовать узлы(nodes) и я применил весь комплект опыта оставшегося от хакинга ядра решившись начать писать свою систему. Сейчас RevolveR уже достиг версии 1.9.4.9 и из его отличительных особенностей можно выделить подход к программированию.
Все создано на чистом PHP SPL и не использована даже jQuery для frontend(ее роль выполняет созданный на ES7 движок front-end с поддержкой всех функций, которые могут пригодится при разработке; от поддержки CSS3 анимаций до автоматических HTML форм на fetch).
![RevolveR CMF setup](https://habrastorage.org/r/w780q1/webt/ds/y9/5d/dsy95d2d87rgvd6v6xuo5hzyovi.jpeg)
Теперь Windows использует Chromium для встроенного в систему Fetch и мне не пришлось использовать транспиляторы для реализации framework. Из новенького, что мешало сделать нормальный релиз была не полная поддержка CSS4 variables, которые у меня в паре с View Port Unit формирует хитрый в 10 строчек кода алгоритм для масштабирования HTML элементов сайта под мобильные устройства, а также по примеру приложения может получить, но не отображает в строке URL GET запросы.
![View Port Units ориентированный интерфейс](https://revolvercmf.ru/public/uploads/scale-factor-design.png)
Средствами JavaScript определяется браузер пользователя и формируются scale factor являющийся множителем, чтобы отмасштабировать ссылки, кнопки, параграфы и другие элементы требующие увеличенного размера для смартфонов, чтобы пользователю было удобнее.
Я подошел к реализации front-end с той же стороны, что и подходят разработчики приложений операционной системы: никаких media queries не используется вообще, а сайты выглядят крупнее или мельче в зависимости от размера окна браузера без всяких прокруток.
Создана поддержка инсталлятора для хостинга(можно использовать Open Server минимальный, но с включенным модулем PHP Tidy). Поскольку это не совсем набор классов и futures для создания и нужды много программировать, CMF из коробки предлагает поддержку кабинета пользователя и ролей групп пользователей.
Contents Management Framework подразумевает также поддержку создания пользователем страниц и категоризация их включена в функционал. Фреймворк многоязычный (сейчас два языка интерфейса доступны Russian & English).
Также доступны модули mini Wiki и блогов. Для материалов новостей и блога доступно голосование типа 5 звезд. Есть простой но лаконичный форум.
С помощью content editble HTML 5 реализована быстрая wysiwyg правка статей и комментариев, а динамический предпросмотр позволяет видеть как будет выглядеть опубликованный материал точь в точь при наборе текста и верстки.
Реализована простая, но очень надежная 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 CMF](https://revolvercmf.ru/public/bfiles/RevolveR-night-mode.jpg)
Тема оформления пока одна, но она оснащена примерно 50 переменными CSS, которые позволяют изменить почти весь дизайн. Также реализовано ночное и дневное отображение интерфейса.
![Дневной дизайн RevolveR CMF](https://habrastorage.org/r/w780q1/webt/vc/ke/po/vckepomzeurbmfsfqr7rxqyysmy.jpeg)
В системе есть все для SEO: автоматический ping при добавлении материалов, карта сайта в XML, поддержка Microdata HTML 5 и RSS.
Встроенная система статистики учитывает посещения гостей и авторизованных пользователей показывая время пребывания и внутренние переходы. Также статистика отображает переходы по внешним ссылкам с whois и из поисковых систем.
Поскольку весь код писался на низкоуровневых функциях без сторонних библиотек и великолепно оптимизирован с участием кэша трех уровней:
Мне удалось достичь просто отличных цифр оптимизации: все ядром с шаблонами выполняется за доли секунды при этом тратиться памяти на сайт из 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.
За 10 лет накопилось порядка 300 статей по верстке и front-end программированию, а также куча полезных сниппетов кода, которые я в последующем использовал для создания RevolveR Contents Management Framework на фирменной архитектуре KMV(Kernel<-Model<-View).
![Kernel Model View архитектура](https://revolvercmf.ru/public/uploads/KMV.png)
С Drupal была стянута идея использовать узлы(nodes) и я применил весь комплект опыта оставшегося от хакинга ядра решившись начать писать свою систему. Сейчас RevolveR уже достиг версии 1.9.4.9 и из его отличительных особенностей можно выделить подход к программированию.
Все создано на чистом PHP SPL и не использована даже jQuery для frontend(ее роль выполняет созданный на ES7 движок front-end с поддержкой всех функций, которые могут пригодится при разработке; от поддержки CSS3 анимаций до автоматических HTML форм на fetch).
![RevolveR CMF setup](https://habrastorage.org/webt/ds/y9/5d/dsy95d2d87rgvd6v6xuo5hzyovi.jpeg)
Теперь Windows использует Chromium для встроенного в систему Fetch и мне не пришлось использовать транспиляторы для реализации framework. Из новенького, что мешало сделать нормальный релиз была не полная поддержка CSS4 variables, которые у меня в паре с View Port Unit формирует хитрый в 10 строчек кода алгоритм для масштабирования HTML элементов сайта под мобильные устройства, а также по примеру приложения может получить, но не отображает в строке URL GET запросы.
![View Port Units ориентированный интерфейс](https://revolvercmf.ru/public/uploads/scale-factor-design.png)
Средствами 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 реализована быстрая wysiwyg правка статей и комментариев, а динамический предпросмотр позволяет видеть как будет выглядеть опубликованный материал точь в точь при наборе текста и верстки.
Реализована простая, но очень надежная 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 CMF](https://revolvercmf.ru/public/bfiles/RevolveR-night-mode.jpg)
Тема оформления пока одна, но она оснащена примерно 50 переменными CSS, которые позволяют изменить почти весь дизайн. Также реализовано ночное и дневное отображение интерфейса.
![Дневной дизайн RevolveR CMF](https://habrastorage.org/webt/vc/ke/po/vckepomzeurbmfsfqr7rxqyysmy.jpeg)
В системе есть все для SEO: автоматический ping при добавлении материалов, карта сайта в XML, поддержка Microdata HTML 5 и RSS.
Встроенная система статистики учитывает посещения гостей и авторизованных пользователей показывая время пребывания и внутренние переходы. Также статистика отображает переходы по внешним ссылкам с whois и из поисковых систем.
Оптимизация
Поскольку весь код писался на низкоуровневых функциях без сторонних библиотек и великолепно оптимизирован с участием кэша трех уровней:
- Сжатые CSS и JavaScript;
- Кэш шаблонизатора (свой шаблонизатор на Cache Conclude);
- Кэш запросов базы данных (если 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.