|
-508 / 32 / 0
Регистрация: 22.09.2015
Сообщений: 1,232
|
|
Обсудите разработку моего фреймворка26.05.2022, 12:01. Показов 23945. Ответов 308
Метки нет (Все метки)
Приветствую всех веб-мастеров!
Я разработал свой фреймворк для создания сайтов. На данном этапе он ещё сырой. Осталось доделать контрольную панель(веб-интерфейс для доработок фреймворка прямо на сайте, это почти как админ панель для администрирования сайта, но для разработчика\программиста). Также нет дизайна нужно будет сделать разные блоки\компоненты и хотя-бы пару скинов\тем. Начал записывать видео с объяснением как что делается. Хочется получать обратную связь от людей кто занимается веб-разработкой. На данном этапе интересуют предложения по настройке контрольной панели и дизайна. Хочется найти единомышленников кто хочет делать сайты на таком фреймворке, таким могу дать скрипт фреймворка если увижу заинтересованность в сотрудничестве.
1
|
|
| 26.05.2022, 12:01 | |
|
Ответы с готовыми решениями:
308
Обсудите моё задание (Страуструп Б.) Последовательности слов обсудите решение беспроводной сети...кто чем может... Шел n-й год(n нечетное число).Цифры моего возраста совпадают с двумя последними цифрами года моего рождения.По вводимому n определить наши годы рожден |
| 10.03.2023, 17:57 | ||
|
0
|
||
|
14786 / 9560 / 1366
Регистрация: 21.01.2016
Сообщений: 36,048
|
||
| 10.03.2023, 18:04 | ||
|
0
|
||
|
Автоматизируй это!
|
||
| 10.03.2023, 18:06 | ||
|
Не по теме: опять слив? ты никогда не рос и не был чтоли в мужском коллективе? как называют того кто постоянно что-то утверждает и не может за свои слова ответить? ты говоришь тебя несправедливо критикуют -так докажи, вот человек выше привел примеры, описал их, можно же по пунктам предоставит свой ответ и показать где он не прав. Причем разговор идет именно по заявленной теме - вашем фреймворке-невидимке. я вот никакого самолюбия не тешу, примеры выше посмотрел, мне показалось что вполне обосновано все написано, если есть существенные неточности -отразите их пожалуйста, приведите примеры.
0
|
||
|
14786 / 9560 / 1366
Регистрация: 21.01.2016
Сообщений: 36,048
|
|
| 10.03.2023, 18:12 | |
|
Welemir1, мне кажется, что взывать к совести и принципам... подростка бесполезно. Он уже понял, что обосрался. Но он не умеет себя в такой ситуации вести (как и многие) и потому переходит на "я ржунимагу". Лёгкая истерика, в общем.
0
|
|
|
-508 / 32 / 0
Регистрация: 22.09.2015
Сообщений: 1,232
|
||||
| 10.03.2023, 23:32 [ТС] | ||||
|
Хотя надо сказать натолкнул меня на мысль как доработать и сделать лучше. ЗЫ. С визуальным редактором почти разобрался, последний штрих остался. Контрольную панель донастрою, а может и в процессе создания сайтов буду доделывать. Короче уже скоро буду писать скрипты сайтов.
0
|
||||
| 11.03.2023, 01:15 | |||||||||||
Добавлено через 1 минуту Добавлено через 37 секунд Добавлено через 3 минуты
0
|
|||||||||||
|
14786 / 9560 / 1366
Регистрация: 21.01.2016
Сообщений: 36,048
|
|
| 11.03.2023, 07:37 | |
|
Welemir1, и косяки только в той части кода, которую он показал. В других косяков нет)
0
|
|
|
-508 / 32 / 0
Регистрация: 22.09.2015
Сообщений: 1,232
|
|||||
| 11.03.2023, 07:50 [ТС] | |||||
|
0
|
|||||
| 11.03.2023, 16:25 | ||||||||||||
![]() 2. код в комментах это не "работающий функционал". В данном случае, стоит допустить ошибку синтаксиса в начале и все.. Добавлено через 30 минут Глава 2 Часть 4. (продолжаем разбирать Request) В завершении метода едет обработка LIMIT. Ок. тут даже вроде как есть валидация типа. (но не знаю в чем она выражается конкретно) И завершает метод строка
Все... Как видим здесь нет места для юнионов, групповых операций, джоинов, и т.п. и даже сортировки. (упоминания сортировки будут в следующих сериях, но похоже, это не то что ждут разработчики) Т.е. судя по этому методу, если мы имеем самый простой новостной сайт у которого есть много статей и лайки (возьмем в просто варианте, просто число в таблице статей), то чтобы отобрать 10 статей отсортированных по убыванию лайков. то придется получить их все (хоть миллиард), отсортировать средствами php ну и вывести 10. Без условно это сделать "просто"... Но стоит ли тут говорить о производительности? Кроме того тут зашито много бед, из за отсутствия системы валидации и системы исключений. Предположим вы опечатались в where в имени поля - это условие просто проигнорируется. И вы получите результат выборки. Т.е. надо быть очень внимательным. Нейминг Далее хочу еще нейминга методов коснуться. (про нейминг переменных молчу , но тут уж прям слишком, в то же время как пользователя фреймворка меня это меньше беспокоит чем названия методов) Метод формирования строки sql запроса (причем конкретно select) называется Request. Подавляющее большинство разработчиков под Request понимают то, что к нам прилетело из вне. Т.е. это тот самый запрос, который запустил выполнение нашего кода. Запрос в базу это знают как Query. Т.е. информативное название метода было бы типа buildSelectQuery в данном случае нам надо смотреть либо доку либо вообще в код лезть, чтоб понять Ведь хороший, код когда читаешь: имя метода говорит о том "что он делает", а уж внутрь мы идем если только нам интересно "как он это делает". тут нам придется ответить на вопрос "как" чтобы понять "что". Справедливости ради отмечу. После одного из наших "перепалок" pgb узнал про phpDoc и комментарии в этом формате. И при общении в Discord я видел что они есть (тут они не приведены - не знаю есть ли они в коде). Причем pgb даже написал, что он узнал об этом из общение. Т.е. искренне ставлю два плюса в карму, что при таком характере все же умеет быть адекватным ![]() Это немного спасет ситуацию, но все же надо наводить мышкой на вызываемое методы в IDE, чтоб понять, а не просто "читать код" Архитектура В этом методе Request (создающем исключительно select) мы увидели что выражение where строится в нем. А ведь есть еще delete и update где тоже должны быть where. Т.е. там либо копипаста либо вообще есть свои правила и ограничения. Т.е. тут явно нарушение принципов ООП, да в общем то и даже если без ООП тут просто обязана была бы быть выделенная функция.
0
|
||||||||||||
|
321 / 189 / 78
Регистрация: 04.10.2016
Сообщений: 809
|
||||
| 11.03.2023, 17:59 | ||||
![]() тут, по идеи, тему должны были забросить уже через пару месяцев, а тут вон оно как... Не по теме:
зачем вообще было устраивать эту "игру слов"?? пишите для себя и сами? флаг в руки. применяйте в своей практике. больше всего напоминает тема: "я тут пишу, как могу и хочу, если че?! помогите кто чем может, подскажите, но так, чтобы я чтобы...". даже, если вы идеально все напишите (а идеального ничего нет и многое, что вы делаете уже все реализовано), то вероятность использования "другими" такого "продукта" крайне мала. ИМХО: если бы вы писали свой фреймворк, его использовали (хотя бы на фрилансе) в разработке сайтов/веб-приложений, имели бы положительные отзывы и работу фреймворка в продакшене, а после провели анализ и подготовили демонстрацию/презентацию/итдитп своей "поделки" с аргументацией, то вот тогда, возможно, вы бы нашли единомышленников. ИТОГ: повторюсь. тема - флейм. вангую... через год либо исчезните с радара, либо все останется на словах (кроме вас и ваших "единомышленников" больше в эту "работу" руки прикладывать не будет).
0
|
||||
| 12.03.2023, 17:43 | |||||||||||||||||||||||||||||||||||||||||
|
Глава 3 Select -публичный метод выполнения запроса
Кликните здесь для просмотра всего текста
Проблема тут явная в том, что если таблицы нет (например опечатка), то скрипт продолжит работу пока не свалится в каком то месте дальше. Что явно потенциально усложняет отладку на проектах
кода в том, что после этой строки по сути $request = $request['fields']. т.е. скрытая модификация входного параметра
Но что делает код точно не возможно определить без исследований - что говорит о том, что разрабатывать на таком фреймворке быстро, можно только если зазубрить доку и весь код. Иначе будет много вопросов и нежданчиков.
А само поле будет отсутствовать в запсии. (ну "ок" - есть ключ, если надо сами подклеим обратно) Если id не передали, то массив вернется с нумерацией начинающейся с 1. Сомнительное решение (скорее всего костыль для чего то) Интересно, а автор знает, что первиченый ключ не обязательно состоит из одного поля.....
Все это похоже на корявую попытку организовать, как и говорил автор, "отношение один ко многим и многие ко многим", а можит и один к одному . Понятно дело не на уровне БД и такой подход имеет право быть в оперделнных задачах. НО!... подозреваю это выглядит так: получили записи из одной таблицы, итерируемся по записям и для каждой записи отправляем запрос, постепенно заполняя массив.... В нормальном бы варианте в цикле один и тот же запрос (пусть со сменой фильтра) ни кто бы не стал делать - это угробит производительность в большинстве случаев. Ну и, как я понял, $data это тот массив который можно будет получить в результате запроса. Автор тут все утверждает что это все чтоб удобно работать с сущностю... в реалиях же, есть одна сущность, соостояние которой вечно меняется, и одно из свойств состояния это ассоциативный массив - являющийся нашей целью использования этой сущностью. Т.е. еще одно подтверждение, что ООП автор понимает очень и очень поверхостно
0
|
|||||||||||||||||||||||||||||||||||||||||
|
-508 / 32 / 0
Регистрация: 22.09.2015
Сообщений: 1,232
|
||
| 13.03.2023, 10:01 [ТС] | ||
|
Методы Execute и Fetch наследуются от класса PDO для работы с БД. В переменной $data ссылка на данные сущности. $data['access'] это доступ для работы с сущностью для того узла в котором была создана сущьность, другие узлы не смогут с ней работать, можно отключить доступ, тогда любой узел сможет работать с такой сущностью.
0
|
||
| 13.03.2023, 10:16 | |||
|
Я и рассматриваю все это как QueryBuilder - это типовое решение в любом фреймворке. Про непонимание ООП именно показывает именно то КАК вы это делаете, а не ЧТО Добавлено через 11 минут Т.е. даже с сохранением ваших подходов, при грамотном ООП у вас бы получилось более лаконично, читабельно, меньше кода, более читабельно и т.д. и т.п Обратите внимание у вас объект вечно мутирует. Т.е. при нескольких запросах, теряются данные по предыдущему запросу. (перезаписываются, дописываются и т.д. и т.п.). Да хотя бы поясните зачем хранить имя таблицы из последнего запроса в статическом свойстве класса и в свойстве объекта, тем более если они перезаписываются при каждом запросе. 5 самых пролайканых новостей, 20 последних новостей. Т.е. показанные методы для этого точно не годятся. Т.е. вы два раза вытащите из базы все 36500 записей. И даже если будет два блока по 5 самых пролайканых новостей, все равно два запроса по 36500 записей.
0
|
|||
|
-508 / 32 / 0
Регистрация: 22.09.2015
Сообщений: 1,232
|
|||
| 13.03.2023, 10:33 [ТС] | |||
|
0
|
|||
| 13.03.2023, 11:05 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Глава 4 Load - публичный метод "загрузка" данных
Пояснение к методу от автора " метод Load в классе работы с сущностью"..... Кликните здесь для просмотра всего текста
Проверка наличия таблицы
Кеширование
Кеш ни как не зависит от входных параметров. Точнее зависит от имени таблицы, от какого то свойства source и все... Т.е. конфиг выборки по боку и получится фигня. Допустим имеем таблицу и в ней записи
Сортировка
Кеширование 2 Вновь про "кешированние". Предположим оно есть.Но оно не спасает от повторных запросов. т.е.
Кеширование долгое Во время общения в дискорде, я озвучил какое кеширование необходимо. Конечно же услышал "Это сделать легко за 5 минут" А в качестве демонстрации сохранение данных в конфиг с помощью штатных классов фреймворка. Но объем данных пихать в один файл, при этом как решать вопросы протухания, чистки кеша. К примеру у меня в работе есть проект порядка 200тыс товаров - робот прошелся по каталогу. Что у нас с файлом кеша будет? Как итог. Вот этот метод это по сути кеширующая обертка над Select. Т.е. вероятнее было бы более красиво реализовать это следующим образом
а метод Load становится совсем лаконичным. При этом методы возвращают не саму начальную сущность. А новый объект - результат работы запроса. И этот объект не меняется следующим запросом. В прочем, если вам это очень надо. то вы это можете спокойно реализовать в своем сервисе отвечающем за кеширование. Добавлено через 5 минут Два запроса подряд с разным фильтром, не должны ни перезаписывать ни дописывать. Два запроса подряд с одинаковым фильтром, не должны вызывать два обращения к базе данных. Как раз во второй раз должно просто подгрузится. Дело тут не в том как "работают ссылки", а что вы делаете с данными. Для чего нужна склейка результатов двух разных запросов? (тем более когда она способна не только дописать но и не корректно переписать- пример выше) Добавлено через 1 минуту
Добавлено через 6 минут
а like не работает же. ок. пусть будет где название равно apple - в данном случае не суть важно Добавлено через 2 минуты При грамотном же решении было бы что то типа с использованием паттерна фабрика. По имени получаем объект конкретной таблицы (или исключение об отсутствии таковой) и уже с этим объектом работаем, не заставляя объект (в котором вот эти все методы) мутировать (точнее его внутреннее состояние) Добавлено через 1 минуту Вообще тебе стоит почитать про антипаттерн Божественный объект (God object) и почему это плохо. Ну, а автоматическая подгрузка зависимостей.... А ее можно отменить? А то в сложной нормализованной базе может быть очень большая иерархия. Добавлено через 1 минуту
0
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
-508 / 32 / 0
Регистрация: 22.09.2015
Сообщений: 1,232
|
|||||||||||
| 13.03.2023, 11:20 [ТС] | |||||||||||
|
Далее какой-то бред, даже комментировать не буду.. Добавлено через 7 минут
0
|
|||||||||||
| 13.03.2023, 11:20 | |
|
Полное воровство инфы с моего сайта (копия моего сайта) Выбор 3d фреймворка Логирование фреймворка Выбор фреймворка Составные фреймворка Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Nekobox - outbounds[0].transport: unknown transport type: raw
damix 01.10.2026
Фикс ошибки
Правым кликом по серверу -> отладочная информация -> edit
Заменить "net": "raw", на "net": "tcp",
Нажать кнопку reload.
|
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js.
В помощники взял Яндекс-Алису.
Было создано три зала на разные интересы.
исторические и ретро
сериал Хичкок. . .
|
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
|
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#.
Название изменил на ColorStep.
Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
|
|
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами:
- ВидТО (СправочникСсылка. ВидыТО);
- ВидГСМ. . .
|
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала.
Ниже прикреплён. . .
|
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F
Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU.
Опрашиваются регистры. . .
|
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка:
Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
|