Задать вопрос
  • Можно ли настроить запросы к php через вебсокет и http одновременно?

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    Разумеется можно. Никаких нюансов в одновременной работе нет, поскольку тут нет никакой "одновременности". php-fpm и websocket - это два разных сервиса, которые могут располагаться на одном и том же сервере или на разных, но в любом случае никак не пересекаются. В добавление к текущему веб-серверу вы просто запускаете вебсокет сервер и посылаете на него вебсокет запросы из браузера.

    Ну то есть вам всего лишь надо осознать, что никакой одновременности нет, а дальше просто поставить вебсокет сервер, например workerman, и написать код, который по запросу будет соединяться с БД, получать нужную инфу и отправлять клиенту.

    1. Да.
    2. Как говорилось выше - можно. Любой сервер в сети по определению обеспечивает работу множества сервисов, количество которых ограничено только количеством свободных портов. Можно поставить два веб-сервера и пять вебсокет серверов.
    3. Нет, разумеется. unix сокет это как раз внутренняя кухня сервера, но мы же говорим о сетевом взаимодействии. А tcp взаимодействие nginx и php-fpm тут вообще не при чём.
    Ответ написан
    6 комментариев
  • Можно ли настроить запросы к php через вебсокет и http одновременно?

    @rPman
    Да, подходит.

    websocket это расширение http запроса, т.е. там добавляются специфические заголовки и можно отправлять туда-сюда пакеты в одном соединении.

    Для этого приложение на php нужно реализовывать в виде http сервера (готовых библиотек тьма, включая штатные расширения), рекомендуется использовать swoole ну или по старинке на сокетах (библиотеки phpreact)
    Ответ написан
    4 комментария
  • Как реализовать переход с Bootstrap 3 на Bootstrap 5?

    ThunderCat
    @ThunderCat Куратор тега HTML
    {PHP, MySql, HTML, JS, CSS} developer
    Варианты перехода с Bootstrap 3 на Bootstrap 5:
    1. Постепенная миграция (Hybrid approach)

    Подключить Bootstrap 5 с префиксом классов
    Переписывать компоненты по одному
    Использовать CSS-изоляцию для избежания конфликтов
    Плюсы: Сайт остается рабочим, можно мигрировать частями
    Минусы: Увеличенный размер CSS, сложность поддержки

    2. Использование Bootstrap Migration Tool

    Автоматические инструменты для замены классов
    Скрипты для массовой замены в файлах
    Плюсы: Быстрая автоматизация базовых изменений
    Минусы: Не покрывает все кейсы, нужна ручная доработка

    3. Создание CSS-моста (Polyfill)

    Написать CSS-правила для совместимости классов BS3
    Создать алиасы для старых классов
    Плюсы: Минимальные изменения в HTML
    Минусы: Не все компоненты можно эмулировать, устаревший подход

    4. Полная перепись с нуля

    Установить Bootstrap 5
    Переписать все компоненты и страницы
    Плюсы: Современный код, лучшая производительность
    Минусы: Много времени, высокий риск поломок

    5. Использование CSS-in-JS или препроцессоров

    Создать миксины для совместимости
    Использовать SCSS для переопределения
    Плюсы: Гибкость настройки
    Минусы: Нужны знания препроцессоров

    6. Bootstrap 4 как промежуточный этап

    Сначала мигрировать на BS4, потом на BS5
    Плюсы: Меньше кардинальных изменений за раз
    Минусы: Двойная работа

    7. Микросервисный подход

    Переписывать отдельные секции сайта на новом Bootstrap
    Постепенно заменять старые части
    Плюсы: Изолированные изменения
    Минусы: Сложность интеграции

    Для больших проектов: Постепенная миграция (#1)
    Для средних проектов: Bootstrap 4 как промежуточный этап (#6)
    Для небольших сайтов: Полная перепись (#4)
    При ограниченном времени: CSS-мост (#3)
    Ответ написан
    2 комментария
  • Какие гарантии на выравнивание адреса указателя?

    @BulatZiganshin
    A read r of a memory location x holding a value that is not larger than a machine word must observe some write w such that r does not happen before w and there is no write w' such that w happens before w' and w' happens before r. That is, each read must observe a value written by a preceding or concurrent write.

    https://go.dev/ref/mem
    Ответ написан
    4 комментария
  • Почему PHP считает int числа после математических операций как float?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Так как в выражении одним из операндов присутствует деление, результатом которого будет число с десятичной частью, естественно все дальнейшие действия будут переводить операнды в совместимый формат - с плавающей запятой. Читать про неявные преобразования в языках со слабой типизацией.
    Ответ написан
    Комментировать
  • Почему SOP не блокирует запросы с разных источников, позволяя воспроизвести CSRF?

    vabka
    @vabka Куратор тега Веб-разработка
    CORS умеет блокировать не только ответы, но и запросы, но только в случае "сложных" запросов.
    (Например POST с Content-Type: application/json будет сложным)
    А банк от csrf-уязвимостей должен защититься при помощи csrf-токенов.

    https://habr.com/ru/companies/macloud/articles/553826/
    Ответ написан
    2 комментария
  • Как можно сделать проверку номеров квартиры, дома и улицы введенных пользователем?

    sabramovskikh
    @sabramovskikh
    dadata.ru
    Ответ написан
    Комментировать
  • Как построить свой маршрут в обход провайдерского (mikrotik 7)?

    martin74ua
    @martin74ua
    Linux administrator
    Становитесь провайдером, заключайте договора с магистралами, получайте AS, настраивайте BGP связность, ставьте оборудования для взаимодействия с органами, прокладывайте магистрали так, как вам надо. Делов то...
    Ответ написан
    Комментировать
  • Как установить драйвер mysql для golang?

    У вас проект не инициализирован, надо сделать go mod init имя
    Вы пытаетесь добавить модуль как это делалось лет 7 назад, когда в Го не было модулей. Теперь надо все проекты делать через модули.
    https://go.dev/blog/using-go-modules

    После того как сделаете init, добавляйте модуль через
    go get github.com/go-sql-driver/mysql@latest
    Ответ написан
    Комментировать
  • Не пойму как скопировать?

    @historydev Куратор тега JavaScript
    Mistkerl, drück den Knopf.
    - var html = e.target.parentNode.querySelector('.firmware-window');
    + var html = e.target.parentNode.querySelector('.firmware-window').innerHTML;
    			$('.modal-wrapper').attr('class', 'modal-wrapper').html(html);
    			html.classList.remove('hiden');
    Ответ написан
    1 комментарий
  • После запуска в github - page выдает ошибку 404, отображается только главная страница- index.html, как заставить работать остальные html страницы?

    delphinpro
    @delphinpro
    frontend developer
    гитхаб пэйджес только для статических сайтов. Чисто html. Там нет серверных языков, в том числе питона. Вам нужен нормальный хостинг с поддержкой python.
    Ответ написан
    Комментировать
  • Возможно ли задать подсказку в phpstorme для возвращаемого типа?

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

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега PHP
    Такие файлы кладут вне директории, которую обслуживает веб-сервер. Примерно так:
    ./db.php
    ./public/index.php

    В db.php вы подключаетесь, реквизиты храните в нём же или в .env-файле рядом (или ещё как-то), а в настройках веб-сервера в качестве корневой директории указана public. Тогда через него невозможно будет обратиться к "секретному" файлу.
    (есть ещё всякие уязвимости, которые делают такую защиту всё же не стопроцентной, но они далеко за рамками данного вопроса).
    Ответ написан
    6 комментариев
  • CSS как сделать div изображений ровно под наклоном друг за другом?

    наверное, корректнее поворачивать весь блок изоображений
    Ответ написан
    Комментировать
  • Почему PHP выполняет математические операции неправильно?

    Коротко - потому что IEEE 754

    Выполняет он математические операции правильно, но некоторые числа компьютер просто не способен представить со 100% точностью, тк для них нужно было бы бесконечное количество памяти.

    Точно также, как мы не можем записать все цифры числа 1/3 в десятичной системе, точно также и компьютер иногда не может записать все цифры в двоичной.

    Если ты работаешь с деньгами, то тогда используй то, что делают все банки - представляй суммы денег не как дробные числа, а как целые. Например место 1.5 рублей записывай как 150 копеек. Запятую добавишь при выводе человеку.
    btw тут в комментах пишут, что для денег тоже есть паттерн по-лучше конкретно для php.

    Если при делении у тебя получилось дробное количество копеек - округляй так, как велит закон.

    Если ты делаешь какие-то математические вычисления - возможно тебе нужны рациональные числа.
    Не знаю, что обычно для этого в пхп используют, но нагуглил https://github.com/webgriffe/rational
    https://github.com/markrogoyski/math-php

    Но в случае с целыми числами ты всё равно можешь упереться в ограничение на максимальное число, а в случае с рациональными числами ты получишь очень сильную просадку в производительности.

    Если тебе критически важна скорость, а точность - не так важна, то оставайся на IEEE754 и просто округляй то N значимых цифр (обычно больше 5 цифр мало кому нужно)
    Ответ написан
    13 комментариев
  • Как создать свою библиотеку для Go?

    fenrir1121
    @fenrir1121
    Начни с документации
    Прочитать в документации.
    Ответ написан
    Комментировать
  • Метод разработки и обновления сайта?

    Mike_Ro
    @Mike_Ro Куратор тега JavaScript
    Python, JS, WordPress, SEO, Bots, Adversting
    Все зависит от организации работы в конкретной конторе и конкретного разработчика, но лично у меня работает следующий подход:
    1. Пишем начальное тз, минимальный необходимый перечень.
    2. Говнокодим на основание п1 по принципу - "сделать быстро и чтобы работало по тз".
    3. Пушим п2 в гит и разворачиваем сайт (или компонент на сайте).
    4. Записываем фидбэк о компоненте, что не работает, как хотелось бы чтобы работало итп. Если это не критические замечания (безопасность или что то основное не работает), то откладываем изменения на месяц, квартал или год.
    5. При накопление критической массы замечаний в п4 (ну или у Вас просто не осталось задач на настоящий момент) - добавляем рефакторинг п3 в очередь задач.
    6. Повторяем 3-6 пункты до бесконечности.

    При данном режиме работы решается сразу 3 задачи:
    - Не требуется детальное тз на старте, в котором все равно не удастся предвидеть все наперед, соответственно сокращается общее время разработки и его стоимость.
    - Сайт или компонент сайта выпускается в релиз очень быстро, а значит решает задачу бизнеса так же быстро.
    - Прозрачный и прогнозируемый по срокам и стоимости режим релизов.

    Важное уточнение!

    Схема с минимальным ТЗ и говнокодом работает лишь с теми заказчиками, которым Вы подробно разъяснили, почему сроки и стоимость ниже, почему за каждую "хотелку" не указанную в тз придется доплачивать, и почему необходим рефакторинг.

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

    delphinpro
    @delphinpro Куратор тега JavaScript
    frontend developer
    Как много кода для простого рейтинга.

    Ответ написан
  • Какой использовать стек для написания онлайн сервиса управления производством?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    На том, который лучше всего знают ваши разработчики.
    Ответ написан
    Комментировать