Задать вопрос
  • Как в Drupal 10 массово проставить noindex для >1000 страниц?

    @alexalexes
    писать скрипт, который будет вытаскивать по запросу необходимые записи, далее для каждой записи разбирать сер.массив, находить нужное значение, изменять его и затем записывать новый массив с изменённым значением в БД

    Именно так. Но лучше найти вариант вытаскивать список статей с помощью объектной модели движка самой CMS, и каммитить сохранение статьи тоже методом из объекта CMS (и не забыть еще дернуть метод очистки кэша страницы, или всего сайта, или части его контекста).
    Если у вас сайт высоконагруженный, то лучше разобраться с объектами CMS. Если нет, или не охота углубляться под капот CMS, то можно самописным скриптом поправить записи в базе, и не забыть сбросить кэш уже в панели управления CMS.
    PS: С drupal не знаком, но в любой CMS проблема будет решаться именно так.
    Ответ написан
    Комментировать
  • Как сделать чтобы было по 2 блока на строке, а не сразу все 4?

    @alexalexes
    Используйте display: grid вместо flex. В гридах есть возможность задать табличную сетку для контейнера с элементами.
    Ответ написан
    Комментировать
  • Можно ли сверстать макет без JavaScript?

    @alexalexes
    Без сервера такая веб страничка жить может.
    Без JS - нет, так как все спец. эффекты триггерятся JS-ом.
    Ответ написан
  • Как переделать код php, что бы отправлялись несколько файлов?

    @alexalexes
    Форма должна накидывать файлы в name="uploaded_file[]".
    А сервер должен итерировать так:
    if (isset($_FILES["uploaded_file"]) && !empty($_FILES["uploaded_file"]["name"]) && is_array($_FILES["uploaded_file"]["name"]) && count($_FILES["uploaded_file"]["name"]) > 0)
    {
      for($i = 0; $i < count($_FILES["uploaded_file"]["name"]); $i++)
      {
        $file_name = $_FILES['uploaded_file']['name'][$i];
        $file_size = $_FILES['uploaded_file']['size'][$i];
        $file_tmp = $_FILES['uploaded_file']['tmp_name'][$i];
        $file_type = $_FILES['uploaded_file']['type'][$i];
        $file_ext = strtolower(end(explode('.', $_FILES['uploaded_file']['name'][$i])));
        ...
      }
    }
    Ответ написан
  • Как управлять вторым роутером в локальной сети?

    @alexalexes
    я подключил их вместе WAN-WAN

    "Рука-лицо". Вы можете подключить wan порт Asus с lan портом Onu, если хотите использовать отдельную подсеть на асусе. Но вам, вероятно, из асуса нужно сделать простой свитч.
    Отрубайте dhcp на асусе, и подключайте любой его lan порт с lan портом Onu. Получите еще несколько портов подсетки Onu выходящих из асуса.
    только нужно вручную устанавливать IP и только тогда получится зайти

    Ну да, у асуса нужно устанавливать отдельный IP вход в админку, чтобы не конфликтовать с Onu.
    Ответ написан
  • Как связать таблицы по одному столбцу и посчитать сумму?

    @alexalexes
    /* создание подготавливаемого запроса */
    $stmt = $mysql->prepare("select sum(c.`Price`) as price_sum
                                 from `dogovor` d
                                 join `catalog` c on c.`Id_Product` = d.`Id_Product`
                              where d.`id_client` = ?");
    /* связывание параметров с метками */
    $stmt->bind_param("i", $id_client);
    /* выполнение запроса */
    $result = $stmt->execute();
    /* выборка результатов */
    $row = $result->fetch_accos();
    if($row)
    {
      echo 'Общая стоимость всех заказов клиента: '.$row['price_sum'];
    }
    else
    {
      echo 'Запрос не дал результата!';
    }

    Ошибки в вашем решении:
    1) Небезопасная подстановка параметров в запросах. Неумение использовать в этой ситуации подготовленные запросы.
    2) Использование id_client как строкового параметра, если он состоит из цифр, то целесообразно использовать целочисленный тип в колонке таблицы.
    3) Неиспользование агрегированных функций среды sql. Зачем на php плодить лишние циклы, когда сумму можно посчитать "из коробки" средствами самой СУБД? Она под это заточена.
    4) Связывание таблиц по наименованию сущности, а не по его идентификатору. Рационально связывать по id_product вместо name_product.
    Ответ написан
    Комментировать
  • Как взять значение из одной таблицы и прибавить к значению другой таблицы?

    @alexalexes
    Вывести на просмотр:
    SELECT p.price, od.quantity,
              p.price * od.quantity as cost -- в выборке можно не только поля выбирать, но и делать любые сложные матем. операции в пределах сопоставляемых строк и агрегированных функций
    FROM products p
    JOIN orderdetails od ON p.productid = od.productid --  ну, так соединяйте по ключам. Что мешает?
    Where od.orderid = ? -- если нужно ограничиться в пределах заказа

    Применить изменения:
    update orderdetails
    set orderdetails.totalcost = ( select p.price * orderdetails.quantity
                                                    from products p
                                                  where orderdetails.productid = p.productid
                                                ) -- вычисляем цену из таблицы продуктов и изменяем ее в деталях
    where orderdetails.orderid = ? -- если нужно ограничиться в пределах заказа
    and exists (select 1
                        from products p
                        where orderdetails.productid = p.productid
                      ) -- выбираем детали заказа только по тем продуктам, которые есть в продуктах, можно добавить доп. ограничения по затрагиваемым деталям

    Можно навешать триггер на вставку, изменение таблицы orderdetails. Тогда при изменении количества, цена будет пересчитываться с помощью него автоматически.
    Основа триггера:
    update orderdetails
    set orderdetails.totalcost = ( select p.price * new.quantity
                                                    from products p
                                                  where orderdetails.productid = p.productid
                                                ) -- вычисляем цену из таблицы продуктов и изменяем ее в деталях
    where orderdetails.orderdetailid = new.orderdetailid

    PS: Если это учебная база данных, то сойдет. А если реально используется такая модель, то не хватает таблицы "Цена продукта по состоянию на".
    Ответ написан
    Комментировать
  • Вывод звука с материнской платы, минуя микшер windows. Возможно?

    @alexalexes
    Ищите Asio в каталоге с драйвером Realtek и ставьте, не обязательно, в первом же попавшемся инсталляторе он будет.
    Также есть Asio4all.
    В общем, пробуйте. Что заведется, то и используйте.
    Ответ написан
    Комментировать
  • FreeDOS 1.3. GUI с работающим хоткеем по типу alt+tab. И работает ли freedos с usb накопителями?

    @alexalexes
    А у этой железки есть какие-нибудь сетевые интерфейсы? Проще в старых версиях дос пристроить сетевой каталог (условная samba), чем оживить технологию plug and play, ее только в 6-ой версии завезли.
    Ответ написан
  • Почему происходят скачки скорости при чтении?

    @alexalexes
    Нормальный график для такого старичка.
    Буфер маленький, геометрия диска на небольших объемах даёт лаг по времени при переключении между дорожками, поэтому мелкие файлы ему чирикать медленнее, чем один большой того же объема.
    Пс: если параметры 05 и c5 в smart у этого диска по нулям, то он живее всех живых. Хотя хранить на нем что-то важное я бы уже не рискнул.
    Ответ написан
    Комментировать
  • Как изменить размер (scale) объекта используя перетаскивания в js canvas?

    @alexalexes
    Очевидно же, что не нужно использовать преобразование функции, если аргументы содержат недопустимые значения. Делайте контроль допустимых значений перед применением функции. Если аргумент один - то у вас два состояния работы функции: обычное, и вырожденное. Если два аргумента, то четыре состояния: 1) обычное по X, обычное по Y; 2) обычное по X, вырожденное по Y; 3) вырожденное по X, обычное по Y; 4) вырожденное по X, вырожденное по Y.
    Ответ написан
    Комментировать
  • Какой бюджетный набор для пайки плат можно собрать?

    @alexalexes
    Во главе угла должен стоять мультиметр (иногда осциллограф, иногда теплак + лабораторный БП) и навыки анализа электрических схем.
    Если научитесь диагностировать, то ремонт можете поручить 7-милетнему ребенку, который имеет вышеуказанный обвес. Все это влияет на качество и скорость ремонта, но бесполезно, если нечем диагностировать.
    Ответ написан
    Комментировать
  • Как переписать код на более современный JS?

    @alexalexes
    Эта пуленепробиваемая конструкция будет работать и через 100 лет. Ничего не меняйте.
    Ответ написан
    Комментировать
  • Как создать сайт с возможностью создать личный кабинет и с привязанной к нему БД?

    @alexalexes
    В вашем случае, если задание звучит именно так, то просто ставится ВордПресс, настраивается 3 роли пользователей, открывается возможность регистрации. Всё - любой пользователь может создать учётку на базе возможностей самой CMS.
    К сайту нужно подключить БД

    Если вы ставите любую CMS, это уже автоматически подразумевает, что вы провели романтическую ночь с мануалом по установке MySQL или PostgreSQL, и уже на зубок знаете какое имя пользователя вы создали в СУБД, и знаете параметры подключения к ней для сторонних клиентов, в роли которого выступит веб сервер с CMS.
    Ответ написан
    3 комментария
  • Утечёт ли заряд из SSD если его не включать полтора года?

    @alexalexes
    Если у вас SSD - портативный накопитель. То помните всегда, что это не хранилище, а переноска для данных (читай, расходник, как офисная бумага). Будьте готовы ее потерять, сломать, деградировать в любой неподходящий момент.
    Ответ написан
    Комментировать
  • Есть ли способ восстановить перезаписанный, а не удаленный файл?

    @alexalexes
    Анреал. Sqlite никогда не используется в приложениях дальше задач кеширования данных конечного пользователя, у него какое-то журналирование есть, но только в рамках поддержки транзакций.
    Плюс, у вас SSD - плюс 1 млн. очков к ачивке "удалил - забудь".
    Ну, что-ж, это урок.
    Сохраняйте вкладки в избранное, а избранное выгружайте в виде файла со списком ссылок.
    Файл версируйте, копируйте раз в несколько месяцев в разные накопители.
    Ответ написан
    Комментировать
  • Как исправить кодировку в Outlook?

    @alexalexes
    См. преобразования windows-1251 <-> KOI8-R.
    Ответ написан
  • Как загрузиться с ssd диска в разъем mini-pcie?

    @alexalexes
    Если вы не нашли готовой прошивки bios с модификацией nvme под свою материнскую плату, то такая модификация готовится самостоятельно из прошивки от производителя, и зашивается в материнку на свой страх и риск.
    PS: Вы точно в advanced или boot разделе не находили пункта Hard Disk Priority или Other devices? Обычно, в таких местах прячутся альтернативные харды.
    Ответ написан
  • Как подключить акустику через ЦАП Fosi Q4 к ПК?

    @alexalexes
    RCA-RCA, у вас нет вариантов. Такие кабели на мусорку выбрасывают пачками, есть в любом ларьке, торгующий пультами. Если найдете несколько, то достаточно того, у кого сопротивление ниже при прочих равных условиях (он толще).
    А так, надо было брать ЦАП, у которого оптический выход на out, тогда отойдете от привычных тюльпанов.
    PS: Я бы еще взглянул на характеристики материнской платы компа, вполне возможно, у нее есть SPDIF разъем, но не выведен на заднюю панель. Тогда можно обойтись вот такой штукой: https://aliexpress.ru/item/1005006476780043.html
    https://aliexpress.ru/item/1005006749094797.html
    Ответ написан
    9 комментариев
  • Как на один элемент повесить два события, клик и двойной клик?

    @alexalexes
    this.content.querySelectorAll('.cell').forEach((cell) => {
      let timer = null; // дескриптор отложенного обработчика одного клика
      cell.addEventListener('click',  (e) => {
         if(timer)
           clearTimeout(timer); // при каждом клике сбрасываем отложенный обработчик обработки одного клика
         if(e.detail == 1) // на первом клике устанавливаем отложенный обработчик
           timer = setTimeout(handleClickCell, 250); // Выполнение функции по одинарному клику после ожидания второго клика 250мс
         if(e.detail == 2) // на втором - выполнение обработчика двойного клика
         {
            // благодаря счетчику detail в ивенте можем посчитать длину очереди непрерывных кликов, и в нужный момент выполнить функцию на втором клике
            console.log('111');
         }
        } );
    });
    Ответ написан
    1 комментарий