|
-508 / 32 / 0
Регистрация: 22.09.2015
Сообщений: 1,232
|
|
Предлагаю сотрудничество02.03.2024, 09:44. Показов 26895. Ответов 414
Метки нет (Все метки)
Моё предложение прежде всего для одиночек, кто хочет заниматься своим делом в сфере IT, а не работать на "дядю".
Чем занимаюсь я? Я Программист самоучка, предпочитаю заниматься реализацией своих идей, для этого необходимо самостоятельное изучение языков программирования и IT технологий, разработка своих скриптов, модулей... своих проектов. На данный момент у меня есть свой фреймворк(стек: XML+PHP+MySql+HTML+CSS+JS) для создания сайтов на котором я начинаю создавать скрипты разных сайтов. В чём моё предложение сотрудничества? Мне необходимо общение с кем-то чтобы обсуждать как что сделать, мнение со стороны, у кого имеются некоторые знания и опыт или хотя-бы желание в сфере сайтостроения. Я по мере своей разработки буду спрашивать как бы что сделали вы или выбрать что-то из предложенных мной вариантов и тд. это всё что от вас требуется. Что в замен предлагаю я вам? А я предлагаю вам следующее: реализацию любой вашей идеи(с моим фреймворком и опытом считайте, что ваша идея реализована уже на 90%), а если идей у вас нет, то предложу на выбор что-то из своих идей, далее обучу необходимым знаниям и буду помогать в реализации вашего проекта на своём фреймворке, а также дальнейшая тех поддержка и доработка. Все детали будем обсуждать в ***
2
|
|
| 02.03.2024, 09:44 | |
|
Ответы с готовыми решениями:
414
Есть идея он-лайн проекта, предлагаю долю за сотрудничество Сотрудничество / работа над проектом Предлагаю социальный проект |
|
-508 / 32 / 0
Регистрация: 22.09.2015
Сообщений: 1,232
|
||
| 07.04.2024, 13:23 [ТС] | ||
|
0
|
||
| 07.04.2024, 13:29 | |
|
Ок. Завтра опубликую уже первые результаты. (выкладывать буду постепенно). бегло взглянул - как минимум два места уже вижу где баг очень вероятен (что самое плохое не явный - т.е. не будет что то падать, например, будет все работать, но возможно не так как планировал пользователь с них и начну. (под пользователем здесь и далее буду понимать разработчика использующего твое решение).
2
|
|
|
14368 / 9469 / 1360
Регистрация: 21.01.2016
Сообщений: 35,731
|
|
| 08.04.2024, 05:56 | |
|
0
|
|
| 08.04.2024, 08:11 | ||||||||||||||||||||||||||
|
Итак. Первой на глаза попалась конструкция условного ветвления. В xml ы общем случае она описывается так
Кликните здесь для просмотра всего текста
Первое, что привлекло внимание в коде, это метод ForCompare. Начал смотреть с него - потому с него и начнем 1. В названии метода есть буква "С" это кириллица. Сразу первое потенциальное место для проблем. Как мы все (надеюсь) знаем, что кодировок символов море, и в т.ч. кириллическая не одна. И у них есть свойство "ломаться". Иногда достаточно заархивировать потом разархивировать и все.... В общем бывало мне попадались на проектах файлы в которых комментарии на русском были не читабельны. Как поведет себя PHP - хз. В т.ч. может быть сейчас все норм, а потом обновились и все легло 2. Сразу видим преобразование к float. И сразу же опыт подсказывает, что это потенциальное место проблем (при чем надо понимать, что для пользователя это не явное преобразование - он его не заказывал). Плюсом сразу вспоминаются типовые проблемы сравнения флоатов и даже можно погуглить типа "собеседование сравнение флоат". Это, мне кажется, описано во всех учебниках. Как следствие пользователя ждет нежданчик.
В общем, полагаю, тут еще можно накопать вариантов когда это неявное преобразование типа и не возможность в условии сделать добавить уточнения по типам или задать точное соответствие - урезает возможности этой конструкции 3. Далее смотрим на регулярку в строке 54
строки 56 - 58 - я пока не рассматривал. Ну, а для простых сравнений эта регулярка раскидывает выражение на три составляющие. (сейчас рассматриваем случай когда есть все три) : левый аргумент, условие, правый аргумент. И тут сразу видим что символа быть "<" не может. Сначала я думал, что "ну просто значит надо менять их местами", но нет: согласно строкам 60 и 61 на первом месте всегда имя переменной, на третьем всегда конкретное значение. При этом согласно строкам 87 и 71 когда то все же такая возможность была. Т.е. очевидно сначала были отлажены типовые операции, потом внесены правки и.... все. часть функционала отвалилась. И как раз этот случай легко решается юниттесированием. Ведь чтобы качественно протестить только этот метод необходимо выполнить как минимум по одному тесту для каждой ветки ветвления алгоритма + варианты комбинированные, например, я оставил в коде для демонстрации только if и switch - в реальности есть еще один switch и один if - т.е. руками надо каждый раз их все сделать. А можно написать один раз простейшие юниттесты, повесить их на сохранение файлов (или если использовать git на событие коммита) и все. Представьте этот фреймворк запустили, им начали пользоваться, выходит обновление, все работает...... но не праильно. 4. Из выше сказанного следует не баг, но ограничение: нельзя сравнить две переменные. (если только нет, какой то магии, которую я еще не смотрел, по подстановке второй переменной в это выражение, чтоб рассматриваемый метод воспринимал ее как готовое значение). И не все варианты сравнения доступны 5. Если же попытаться таки использовать сравнение
6. Из п.3 еще и следует, то что пользователю надо очень внимательно относится к синтаксису, и не допускать ошибок - проверок там нет. ну типа посмотрел не внимательно на регулярку " о там есть скобки" и пробуем составное выражение. Нет нельзя. при этом система ругаться не будет. 7. Так же из регулярки. (не баг, но ограничение) Если сравниваем текстовые строки - правая строка не может содержать скобки. На сегодня все.
4
|
||||||||||||||||||||||||||
| 08.04.2024, 09:08 | |||
|
0
|
|||
| 09.04.2024, 07:57 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Сегодня продолжение про конструкцию _ifv. Сразу оговорюсь тут речь не про баг, а про удобство и интуитивную понятность
со стороны пользователя-разработчика. Ведь автором заявлена скорость и удобство разработки - так что тоже важно. Чтобы остальным было понятно о чем речь некоторые пояснения: В решении есть понятие Узла (ноды), если проводить параллели с общепринятыми понятиями, это ближе всего к понятию модуль: может иметь набор шаблонов, js скрипты и стили. Например: news-list.htm,news-list.js,news-list.css - набор файлов для блока список новостей. И таких наборов может быть много в одной ноде. Так же у ноды может быть один файл содержащий класс. Т.е. что-то типа контроллера ноды. Называться файл должен Class.php а класс по имени ноды. Т.е. в моем тестовом примере нода blog, класс Blog, а имя файла Class.php. (Что тоже не слишком удобно при работе с кодом, особенно с учетом того, что часто применяется mixed в качестве типа - что сильно урезает возможности штатной навигации по коду в IDE.) итак создаю такой контроллер
Возвращаясь к регулярке, как я понял скобки только для вызова методов контроллера ноды. Не понятно только назначение первой (в регулярке) возможной закрывающей скобки. В целом пользователю с _ifv придется быть крайне внимательным. Система при ошибке "не ругается", просто работает не так как ожидается (и хорошо если на стадии разработки ошибка проявится) Далее про полеты "как фотон". То же пример, что при написании кода не заморачивались этим, строки 11 - 15 не имеют смысла когда мы запрашиваем контроллер, т.к. мы уже проверяли $mth[2]. (естественно это не единственный момент на эту тему) Добавлено через 12 минут pgb, в общем конструкцию _ifv можно считать рассмотрел. будем двигаться дальше. Общий подитог по ней: нет возможности комбинированных условий (если только через контроллер костылить), какая то не интуитивно понятная работа с методами. (точнее с параметрами, когда их не нужно и когда их больше одного). Ну и главное это серия сильно вероятных ошибок связанных с приведением типов и проблема с "<" и "<=" Добавлено через 20 минут Кстати на тему быстродействия. Сам я не проверял, но все же. Встроенный статический анализатор IDE пишет, что
0
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
-508 / 32 / 0
Регистрация: 22.09.2015
Сообщений: 1,232
|
|||
| 09.04.2024, 21:03 [ТС] | |||
|
Скачала хотел написать откуда вообще взял, что в _ifv можно делать вызов метода узла, а потом глянул в код, да действительно есть такое, а я думал, что убрал уже это, оставил только проверку переменных инструкции. Для простых проверок переменных инструкции надо бы оставить чтобы лишний раз не вызывать методы класса узлов, ну а для вызовов метода узла в самой команде(_ifv="node.method()") точно уберу не нужен он там вообще.
0
|
|||
| 10.04.2024, 07:37 | ||
|
Ну а дальше, в зависимости от инструмента. Например в доктрине: изменил комментарий к некоему методу запускаешь консольную команду - она сравнивает структуру БД со описаниями и создает миграцию, в которую можно еще и дописать дополнительной логикой - а это частенько необходимо. Тут просто надо оценивать на сколько это важно. Это только в активной фазе развития необходимо относительно часто. Во время работы разработчику знать структуру БД вообще не нужно. Ведь это просто хранение, во время разработки оперируем сущностями и все.. как оно там хранится - дело десятое. Это вообще история исключительно про разработку, тащить ее на каждый хит - дело сомнительное. (я правда еще не смотрел алгоритм детально, но пока, как я понимаю - именно на каждом хите.). Причем это вариант для простых случаев. Например ты создал некий справочник, в справочнике нужны данные. Как они туда попадут? Т.е. вот есть устоявшийся сайт, у него есть небольшая вероятность, что нам понадобилось изменить какую то табличку раз в год... и ради этого проверка на каждом хите?
0
|
||
|
-508 / 32 / 0
Регистрация: 22.09.2015
Сообщений: 1,232
|
|||
| 10.04.2024, 08:44 [ТС] | |||
|
Ну и да пока там подгрузка при каждом подключении к базе, при тестировании это конечно удобно, в паблике конечно каждый раз таскать файл структуры в принципе нет необходимости если изменений сущностей не предвидится, сделаю то его с ленивой загрузкой при необходимости.
0
|
|||
| 10.04.2024, 10:24 | ||||||||||||||||||||||||||||||||
|
Тут суть то не в этом как это оформляется, а в том что на каждом хите проверяется. Даже без подключения к БД - все равно лишняя операция. Ну да ладно... вернемся к нашим баранам. Сегодня скорее про быстродействие. (просто пока остальное смотрю, постоянно натыкаюсь - глаз мозолит) В проекте много используется регулярок, штука не самая быстрая. Далее смотрим код Engine::Making в которой идет как раз выявление конструкций этого проекта (в т.ч. _ifv)
Например так
Причем тут надо еще знать задумку. Сейчас (и по предложенной мной выше правке), например значение переменной значение может иметь тоже переменную
примерно так (просто пример как направление, т.е. доработать надо до нужд задачи)
1 В решении есть так же возможность выводить значения переменных (правда в другом месте) вписывая их в квадратных, а не фигурных скобках. Не очень удобно, когда в рамках одного инструмента делается одно и то же 2. На первый взгляд нет возможности вывести просто текст в фигурных скобках. 3. Неожиданное поведение если значение переменной массив. На практике, если в такую ситуацию попадает массив, чаще его все же как то преобразуют в строку, типа "названия через запятую". Опять же нужна возможность тогда уж колбека для этого. А количество элементов возвращать такое себе. На мой взгляд логичнее было вообще не брать сюда это решение: пользователь пусть сам подготовит как выводить.
0
|
||||||||||||||||||||||||||||||||
| 12.04.2024, 10:10 | ||||||||||||||||||||||||||||||||||||
|
pgb, можете привести рабочий пример использования конструкции _dup?
Добавлено через 14 минут подозреваю, что она вообще не работает или там какой то хитрый синтаксис вызова очень не очевидный Добавлено через 1 час 50 минут Но о проблемах конструкции _dup как я понимаю дублирование уже можно говорить. Ориентировочный синтаксис задумывался такой
Обрабатывает сие вот такой метод. (Но важна подготовка данных до этого метода, и именно из за подготовки подозреваю метод не работает.
Значение параметра "3,4`3", тут количество копий через запятую. Для каждого блока, а вот дальше опять сюрприз. Сайдэффект метода в том, что очевидно автору срочно потребовалось решить конкретную задачу и это впихнуто сюда. Очевидно потребовался вывод радиокнопок и надо было убрать " checked". Для этого был воткнут параметр через апостроф. И там номер копии у которой должен остаться checked. Но ведь синтаксис checked="checked" тоже валидны и в определенном случае правильный именно такой. Выбирать по номеру копии - ну такое себе решение, т.е. надо сначала вычислить позицию зная значение. (т.е. вроде как для максимально не опытных рассчитано, но усложнено именно для них). Если параметр "активной копии" не ставить вовсе - то из контента блока будут убраны все строки " checked" во всех копиях. Еще один "сайд эффект" это то, что в этих блоках знак вопроса "зарезервированный символ" - он заменяется номером копии. Таким образом тут явно заточено дублирование исключительно под радиокнопки. Почем тогда в названии этого не отразить типа _dup_radio. Но на повестке остается вопрос, как правильно использовать. т.к. вот по тем примерам, что я привел
(собственно я даже на 99% уверен в причине такого поведения и 1% оставил на то, что я что-то упустил и не угадал правильный синтаксис) Добавлено через 4 минуты да и в дополнение. Этот _dup заточен исключительно на то, что у радиокнопок значения исключительно 1,2,3,4,5,..... и обязательно одна должна быть активна сразу. Добавлено через 9 минут И еще забыл. Код теперь с синтаксисом на который рассчитано вытирание " checked"
1
|
||||||||||||||||||||||||||||||||||||
|
-508 / 32 / 0
Регистрация: 22.09.2015
Сообщений: 1,232
|
|||||||
| 12.04.2024, 20:07 [ТС] | |||||||
|
Что касается быстродействия, да иногда приходится им жертвовать ради удобства разработки для пользователя. Я считаю, что могу это позволить немного, так как у меня страница собирается из маленьких кусочков и замена производится быстро нежели в большой портянке как в обычных шаблонизаторах.
Насчёт Spoof функции, спасибо, потестирую если твоя будет лучше, сделаю через preg_replace_callback Что касается команды _dup это дублирование в макете. Да, сделал это из необходимости дублировать повторяющую разметку в макетах. Для примера посмотри box.="tabs" или box.="accordion"
Если в блоке есть элемент input с типом radio или checkbox, то можно указывать элемент на котором поставить checked например _dup="3`2,3,3" Это сделано чтобы автоматически создавать компоненты с нужным количеством табов(блоков аккордеона и тп.) и установки выбранного(по умолчанию после загрузки страницы), в CSS стилях до 9шт. но при необходимости можно дополнить стили до нужного количества. Добавлено через 11 минут ЗЫ. Да, и генерировать HTML теги в инструкции я не рекомендую, это только для самых необходимых случаев предусмотрено, а в основном надо подключать компоненты, стилизовать через классы и заполнять их данными, вот и всё.
0
|
|||||||
| 12.04.2024, 20:19 | |||||||
|
Добавлено через 4 минуты Любая регулярка это дорогая операция. Со стороны пользователя тут вообще ни чем не будет отличатся. А вот быстродействие уверен можно спокойно повысить (у меня был опыт работы с xml и c html, правда несколько другой разрез - здесь я бы попробовал вообще зайти по технологиям как языки программирования разбирают код). Добавлено через 2 минуты Добавлено через 1 минуту Добавлено через 51 секунду Добавлено через 53 секунды Твой код посмотрю, уже позже - уезжаю на несколько дней
0
|
|||||||
|
-508 / 32 / 0
Регистрация: 22.09.2015
Сообщений: 1,232
|
||
| 12.04.2024, 20:28 [ТС] | ||
|
ЗЫ. Данное решение с _dup я не рассмотриваю как окончательное, возможно в будущем это будет переделано по другому, но пока для компонентов в которых нужно дублирование по типу табов, аккордиона и тп. я сделал такое решение.
0
|
||
|
-508 / 32 / 0
Регистрация: 22.09.2015
Сообщений: 1,232
|
||||||||||||||||||||||
| 12.04.2024, 22:47 [ТС] | ||||||||||||||||||||||
|
Добавлено через 26 минут В таком варианте явно работать не будет.
В данном случае произойдёт следующее: из записи возьмутся в виде текста {}, потом пустота в {} продублируется три раза, потом сгенерируется тег label в котором будет ? и элемент input Добавлено через 30 минут Вот так будет работать.
Кликните здесь для просмотра всего текста
Командой _sub="" мы заставляем движок обработать дочерние элементы до выполнения команды _dup чтобы в записи уже была разметка в которой надо сделать дублирование. То есть изменяя параметр _dup можно генерировать 3 или сколько угодно input radio, указав `2 номер на котором поставить checked Только измени вторую строчку в методе Engine->Making
Добавлено через 19 минут ЗЫ. Основной смысл моего фреймворка в том что будут подготовлены основные компоненты страницы такие как каркас(с сайдбаром и без при этом адаптивные под разные устройства), табы, аккордеоны, карточки товаров для магазина, для статей блогов, для форума сообщения, разные блоки и тд. при желании пользователь может и свои создавать, так же методы класса которые будут генерировать меню навигации и прочее. Пользователю просто останется указать в инструкции xml что надо разместить на той или иной странице, указать классы стилей(подготовлены специально, для цвета, бордюра, теней, таблиц и др.) т.е один и тот же компонент можно вставлять на страницу много раз и стилизовать по разному при желании, получить данные из базы через узел базы и заполнить компоненты данными. Всё. При этом не нужно изучать мой инструмент как другие, есть всего навсего несколько правил для составления инструкции xml, всё остальное пишется на нативном коде, при написании скриптов на js есть несколько модулей для удобства написания своих скриптов, ничего сверхъестественного.
0
|
||||||||||||||||||||||
|
-508 / 32 / 0
Регистрация: 22.09.2015
Сообщений: 1,232
|
|||||||||||
| 13.04.2024, 11:16 [ТС] | |||||||||||
Сначала нужен макет в котором нам надо продублировать некоторую разметку, для этого подключаем макет например box.="tabs" после этого в записи у нас есть этот макет в котором есть разметка заключённая в фигурные скобки {} при обновлении страницы мы их увидим, далее указываем дублирование этой разметки через _dup и у нас сгенерированный каркас для нужного количества табов, потом заполняем данными в метки. А когда в инструкции генерируем разметку, то прежде чем что-то дублировать эту разметку нужно где-то взять, а взять мы её может через команду _sub которая принудительно обрабатывает вложенные элементы до обработки атрибутов, в нашем случае до команды движка _dup Итак, 1) берётся запись {[label]} 2) команда _sub="" обрабатывает вложенные элементы 2.1) генерируется элемент label в котором будет две метки [input] [radio?] 2.2) генерируется элемент input с меткой в value="[value?]" 2.3) затем элемент input вставляется в метку [input] в записи label 3) теперь элемент label вставляется в метку [label] заключённую в {} в записи нашего корневого элемента, всё у нас есть макет разметки для дублирования 4) выполняется команда дублирования, в данном случае 3 раза дублируется элемент label с вложенным input на 2 элементе input оставляется checked, вместо знаков вопроса подставляются цифры для меток чтобы в них что-то можно далее вставить, всё 5) ну а далее для примера заполняем метки данными: Чай, Кофе, Потанцуем и в значение: tea, coffee, dance В результате чего получается такой HTML
Вы скажете зачем это? Проще же просто на HTML написать. А затем, что каждый раз придётся писать и в ручную текст менять и тд. А так у нас есть заготовка которую мы можем вставлять где угодно, дублировать сколько нам нужно элементов, подставлять разные данные, стилизовать по разному и тд. При желании можно закэшировать или создать например таблицу в базе с подготовленной разметкой для самых востребованных случаев, что ещё ускорит генерацию страниц. Кроме того макет разметки можно подключать в шаблоны template и из js генерировать при динамической обновлении страницы. ЗЫ. Это простой пример. Но компонент может быть более сложный к примеру вопрос-ответ который раскрывается при клике и их может быть не 3, а 30 и тд. И нам не нужно каждый раз менять разметку, просто указываем нужное количество дублирования и заполняем данными по меткам, добавилось в базе вопрос-ответов скрипт автоматически сгенерирует нужное количество.
0
|
|||||||||||
| 15.04.2024, 09:01 | ||||||||||||
|
При этом ив нише где владельцы сами что то делают серьезная конкуренция будет для твоего решения. Тильда (ее знаю только по наслышке, но популярна) и есть Битрикс24:Сайты. Там вообще ни чего не надо изучать: мышкой в браузере накидал блоки, заполнил форму настроек - и сайт готов. Любые cms по сути тоже самое. Плюс к ним есть маркетплейсы с наработанными модулями и шаблонами (платными и бесплатными). Плюс всегда можно найти в интернете кучу видосов, статей, у кого то спросить тот или иной вопрос. А тут этой поддержки нет, по крайней мере пока. Поэтому я и рассматриваю кейс когда кто то принял решение взять твое решение и делать на нем сайт с привлечением программиста. Просто сам подумай сколько тебе лет потребуется, чтобы осуществить задуманное в одиночку и чтоб покрыть заметную нишу интересов. Короче. Просто давай придем к соглашению, что мне та ниша владельцев сайтов, которым достаточен объем функционала предлагаемый тем или иным решением для полного счастья оставим за скобками наших обсуждений. Надеюсь что ты хорошо изучил эту нишу и знаешь чего делаешь. Лично на мой взгляд - шансов мало, по чисто физическим причинам. ![]() Очень спорное утверждение... Ну разве что я на столько туп, а у вас целевая аудитория сплошные гении. Почему то пока сайт сделать не удалось ![]() Добавлено через 22 минуты Это все лирика - теперь ближе к практике. Фитбек со стороны разработчика взявшего твой инструмент на вооружение. В решении часто где используется паттерн одиночка. Вот такой код
Остальные уже дело вкусовщины, но полагаю тоже будет большинство сбивать с толку. Приватный метод нет смысла указывать как "final" - если посмотреть логи (естественно включив вывод всего) - то там будет постоянно попадаться варнинг об этом.. Хз. но я как программист считаю, что хороший код не должен сыпать варнингами. Далее, что мешает (немного но все же) это название метода Loner. В учебниках в подобной ситуации везде встречается getInstance - что очень точно отражает действие. А тут получилась проблема двойного перевода. Т.е. singleton - переведен как "одиночка" - переведен в Loner. Т.е. с точки зрения языков не корректно. Ну да ладно. Это только язык хорошо знаешь. Но тут и логически. Т.е. если бы это был класс фабрики, и был бы метод противоположный. Типа вот мы запросили одиночку, а вот мы запросили противоположность ..... В общем не совсем понятно зачем идти против учебников и привычных знаний.четвертая. Несколько странная реализация. С одной стороны "прикрыли" клонирование. Т.е. мы защитились чтоб программист случайно не сделал второй экземпляр. При этом осталась возможность сделать второй инстанс через сериализацию/десериализацию - а необходимость такого шага (сериализовать временно объект, а потом восстановить) - достаточно вероятна Добавлено через 52 минуты хотелось бы несколько "вернутся" к словам с которых начался этот раунд тестирования Я затестил (правда по _dup не до конца) две конструкции. И пока имеем: в _vfor есть устаревший код, который, как я понял ты собирался выкинуть, и баги (кстати, не забудь попраить работу с "<" и "<=". В _dup баг (который ты поправил) и тоже есть старый код или что то оставшееся от тестов. Т.е. вероятно пока дальше нет смысла тестить пока. (ну точнее нет смысла мне )Кстати вот вы убрали вызов spoof сколько тестов вы провели? Уверены, что другая инструкция не отвалилась. Вообще все проблемы кода с которым столкнулся на 100% решаются стандартными инструментами разработчиков, которые вы игнорируете. Ситуацию со вызовом spoof сломавшим _dup, ситуацию с регуляркой сломавшей "<" и "<=" на 100% гарантировано решают автотесты. Ситуацию с "Я что-то тестил, видимо забыл убрать, там не должно быть Spoof`a" так же решает и git. т.е. надумали что то затестить, создали ветку "testMyFeature" - попробовали. Если не понравилось - прибили, понравилось замерджили в основную. Что касается тестов: по идее количество тестов определяется количеством ветвлений. Т.е например есть switch - сколько в нем условий, на том же уровне if - еще тесты, а так же комбинации switch и if. И некоторые регулярки - это по сути тоже своего рода ветвление. И вы хотите сказать что каждый раз выполняете все тесты вручную? А ведь код растет, количество функционала вы собираетесь наращивать. И каждый раз выполнять в ручную несколько тысяч тестов будете? Правда одно но. Я ради спортивного интереса попробовал тесты сделать для вашего кода. И прям вот юниттесты уже на все не сделаешь, ввиду того что нет у вас четкой архитектуры кода (не путайте только как в прошлый раз со структурой сайта - именно внутренняя архитектура самого решения). Прям рекомендую почитать про шаблоны GRASP и в частности понятия "low coupling high cohesionlow" (не пугайтесь слова "шаблоны" вникните в суть о чем они) - реально можете себе серьезно упростить разработку и сэкономить массу своего времени в итоге. В общем пока закругляюсь... А то время тратится, а код пока еще не доделан, смысла нет мне. Все равно вы считаете себя более крутым программистом, и в ряд ли будете слушать мои мысли. ![]() В общем подожду, потом, когда решите, что решение уже достаточно готово, готов буду вернуться к тестированию и попробовать сравнить быстродейстиве на одной и той же задаче. на Битрикс vs на вашем
0
|
||||||||||||
|
-508 / 32 / 0
Регистрация: 22.09.2015
Сообщений: 1,232
|
|||
| 15.04.2024, 10:39 [ТС] | |||
|
Насчёт лирики.
Теперь с точки зрения разработчика. Нравится вам существующие инструменты используйте их, я никого не заставляю использовать свой инструмент. А по мне мой инструмент лучше остальных, не перестану это говорить, так как многие вещи продуманы и реализованы лучше, да есть слабые места, я же не гений всё абсолютно предусмотреть и делаю всё по своему, а не по учебникам и тп. Насчёт практики. Добавлено через 30 минут Насчёт GRASP и архитектуры продукта. Вот ты начитался учебников и делаешь всё по их методичке, а свою голову и соображение не включаешь. GRASP или паттерн разделения ответственности как и в MVC и ему подобных это статичный способ создания ПО. Так вот они статичны, то есть на стадии разработки закладывается жёсткая структура сущностей и их взаимосвязей, при малейшем чихе изменении модели сущности или методов работы всё накроется медным тазом.. У меня архитектура рассчитана на гибкое изменение и не имеет жёстких представлений моделей сущностей и методов работы с ними, своего рода пластилин, чего хочешь, то и лепишь в отличии от смолы которая только на стадии изготовления пластична, а потом только разбивать приходится чтобы что-то из неё достать.. что собственно в статичных архитектурах и происходит зачастую.
0
|
|||
| 15.04.2024, 10:39 | |
|
Предлагаю подорвать движок трекера в месте Предлагаю объединиться в команду для разработки программных приложений за денежное вознаграждение или процент от прибыли Предлагаю сотрудничество! Предлагаю сотрудничество програмистам. Предлагаю сотрудничество JS программисту Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Запрет пометки на удаление и отмены проведения
Maks 16.07.2026
Алгоритм из решения ниже реализован на нетиповом документе "ПутевойЛист" разработанного в КА2.
Задача: запретить помечать на удаление и отменять проведения путевого листа при условии, если он сдан. . .
|
Как надо было делать правильно - вообще не слушать ИИ, его дело - текст.
Hrethgir 15.07.2026
А вообще надо было делать не так, чтобы не исправлять ошибку https:/ / www. cyberforum. ru/ blogs/ 223907/ 10996. html , правильно было : удалил кнопку, а потом добавил её.
Всё это стресс конечно. Почему?. . .
|
Знаете, от чего появляется стресс?
kumehtar 15.07.2026
Стресс появляется оттого, что вы, зная как поступить правильно, делаете наоборот.
Ларри Уингет
|
Нас бьют, а мы крепчаем? Какая чушь!
kumehtar 15.07.2026
Вот это вот бытующее мнение, что человек меняется только под действием проблем, всегда считал вредоносным. Поверь, от проблем у людей появляются не изменения, а нервное расстройство и ПТСР. А. . .
|
|
сукцессия 29. Переход от одних деревьев на другие делать более или менее вероятностным?
anaschu 12.07.2026
Насколько смена типов микоризы — исключительное событие в двухвековой сукцессии? Оценка вероятности в пространстве параметров
В текущей версии модели успешно реализован ключевой механизм. . .
|
сукцессия 27. Думаю, как переделывать уже написанную статью с планами на сукцессию.
anaschu 12.07.2026
Анализ соответствия модели требованиям
Реализованные компоненты:
Механизм закисления почвы через протонную помпу
Конкуренция между типами микориз
pH как триггер сукцессии
C/ P соотношение. . .
|
Сукцессия 26. Мат модель создана.
anaschu 12.07.2026
Модель смены растительных сукцессий посредством управления грибами работает внутри небольшой ячейки почвы, восстанавливающейся после пожара, где ненадолго бывшее царство хвойных снова захватили. . .
|
Решил проблему с ошибкой пагинации сообщений с сервера на алгоритме обхода дерева "Эстафета хвоста".
Hrethgir 12.07.2026
Проблема была в том, что удалялась именно новая кнопка, а не старая. Ни один ИИ не обнаружил это, а сам я смог только когда с работой стало попроще и когда заставил работать будущее автономное. . .
|