Задать вопрос
  • Куда сохранять незаконченный код?

    Когда ты делаешь новую фичу, ты создаёшь специально для неё новую ветку.
    Вот в неёи пуш, даже если ещё не закончил
    Ответ написан
    4 комментария
  • Как упростить if выражение в JavaScript?

    Alexandroppolus
    @Alexandroppolus
    кодир
    https://developer.mozilla.org/ru/docs/Web/JavaScri...

    let today = [yearToday, monthToday, dayToday].map(s => s.padStart(2, '0')).join('-')
    Ответ написан
    1 комментарий
  • Какой стек технологий лучше всего подойдет для работы с объемными базами данных?

    ThunderCat
    @ThunderCat Куратор тега Веб-разработка
    {PHP, MySql, HTML, JS, CSS} developer
    исходя из вышеизложенного, какой бы стек технологий вы бы выбрали как разработчик чтобы решить вышеописанную задачу?

    Для начала немного контекста - 2 важных примечания:
    1) Описанная задача решается на любом упомянутом стеке, + еще десяток возможных вариантов (Java/Spring, питон, нода, дотнет, голанг и т.д.).
    2) Быстродействие системы зависит от ее самой медленной части, и в 95% случаев самая медленная часть - БД, просто в силу специфики работы: много данных со сложными связями, выборки с сортировкой и фильтрацией из большого массива и вот это все, в то время как язык бэкенда в основном выполняет достаточно простые манипуляции с уже готовыми наборами данных (за редчайшими исключениями, которых в вашем кейсе нет, или они не описаны в вопросе).

    В вашем случае:
    - база можно сказать совсем небольшая, до 1 миллиона записей условный мускуль ворочает весьма шустро, если железо соответствует.
    - задача сбора метрик достаточно тривиальная, особого ума в сохранении действий пользователя не надо, бОльшая часть работы - вывод в красивые графики и написание быстрых запросов с хитрыми выборками/агрегациями, немного пошаманить с формулами, возможно делать какие-то сводные выборки с денормализованными результатами для отчетов и прочие мелочи. Работа не сложная, но нудная, и ее много.

    Насчет стоимости и условий:
    полный самопис 150к+ (я это не тяну) или же сайт на Laravel +MySQL а дальше варьируется.
    полный самопис - либо маркетинг, либо идиотизм, писать на голом языке не будет ни одна нормальная студия, в принципе в данном случае либо используется фреймворк и заказчику преподносится как "сделано вручную программистами девственниками под светом серебряной луны", либо разработчики идиоты, мнящие себя круче всех (нет). В первом случае это то же что и "сайт на Laravel +MySQL" (норма и стандарт для среднего уровня студий), во втором - развод на мани на пустом месте и попытка продать г**но в обертке "иксклюзивнасти".

    По цене - на сегодняшний день, если я не ошибаюсь, 150к деревянных это +- 1000уе. Цена приемлемая за нормальную работу, если найдете дешевле "на Laravel" - думаю будет вообще ок. Опять же, цены штука такая, кто-то за копейки сделает хорошо, кто-то за дорого каку сляпает. Влияет так же регион, понятно что в Мск цена будет серьезно больше чем в условном Челябинске...

    Важный момент - нормальное ТЗ в разы упрощает как поиск исполнителя, так и оценку работы. Я бы на вашем месте погрузился именно в тему создания качественного ТЗ, нежели в дебри современных технологий.

    UPD:
    проект планируется на 100 к+ посетителей в месяц...
    предупреждают что если аудитория достигнет условных 100 тысяч в месяц Лара начнет потихонечку задыхаться от нагрузки,
    ок, пусть будет 200к для наглядности.
    В среднем, если это маркетплейс, то постоянных посетителей будет не много, думаю около 10%, так что ими можно пренебречь. Условно - 200к / 30 дней = 6600 в сутки, при активных 10-12 часах посещения это ~600 в час. Пусть на 1 посетителя будет 5 запросов страниц, это 600*5=3000 в час = 50 в минуту или менее 1 запроса в секунду.
    Даже если умножить это на 30 (допустим такая пиковая нагрузка), 30rps вообще "ниачем". Не знаю кто там вам считал то это проблема, любое современное железо среднего уровня вытягивает без напряга.
    Ответ написан
    2 комментария
  • Как скачивать большие файлы по ссылке php?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Правильное решение - запускать консольный скрипт в отдельном потоке, тогда ждать ничего не надо, и таймлимит на консольные приложения отсутствует.
    Ответ написан
    3 комментария
  • Как задать второе значение переменной если 1 не найдено?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    $city = $gorod ?? 'Текст';
    Ответ написан
    1 комментарий
  • Как добавить отдельные классы для каждого объекта в цикле while?

    @Vic87
    Конечно, не присваиваются. $classes[$i] для $i > 4 у вас не определены. Ессно, что класс будет пустым.

    Не думали пойти другим путем, без заморотов с присвоением класса каждому посту? Например, используя псевдокласс :nth-child и через него реализовать особенности верстки. Тогда вывод постов можете делать без всякого гимора, обычным порядком.
    Ответ написан
    Комментировать
  • Что хранит в себе данная функция?

    @alekcena
    Нелинейный наставник
    reduce / метод для работы с масивами. Он принимает 1 аргументом функцию. 2м accumulator.)
    В accumulator - содержится промежуточное значение между операциями
    Функция должна реализовывать 2 аргумента( accumulator, новое значение)
    Это своего рода короткая запись для цикла с лишнем объявлением переменной.
    let allBudget = 0;
    for(let i = 0; i < people.length; i++){
        allBudget += people[i].money;
    }

    Классический js можно всегда посмотреть на этой доке.
    Там чаще всего приводятся примеры https://developer.mozilla.org/ru/docs/Web/JavaScri...
    Ответ написан
    Комментировать
  • Как сделать регулярное выражение чтобы получить часть строки после определенного слова?

    Stalker_RED
    @Stalker_RED
    Регуляркой как-то так: /\?(.*)/
    https://regex101.com/r/5rpoUX/1/
    Потом можно разбить строку на пары по знаку & и потом каждую пару разбить на ключ и значение по знаку =.

    Но гораздо лучше воспользоваться встроенным в JS интерфейсом URL:
    const url = new URL('https://mydomen.ru/category/search?area=32&city=31');
    console.log('host', url.host);
    console.log('search', url.search);
    const city = url.searchParams.get('city');
    console.log('city', city);
    Ответ написан
    Комментировать
  • Почему вылетает ошибка агента битрикс?

    @PetrPo
    Предположу, что вызывается $USER->GetID(), в документации указано, что Переменная $USER в агентах отсутствует.. По всей видимости, в этом модуле есть событие на добавление элемента инфоблока, в котором вызывается $USER->GetID() и т.к. $USER=null, а не объект класса CUser получаешь ошибку.
    Ответ написан
    Комментировать
  • Почему биндить в PDO надо обязательно переменную?

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    Ну вообще-то в сообщении об ошибке всё сказано. C bindParam можно использовать только переменные. Потому что биндинг идёт по ссылке (by reference). А на строку, вписанную прямо в коде, ссылку не поставишь. В этом случае надо использовать другой метод
    $b=$pdo->prepare(" INSERT INTO `main` SET tel=:tel");
    $b->bindValue(":tel", '79998887766');

    или вообще передавать данные сразу в execute():
    $pdo->prepare(" INSERT INTO `main` SET tel=:tel")->execute(["tel" => '79998887766']);

    и всё будет работать
    Ответ написан
    3 комментария
  • Почему не работает команда в exec(), но работает, если просто ввести ее в консоли вручную?

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    Если при выполнении exec() возникает ошибка, то она выводится в stderr.
    Надо просто прочитать её, там будет написано, почему не работает.
    В частности, чтобы получать весь вывод кроновских команд на почту, в том числе и ошибки, надо написать в начале крон файла MAILTO=свойемейл

    Если есть проблемы с чтением stderr, то можно добавить перенаправление в stdout, записать его в переменную и дальше уже направлять по своему усмотрению
    $out = exec('cd /path && mysql -u root < "/path/my-sql.sql" 2>&1');
    log_error($out);
    Ответ написан
    Комментировать
  • Как помень class всем элементам данного class?

    delphinpro
    @delphinpro Куратор тега HTML
    frontend developer
    Зачем вам javascript?

    Ответ написан
    Комментировать
  • Как вывести конкретное пользовательское поле в news.list?

    Rucklless
    @Rucklless
    если нижний код из news.list то почему там $arResult, а не $arItem? Как в верхнем варианте. Там же $arResult в foreach перебирается как $arItem.

    Если я правильно помню...

    <?if(!empty($arItem["DISPLAY_PROPERTIES"]["SUB_HEADER"]["VALUE"])):?>
        <?=$arItem["DISPLAY_PROPERTIES"]["SUB_HEADER"]["VALUE"]?>
                       <?endif;?>
    Ответ написан
    Комментировать
  • Каким образом формировать раздельные инфоблоки при многосайтовости?

    @tgarl
    При многосайтовости у вас битрикс один и соответственно ядро тоже одно. А значит с какого бы домена вы не зашли в админку вы увидите и то и другое. Так что никакого дублирования не происходит.
    Ответ написан
    4 комментария
  • Поясните пожалуйста bash скрипт?

    saboteur_kiev
    @saboteur_kiev Куратор тега Linux
    software engineer
    кода done < <(ls -1 "./my_temp_dir/")

    ls -1 выводит содержание каталога в одну строку по одному наименованию
    <(blabla) создает из команды поток, который передается как файловый десктриптор
    < перенаправление данных из файлового дескриптора в предыдущую команду
    done является частью цикла, поэтому перенаправление идет не в done а в весь блок цикла.
    Ответ написан
    Комментировать
  • Поясните пожалуйста bash скрипт?

    @RayHex
    1. https://tldp.org/LDP/abs/html/process-sub.html
    2. bash это интерпритатор, вы всегда можете вставить куски выражения, и посмотреть что они выдают, например:
    echo <(ls -1 .)
    /dev/fd/63

    3. Ваш код мягко говоря дурно пахнет, а по сути он вообще кривой и будет сбоить на файлах со спецсимволами или даже пробелами. Можно сделать проще и правильнее:
    shopt -s nullglob
    for f in my_temp_dir/*; do
        echo "$f"
    done

    nullglob нужен для случаев когда файлов совсем не будет, без него подставится строка со *, и это может вызвать ошибку в вашем коде.
    Ответ написан
    Комментировать
  • Как сделать, чтобы письма не попадали в спам?

    Dreamka
    @Dreamka
    Web-разработчик.
    Правильно. И будут попадать. Функция mail у вас отправляет письма без DCKIM подписей. Самый простой способ - слать письмо по SMTP. А чтобы не говнокодить - подключите Phpmailer или Swiftmailer
    Ответ написан
    Комментировать
  • Почему когда копируешь ссылку статьи из сайта и вставляешь, она выглядит по другому, включая в себя много непонятных символов? Это нормально?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    По стандарту в элементах URI могут быть только символы из набора (ALPHA / DIGIT / "-" / "." / "_" / "~").
    Все остальные символы, в том числе и кириллица, должны кодироваться побайтно через %-код байта.
    Исключение - национальные имена доменов, кодируемые в punicode.
    Ответ написан
    Комментировать
  • Как правильно деплоить Symfony-приложение с помощью докер?

    @Barmunk
    Если очень надо паковать код в образ, то запакуй туда и deployer

    ....
    RUN curl -LO https://deployer.org/deployer.phar && \
             mv deployer.phar /usr/local/bin/dep && \
             chmod +x /usr/local/bin/dep
    
    ....
    RUN dep test


    так же код можно вынести в volume и каждый раз обновлять образ уже будет не нужно =)
    Ответ написан
    Комментировать