Задать вопрос
  • Как вызвать curl и не ждать ответ?

    @Vitsliputsli
    Типичное решение, как уже описал Adamos, это запуск отдельных процессов через cron (или демоном, если работы много или нужна быстрая реакция), которые разбирают очередь.
    Почему не через exec, потому что это структуризация кода, разделение и контроль отдельных процессов, да еще и хороший контроль нагрузки.
    Есть еще варианты со своими особенностями:
    1) если ответ не нужен (но, только если это действительно так!), то используйте UDP;
    2) если это fpm, то отправляйте сперва ответ пользователю через fpm, а потом уже шлите запрос (здесь можно будет проконтролировать ответ и сообщить об ошибке в лог). Т.е. пользователь получит ответ, а ваш запрос отработает после в фоне. Но тогда, вместо отдельных воркеров мы все скидываем на воркеры fpm, так что это тоже надо учитывать.
    Ответ написан
    Комментировать
  • Нужен ли микро-сервису отдельный сервер/хост?

    @Vitsliputsli
    Нужен ли микро-сервису отдельный сервер/хост?

    Да, нужен. В парадигме микросервисной архитектуры, каждый сервис независимый узел, так что там и БД нужно отдельную завести.

    Решил сделать сервис авторизации чтобы не писать в каждом проекте его по новой

    Отлично, оформите ее библиотекой, компонентом, модулем и т.п.

    В общем, исходите из своих потребностей, а не "должен", "надо", "красиво звучит". Микросервисная архитектура - это архитектура всего проекта, а не отдельной части кода, она имеет как плюсы, так и минусы. Она про дробление функционала для более удобного контроля, а не про "не писать по новой". "Не писать по новой" - это библиотека.
    Ответ написан
    Комментировать
  • Запрос на создание таблицы в clickhouse Yandex выдает ошибку 400 Bad Request, что не так с моим запросом?

    @Vitsliputsli
    file_get_contents не для этих целей. Не хотите использовать готовое решение для подключения к Клику, используйте хотя бы curl, чтобы получить нормальный ответ с описанием ошибки.
    Без описания ошибки можно только гадать, что не так, а это непродуктивно, сегодня решите, а завтра будет новая ошибка и снова гадание.
    Ответ написан
  • Можно ли в PHP вкладывать однострочные комментарии // в многострочные /* */?

    @Vitsliputsli
    Прочитайте мануал, вообще это всегда нужно делать при возникновении вопросов.
    Если открыть https://www.php.net/manual/ru/language.basic-synta... там прямо указано:
    Комментарии в стиле языка C заканчиваются, когда обнаруживается первая последовательность */

    Вполне четко и однозначно.

    Например, // перекрывает /*, но не перекрывает */

    Никто никого не "перекрывает". Если у вас однострочный комментарий, то в мануале об это сказано так:
    Однострочные комментарии распространяются только до конца строки PHP-кода или на текущий блок PHP-кода в HTML-строке, в зависимости от того, что идёт первым.

    Открыли комментарий конструкцией // и уже не важно, что там будет дальше до конца строки.
    Открыли комментарий конструкцией /* и уже не важно, что там будет дальше до закрывающей конструкции */.
    Ответ написан
    Комментировать
  • Что правильнее: git merge master VS git rebase?

    @Vitsliputsli
    Правильнее merge.
    Merge создаст новый коммит в котором объединит 2 ветки.
    Rebase удалит все ваши коммиты из ветки, перенесет ветку в другое место и создаст новые коммиты с новым родителем.

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

    @Vitsliputsli
    Если надо универсально, для любого кол-ва (что сомнительно):
    function urlCombinations(...$arrays): array
    {
        if (count($arrays) <= 1) {
            return $arrays;
        }
        $urls = [];
        foreach ($arrays[0] as $value1) {
            foreach ($arrays[1] as $value2) {
                $urls[] = "$value1/$value2";
            }
        }
        return urlCombinations($urls, ...array_slice($arrays,2));
    }
    var_dump(urlCombinations($array1, $array2, $array3));

    Но, скорее всего так:
    $urls = [];
    foreach ($brands as $brand) {
        foreach ($styles as $style) {
            foreach ($colors as $color) {
                $urls[] = "$brand/$style/$color";
            }
        }
    }
    var_dump($urls);
    Ответ написан
    Комментировать
  • Как установить русский язык в php:8.2-fpm-alpine?

    @Vitsliputsli
    apk del icu-data-en
    apk add icu-data-full
    Ответ написан
    Комментировать
  • Как безопасно, выборочно извлечь файлы/папки из одной ветки (сохраняя историю) и переместить в другую?

    @Vitsliputsli
    Мне нужно отделить фичу размазанную по веткам в отдельную ветку

    Создаете ветку W в HEAD ветки M. С помощью git checkout затягиваете в нее нужные файлы. Проще конечно это сделать в какомнибудь gui (в IDEA IDE это называется get from Revision).

    Как переместить в новую ветку W файл m.txt и его историю из 8 коммитов?

    Довольно сомнительная хотелка, придется создать много новых коммитов.
    Создаете ветку W в HEAD ветки X, затем удаляете все ненужное
    git filter-branch --tree-filter 'rm -f x.txt' X
    Создаете ветку W2 в HEAD ветки Y, затем
    git filter-branch --tree-filter 'rm -f y.txt' Y
    затем мержите W и W2. Разумеется можно и в другом порядке.
    Ответ написан
  • Нормально ли дублирование строк в IN?

    @Vitsliputsli

    Подскажите нормально ли это или нет?

    Смотря какие нормы применяете.
    Будет ли СУБД повторно сравнить с каждым дублем? Нет, не будет.
    Где лучше отсеивать дубли? С учетом, что СУБД чаще всего узкое место, тем более если приложение работает в нескольких инстансах, то лучше конечно на стороне приложения.
    Ответ написан
    Комментировать
  • Почему не видно свойства?

    @Vitsliputsli
    Указанные обращения вполне корректны. Даже без явного указания замыкания, php свяжет this с текщим объектом класса WorkermanWebSocketController. И все обращения (в том числе и запись) внутри анонимных функций в инстансах класса Worker будут замыкаться на него.
    Почему не работает, потому что приведенный код нисколько не говорит о том, в каком порядке будут выполняться эти анонимные функции.
    Ответ написан
    Комментировать
  • Как установить линукс на ноутбук с флешки?

    @Vitsliputsli
    Если проблема только в usb.
    Стартануть grub (с диска или с флеш). Скопировать образ с флеш в оперативу, и запустить его.
    Ответ написан
  • Почему PHP считает int числа после математических операций как float?

    @Vitsliputsli
    Почему PHP считает int числа после математических операций как float?

    Потому что именно такое поведение описано в документации. Вообще, чтение документации отвечает на большинство вопросов. Очень рекомендую всегда начинать с нее.
    Ответ написан
    Комментировать
  • Как в софтверных компаниях относятся к использованию ИИ?

    @Vitsliputsli
    Т.к. ответа на вопрос никто не дал, то
    Как в софтверных компаниях относятся к использованию ИИ?

    В нормальных компаниях всем глубоко пофиг как ты будешь выполнять задачи, главное чтобы был результат. Даже сами дадут доступ к какомунибудь внутрикомпанейскому ИИ.
    А вот сможешь ли пройти собеседование имея только навык ставить задачи ИИ, тут очень сомневаюсь.
    Ответ написан
    3 комментария
  • Как системному администратору свичнуться в Devops-инженеры?

    @Vitsliputsli
    Просто поменяйте в своем резюме должность на DevOps-инженера.
    Т.к. это тот же системный администратор, разве что подразумевается, что квалифицированный - откройте предложенный здесь roadmap и убедитесь.
    Если увидите, что roadmap отличается от того, чем вы занимались, то это значит не работали с крупными проектами. Ищите компанию в которой будут эти инструменты, а не слово devops в вакансии.
    Ответ написан
    4 комментария
  • Можно ли тянуть от оператора два кабеля интернета?

    @Vitsliputsli
    возможно ли будет увеличить скорость, если тянуть два интернет кабеля?

    как уже написано, если провайдер обеспечит на каждом кабеле по 100, то возможно.

    Какое оборудование для этого лучше использовать?

    Проще всего 2 железки, способные подключиться к интернету провайдера и раздать на 10 машин каждая. Будет 2 подсети, если надо можно и локальный доступ сделать между ними.
    В случае 1 железки придется хитро маршрутизировать, или задавать каждой машине свою подсеть со своим шлюзом.

    Интернета не хватает (20+ компьютеров).

    Не факт, что после увеличения скорости интернета будет хватать. Ктото 5Мб фалик не может по почте получить, а у когото фильмец медленно через торрент льется. Вполне возможно, что вам нужно смотреть в сторону шейперов.
    Ответ написан
    Комментировать
  • Проектирование БД: чем сейчас люди пользуются?

    @Vitsliputsli
    Основное требование: востребованность в будущем этих навыков.

    Для разработки бд в будущем как и сейчас будет востребован навык разработки бд. А где вы схему нарисуете, да хоть на бумажке, это вообще дело десятое.
    Если расчет, что инструмент както сам большую часть сделает, то нет, не сделает. А что сделает, то и самому легко написать.
    Ответ написан
  • Возможно ли задать подсказку в phpstorme для возвращаемого типа?

    @Vitsliputsli
    Это не просто подсказки, это контроль типов. То, что зная какой тип возвращается Шторм может подсказать варианты это побочное удобство. Основное же должно быть то, что конкретная переменная имеет определенный тип, а значит не нужны дополнительные проверки и методы будут лаконичны и конкретны. У вас пока, то ли объект, то ли массив, то есть каждый раз нужно проверять что это. Лучше бы сделать объект-коллекцию.
    Чтобы указать Шторму, что в конкретной переменной лежит только этот тип используется хинт, типа такого:
    /** @var User $user */
    но разумеется, он должен быть только в том коде где в $user лежит обязательно объект класса User и ни что иное.
    Ответ написан
    1 комментарий
  • Как трудоустроиться системным аналитиком?

    @Vitsliputsli
    Начните с бизнес-аналитика. Там можно чтото найти без опыта и специфических знаний, нужна только логика. А уже с опытом и изучив необходимые инструменты, сможете двигаться дальше.
    Аутстафф - это когда специалисту платят меньше рынка, его труд продают по рыночной цене, а разницу забирает тот, кто придумал схему. Все остальное будет зависеть от конкретной аутстафф компании и конечных компаний.
    Ответ написан
  • Почему вдруг нагружается сервер и потом все сбрасывается?

    @Vitsliputsli
    1Гб это очень мало для современных дистрибутивов, тем более для сервера с СУБД. apt check в Ubuntu (не знаю как в других) любит жрать память без причины, просто так, и никто это не чинит уже более 10 лет. А когда память заканчивается неизвестно, что попадет "под нож", вполне может и СУБД, как самый жирный процесс. Поэтому проверьте когда в последний раз запускали СУБД.
    Если увеличить память никак нельзя, попробуйте полностью отключить запуск apt-check. Если у вас обновления автоматические, то перевести их на cron.


    сбрасывается индексное значение (auto_increment) до 1

    Таблица постоянно чистится, и в этот момент она пуста?
    Ответ написан
  • Есть ли преимущества от удаления поля id при создании таблицы?

    @Vitsliputsli
    На практике не делал, но чисто теоретически, поле id подразумевает что для него построен индекс primary key (иначе зачем оно нужно). В PostgreSQL primary key в партиционированной таблице - это индексы каждой отдельной партиции, т.е. если мы партиционировали не по полю id (а скорее всего так и есть), то при попытке обращения по полю id нам нужно отдельно пройтись по каждому индексу каждой партиции, а это уже не так весело как по одному индексу. А если партиции сделаны достаточно маленькими и их много, то фуллскан одной партиции скорее всего будет быстрее. А если контроль уникальности вынесен в приложение, то можно обойтись вообще без primary key, даже натурального, тогда и при вставке не нужно сканить все эти индексы.
    Ответ написан
    2 комментария