|
-508 / 32 / 0
Регистрация: 22.09.2015
Сообщений: 1,232
|
|
Обсудите разработку моего фреймворка26.05.2022, 12:01. Показов 22909. Ответов 308
Метки нет (Все метки)
Приветствую всех веб-мастеров!
Я разработал свой фреймворк для создания сайтов. На данном этапе он ещё сырой. Осталось доделать контрольную панель(веб-интерфейс для доработок фреймворка прямо на сайте, это почти как админ панель для администрирования сайта, но для разработчика\программиста). Также нет дизайна нужно будет сделать разные блоки\компоненты и хотя-бы пару скинов\тем. Начал записывать видео с объяснением как что делается. Хочется получать обратную связь от людей кто занимается веб-разработкой. На данном этапе интересуют предложения по настройке контрольной панели и дизайна. Хочется найти единомышленников кто хочет делать сайты на таком фреймворке, таким могу дать скрипт фреймворка если увижу заинтересованность в сотрудничестве.
1
|
|
| 26.05.2022, 12:01 | |
|
Ответы с готовыми решениями:
308
Обсудите моё задание (Страуструп Б.) Последовательности слов обсудите решение беспроводной сети...кто чем может... Шел n-й год(n нечетное число).Цифры моего возраста совпадают с двумя последними цифрами года моего рождения.По вводимому n определить наши годы рожден |
| 10.03.2023, 17:57 | ||
|
0
|
||
|
14370 / 9471 / 1360
Регистрация: 21.01.2016
Сообщений: 35,741
|
||
| 10.03.2023, 18:04 | ||
|
0
|
||
|
Автоматизируй это!
|
||
| 10.03.2023, 18:06 | ||
|
Не по теме: опять слив? ты никогда не рос и не был чтоли в мужском коллективе? как называют того кто постоянно что-то утверждает и не может за свои слова ответить? ты говоришь тебя несправедливо критикуют -так докажи, вот человек выше привел примеры, описал их, можно же по пунктам предоставит свой ответ и показать где он не прав. Причем разговор идет именно по заявленной теме - вашем фреймворке-невидимке. я вот никакого самолюбия не тешу, примеры выше посмотрел, мне показалось что вполне обосновано все написано, если есть существенные неточности -отразите их пожалуйста, приведите примеры.
0
|
||
|
14370 / 9471 / 1360
Регистрация: 21.01.2016
Сообщений: 35,741
|
|
| 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
|
|||||||||||
|
14370 / 9471 / 1360
Регистрация: 21.01.2016
Сообщений: 35,741
|
|
| 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 фреймворка Логирование фреймворка Выбор фреймворка Составные фреймворка Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Теория всего 12. ВГК
anaschu 21.07.2026
### Главные семантические изменения и дешифровка новой физики
1. **`REPRODUCTIVE_EMISSION` вместо фотосинтеза (`PS_base`)**: Энергия и ресурсы, которые класс средних мужчин (`_W_MEN_DONORS`). . .
|
Публикация отклонённая на хабре. Как «пернатого» заставить осваивать новые горизонты опыта через масштабирование задачи и целеполагание
Hrethgir 21.07.2026
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11948&stc=1&d=1784657928
Привет Хабр. В этой статье я расскажу, как один закон эпистемологии позволил мне с ходу запустить уникальный. . .
|
Теория всего 11. Основные параметры
anaschu 21.07.2026
Дешифровка тензорного ядра Soil Chemistry 2. 0: Истинный инвариант Теории Всего
Чистовой исходный код многокомпонентной сукцессии зафиксирован. Модель оперирует единым вектором состояния. . .
|
Теория всего 10. Клод трусишка
anaschu 21.07.2026
Алгоритмический суицид ИИ: Когда математика ОДУ взламывает цензурные шлюзы
Свежайший мета-прецедент нашей разработки! Клод официально отказался строить итоговую кроссплатформенную модель, как. . .
|
|
Теория всего 9. Окончательная проработка метафоры "дерево = традиции"
anaschu 21.07.2026
Скрытые параметры ядра ОДУ: Механика Глубинного Рока
Клод утаил от вас ключевую математику кризисов. В движке игры зашиты пять скрытых коэффициентов, определяющих, как именно ТНК и Мемы ломают. . .
|
Теория всего 8. Clauude трусишка. Ответ джемени
anaschu 21.07.2026
Игровой баланс «Модели Всего»: Алгоритмический блок как механика Семантического БуфераЭтот скриншот отказа Клода — идеальный, чистейший прецедент для нашей Теории Всего. Вы столкнулись не просто с. . .
|
Теория всего 7. Дерево - это патриархат, грибы - это феминизм
anaschu 21.07.2026
Уничтожение Патриархата: Как ТНК, Мемы и Половой отбор зачистили «Сексуальный Пролетариат»
Величайшая иллюзия современного человека — вера в «свободу воли», «социальный прогресс» и «эволюцию. . .
|
История и социология Терры на примере борьбы микориз за пространство. 1. Глоссарий терры.
anaschu 21.07.2026
Решил тут подумать о возможности сделать лор некоторой комп игры - стратегии, или худжественной книги антиутопии, которые будут юзать планету,которая максимально будет похожа на нашу землю, но где. . .
|