|
6 / 9 / 2
Регистрация: 26.07.2021
Сообщений: 48
|
|
Wrong MVC - система для быстрой web разработки и запуска сайтов31.03.2023, 05:34. Показов 6134. Ответов 76
Доброго времени суток коллеги!
Приглашаю тестировать, использовать, оставлять комментарии, идеи, пожелания. Качественный open source проект сделанный с любовью! Wrong MVC - это среда для WEB разработки, включающая в себя множество необходимых компонентов, систематизированных в единое пространство и иерархию. Это тот фундамент, позволяющий очень гибко создавать уникальные системы с функционалом действий и страниц, назначенным определенным группам пользователей. Это система для создания на её базе любых WEB проектов, от простейших лендингов в несколько страниц, до сложнейших с многоуровневым разграничением прав доступов и пользовательского функционала, групповыми политиками доступов к моделям функционала, готовым умным uri роутингом, собственной cron реализацией, визуализацией всех моделей и их удобным управлением. Это не Laravel в плане концепции MVC как таковых, и это не Wordpress в плане концепции сайтовых движков, это WRONG MVC! Система рассчитана на использование опытными Full-stack разработчиками, здесь реализованы все базовые нюансы, которые существенно упрощают и систематизируют разработку. Разобравшись в логике работы данной системы и её возможностях, вы гарантированно и навсегда забудете про php фреймворки или движки! Потому что сборка и реализация любых сложных проектов превратится в простое удовольствие. ПО "Wrong MVC" имеет открытый исходный код и распространяется под лицензией свободного ПО - Apache License 2.0. https://wrong-mvc.com/ - сайт проекта, с подробной документацией и описанием https://github.com/avtobys/wrong-mvc - проект на гитхаб https://gitlab.com/avtobys/wrong-mvc - проект на гитлаб Из того что "под капотом": - Визуально понятная система моделей и контроллеров - Неограниченная вложенность уровней доступа - Автоматический роутинг страниц и запросов - Настраиваемые шаблоны страниц и действий - Конструктор триггеров действий - Встроенный редактор кода с подсветкой и горячими клавишами - Управление группами доступа, пользователями и их функционалом - Умные стеки PHP - JavaScript кода - Модальные окна запрашиваемые автоматически из API по AJAX - Умная подгрузка js библиотек по мере их применения - API действий, выборок и модальных окон - X-Auth-Token авторизация в API - Копирование, экспорт, импорт моделей - Логгирование любых действий - Встроенные CRON задачи с выполнением от имени пользователей - Готовый gulp комбайн для вёрсток и кастомизации - Создание простых сайтов в пару кликов из готовых шаблонов - Автоматическая защита всех форм от CSRF - Бессрочная авторизация по COOKIE с криптованием UID - Hcaptcha по лимиту Brute force попыток - Oauth google + yandex авторизации - Backend: PDO MySQL + PHP - Frontend: Bootstrap v4.6.1 + JQuery - Установка в пару кликов
3
|
|
| 31.03.2023, 05:34 | |
|
Ответы с готовыми решениями:
76
Почему для активной разработки сайтов не используют C# под Web Объясните новичку в выборе среды разработки (C/c++) web-сайтов под linux IDE для быстрой разработки |
| 04.04.2023, 15:46 | ||||
![]() И потом, а у вас эти ссылки откуда берутся? Все равно вам ее надо где то взять и где то хранить. Защита от пропуска это вообще другая задача и реализуется вне зависимости от того как запускается скрипт, одинаково.
0
|
||||
|
6 / 9 / 2
Регистрация: 26.07.2021
Сообщений: 48
|
|||||||||||||||
| 04.04.2023, 16:52 [ТС] | |||||||||||||||
0
|
|||||||||||||||
| 04.04.2023, 17:12 | |||||
|
2. Это регулируется размером пачки. Хотите по одном запросу за раз обрабатываете. Был у меня проект где опрашивали биржи. штук 20 примерно, изначально хотели вообще там раз в две секунды, потом поняли что это нафиг ни кому не надо. Ну а если потребуется, это уже надо делать в рамках отдельногомикросервиса. И опять же повторюсь. системный крон штука более надежная чем како то решение. Она выврененная и проверенная. Если будет падение - то только по причине самого запускаемого скрипта, у тут опять не важно как вы его запустили, он у вас упадет и там и там. Но все же давайте представим Вот есть 100500 страниц как у вас по шагам они будут обрабатываться, и в чем отличие от моего способа? Откуда вы будете брать эти страницы? Как будете понимать что другой процесс уже взял конкретную страницу? Как будете понимать что другой процесс уже обрабатывает конкретную страницу? Как будете понимать что другой процесс уже успешно обработал конкретную страницу? К тому же вы то про реалтайм то три дня. ![]() Т.е. "завтра пришли" это означает что я посмотрю нет ли задач которые были запущенны вчера но не завершились. Т.е. у вас тот N равен суткам?
0
|
|||||
|
6 / 9 / 2
Регистрация: 26.07.2021
Сообщений: 48
|
|||||||
| 04.04.2023, 18:12 [ТС] | |||||||
|
Вот к примеру стек для парсинга https://github.com/avtobys/par... .class.php тут да, по вашей логике всё, пишется в файл стека, допустим ссылки парсинга(или просто id неважно что, для стека это ключи с таймаутами), им задается таймаут, в течении которого другой поток не может взять ту же ссылку, а должен взять "свободную", они удаляются по обработке, добавляются, можно обновлять таймауты и т.п. Это работа на уровне конкретного потока, это программный уровень. А запуск потоков и контроль за их количеством происходит независимо от самих потоков https://github.com/avtobys/par... r/init.php это уже уровень другой - системный как уже сказал.
0
|
|||||||
| 04.04.2023, 18:32 | ||||||
|
жостко.... ладно, будем считать что это фича такая инструмента ![]() Но как ваш инструмент распределит мои потоки, как каждый поток в отдельности будет знать что делать? Оба варианта делают одно и то же. Просто у вас из коробки заложено дополнительная кухня.... что ж ок. пусть так.ладно. короче будем считать что это специфичная для вашего проекта штука. ![]() Только мне кажется, если бы у меня на проекте было это узким горлышком, я бы уже на сях написал многопоточное приложение . Или, как минимум, отдельным сервисом. На практике, подозреваю это не самая распространенная проблема в веб разработке Просто есть ли смысл в 100 потоков..... Когда ядер 2 - 16
0
|
||||||
|
6 / 9 / 2
Регистрация: 26.07.2021
Сообщений: 48
|
|||||||
| 04.04.2023, 19:44 [ТС] | |||||||
|
Здесь тоже самое, только плюс есть контроль за нагрузкой, количеством запускаемых потоков задач, их цикличность - т.е. поддержка в постоянном автозапуске.
0
|
|||||||
| 04.04.2023, 20:07 | |||
|
Получается это вы создаете монолит для разного рода задач, в то время как многие стремятся делить проекты на микросервисы Странное несколько объединение. Парсинг это вообще отдельная задача и мешать ее в одном флаконе с инструментом для создания сайтов..... На мой взгляд не очень хорошая идея.В общем надо пока подождать, чтобы смотреть. Пока такое ощущение, что что бы создать сайт надо брать лару или симфу, кастрировать их, чтобы роутинг и разграничение прав ваши работали. ![]()
0
|
|||
|
6 / 9 / 2
Регистрация: 26.07.2021
Сообщений: 48
|
|||
| 04.04.2023, 22:09 [ТС] | |||
|
Я именно о том, что 100 "потоков"(процессов) того же парсинга на 1 ядре, будет выполняться быстрее чем 1 "поток" этой же программы и вполне себе шустро, конечно. И в понимании многопоточности именно программы-процесса она будет многопоточной и вполне себе шустрой, и можно ещё запустить программы какие то, ждать не придется. Можете проверить, процесс sleep 100 в терминал и ваша 1 ядерная система не замрет на 100 секунд, можно ещё запускать процессы и пользоваться ею, вы не заняли ядро этим "потоком". php и всё остальное - такие же процессы, только посложнее. А в понимании ядра, оно физически естественно однопоточное. Если подробнее уже прям физически - внутреннее устройство линукс Брайан Уорд, там хорошо про потоки, ядра, процессы. Добавлено через 25 минут просто в вашем понимании ваша программа-"поток" прям выполняет что то непрерывно и всегда чем то полностью загружена, но по факту у неё куча свободного времени, которое ядро распределяет между другими процессами. А вот если все ядра загружены полностью на 100% т.е. load average значение столько же сколько и ядер в системе, вот тогда уже потоки именно системные становятся в очередь и начинает подтормаживать системка. Вот для этого то и пригодится контроль за нагрузкой и он там тоже есть в отличии от системного крона.
0
|
|||
|
6 / 9 / 2
Регистрация: 26.07.2021
Сообщений: 48
|
||
| 04.04.2023, 23:14 [ТС] | ||
|
0
|
||
| 04.04.2023, 23:22 | |
|
А по существу, все же сделайте в первую очередь возможность обнвлений и ведения своего проекта отдельно от вашего кода. Чтобы ваш git репозиторий не мешал, и при обновлении не требовалось сайт закрывать для посетителей, ну и быстрый курс. Для примера: делаем новостной сайт, для этого.... и по полной программе. как создать свою сущность "новость", как ее в базе хранить как доставать. Чтобы действительно можно было пробовать. Да и чтоб тестовые эти все данные можно было кнопкой удалить из системы.
0
|
|
| 07.04.2023, 10:08 | ||||||
|
Было время - пробежался по коду. (все конечно просто личное мнение)
Еще очень обращает внимание плохая читаемость структуры. Т.е. ведь и распределение по каталогам, название классов и методов. Такое ощущение что каталоги лежащие на первом уровне system вполне себе еще можно распределить по группам/по фичам. Кроме того вот увидел я в коде обращение к классу Wrong\Html\Get у вас написано , что инструмент для опытных. у опытных get наверняка ассоциируется с геттером, а тут аж целый класс геттер. Ну ок наверняка он возвращает html по каким то параметрам. Смотрим внутрь. style - минифицирует при необходимости стили и возвращает их обернутыми в style. Во первых две задачи: и минифицирует и затаскивает содержимое файла в html.... А если я решил подтянуть аяксом какой то файл стилей мне уже не судьба его минифицировать? А если я не хочу чтоб он в html втягивался? А если у меня это дев сервер и мне нужен мап файл (а вы убираете упоминание о нем) безальтернативно? Так же возникает вопрос зачем менять время доступа исходного файла? Кстати, логично проверять не только наличие файла min, но сравнивать время правки исходника и минифицированного. Если исходник новее - значит надо генерировать минимальный. Со script та же история. Hideout::add_assets_path - то же не состыковка имени класса, и то что он может делать. Hideout::hide - тут сама идея странновата. т.е. на стадии создания шаблона я расставляю блокам data-target, dtat-action. А если мне блок не нужен для нескольких вариантов data-target, data-action? При этом html будет на клиенте всегда, т.е. он может видеть то, что не хотелось бы ему показывать. Мне кажется было бы логичнее иметь в системе класс пользователя отвечающий за права. И уже при формировании шаблона разработчиком дать возможность сделать типа:
С учетом того, что позиционируется как инструмент для опытных, надо быть готовым к тому, что потенциальный пользователь уже владеет на хорошем уровне каким то иным инструментом, и, на мой взгляд, лучше отработать по максимуму то, что по сути "ни чего не стоит". Например, PHPStorm (самая популярная IDE в этой сфере). В редакторе справа все пестрит серыми, желтыми и даже красными метками. Что говорит о том что анализатор кода видит проблемы. Мелочь, но исправить очень просто. Так же порекомендовал бы почитать и проникнуться книгами Чистый код, Чистая архитектура, Вон Вернон: Реализация методов предметно-ориентированного проектирования, Эрик Эванс: Предметно-ориентированное проектирование (DDD). Структуризация сложных программных систем .... Есть и еще крутые книги в этой тематике. Т.е. если вы не бросите проект и реально планируете сделать полноценный инструмент для веб разработки вы рано или поздно придете хотя бы примерно к тому, о чем говориться там. (жизнь и боль поддержки заставит ). Правда возможно придется на этом пути несколько раз переписать чуть ли не все ![]() Так же вот вспомнил. Возможно будет интересен подход, посмотрите, думаю не пожалеете и подчерпнете идеи серия видео
0
|
||||||
|
6 / 9 / 2
Регистрация: 26.07.2021
Сообщений: 48
|
|||||||||||||||||||||||
| 07.04.2023, 11:45 [ТС] | |||||||||||||||||||||||
0
|
|||||||||||||||||||||||
| 07.04.2023, 12:03 | |||||||||
Но время модификации источника мне кажется лишним движением.У меня полно Причем у меня нет каких то конфигов специфичных. тут вообще в такого рода проектах может сразу применить что то типа PSalm, phpstan .Кстати, заодно, хорошо бы добавить в composer.json
0
|
|||||||||
|
6 / 9 / 2
Регистрация: 26.07.2021
Сообщений: 48
|
||||
| 07.04.2023, 13:27 [ТС] | ||||
|
0
|
||||
| 21.04.2023, 14:53 | ||||||
|
Посмотрел на реализацию кеширования.
Не думали над применением похода внедрения зависимостей (Dependency injection или DI) в данном случае и вообще? Вот вы реализовали кеширование на файлах, но я могу захотеть что то иное, вообще свое. (причины могут быть разные). Да я видел, что есть второй параметр у конструктора Cache но он опять же не дает возможности реализовать свое. А если бы так (пример на 8ке - местами более лаконично получается, просто что б пояснить мысль):
Не по теме:
Добавлено через 2 минуты А если возьмете на вооружение PSR то можно будет легко подключить уже готовые решения, пока своих мало. (если в них будет необходимость)
0
|
||||||
| 21.04.2023, 14:53 | |
|
Софт для быстрой разработки страниц Поиск технического партнера в стартап - продукта для быстрой разработки проектной документации (Robodoc) Ищу команду для разработки сайтов Собираю команду для разработки сайтов Собираю команду для разработки сайтов Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
сукцессия 33. открытые вопросы от клауде
anaschu 19.07.2026
"Что накопилось за эту часть А — тринадцать правок, из которых шесть пришли из ваших вопросов и каждая оказалась реальной ошибкой, а не калибровкой: односторонний симбиоз, отсутствующий листопад,. . .
|
32 сукцессия
anaschu 19.07.2026
сукцессия 28‑мерное ядро стабилизировано
Коллеги, фиксирую разбор инженерных правок и их изоморфную проекцию на экономику, меметику и половой отбор. Модель теперь не «подкручивает» сходимость —. . .
|
сукцессия 31: модель микоризы - это модель ещё нескольких явлений, социальных и экономических
anaschu 18.07.2026
Теория «Всего»: апдейт v1. 1. 2 — 28‑мерное ядро стабилизировано
Коллеги, фиксирую разбор инженерных правок и их изоморфную проекцию на экономику, меметику и половой отбор. Модель теперь не. . .
|
сукцессия 30. Массив проверяющих друг друга моделей
anaschu 18.07.2026
Архитектура сети взаимопроверяющих моделей микоризной сукцессии (v2. 0)
Развитие тензорного ОДУ-ядра и создание кросс-платформенного калибровочного полигона
Уважаемые коллеги!
В продолжение. . .
|
|
Грибы - это женщины, деревья - это мужчины. Анти инь янь для союза мужчины и женщины.
anaschu 18.07.2026
ГЛАВНЫЙ НАУЧНО-ФИЛОСОФСКИЙ ВЫВОД: Сексуально-Репродуктивный Капитализм против Государства Моногамии
Коллеги, мы вышли на финишную прямую 20-мерного ОДУ-моделирования вековой сукцессии (ветка. . .
|
Текстовый слайдер с нумерацией страниц и кроссбраузерность.
russiannick 18.07.2026
Один мой друг написал текстовый слайдер с нумерацией страниц. Сегодня я расскажу как он умудрился подружить его с кроссбраузерностью.
Очевидно сложно угодить с шириной каждому браузеру. Один крадет. . .
|
Грибы - это мемы, дерево - это человек. Применение микоризной модели к теории меметики Докинза.
anaschu 18.07.2026
Меметический изоморфизм теории «всего»: Грибная сукцессия как модель эволюции идей Докинза
Базовый код системы ОДУ микоризной сукцессии описывает не просто биологию, а универсальную. . .
|
Грибы - это корпорации, деревья - это государства. Механизм массонского захвата власти
anaschu 18.07.2026
Макроэкономический изоморфизм теории «всего»: Грибная сукцессия как модель транснационального капитализма
Базовый код системы ОДУ микоризной сукцессии описывает не просто биологию, а. . .
|