• Какой фреймворк для Go изучать в 2024 году?

    Слава, В Go 1.22 прокачали пакет http, и теперь для подавляющего большинства проектов не нужен даже сторонний роутер.
    Поэтому, настоятельно рекомендую вам не использовать ни какой фреймворк до тех пор, пока он вам прямо позарез не понадобится, и вы сможете чётко и конкретно аргументировать, зачем именно этот фреймворк вам нужен.
    Для логов возьмите стандартный пакет slog, фреймворк не нужен.
    Конфиги пока просто на самом языке напишите в виде структурок, и берите данные из тех же переменных окружения. А уже потом найдёте что-то более подходящее именно для вас.
    Написано
  • Как исправить отображение несуществующих ошибок?

    Марк Ешкилев, Почитайте страничку с расширением, может там какой-то конфиг неверно прописан
    Написано
  • Как исправить отображение несуществующих ошибок?

    Давно не юзал Laravel, но помню, что надо было установить снипет для blade, по-моему стандартное расширение Laravel не справляется с этим. https://marketplace.visualstudio.com/items?itemNam...
    Написано
  • Возможна ли sql инъекция?

    Карлиндоу Мэрлифи, Вам тогда надо не сюда, а в древние форумы профессионалов по безопасности, где и обнаруживали проблемы.
    У меня подход к безопасности следующий:
    - Всегда брать сторонние проверенные решения. Там люди собаку съели на безопасности, не чета мне (и 90% программистам), занимающихся перекладыванием json или данных из форм в базу и обратно через тонкий слой элементарной логики.
    - Если я где-то в проверенных источниках услышу, что решение небезопасно, я даже особо вдаваться в подробности не буду, просто прекращу этим пользоваться. Упрямство и завышенный ЧСВ программистов часто приводят к утечкам, о которых потом говорят в новостях.

    Поэтому, тут вам и примеров-то никто не даёт, потому что все те, кто зарабатывают деньги при помощи написания кода, уже забыли много лет назад о mysql_escape_string и mysql_query)
    Написано
  • Как правильно разрабатывать symfony приложение локально?

    Спасибо! Я пока не добрался до них. Надо будет обязательно заценить в свободное время
    Написано
  • Как правильно разрабатывать symfony приложение локально?

    Danbka,
    1. Это чисто для удобства. Если вы обратите внимание, они основаны на разных базовых образах PHP. Эти образы по-разному оттюнингованы каждый под свою задачу.
    php-cli заточен под то, чтобы его запускать и сразу после выполнения скрипта останавливать, он не висит в памяти, вы не мешаете работе вебсервера.
    2. Опять же для удобства. Вы можете так настроить образ php-fpm, что он практически не будет отличаться от того, что бежит на проде. А чем меньше отличается образ на локалке от образа на проде, тем меньше у нас ситуаций типа "это же работает на моей машине!". Это меня очень часто выручало. Тем более, когда образы практически не отличаются, тем проще вносить изменения одновременно и на локалке, и на прод. Вы прямо одним взглядом будете видеть отличия.

    В общем, это дело вкуса. Если вам не нравится, не используйте.
    Единственное, что вам посоветую - использовать мульти-стадийную сборку образов. Т.е. в одном и том же докерфайле сначала используете образ-сборщик на основе php-cli, который сделает composer install, а потом, на следующей стадии, в этом же файле используйте уже образ php-fpm без композера, и просто скопируете внутрь него результат работы первого этапа уже с директорией vendor, прогретым кэшем и т.д. Он будет занимать намного меньше места.
    Погуглите обязательно, это очень круто
    Написано
  • Как создавать, принимать и обрабатывать socket?

    Vitsliputsli,
    К библиотекам у меня больших претензий нет. Они делают, что могут. Проблема в том, что они требуют особого подхода, особого окружения, и не всегда их получится легко интегрировать в уже работающий проект.
    Сам чистый PHP до сих пор полностью не подходит под долгоживущие процессы, потому что если вы не будете досконально знать, как работает сборщик мусора, не будете микромэнеджить жизнь каждого созданного объекта, он у вас обязательно потечёт. Поэтому, есть такая практика: перезапускать такие процессы через какое-то определённое время, либо когда размер памяти превысит какое-то пороговое значение, либо просто отталкиваться от количества каких-то логических операций, выполняемых этим процессом. А потом давать процессу SIG_KILL, он будет мягко завершаться и перезапускаться.
    Но любой перезапуск потребует и перезапуска соединения с браузером, т.е. надо будет и фронтенд усложнять. И оно нам надо? Только потому, что мы всеми зубами фанатично держимся за PHP?
    Я считаю, что нужно выбирать инструмент под задачу, и если есть языки, на которых это реализовать проще и быстрее, то так надо и делать
    Написано
  • Как правильно писать тесты PHPUnit под ООП?

    Дмитрий,
    Я о том и написал в первых абзацах. Если использовать Dependency Injection для подключения всех зависимостей, то нам вообще не надо тестировать private методы. А если вдруг стало надо, то лучше задуматься об архитектуре проекта и изменить это...
    Использование protected вместо private - это как раз техника на такие вот случаи. Если нам вдруг резко надо будет отнаследоваться с этим методом, то можно будет это сделать вообще без изменений базового класса, что очень приветствуется, когда над проектом работает больше одного человека.
    Я большой противник наследования, его использую только в крайних случаях, поэтому лично для меня нет большой разницы между private и protected. А когда как раз вдруг возникает крайняя необходимость в наследовании, то protected тут и выручает.
    Написано
  • Как создавать, принимать и обрабатывать socket?

    Vitsliputsli,
    Я согласен с вами, что PHP уже другой. Сам прыгаю от счастья последнее время, потому что PHP - это мой кусок хлеба. Но всё равно на нём всё ещё очень просто написать долгоживущий процесс, который будет течь по памяти. Поэтому до сих пор живёт и процветает тот же Swoole и прочие.
    Подобные веб-серверы для той же ноды уже проверены годами, заматерели, обросли тоннами качественных туториалов.
    И когда вместо того, чтобы решать бизнес-задачу, придётся возиться с утечкой памяти в PHP, будет крайне неприятно.
    Написано
  • Как гарантировать последовательную запись данных без пропусков id?

    Полностью поддержу!
    Практически везде, где я в своей жизни использовал автоикремент чуть более, чем тупой уникальный упорядоченный ID, я постоянно сталкивался с какими-то проблемами
    Написано
  • Как получить переменную из callback php?

    <?php
    require_once __DIR__ . '/../../../vendor/autoload.php';
    
    // Этот класс Message лучше вынести в отдельный файл.
    class Message {
        public array $messages = [];
    
        public function addMessage(string $msg) {
            $this->messages[] = $msg;
        }
    }
    
    $message = new Message();
    
    $client = new \Binance\Websocket\Spot();
    
    $callbacks = [
        'message' => function ($conn, $msg)  use ($message) {
            $message->addMessage($msg);
            echo $msg.PHP_EOL;
        },
        'ping' => function ($conn, $msg)  use ($message) {
           $message->addMessage($msg);
            echo "received ping from server".PHP_EOL;
        }
    ];
    
    # single pair
    $client->miniTicker($callbacks, 'btcusdt');
    var_dump($message->messages);
    Написано
  • Как получить переменную из callback php?

    Ну вот прямо из моего примера всё и взять. У меня там класс Client - это просто имитация вашего бинансовского класса Client.

    Главное - это конструкция use в коллбэках. Она замыкает переменную $message внутри этих коллбэков. А т.к. переменная $message является просто ссылкой на сам объект, то когда эта переменная копируется внутрь коллбэка через замыкание, она всё равно ссылается на тот же самый объект, и мы этим пользуемся, чтобы собирать сообщения
    Написано
  • Есть ли сейчас необходимость в HTML5Shiv и Modernizr?

    Владислав Лысков, С JS нам просто повезло на данный момент. Потому как движки всё же совершенно разные у Safari и Chrome. Повезло, потому что разработчики с обеих сторон стараются всё же полностью соответствовать стандартам ECMAScript. Но я побаиваюсь, что это всё же может измениться в будущем.
    А Safari уже реализовали обновление браузера отдельно от обновления системы? Ведь именно это и было главным злом и бедой Safari. Я просто давно Маком не пользуюсь, не в курсе)
    Написано
  • Есть ли сейчас необходимость в HTML5Shiv и Modernizr?

    C Bing я, конечно, тупанул. Просто опечатка)))
    Практически все проблемы, когда что-то не так отображается на странице, поступают к нам от пользователей Safari
    Написано
  • Есть ли смысл учить jquery?

    partyzanx,
    Плагины. Их просто миллиард, на все случаи жизни.