Задать вопрос
  • Как найти циклы в массиве?

    Я не совсем понимаю, что вам нужно. Нужно просто понять, есть ли где-то в цепочке зацикленность?
    Написано
  • Slog. Нужно ли предавать логгер через параметры или объявить его на уровне модуля и обращаться к нему?

    Fcorpion Rub-zero, Рекомендация: сначала делаете проект, он приносит деньги. А когда он вдруг начинает подтормаживать или сильно кушать ресурсы, вот тогда и наступает тот самый момент, когда надо начинать задумываться об экономии на спичках.
    Чтобы этот момент определить, сразу интрегрируйте мониторинг, например prometheus
    Написано
  • Slog. Нужно ли предавать логгер через параметры или объявить его на уровне модуля и обращаться к нему?

    Fcorpion Rub-zero, Не совсем понял вопрос. Я передаю не файл, а указатель на файл. Просто код создания файла я вынес в отдельную функцию getFileWriter, чтобы не захламлять код. Эта функция возвращает в основную функцию SetupLogger нужный нам поток логгирования (указатель на файл) и функцию закрытия. А в main мы возвращаем только функцию закрытия файла для defer.
    Если в коде какие-то проблемы, то я там некоторые вещи на скорую руку вырезал, потому что у меня там ещё и кастомная обёртка для логов использовалась, так что мог что-то повредить)
    Написано
  • Как спроектировать роутер?

    Ипатьев, Этот "клубок зависимостей" не так уж страшен, как его малюют)
    И простая инициализация всего по порядку гораздо проще в плане отладки, чем дебажить самописный DI контейнер.
    А ежели не хочется всё инициализировать при каждом запросе, то тут без кодогенерации либо какого-то там RoadRunner не обойдешься. Тогда уж проще фреймворк взять...
    Написано
  • Сопровождение сайтов на абонентской основе - что это на практике сейчас?

    Дополню.
    Главное в этом деле - не подводить.

    Если менеджер, на которого повесили головную боль по доработке или починке сайта всегда сможет с вами связаться и в разумные сроки получить решение, то вероятность того, что он постоянно будет с вами работать и посоветует вас по сарафанному радио всем своим знакомым, весьма велика. Они очень любят специалистов, которые избавляют их от головной боли. Самое интересное в этом, что так можно внезапно получить очень крупный заказ.

    Но стоит один раз подвести и заставить его искать вам замену, то эта сарафанная ветка может навсегда умереть.

    Причем, даже если вы не обладаете знаниями по решению какой-то конкретной проблемы, то станьте посредником, найдите человека, который сможет это решить под вашим началом
    Написано
  • Как обрабатывать данные, сохраняя очередность?

    tmgrr, Тут всё зависит от того, что вы делаете в обработчике.
    Если, например, запросы во внешние API не требуют очередности, а требует очередности только обработка их конечного результата после этих запросов, то можно добавить конкурентности...

    В этой же таблице с данными можно добавить поле result, в которое складывать данные от внешних запросов. Тогда можно будет запустить много обработчиков параллельно.

    И уже напоследок ввести ещё один обработчик, который будет только единственным, и который будет из этой таблицы выбирать самую старую запись, смотреть, есть ли данные в поле result.
    Если данные есть, то обработать и пометить запись окончательно обработанной или удалить её. А если данных в поле result нет, то ждать пока они там не появятся.

    Таким образом мы ускорим общую работу всей обработки в целом, т.к. самые долгие операции - это вызовы внешних API, и именно их мы будем обрабатывать параллельно, а готовый результат будет обрабатываться строго по очереди
    Написано
  • Как обрабатывать данные, сохраняя очередность?

    Rsa97, Я просто не специалист в Laravel, больше по Symfony. Поэтому и описал универсальную идею, используя базу данных как очередь, потому что с базой данных даже начинающие умеют работать.
    В Symfony есть компонент Messenger, который всё это берет на себя, умеет делать очереди как из базы данных, так и в брокерах.
    Наверняка, в Laravel есть подобный инструмент
    Написано
  • Почему PhpStorm показывает ошибку в строке с SQL запросом?

    BjornBorn, Для понимания SQL ему нужны драйвера. Он сам их установит. Phpstorm очень хорошо умеет работать с базой данных. У него отличный инструмент есть для этого "Database tool window"
    Установите этот плагин, если он ещё не установлен, и подключите свою базу туда. Вы сможете прямо оттуда даже редактировать данные, писать запросы в специальной консоли и т.д. и т.п.
    View | Tool windows | Database
    И тогда Phpstorm будет вам давать подсказки прямо в коде программы. Он покажет, если вы ошиблись с названием таблицы или поля и т.д.
    Написано
  • Почему такой неадекватный расход памяти?

    Если на локалке и на проде по-разному жрёт память, то проблема, скорей всего, в вашем коде. Ведь базы данных, наверняка разные, и обрабатываете вы разные объемы данных. И если вы в каком-то цикле маленькими кусочками обрабатываете большие данные, временные переменные в которых содержат большие куски данных, то сборщик мусора может не успевать очищать память. Она лавинообразно накапливается и вылетает.
    Написано
  • Как при добавлении интерфейса удалить todo текст?

    evomed, Идея вставки тудущек в методы, имплементирующие интерфейс - это очень здравая идея. Видимо, поэтому разрабы даже не подумали делать опцию по их отключению.
    Подумайте, как мы добавляем методы в класс. У нас появляется идея о том, что в классе нам нужен новый метод с конкретным функционалом. И мы его берём и сразу добавляем. Это наше решение.
    А как мы чаще всего имплементируем методы интерфейса? Нам нужно, чтобы наш класс соответствовал какому-то чужому интерфейсу, чтобы мы имели возможность использовать наш класс где-то в других местах в каком-то контексте. Т.е. нас форсят это делать. И если интерфейс километровый, мы пишем эти методы, тихо проклиная создателя этой библиотеки или фреймворка. А нам не нравится, когда нас форсят, и некоторые методы так и могут остаться пустыми, потому что вот конкретно сейчас у нас нет времени на них. И это потом может внезапно бабахнуть.
    Будь моя воля, я бы, вообще, там вместо тудущек писал die("not implemented"), чтобы точно не забыть
    Написано
  • Почему не выравниваются элементы в flex контейнере а растягиваются?

    Крик души:
    Дорогой автор! Вы хотите, чтобы вам помогли, но при этом не хотите и пальцем о палец ударить для этого.
    Скриншот кода вместо самого кода - это просто неуважение к тем, кто хочет вам помочь.
    Неужели так трудно вырезать этот кусок кода и воспроизвести ошибку в том же самом codepen.io?
    Вам бы в первые минуты прилетело бы штуки три ответов. А так даже и смотреть на это не хочется...
    Уважайте время тех, от кого вам нужна помощь.
    Написано
  • Как исправить ошибку с бд?

    1. Вы хотите содержимое массива $_FILES["images"]["name"] запихнуть в поле таблицы базы данных?

    2. Если да, то какой тип у этого поля в таблице?
    Написано
  • Как настроить nginx для подсайтов?

    А так ли вам нужен именно nginx? Он довольно сложно конфигурируется, если вы не специалист.
    Попробуйте caddy. Он чрезвычайно прост.
    https://caddyserver.com/
    Написано
  • Как должен выглядеть идеальный контроллер?

    Danbka, Вы просили идеал, я вам дал "идеал")
    Задайте себе вопрос: будет ли ваш сервис развиваться?

    Если не будет, то пишите максимально просто и сосредоточьтесь только на одном: все важные части кода должны быть покрыты тестами и тесты должно быть легко писать. Уже только одна эта установка заставит вас писать код лучше и подскажет, как сделать контроллер "идеальным" для вашей конкретной цели.

    Если же это только начало очень большого проекта, то такое разделение на слои лучше реализовать сразу. Это как мыть руки перед едой. Можно этого и не делать, но есть шанс получить проблемы, которые потом очень долго лечить. А всего-то надо было вымыть руки...
    Написано
  • Не находит пакет gitlab-ee на Ubunty. Что делать?

    Видимо, у вас там совсем старая версия докера

    Сначала обновим докер:

    Обновляем репозитории
    sudo apt update

    Устанавливаем curl и сертификаты
    sudo apt install ca-certificates curl

    sudo install -m 0755 -d /etc/apt/keyrings

    sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc


    sudo chmod a+r /etc/apt/keyrings/docker.asc

    Добавляем репозиторий докера в список репозиториев
    echo \
      "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
      $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
      sudo tee /etc/apt/sources.list.d/docker.list > /dev/null


    Снова обновляем репозитории
    sudo apt update

    Устанавливаем плагин Docker Compose
    sudo apt install docker-compose-plugin -y

    Проверяем, что всё установилось
    docker compose version

    Должно быть что-то подобное
    Docker Compose version v2.29.7

    А потом уже запускать нашу команду в директории с файлом docker-compose.yaml

    docker compose up -d 
    Написано
  • Как мне поделиться моей курсовой работой с преподавателем?

    Rsa97, Я как-то бросил преподавателю "Вы нас не научили этому!"
    На что он мне ответил одной истиной, которую почему-то не доносят до современных студентов:

    "ВУЗ - это не ПТУ. Задача вуза - не надрессировать вас выполнять определенные действия. Главная задача ВУЗа - научить вас учиться".

    Студент, проявляющий инициативу, делающий больше, чем профессор "задаёт", мгновенно повышает свою оценку в его глазах, показывает заинтересованность в его предмете. Часто профессора потом опираются на таких студентов в работе с остальной серой массой. Если профессор выделяет вас среди остальных, то есть шанс, что используя свои многочисленные связи, он может просто посоветовать вас кому-то своему знакомому. Ведь надо понимать, связи в нашем программистском деле - это главный багаж, знания важны меньше. Особенно это касается джуниоров.
    Написано
  • Как мне сделать так, что бы лого и меню навигации были на одном уровне?

    lilwasd, Изучайте flex и grid. Без них уже никуда сегодня. В прямом смысле три строчки современного кода могут заменить древние километровые простыни CSS, иногда даже вынужденно испоганенные при помощи JavaScript
    Написано