Задать вопрос
  • Нормально ли, что нотация функции противоречит здравому смыслу?

    SerafimArts
    @SerafimArts
    Senior Notepad Reader
    Для таких случаев придумали docblock (а начиная с php 8 - union типы):

    # PHP 7+

    declare(strict_types=1);
    
    /**
     * @param int|string|float $a
     * @param int|string|float $b
     * @return string
     */
    function summ($a, $b): string {
        return bcadd((string)$a, (string)$b);
    }


    # PHP 8+

    declare(strict_types=1);
    
    function summ(int|float|string $a, int|float|string $b): string {
        return bcadd((string)$a, (string)$b);
    }


    P.S. Помимо этого можно кастовать результат к инту, если он в пределах допустимого int32/int64 (зависит от ОС и сборки пыха) значения
    return $result > \PHP_INT_MAX ? $result : (int)$result;
    Ответ написан
    Комментировать
  • Как в Laravel построить отношения одной дочерней модели с другой через родительскую?

    Alex_Wells
    @Alex_Wells
    PHP/Kotlin
    Очень легко.

    Client:
    
    hasMany(Metric::class, 'project_id', 'project_id')
    
    Metric:
    
    hasMany(Client::class, 'project_id', 'project_id')
    Ответ написан
    1 комментарий
  • Что быстрее mysql, mysqli или pdo?

    fonclub
    @fonclub
    php developer
    Php 7 мне явно не нужен, не вижу смысла

    А вот насчёт перехода на php 7 стоит подумать. Прирост в производительности впечатляющий, посмотрите тесты. Так что смысл в этом есть.
    Ответ написан
    Комментировать
  • Почему продолжилось нормальное выполнение после выброса исключения?

    JRK_DV
    @JRK_DV
    Рецепты https://codepen.io/jrkdv/full/LKLXdq
    можно так интерполировать:

    когда Есть исключение в блоке try - то выполнение продолжиться В ближайшем блоке catch.
    строки идущие после ошибки, в блоке try, не выполнятся

    когда Нет исключения в блоке try - то выполнение продолжиться За последним блоком catch выполнятся все инструкции в блоке try и выполнение продолжиться за блоком catch

    вне зависимости было или нет исключение, выполнение продолжиться после конструкции try...catch
    Ответ написан
  • Можете объяснить эту строчку кода?

    @HoorayHeroes
    document.execCommand("copy");
    Копирует выделенное в буфер обмена. Возможность такого поведения отличается от браузера к браузеру и расширяется со временем. Следует проверить таблицу совместимости, чтобы убедиться в возможности использования.

    Погуглил за вас: первая же статья на MDN. - Не умею гуглить
    Ответ написан
    2 комментария
  • Как подключить файлы, лежащий на другом сервере?

    Wolfnsex
    @Wolfnsex Куратор тега PHP
    Если не хочешь быть первым - не вставай в очередь!
    Вообще, обычно для задач подобных тем, что Вы описали - используют Git и другие системы контроля версий, который рассылают уведомления о том, что исходный код на источнике обновился, зависимые серверы получив такое уведомление (оно ещё называется "пуш") - они скачивают обновление и развораичвают его локально, подобный процесс так же иногда называется "сборкой".

    Но, насколько я понимаю, у Вас случай несколько проще и не требует "тяжелой артилерии". В этом случае, может быть актуально использовать программы типа sshfs или ftpfs и прочие подобные штуки.

    Почитать можно например тут или тут.

    Если простой вариант Вас не устроит - можете попробовать использовать такие сервисы как например GitHub или BitBucket, там есть такая штука как "Веб-хуки", именно она как раз таки рассылает уведомления о том, что исходный код был изменен, можете попробовать написать простенький скрипт, например на том же PHP, который бы стягивал изменения из удалённого репозитоиря и проводил прочие манипуляции подобного толка.
    Ответ написан
    1 комментарий
  • Как подключить файлы, лежащий на другом сервере?

    mahmudchon
    @mahmudchon
    МБ организовать API?
    Ответ написан
    Комментировать
  • Почему b == number?

    potapchino
    @potapchino
    потому что на самом деле ваш код выглядит вот так:
    var b;
    
    if(true) {
      let a = b = 200;
    }
    
    console.log( typeof a ); // undefined
    console.log( typeof b ); // number


    чтобы было как вы ожидаете, нужно сделать вот так:
    if(true) {
      let b;
      let a = b = 200;
    }
    
    console.log( typeof a ); // undefined
    console.log( typeof b ); // undefined
    Ответ написан
    Комментировать
  • Как парсить HTTP Запросы/Ответы на уровне байтов?

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

    ch1sel
    @ch1sel
    probability is extremely small
    [Fact]
            public void Test2()
            {
                Assert.Throws<ShapeException>(() =>
                    {
                        var rect = new Rectangle
                        {
                            Height = -5,
                            Width = 3
                        };
                        rect.Area = rect.Height * rect.Width;
                    }
                );
            }
    Ответ написан
    2 комментария
  • Как сейчас лучше делать - один файл css и js или много мелких файлов?

    dom1n1k
    @dom1n1k
    Искать баланс. Обе крайности не очень хороши.
    Всё россыпью - слишком много запросов (про http/2 слышали, но в реальной жизни небольших/средних проектов че-то пока не встречали).
    Объединять всё - риск получить огромный бандл, который тащит кучу лишнего и потому замедляет первичную загрузку.
    Обычно имеет смысл CSS разбивать на небольшое количество бандлов по областям применения. Условный пример: глобальные стили, стили для главной и для внутренних - чтобы на главной не тянуть лишнее, но закэшировать нужное в дальнейшем. Со скриптами что-то похожее. В спрайт совать только иконки.
    Ещё распространенная практика - если у вас есть критичные стили и/или скрипты, которые должны быть загружены максимально быстро, то их инклюдят прямо в тело страницы (не более нескольких КБ).
    Ответ написан
    Комментировать
  • Что за единица?

    sergiks
    @sergiks Куратор тега PHP
    ♬♬
    Сокращенный тег <?= не просто выполняет код внутри него, но и выводит результат.
    То же, что <?php echo

    Минимальная редакция – убрать знак равенства, заменить <?= require_once... на <? require_once... Но такой короткий тег <? не всегда поддерживается и не рекомендуется.

    Лучше всё в один PHP-тег:
    <?php
    
    require_once APP . '/views/App/inc/header.php';
    echo $content;
    require_once APP . '/views/App/inc/footer.php';
    
    ?>
    Ответ написан
    4 комментария
  • Что позволяет записывать в функции статические методы?

    MrDecoy
    @MrDecoy Куратор тега JavaScript
    Верставший фронтендер
    Воспользуюсь спорным штампом и отвечу: так происходит, потому что "в JS всё - объект". Соответственно, как объектам, мы можем назначать свойства.
    С примитивами всё несколько сложнее. Мы вроде бы тоже можем назначить им свойство, но это иллюзия. Когда мы делаем подобное с примитивами, например строкой, то вызывается её конструктор String(), а когда операция "под капотом" завершается, то мы снова получаем примитив, таким образом, ошибки назначения свойства не возникает, но и свойство недоступно.

    Это если сжато.
    Подробно объяснять не быстро. Скорее всего Вам тут посоветуют почитать документацию, спецификацию. Я предложу почитать серию книг You Dont Know JS. Можно нагуглить перевод многих глав из этой серии книг.
    Ответ написан
    Комментировать
  • Почему JQuery формирует такой запрос?

    hzzzzl
    @hzzzzl
    OPTIONS всегда делается перед запросом к серверу, это вопрос "эй сервер, ты примешь post-запрос от меня или нет?"

    https://developer.mozilla.org/ru/docs/Web/HTTP/Met...
    https://developer.mozilla.org/en-US/docs/Glossary/...

    Если запрос может оказать влияние на пользовательские данные, то простого запроса недостаточно. Вместо этого, предполентый CORS запрос отправляется в перед отправкой необходимого запроса, чтобы гарантировать безопасность отправки запроса. Предполетные запросы необходимы в тех случаях, когда любой HTTP метод, отличный от GET, POST, HEAD или если тип содержимого POST запроса отличен от application/x-www-form-urlencoded, multipart/form-data или text/plain. Также, если запрос содержит любые собственные заголовки, то необходим предполетный запрос.

    https://spring-projects.ru/understanding/cors/
    Ответ написан
    6 комментариев
  • Как стать Junior верстальщиком?

    Robur
    @Robur
    Знаю больше чем это необходимо
    Я все починил, теперь ваша карьера и ориентация в порядке!
    Не благодарите.
    5de34eb3a4d87370303583.png
    Ответ написан
    10 комментариев
  • Когда стоит разделять приложения?

    sarapinit
    @sarapinit
    Точу водой камень
    1 кейс.
    У вас есть запросы на которые нужно отвечать быстро (текущее состояние) и какой-то сервис с отчетами. Когда пользователи запрашивают большой отчет скорость ответа текущего состояния начинает проседать. Тогда вы делаете отдельный сервис для отчетов, выносите его в отдельное приложение и на отдельную виртуалку. Таким образом вы изолируете потребляемые ресурсы и устраняете влияние сервисов друг на друга. Плюс получаете возможность отдельно масштабировать сервис отчетов во времена наибольшей нагрузки.

    2 кейс.
    У вас есть сервис авторизации для которого нужно учесть множество разных требований и стандартов по безопасности. Вы привлекаете отдельную команду для его разработки с определенными навыками. В этом случае вы изолируете ресурс "навыки разработки безопасных сервисов" чтобы команда не тратила свое время на другие фичи.

    3 кейс.
    Вы делаете несколько сложных сервисов и решаете распаралелить разработку на несколько команд. Одна команда делает "Кинопоиск", другая "Афишу". Все они обращаются к серверу авторизации из кейса 2 и бекендам из кейса 1.

    Итог.
    Разделение на несколько приложений - это либо логическое разделение, когда приложения делают разные и несвязанные вещи. В этом случае удобно думать о разных задачах как о разных приложениях. Отдельно их разрабатывать, деплоить и т.д.
    Либо это управление вычислительными мощностями. Когда разные части системы требуют разделения ресурсов, нелинейного масштабирования или имеют совсем разный режим работы (например АПИ для загрузки фоток и асинхронный воркер который делает превьюшки для этих фоток)
    Либо это управление на уровне человеческих ресурсов, когда приходится вводить в разработку несколько команд.
    Ответ написан
  • Стоит ли создавать учебный и самый минимальный PHP-код для создания простого блога?

    Robur
    @Robur
    Знаю больше чем это необходимо
    Кто ж вам запретит.
    Проектов чего-то с минимальным функционалом для обучения навалом.
    Для целей обучения главное не проект, главное что вокруг него построено - курс, документация, туториал, лично вы как куратор обучаете и т.п. Без этого всего это будет еще один кусок лежащего в интернете кода.

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

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

    glaphire
    @glaphire
    PHP developer
    Если данные запушены в репу - они уже скомпрометированы, нужно поменять реальные логин, пароль и токен.

    Тулза для вычищения таких данных из справочной гитхаба: ссылка
    Ответ написан
    2 комментария
  • Как лучше назвать у пользователя процент вопросов, в которых он отметил хоть один ответ решением?

    Moskus
    @Moskus
    Это нельзя назвать ни одним из предложенных способов.
    Потому что:
    - не только сам пользователь отмечает ответы решениями,
    - сами вопросы пользователя могут быть таковы, что никакой ответ не является решением,
    - пользователь может, наоборот, отмечать решениями всё подряд.
    Так что это просто "доля (процент) отмеченных решений", чтобы не вводить ложную интерпретацию статистики.
    Ответ написан
    9 комментариев
  • Будет ли Golang замещать PHP?

    @zhainar
    Гуглю за вас
    Если вопрос нужно ли учить го, то да, это полезный скилл. Если вопрос будут ли проекты переписываться на го, то отчасти. Если вопрос умрет ли рнр, то нет.
    Ответ написан
    Комментировать