Задать вопрос
  • Почему 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
    Седой и строгий
    На том, который лучше всего знают ваши разработчики.
    Ответ написан
    Комментировать
  • Можно ли добавить условие при регистрации аккаунта на сайте?

    Lord_of_Rings
    @Lord_of_Rings
    Дунадан - северный странник. Злой, но очень добрый
    Это вообще реально сделать?
    Реально
    Ответ написан
    8 комментариев
  • Почему может быть утечка памяти?

    @falconandy
    Используете GoLand? Он подсказывает:
    Possible resource leak, 'defer' is called in the 'for' loop.

    A "defer" statement invokes a function whose execution is deferred to the moment the surrounding function returns, either because the surrounding function executed a return statement , reached the end of its function body , or because the corresponding goroutine is panicking .

    Предупреждение говорит о том, что defer код будет выполнен только при завершении функции, а не итерации цикла. В вашем случае это предупреждение неактуально, но проще немного переписать код, чтобы не было "ругани":

    func (app App) Shutdown() {
    	for _, shutdown := range app.onShutdown {
    		if err := shutdown(); err != nil {
    			log.Println(err)
    		}
    	}
    }
    ...
    defer app.Shutdown()
    Ответ написан
    Комментировать
  • Как показывать загруженность пк через web-страницу?

    GavriKos
    @GavriKos
    Использовать готовые решения. monit, zabbix, например. Графану там какую то
    Ответ написан
    Комментировать
  • Какой нужен сервер для приложения для заказа такси?

    @rPman
    Условная поездка - это считанные десятки запросов к серверу (если правильно websocket или любые другие двухсторонние протоколы), даже очень криворукие разработчики могут реализовать порядка секунды на запрос (обычно сотни-тысячи запросов в секунду на ноду, а очень хорошие разработчики могут обеспечить порядка 10к-100к запросов в секунду на ноду)...

    Техническая сторона почти любого бизнеса это его крохотная часть, в такси важен рынок и немножко маркетинг, отжать в текущих реалиях этот рынок почти нереально, нужно предлагать какие то заоблачные условия, только что бы некоторые водители и клиенты стали этим пользоваться... и делать это достаточно продолжительное время, что бы хотя бы часть рынка себе получить.
    Ответ написан
    1 комментарий
  • Нормально ли запускать пайтон скрипт по адресу http://localhost:8000?

    Aetae
    @Aetae
    Тлен
    То что на сервере на разных портах живёт множество программ и общаются меж собой - это нормально. Главное огородить их от внешнего доступа: обычно возможно указать на каком ip случшать порт, в таком случае достаточно указать локальный: 127.0.0.1:8000 вместо 0.0.0.0:8000 (слушать на всех) и извне никто на него попасть уже не сможет. Если же такой возможности нет, надо не забыть заблокировать этот порт файерволом.
    Ответ написан
    Комментировать