[Open source] RevolveR Contents Management Framework v.1.9.1

Автор Сообщение
news_bot ®

Стаж: 6 лет 9 месяцев
Сообщений: 27286

Создавать темы news_bot ® написал(а)
22-Авг-2020 12:30

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

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

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

С помощью JS я определяю браузер пользователя и формирую scale factor являющийся множителем, чтобы отмасштабировать ссылки, кнопки, параграфы и другие элементы требующие увеличенного размера для смартфонов, чтобы пользователю было удобнее. Я подошел к реализации Front-end с той же стороны, что и подходят разработчики приложений операционной системы: никаких Media Queries не используется вообще, а сайты выглядят крупнее или мельче в зависимости от размера окна браузера без всяких прокруток.
Я еще полирую SPAx(Single Pages Application eXtended) интерфейс на VPU и могу сказать, что сэкономил себе два три дня тестирования верстки для мобильных устройств за счет scale-factor, который работает через CSS calc.
В идеале хочется получить возможность автоматического выпуска APK приложения использующего Web View для обращения к любому домену, где установлен фреймворк так, как SPAx интерфейс — это уже и есть фактически приложение для больших и маленьких экранов.
Что есть в системе сейчас?
Создана поддержка инсталлятора для хостинга (можно использовать Open Server минимальный). Поскольку это не совсем набор классов и futures для создания и нужды много программировать, CMF из коробки предлагает поддержку кабинета пользователя и ролей групп пользователей.

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

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

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

Все формы и элементы навигации сайтов на RevolveR CMF работают в автоматическом Fetch режиме из последних релизов ECMA Script. API подразумевает удобный сборщик HTML форм и центральный валидатор данных, который связан с типом input указанном в HTML формы. Загружаемые пользователем файлы проходят на UNIX системах дополнительную проверку маски через xxd.
Вообще, если в RevolveR добавить комплекс поискового оснащения(переход по ссылкам и запись контента в базу данных) можно написать за пару дней простенький поисковик(все функции парсинга и поиска по БД уже реализованы). Нужно только указать модели в каких таблицах и каких столбцах осуществлять поиск по MySQL RegExp или тупо по статических кэшам запросов БД чтобы не грузить сервер сильно(сниппет сделан по мотивам поисковой выдачи Google), также вся система поддерживает BigInt данные.

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

Оптимизация
Поскольку весь код писался на низкоуровневых функциях без сторонних библиотек и великолепно оптимизирован с участием кэша трех уровней:
  • Сжатые CSS и JavaScript;
  • Кэш шаблонизатора (свой шаблонизатор на Cache Conclude);
  • Кэш запросов базы данных (если RevolveR не пишет статистику посетителей, то framework работает в режиме partial Kernel run и к базе для анонимного посетителя происходит 0 запросов).

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

Что в заключение?
Я написал пока только одно расширение для системы — модуль обратной связи, который прописывается в системные URL и позволяет отправлять feedback гостям с вложениями файлов, но планирую также создать модули форума и интернет магазина.

Если не учитывать базы данных IP адресов, которые используются для ведения статистики посещаемости сайта от Max Mind(БД весят 60Mb), то весь код весит 1.93 мегабайта(сравните с Drupal или Wordpress при схожем функционале). Писать на strict PHP SPL для меня было как вызов по супероптимизации кода.

Еще 2 мегабайта и я создам модули каталогизации страниц на подобие Wikipedia, форум и модуль интернет магазина.
Не спрашивайте почему я не использую composer и объекты в качестве сущностей для доставки данных к front-end. Я не могу объяснить мою ненависть к ООП, когда объекты жрут в 4 раза больше памяти и процессора, чем ассоциативные массивы. Возможно, они появятся позже в более высокоуровневых классах, а пока мой код выполняется за тысячные доли секунды даже на самом дешевом Linux хостинге и мне это поднимает самооценку.

Скорее всего данная система превратиться в CRM для магазина дверей и окон c модулем интернет магазина, где я работаю (уж очень мне не нравится 1C).
Прощу пощупать мою систему и высказаться по поводу программирования для себя, Open Source, простых людей людей, который нужен интерфейс и продвинутым, которые захотят программировать сами.
Стоит ли продолжать писать CRM на базе RevolveR CMF и сколько мне понадобится разработчиков через 5 лет (сейчас все тяну один)?
Ссылка репозитория на GitHub.
Для установки просто распакуйте последний release на хостинг или localhost и заполните данные админа, а также подключения к базе данных. При использовании Open Server достаточно создать базу данных с именем revolver и ввести в форму инсталлятора данные аккаунта администратора. RevolveR CMF поддерживает только PHP 7.4 и выше.
Будущие обновления до версии 2.0 подразумевают ручной alter таблиц базы данных если структуры базы данных будет расширена каким-то опциями (Чекбокс dashboard -> performance -> auto alter DB tables).
В версии 2.0 планируются визуальный конструктор структуры БД c созданием пользовательских HTML форм, которые будут автоматически связаны с моделями (там будет больше объектов для использования в шаблонизаторе), а пока применен свой паттерн псевдо-объектов на ассоциативных массивах и генераторах для получения максимальной производительности.
Об обновлениях можно будет узнать в группе Facebook так как пока до версии 2.0 самостоятельный update через админку не доступен (в 2.0 будет также вмонтирована документация по созданию своих расширений и использованию API моделей в админку).
===========
Источник:
habr.com
===========

Похожие новости: Теги для поиска: #_open_source, #_php, #_ecmascript_7, #_framework, #_view_port_units, #_open_source
Профиль  ЛС 
Показать сообщения:     

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

Текущее время: 23-Ноя 01:42
Часовой пояс: UTC + 5