• Как в preg_replace задать два условия замены?

    @pantsarny
    preg_replace_callback
    Ответ написан
    Комментировать
  • Не могу понять, что не так с innerHTML?

    Aetae
    @Aetae Куратор тега JavaScript
    Тлен
    Судя по ошибкам "JSX expressions must have one parent element," и "Uncaught SyntaxError: Unexpected token '<'" у вас где-то кусок html кода вне строки.
    Т.е. прям <какоц-то тег> ... вместо '<какоц-то тег> ...'.
    Код из вопроса должен работать без проблем.
    Ответ написан
    Комментировать
  • Получаю в ответе NaN, хочу не Nan. Как исправить?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега JavaScript
    Первый и самый важный шаг вы сделали — идите дальше. Смотрите что у вас в document.getElementById('id').value, потом что в document.getElementById('id'), если в value пусто.
    Это называется "отладка" или "дебаг" и это примерно половина работы программиста.

    выводит новую форму
    Вангую, что в итоге у вас куча одинаковых форм и, соответственно, куча инпутов с id="id", что, естественно, недопустимо.
    Ответ написан
    1 комментарий
  • Обязательно ли писать собственную CMS если пишу сайт на фреймворке Yii 1.1?

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    Самое главное - ничего не писать на Yii 1.1

    Если хотите изучить какой-то фреймворк, то учите ларавель

    Если для сайта пишется своя собственная система управления контентом, то обычно она называется админкой, а не CMS
    Ответ написан
    7 комментариев
  • Почему $array=$sql-&amp;amp;amp;gt;fetch(PDO::FETCH_ASSOC). Возвращает false не зависимо от того что я написал в форму?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Если версия PHP ниже 8.0, то добавьте в вызов конструктора опцию PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION. Если версия 8.0 и выше или после добавления опции ошибок не показывает, то значит запрос ничего не находит в базе.
    Ответ написан
    3 комментария
  • Как посчитать количество объектов с определённым значением ключа?

    Aetae
    @Aetae Куратор тега JavaScript
    Тлен
    Не прибегая к циклам - ручкой на листочке, лол.
    Любой вариант, какой бы вы не выбрали сводится к циклам под капотом.
    arr.filter(obj => !obj.status).length;
    arr.reduce((length, {status}) => status ? length : length + 1, 0);
    ...и т.п.
    Ответ написан
    1 комментарий
  • Проверка блока питания до сборки?

    iNickolay
    @iNickolay
    Без нагрузки он не запустится - это чревато для него, поэтому стоит защита)
    А так, можете подключить к какой-нибудь старой матери, но эта проверка бессмысленна)
    Ответ написан
    4 комментария
  • Что быстрее SQL или Javascript?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    Вопрос задан как пальцем в небо.
    Быстрее будет не отдельно взятый постгрес или сайт на js, а машина, на которой это все будет считаться.
    JS где - у пользователя в браузе, или это nodejs на сервере?
    постгрес крутится на той же машине, или на другой? Какой там процессор, сколько, сколько памяти?

    Не забывать, что если данные лежат в базе, а считать вы будете в JS, то к расчетам еще добавить время на передачу данных, поэтому чисто теоретически наверное выполнить все на постгресе должно быть быстрее.

    Но вам никто не ответит на вопрос точно. Гораздо проще провести перформанс тесты и посмотреть живые ответы.
    Ответ написан
    3 комментария
  • Что быстрее SQL или Javascript?

    ipatiev
    @ipatiev
    Потомок старинного рода Ипатьевых-Колотитьевых
    В общем, чтобы не издеваться над девушкой, объясним на пальцах.

    Во-первых, заголовок у вопроса чудовищно некорректный. Это все равно что спросить, "что быстрее - пылесос или стиральная машина?"
    Во-вторых, ответ на вопрос "производить ли обработку данных в БД или же запросить все данные в клиентское приложение и обрабатывать там" совершенно очевиден: обработку данных следует производить в общем случае только в БД. Она для этого и придумана. Чтобы обрабатывать значительные объемы данных.

    Да, js тоже "может" обрабатывать большие объемы данных.
    Но чтобы значительный объем данных обработать, его сначала надо передать, полностью забив канал между сайтом и базой
    Чтобы значительный объем данных обработать, его надо сначала проиндексировать. Причем делать это каждый раз, а не использовать уже имеющийся набор индексов
    Чтобы значительный объем данных обработать, надо иметь значительный объем памяти или упасть из-за её недостатка
    Чтобы значительный объем данных обработать в многопоточном режиме (а сайт как раз является многопоточной системой), все вышеперечисленное надо умножить на количество посетителей сайта - при каждом запросе перегонять весь массив данных, выделять память, индексировать, считать. Если же вы оставляете все данные в памяти приложения, то их тогда надо как-то синхронизировать с БД. То есть вы себе собираете кучу проблем на пустом месте.

    Несомненно, из любого правила есть исключения. И бывают ситуации, когда приходится считать в приложении.
    Но на вопрос в общем виде ответ будет совершенно однозначный. Не "может так, может сяк", а только в БД.
    Ответ написан
    9 комментариев
  • Как экранировать sql запрос внутри texarea?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Подготовленные выражения PDO и MySQLi.
    Ответ написан
    1 комментарий
  • Как экранировать sql запрос внутри texarea?

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    Это очень просто сделать.
    Надо всего лишь освоить подготовленные выражения.
    Например, почитав вот тут https://habr.com/ru/articles/662523/

    И все запросы, в которых участвуют переменные, выполнять только таким образом.
    А texarea там, или tinymce - это уже без разницы.
    Ответ написан
    1 комментарий
  • VCS в квадрате. Можно ли с помощью Git контролировать состояние другого Git-репозитория?

    sergey-kuznetsov
    @sergey-kuznetsov Куратор тега Git
    Автоматизатор
    Нет, рекурсия работать не будет. Гит увидит, что внутри каталога лежит вложенный репозиторий и проигнорирует его. А в своей базе пометит этот подкаталог как поддерево (subtree), чтобы не сломать.

    Вы пытаетесь соорудить какой-то жуткий костыль только лишь потому, что поленились изучить инструмент, в котором работаете. Поэтому для вас Git сейчас представляется как некая шайтан-машина, которой вы скармливаете команды, которые не понимаете, и в результате получаете ещё более непонятные «неожиданные результаты». Просто потратьте несколько дней, чтобы изучить азы. Не зубрите непонятные команды, а постарайтесь понять логику гита. А она — эта логика предельно проста и гениальна.

    не является сложной задачей что-либо сломать в своем проекте

    Сломать что-то в гите довольно сложно. Вам может только показаться что всё сломалось, но это лишь потому, что вы не понимаете, что делаете.

    каким-то образом снес половину коммитов

    Коммиты в гите — это неизменяемые сущности. Можно лишь создать новые «на замену», но старые не исчезают. Коммиты невозможно удалить без специальных команд очистки мусора.
    Вам показалось что коммиты исчезли, но на самом деле они все остались в репозитории, вы просто их не видите в текущей ветке. Но всё легко откатывается назад, используя журнал Reflog.

    Поэтому было бы неплохо как-либо сохранять прошлые версии Git репозитория

    Reflog это и делает, по сути. Это журнал, который хранит указатели на все состояния проекта, в которых вы когда-либо находились ранее. И эти состояния сами по себе не исчезают, так что вы всегда можете откатиться назад в любое место.

    Мой вам совет: Пройдите 16 коротких бесплатных уроков и полу́чите просветление.
    Ответ написан
    2 комментария
  • Что дает горизонтальный скролл?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    body дал overflow - x hidden, не помогает

    А просто overflow?
    Не могу понять что ломает верстку

    В дев режиме браузера удаляйте блоки по очереди, как скролл пропадёт - виновник найден.
    Ответ написан
    3 комментария
  • Почему vs code выдаёт такое?

    Aetae
    @Aetae Куратор тега JavaScript
    Тлен
    В любой непонятной ситуации тыкаешь ctrl+click и читаешь, что там написано.

    В данном случае это ложное срабатывание на попытку переписать window.name. Можешь им баг запилить.
    Еслиб ты сделал так var { name, surname, age } = myUser, то это было бы реальной ошибкой: ты неявно бы менял name окна, но для const это не актуально.

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

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Конструкция парсера незамысловата

    Вы действительно думали, что можно просто так прийти и 3 строчками кода спарсить ресурсы, где работают отдельные команды для того, чтобы их не парсили?

    Подскажите, пожалуйста, что можно сделать, чтобы спарсить информацию?

    Подключить сервис расшифровки капчи. С таким "незамысловатым" скриптом Вам придется достаточно часто пополнять счет этих сервисов :)
    На прокси можете не тратиться, ибо Вас будут ловить раньше :)
    Ответ написан
  • Файл конфига php?

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    Очень хороший вопрос, только вы путаете файл с настройками и файл первоначальной настройки приложения.
    Вам нужны оба.
    1. файл c настройками
    Их должно быть два.
    Первый файл называется config.sample.php, он содержит только один массив, который заполняется пустыми/дефолтными значениями и может содержать не только настройки БД но и содержать другие секции:
    <?php
    return [
      'db' => [
        'hostname' => '',
        'username' => '',
        'password' => '',
        'database' => '',
      ],
    ];

    Этот файл добавляется в репозиторий.

    Второй файл называется config.php и он создается руками каждый раз при установке CMS на новом сервере. В него пишутся актуальные настройки для каждого сервера.
    Этот файл не добавляется в репозиторий (а добавляется, соответственно, в .gitignore).

    2. Файл первоначальной настройки приложения.
    В него идут команды, которые пишутся на любой странице: подключение к БД, старт сессии, всякие инклюды и прочее. Кроме того, в этом файле должен быть код
    if (!file_exists('config.php'))
     {
         $msg = 'Создайте файл config.php на основе config.sample.php и внесите в него настройки';
         throw new RuntimeException($msg);
     }


    Таким образом система будет помогать программисту, если он забыл создать config.php с актуальными для конкретного сервера настройками.

    И вот этот файл, назовем его init.php, уже и подключаем во все остальные файлы.

    Кстати, начиная с 8 версии РНР можно писать просто
    $conn = mysqli_connect(...$config['db']);
    В этом случае ключи массива $config['db'] будут использоваться в качестве имен параметров функции - очень удобно
    Ответ написан
    Комментировать
  • Почему в php нельзя уточнить класс аргумента при имплементации интерфейса?

    LSP нарушается - интерфейс требует чтобы реализация в качестве аргумента могла принимать любую реализацию ArgInterface, а вы пытаетесь ограничится только одной.
    Ответ написан
    Комментировать
  • Почему в php нельзя уточнить класс аргумента при имплементации интерфейса?

    vabka
    @vabka
    Токсичный шарпист
    Потому что это бы нарушало принцип подстановки Барбары Лисков.

    Интерфейс предполагает, что ты можешь принимать любой объект, который реализует интерфейс ArgInterface.
    => Если ты сузишь тип, то ты уже по факту не сможешь поддерживать контракт.

    По тому при реализации интерфейса можно только расширять тип принимаемых аргументов, но не сужать.
    Ответ написан
    Комментировать
  • Почему при вложении тега address в тег p не применяется стиль?

    modelair
    @modelair
    unsocial
    в данном случае спецификация HTML не позволяет вставлять тег address в p.
    спецификация говорит, что тег привязан к определенному article или body для уточнения.
    также она говорит, что не все что в p будет в p

    если посмотреть в devtools (что я вам рекомендую делать всегда), то видно, что этот тег отрисован после p.
    ну и в целом это освещено в поиске.
    тут
    Ответ написан
    2 комментария