• Как установить PHP в режиме отладки под Ubuntu?

    @Vitsliputsli
    Интерпретатор в консоли, и "в браузере", это совершенно разные программы, с разными конфигами, модулями и т.д.
    Написано
  • Почему возникает SQLSTATE[HY000]: General error: 2014 при прямой вставке данных в MySQL таблицы через DBAL?

    @Vitsliputsli
    Александр Попов,
    А вы не знаете, почему был выбран разработчиками такой принцип?

    Если вы про то, почему PDO использует по-умолчанию эмуляцию, а не настоящие подготовленные запросы, то это не очень хорошая реализация в MySQL. Там при высокой нагрузке не всегда во время очищаются сохраненные подготовленные запросы. В том же PostgreSQL такой проблемы не было. Но, может в последних версиях и починили.
    Что касается отсутствия поддержки множественных запросов с подготовленными выражениями, не скажу. Вероятно, малая вероятность повторного использования при существенном усложнении хранения и обработки, да и подготовленное выражение это уже 3 запроса вместо 1го, т.е. никто не видит проблемы в нескольких запросах к серверу.

    Если один человек вводит, наверное он не станет вводить данные, которые могут привести к инъекции.

    Какой бы доверенный человек не был, завтра может быть другой или ктото получит его доступ. В любом случае, делать дыры допускающие инъекции плохая практика.
    Написано
  • Почему возникает SQLSTATE[HY000]: General error: 2014 при прямой вставке данных в MySQL таблицы через DBAL?

    @Vitsliputsli
    Akina, да, его цель защита от sql-инъекций, а для этого надо прям заморочиться с парсингом. Но это речь только про эмуляцию.
    Классический пример, баг PDO, когда в китайской кодировке использовался особый символ кавычки, который парсер PDO воспринимал как кавычку, а СУБД нет, или наоборот. В итоге, проходили sql-инъекции.
    Написано
  • Почему возникает SQLSTATE[HY000]: General error: 2014 при прямой вставке данных в MySQL таблицы через DBAL?

    @Vitsliputsli
    Ипатьев,
    Vitsliputsli, но PDO-то поддерживает. Так что пользователь PDO может продолжать использовать prepare.
    Парсер в PDO вообще ни разу не полноценный, а простая заменялка плейсхолдеров. В том числе для обеспечения поддержки эмуляции.

    Поддерживает, но автор использует эмуляцию.
    Он для эмуляции и создан, для prepared он и не нужен, там уже СУБД сама разберется. Полноценный не в смысле, что он всю грамматику разбирает. Но он и не просто заменялка, так как на нем полноценная защита от sql-инъекций.
    Написано
  • Почему возникает SQLSTATE[HY000]: General error: 2014 при прямой вставке данных в MySQL таблицы через DBAL?

    @Vitsliputsli
    Александр Попов, MySQL не поддерживает множественные запросы для подготовленных выражений:
    https://dev.mysql.com/doc/c-api/8.0/en/c-api-multi...
    https://dev.mysql.com/doc/refman/8.4/en/prepare.html
    но вы попрежнему можете их использовать без подготовленных выражений.

    Akina,
    Да не будет библиотека этого делать! К тому же просто разделить по точке с запятой - это гарантированно всё поломать, если указанный символ входит в состав строкового литерала. И что, теперь цеплять в библиотеку полноценный парсер?

    Что написано, то и передаётся серверу в том виде, в каком написано. Это его парсеру разбираться.

    В библиотеке PDO уже присутствует полноценный парсер SQL. Мало того, по-умолчанию для MySQL именно он и работает (а так как в коде выше автор не отключал эмуляцию подготовленных выражений, то и в его случае тоже). MySQL плохо работает с prepared statements и вероятно поэтому PDO предпочитает их не использовать.
    Написано
  • Memory limit в Clickhouse. Как бороться?

    @Vitsliputsli
    При попытке сделать к ней Left join или просто при выборке с сортировкой по какому-либо полю

    Если просить вернуть все 200млн, то памяти скорее всего и не хватит.
    Написано
  • Как получить имя переменной из строки?

    @Vitsliputsli
    Алексей Денисов, зачем кешу тратить время на чтение с диска? Каждый раз по 200 байт.


    Вместо переменных и массивов - сделал отдельно файлы с именами 123, 578, 015 и т.д.
    (на самом деле HEX значения - 6 знаков).
    Имя = один из GET параметров запроса

    Т.е. пользователь может посмотреть любой файл, имя которого укажет в GET параметре?
    Написано
  • Как получить имя переменной из строки?

    @Vitsliputsli
    Алексей Денисов,
    но в некоторых переменных содержатся строки более 2000 символов, а самих переменных может быть далеко за 100,
    это какой массив тогда получится.

    И что смущает? Массив получится такой как и должен. 200Кб это немного, а с переменными будет примерно те же 200Кб.
    Для массивов данных в php есть структура массив, так почему ее не использовать?
    Написано
  • Почему происходит откат изменений после выполнения merge request?

    @Vitsliputsli
    krosten92,
    тоже думал, что форсит. Но утверждает, что нет

    А зачем верить на слово? Откройте журнал git по ветке и проверьте, что действительно происходило, где был merge, а где rebase, или вообще reset.
    Если что, это делается так:
    git reflog show dev
    Написано
  • Почему происходит откат изменений после выполнения merge request?

    @Vitsliputsli
    krosten92,

    Я так понимаю ему ничего не пишется, а pull делать религия не позволяет

    Это не религия, а банальная лень и наплевательство на чужой труд.
    Скорее всего он делает force push, и тупо перезаписывает историю. Защитите ветку от force push или бейте по рукам.
    Написано
  • Миграция с Виндовс на Арч. Какие могут быть проблемы?

    @Vitsliputsli
    Drno, логически это теоретически, у меня, на практике, LTS Ubuntu подсыпал неожиданные баги регулярно в отличии от Арча. Debian стабилен, но слишком древнее ПО для рабочего компа. Хотя на сервер я тоже постремался бы ставить роллинг релизы, почемуто верится, что все ПО в дистрибутиве лучше тестируется.
    Арч ставится не намного сложнее, но нужно понимать, что делаешь. Поэтому и нет автоустановки, так сделано специально, если слишком сложно запустить несколько команд из консоли, то действительно не стоит его брать. Есть, конечно, всякие Manjaro, но чтото у их пользователей слишком часто возникают проблемы.
    Написано
  • Почему скрипт bash выполняется несколько раз?

    @Vitsliputsli
    Т.е. скрипт находит новый файл, затем перезаписывает его, а значит скорее всего создает опять новый файл, и он опять попадает в скрипт как новый.
    Написано
  • Знаю только Python и SQL. Нужно ли наращивать стек знаний перед попыткой смены работы?

    @Vitsliputsli
    paran0id,

    kafka - вещь узкоспециальная, а вот kubernetes точно лишним не будет

    kubernetes - вещь узкоспециальная, а вот kafka точно лишним не будет
    Написано
  • Как составить SQL запрос для подставления значения по времени?

    @Vitsliputsli

    Задача видеть в каком статусе пришло то или иное сообщение

    Значит вам нужна связь между статусами и сообщениями, в описанной схеме ее пока нет.
    Написано
  • Как автоматически подставлять значение в value?

    @Vitsliputsli
    tajfun_rt, Если я правильно догадался, то вы хотите вывести id будущей записи, которая еще не записана в БД. Тогда укажите СУБД, какую используете. Если в ней есть отдельно вынесенный sequence, то пользуйтесь им. Если нет, то несколько вариантов, которые приходят в голову:
    1) эмуляция sequence, т.е. прям в базе храните последний id (как вы и планировали), и при обращении высчитываете следующий и сохраняете (но нужно будет учитывать гонку);
    2) каждый раз налету получать последний id (опять же гонка);
    3) делать insert и использовать полученный id, а затем обогащать эту строку данными. Если допустимо по архитектуре и нет опасности большого кол-ва пустых строк, либо решите этот вопрос.
    Написано
  • Как дождаться завершения процесса, запущенного через proc_open?

    @Vitsliputsli
    Евгений Обыкновенный,

    Работает нормально, но не очень хорошо делать активный цикл одижания.

    Что такое активный цикл ожидания?
    Вы сделали sleep, все время в нем указанное процессор может отдыхать или делать чтото иное. Было бы сложнее, если нужно чтото еще делать между проверками, а так все также как если бы это было асинхронно из коробки, только вручную.
    Написано
  • Как правильно разбить массив на ключи и значения?

    @Vitsliputsli
    Лучше рассмотреть вариант использования json для хранения базе. Не нужно будет парсить вручную и нет проблемы использования запятой или знака равно в названиях (например "Зеленоград, Москва").
    Написано
  • Как узнать сумму выброщенных чисел из массива?

    @Vitsliputsli
    muminwww, тем более важно, если изучаете. Вариант rPman гораздо эффективнее, т.к. затрат на него меньше. При малых числах это незаметно, но при больших разница будет существенной.

    1 вариант:
    $min = min($foo); // перебор всего массива 
    $max = max($foo); // перебор всего массива
    $fullRange = range($min, $max); // создание нового массива размером с первоначальный
    $missed = array_diff($fullRange, $foo); // вычисление расхождения массивов
    $sum = array_sum($missed); // перебор всего массива


    2 вариант:
    $n = max($foo); // перебор всего массива, а если массив отсортирован, то и этого не нужно
    $asum = ((1+$n)*$n)/2; // простые вычисления
    echo $asum-array_sum($foo); // перебор всего массива
    Написано
  • Как получить константы в php из другого файла в классе?

    @Vitsliputsli
    Прочтите доку, как минимум это https://www.php.net/manual/ru/language.oop5.consta....
    А если не поможет покажите код.
    Написано
  • Как преобразовать UNION-запрос в простой?

    @Vitsliputsli
    Отличия этого варианта от оригинального:
    - Не будут убраны дубликаты.
    - Будут потеряны SecondField, если FirstField тоже подходит.

    Если продолжать наркоманить, то можно сделать cross join с таблицей из двух строк 1 и 2, и на основе ее выбирать FirstField и SecondField. Но нужно придумать, как создать такую таблицу без union.
    Написано