Задать вопрос
  • Как решить проблему PDOStatement::execute(): SQLSTATE[HY093]?

    @alexalexes
    Если вы вставляете в запрос список числовых параметров, то можно провернуть такое.
    $product_list = [30, 32, 38];
    $query = " `productId` in (".join(', ', array_map(function($item){return int $item;}, $product_list)).")";
    $sql = "SELECT * FROM `products` WHERE ".$query;
    // Должен получиться запрос:
    // SELECT * FROM `products` WHERE `productId` in (30, 32, 38)
    // array_map тут нужен для принудительного перевода всех значений в числовой вид, обеспечив тем самым экранирование.
    $query = $db->query($sql);
    $products_data = $query->fetchAll(\PDO::FETCH_ASSOC);

    Если применять нормальную связку параметров PDO, как должны учить в учебниках:
    $product_list = [30, 32, 38];
    $in_params = [];
    for($i = 0; $i < count($product_list), $i++)
      $in_params[':productId'.$i] = $product_list[$i];
    // получили массив: $in_params = [':productId0' => 30, ':productId1' => 32, ':productId0' => 38];
    $placeholder_string = join(', ', array_keys($in_params));
    // получили строку $placeholder_string = ":productId0, :productId1, :productId2";
    $sql = "SELECT * FROM `products` WHERE `productId` in (".$placeholder_string.")";
    // Должен получиться запрос:
    // SELECT * FROM `products` WHERE `productId` in (:productId0, :productId1, :productId2)
    $query = $db->prepare($sql);
    $query->execute($in_params); // in_params в точности в таком формате, который нужен для связки параметров productId
    $products_data = $query->fetchAll(\PDO::FETCH_ASSOC);
    Ответ написан
  • Как из двух таблиц создать одну с разбивкой по датам по колонкам?

    @alexalexes
    Сначала выбираете доступные даты:
    SELECT distinct P.date
    FROM Query Q
    JOIN Position P ON Q.id = P.query_id
    where P.Date between _ and _

    Потом, строите динамический запрос в той среде выполнения кода, где вызывали первый запрос:
    SELECT Q.Query,
                 QP1.Cnt,
                 QP2.Cnt,
                 ......
    FROM Query Q JOIN Position P ON Q.id = P.query_id
    left join (select Q1.Query, P1.Date, count(*) as Cnt from Query Q1 JOIN Position P1 ON Q1.id = P1.query_id group by Q1.Query, P1.Date) QP1 on QP1.Query = Q.uery and P1.Date = P.Date
    left join (select Q2.Query, P2.Date, count(*) as Cnt from Query Q2 JOIN Position P2 ON Q2.id = P2.query_id group by Q2.Query, P2.Date) QP2 on QP2.Query = Q.Query and P1.Date = P.Date
    ....
    where P.Date between _ and _
        and (QP1.Cnt > 0 or QP1.Query is null)
        and (QP2.Cnt > 0 or QP2.Query is null)
        ....

    Строк в каждом секции с ... должно быть столько, сколько дат.
    Ответ написан
    Комментировать
  • Есть ли технические причины тому, что у ноутбука с дисплеем 360Hz есть только режим 60 Hz и 360 Hz, но нет промежуточных?

    @alexalexes
    А зачем вам на встроенной матрице другие герцовки, отличные от предложенных?
    Будете каждую неделю ее разбивать и искать оригинальную запчасть?
    Что касаемо программных fps, частоты обновления кадрового буфера не зависят от герцовки, подаваемой на матрицу - частота кадров будет экстраполироваться на тот аппаратный режим, который доступен.
    Ответ написан
    3 комментария
  • Как создать шаблон для создаваемого из контекстного меню HTML файла?

    @alexalexes
    Откройте редактор реестра.
    Найдите раздел:
    HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.html
    Создайте в нем раздел с таким же названием, как значение параметра по умолчанию (у меня он htmlfile).
    HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.html\htmlfile
    В нем создайте раздел ShellNew.
    HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.html\htmlfile\ShellNew

    В этом разделе создайте строковый параметр FileName с путем к образцу файлу, как он должен выглядеть по умолчанию.
    FileName="C:\Templates\initial.html"
    В этом файле сделайте первоначальную разметку по своему вкусу. На основе этого файла будут создаваться файлы через контекстное меню.
    Ответ написан
    3 комментария
  • Как обработать Hex код, чтобы создать pdf файл?

    @alexalexes
    Скорее всего так:
    $content = hex2bin(str_replace(" ","", "25 50 44 46 2D 31 2E 35 0D 0A 25 B5 B5 B5 B5 0D 0A 31 20 30 20 6F 62 6A 0D 0A 3C 3C 2F 54 79 70 65 2F 43 61 74 61 6C 6F 67 2F 50 61 67 65 73 20 32 20 30 20 52 2F 4C 61 6E 67 28 72 75 2D 52 55 29 20 2F 53 74 72 75 63 74 54 72 65 65 52 6F 6F 74 20 32 32 20 30 20 52 2F 4D 61 72 6B 49 6E 66 6F 3C 3C 2F 4D 61 72 6B 65 64 20 74 72 75 65 3E 3E 3E 3E 0D 0A 65 6E 64 6F 62 6A 0D 0A 32 20 30 20 6F 62 6A 0D 0A 3C 3C 2F 54 79 70 65 2F 50 61 67 65 73 2F 43 6F 75 6E 74 20 31 2F 4B 69 64 73 5B 20 33 20 30 20 52 5D 20 3E 3E 0D 0A 65 6E 64 6F 62 6A 0D 0A 33 20 30 20 6F 62 6A 0D 0A 3C 3C 2F 54 79 70 65 2F 50 61 67 65 2F 50 61 72 65 6E 74 20 32 20 30 20 52 2F 52 65 73 6F 75 72 63 65 73 3C 3C 2F 45 78 74 47 53 74 61 74 65 3C 3C 2F 47 53 35 20 35 20 30 20 52 2F 47 53 36 20 36 20"));
    // если записать в каталог сервера, то так:
    file_put_contents("file.pdf", $content);
    // если отдать контент браузеру, то так:
    header("Content-type:application/pdf");
    header("Content-Disposition:inline;filename='file.pdf");
    echo $content;
    Ответ написан
    1 комментарий
  • Стоит ли брать Macbook AIR 13 m1 для разработки на VS + SQL MS?

    @alexalexes
    Покупайте ноут, на котором 100% установятся все продукты MS.
    Ставить на мак среду разработки и компоненты MS, а потом еще при этом искать ошибки в коде, почему на винде все запускалось, а на маке - нет, будет сравни с поеданием кактуса.
    Ответ написан
    1 комментарий
  • Как быстро найти картинки для товара по артикулу в большом объеме?

    @alexalexes
    1) Взять выгрузку товаров из 1С. Взять запрос с сайта, который дает список товаров на сайте.
    2) В запросе от сайта вывести url, перечень ссылок на картинки.
    3) Сопоставить выборку 1С и результаты запроса сайта по артикулу товара. Получить разностную выборку.
    4) По разностной выборке скачать все картинки товаров в отдельный каталог.
    5) Если ватермарка стоит в фиксированном месте, то найти утилиту для пакетной обработки изображений, добавить в нее каталог с картинками, и поставить задание, которое удаляет ватермарку. Запустить обработку.
    Ответ написан
    2 комментария
  • Как подчинить алгоритм YouTube?

    @alexalexes
    Когда плохое настроение нужно хоть иногда выключать гаджеты, где вас цепляют рекомендациями по контенту, не только youtube. Выходить на улицу - гулять, дышать свежим воздухом, без телефона.
    Ответ написан
    Комментировать
  • Как запитать ноут от 12в?

    @alexalexes
    В ноутах не бывает 12 вольт. Там, обычно, 19-20 вольт.
    Любой блок питания от другого ноута, который держит не меньше 4 ампер заведет его.
    Штекер можно на алиэкспресс купить, нужно знать внешний диаметр (минус), и внутренний диаметр (плюс) - по этим цифрам выбрать штекер, не перепутать полярность.
    И всё, только паяльником припаять его.

    PS: если принципиально нужно работать с 12 вольт, то ищите на алике "Повышающий DC-DC модуль 12 на 19 вольт" не меньше 5 ампер тока. Будут в корпусе из алюминиевого радиатора.
    Ответ написан
  • Можно ли обновить виндовс без перезагрузки?

    @alexalexes
    В биосе устанавливаете диск, с которого нужно грузиться, в первый приоритет.
    А в Windows нужно вызвать msconfig, во вкладке Загрузка установить параметр "Загрузка по умолчанию" напротив той загрузочной записи, которая вам нужна (да, а почему у вас больше одной загрузочной записи, десять раз на один и тот же раздел винду пытались поставить?).
    Тогда после перезагрузки и диск нужный будет выбираться, и загрузочная запись нужная выберется автоматически.
    Ответ написан
    Комментировать
  • Как составить SQL запрос для отчета с разным количеством строк по категории?

    @alexalexes
    При помощи SQL вы получаете исходные данные, в виде первой таблицы.
    Далее работаете только кодом PHP.
    Вторая таблица - это у вас несколько матриц, по количеству подразделений.
    Одна матрица n*m это:
    n - макс. индекс предмета 000n в пределах одного подразделения.
    m - макс. индекс видов предметов во всей исходной выборке.
    Позиция в матрице i,j:
    i - это 000i
    j - индекс вида предмета.

    Для вывода результата вам нужно получить структуру:
    $result =
    [
      1 =>  // department_id
      [
         1 /* 000i индекс */ => [1 /*индекс вида предмета*/ => '1_1_0001', 2 => '1_2_0001', 3 => '1_3_0001' /* непосредственно данные */],
         2 /* 000i индекс */ => [1 /*индекс вида предмета*/ => '1_1_0002', 2 => '1_2_0002', 3 => '1_3_0002' /* непосредственно данные */],
         3 /* 000i индекс */ => [1 /*индекс вида предмета*/ => '1_1_0003', 3 => '1_3_0003' /* непосредственно данные */],
         ...
      ],
      2 =>
      ...
    ];

    Вариант 2, динамически в PHP создать запрос:
    select t.department_id,
              t1.item as type_1,
              t2.item as type_2,
              ...
    from t
    left join (select t.department_id, t.item from t where t.type_id = 1) t1 on  t1.department_id = t.department_id
    left join (select t.department_id, t.item from t where t.type_id = 2) t2 on  t2.department_id = t.department_id
    ...
    where 1 = 1
        and (SUBSTRING_INDEX(t.item, '_', -1) + 0 = SUBSTRING_INDEX(t1.item, '_', -1) + 0 or t1.item is null)
        and (SUBSTRING_INDEX(t.item, '_', -1) + 0 = SUBSTRING_INDEX(t2.item, '_', -1) + 0 or t2.item is null)
       ...
      -- тут нужно получить равенство всех субиндексов 0000i от t.item сравнить со всеми tn.item
    order by  t.department_id, SUBSTRING_INDEX(t.item, '_', -1) + 0
    Ответ написан
    2 комментария
  • Почему компьютеры не используют двоично-десятичный формат для вычислений?

    @alexalexes
    А чего в вашей системе этот диапазон пустует 1010...1111?
    систему счисления без приближений в таких числах, как 2,1;3,4;45,9

    Сдвинте на разряд вперед, и считайте в целых. После подсчета поставьте в нужном месте разделитель.
    6 ГБ оперативки это страшно ради точных вычислений

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

    @alexalexes
    Сверху этого еще геологический культурный слой из соккета 1151.
    Есть недавно похороненный соккет 2011v3. Вы можете взять условный проц. 2660 + много гигов серверной ОЗУ DDR4, китайскую мать с горячим питальником, народную китайскую видюху 1660 super (или какую-нибудь rx560 если совсем бюджетно), и ездить на этой лошади еще 5 лет, а то и 10.
    Ответ написан
    2 комментария
  • Что нужно исправить, чтобы sql код заработал?

    @alexalexes
    У вас нет связи между таблицами Orders и Products.
    Либо потеряли свойство, для обеспечения связи "один-ко-многим":
    (Если один заказ может содержать в себе строго один продукт)
    CREATE TABLE Orders (
    ...
    Product_Id int,
    FOREIGN KEY (Product_Id) REFERENCES Products(Product_Id) -- внешний ключ к продуктам
    ...

    Либо потеряли целую таблицу, для обеспечения связи "многим-ко-многим":
    (Если один заказ может содержать в себе много продуктов)
    -- Таблица "Позиция продукта в заказе"
    CREATE TABLE Order_Positions (
    position_id INT PRIMARY KEY,
    order_id INT,
    product_id INT,
    FOREIGN KEY (Product_Id) REFERENCES Products(Product_Id), -- внешний ключ к продуктам
    FOREIGN KEY (order_id) REFERENCES Orders(order_id) -- внешний ключ к Заказам
    );
    Ответ написан
    Комментировать
  • Есть ли смысл делать псевдо SPA на PHP?

    @alexalexes
    Гасить стандартное действие можно у ссылок, но это не освобождает от формирования url в ссылках.
    Параметры в ссылках нужно указывать такие, чтобы оно восстанавливало состояние страницы, если попытаться перейти по ней, а псевдо переход по ссылке менял адрес страницы без фактической перезагрузки (добавлял запись в историю url).
    Ответ написан
    1 комментарий
  • Почему адрес 192.168.1.001 не валидный?

    @alexalexes
    Потому что не принято записывать IPv4 в десятичной форме с ведущими нулями. Не нужно соблюдать символьную длину адреса, так как компоненты адреса различаются между собой точками, а не позицией конкретной цифры.
    Ответ написан
  • Подключение xml с помощью js к html?

    @alexalexes
    1. Нужно убедиться, что файлы script.js и data.xml находятся в том же каталоге, что и index.html.
    2. Нужен веб-сервер, так как ajax-запрос вы не сделаете на файл диска data.xml.
    На сервере должен быть определен домен (путь будет локальный), и в каталоге, с которым ассоциирован домен, должны находиться вышеупомянутые файлы.
    Обращаться к index.html необходимо через домен.
    Ответ написан
    Комментировать
  • Как убрать operating system not found?

    @alexalexes
    В UEFI BIOS не пускает никакими способами вплоть до подключения сторонней клавиатуры

    Не может быть такого.
    Значит, вы словили комбо неисправность. Сломалась клава + отключена USB клава в биосе.
    Нужно подкинуть заведомо исправную ноутбучную клаву к ноуту и зайти в биос, и включить все как полагается - активировать USB устройства, и разрешить загрузку со сторонних устройств, а также разрешить доступ к загрузочному меню.
    PS: На ctrl + alt + del можно перезагрузиться, или не реагирует?
    Ответ написан
  • Какая есть программа для записи на слабом ноутбуке?

    @alexalexes
    Если хотите воспроизводить игру именно на текущем железе, то, чтобы записывать с него картинку и звук, вам понадобиться адаптер для сквозного видеозахвата и отдельный комп, который по характеристикам потянет запись x264 в нужном разрешении и нужном fps (или какой-то хитрый ресивер, или тв-приставка).
    Это стандартный набор устройств для стримминга. Все в одном не сделать, особенно, на слабом железе.
    Ответ написан
    Комментировать
  • В чем может быть проблема с usb-хабом?

    @alexalexes
    Нужно усилить или организовать дополнительное питание хаба.
    Усилить - это использовать к хабу кабель с двумя разъемами usb, использовать оба.
    Дополнительное питание - у хаба должен быть разъем под блок питания (нет - сменить хаб). Его нужно задействовать, либо питанием из розетки, либо повер-банком если есть возможность.
    Если хаб usb 3.0, то воткнуть его в usb 3.0 ноута, кабелем под 3.0, тогда есть вероятность, что по usb пробросится необходимый ток.
    Ответ написан
    2 комментария