Задать вопрос
  • Как обфусцировать JavaScript с минимальными усилиями?

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

    @alexalexes
    Можно не пробегать по DOM дереву, подставляя inline стили элементам. А модифицировать сами CSS правила в итоговом style всей страницы. См. Adding and Removing Rules.
    Ответ написан
    2 комментария
  • Нужна ли математика в Data science?

    @alexalexes
    У каждой формулы есть граничные условия применения.
    Если входные данные будут неконсистентны для метода, где работает эта формула, будете получать #ЗНАЧ! (если это Excel) и ничего не поминать, почему так случилось.
    А со знаниями математики вы будете понимать:
    1. Как урезать данные, или заполнить участок, где получаете #ЗНАЧ!.
    2. Какие методы применить для автоматической оценки неконсистентности данных, чтобы ваш скрипт сам выявлял эти проблемы на конкретном типе выборки и делал корректировки.
    Ответ написан
    1 комментарий
  • Как определить позицию строки в бд mysql?

    @alexalexes
    Для извлечения, изменения, удаления конкретной записи таблицы достаточно знать значение первичного ключа. Первичный ключ обладает свойством уникальности значения. Знать позицию записи таблицы, которая записалась физически в базу не имеет смысла. При выборке может быть полезна нумерация строк, но эта нумерация всегда относительна и зависит от сортировки.
    В вашем случае запрос будет выглядеть так.
    SELECT c.id, c.region,
    (select count(*)
       from `class_item` c2
       where c.data <= c2.data-- знак будет влиять на направление нумерации
           ) as row_num
    FROM `class_item` c
    order by с.data desc

    Поле data должно иметь индекс, иначе скорость выборки будет падать с ростом числа строк.
    Ответ написан
    4 комментария
  • Как изменить данные в SQL таблице?

    @alexalexes
    Используйте подготовленные запросы, чтобы вставлять параметры в текст запроса.
    $stmt = mysqli_prepare($link, 'UPDATE your_table SET name = ? where ID = ?');
    mysqli_stmt_bind_param($stmt, 'si', $name, $id);
    mysqli_stmt_execute($stmt);
    echo "строк изменено: ".mysqli_stmt_affected_rows($stmt);
    Ответ написан
    Комментировать
  • Возможно ли изменить звуковое сообщение при подключении беспроводных наушников?

    @alexalexes
    Если документацией не предусмотрена такая функция, то нереально.
    Ответ написан
  • Запись RFID-меток 125 кГц на болванки?

    @alexalexes
    Вариант на USB:
    На алике:
    rfid reader writer usb
    Цена вопроса ~1000руб (не путать с ридерами за 300руб). Через софт можно вручную забить любые произвольные значения.
    Вариант на Arduino:
    Arduino rfid card reader writer
    Цена вопроса ~100руб, при наличии usb модуля Ардуино. Можно запрограммировать любую запись. Нужны базовые знания работы с Ардуино.
    Ответ написан
    Комментировать
  • Как правильно объединить две таблицы?

    @alexalexes
    в гугле решения найти не смог

    sql join

    redbeanphp

    Научитесь сначала использовать базовый набор функций работы с СУБД:
    либо mysqli, либо PDO. Не нужно использовать ORM-ки на начальном этапе обучения.
    Ответ написан
    1 комментарий
  • Как экранировать # в пути к файлу html?

    @alexalexes
    Так же как и кириллицу, и пробелы.
    # это %23
    Есть один нюанс, если вы кодируете полный путь к файлу, то нужно:
    1) строку url разбить на составляющие пути по разделителю слеш;
    2) каждую составляющую перекодировать функцией rawurlencode;
    3) собрать обратно путь.
    $in_str = 'files/test/Test! symbol # and % and & and (=-,.).pdf';
    $out_str = implode('/', array_map('rawurlencode', explode('/', $in_str)));
    file_put_contents('test_url.txt', $out_str);
    // test_url.txt
    // files/test/Test%21%20symbol%20%23%20and%20%25%20and%20%26%20and%20%28%3D-%2C.%29.pdf
    Ответ написан
    8 комментариев
  • Как оптимизировать запрос один ко многим в MySQL?

    @alexalexes
    В вашем случае для подзапроса цен нужно использовать оконную функцию ранжирования списка, чтобы получить последнюю актуальную цену:
    SELECT * FROM `products`
    LEFT JOIN (SELECT `product`, `price`,
                      row_number() over (partition by `product` order by `id` desc) as price_rank
                          from `prices`) as prc on `products`.`id` = prc.`product`
                                                  and prc.price_rank = 1
     limit 10

    Но у вас, наверняка, версия mySQL не 8.x, а 5.x. В ней есть пользовательские переменные, которые позволяют создать патерн запроса, эмулирующий оконные функции.
    SELECT * FROM `products`
    LEFT JOIN (SELECT `product`, `price`,
                      IF(@prev_id <> `product`, @p_rank := 0, @p_rank),
                      @prev_id := `product`,
                      @p_rank := @p_rank + 1 as price_rank -- определяем partition
                from `prices`,
                      (SELECT @p_rank := 0) p_rank, -- начальное значение ранга
                      (SELECT @prev_id := -1) prev_id -- начальное значение товара (не должен быть в диапазоне сущ. id)
                    order by `product` asc,
                             `id` desc -- устанавливаем сортировку partition
                           ) as prc on `products`.`id` = prc.`product`
                                                  and prc.price_rank = 1
     limit 10

    PS: За точность воспроизведения аналога не ручаюсь, возможно, придется шаманить с order by в подзапросе.
    Ответ написан
    Комментировать
  • Как проверить подходит ли оперативка под материнку?

    @alexalexes
    https://www.asus.com/ru/supportonly/h110m-r/helpde...
    Посмотрите документ H110M-R DRAM Report.
    Попробуйте установить тайминги в БИОС по планкам, которые были проверены производителем на 16G.
    14-14-14-34
    15-18-18-35
    Ответ написан
    Комментировать
  • Внешний или внутренний ssd?

    @alexalexes
    Различия только в разъемах.
    Внешний диск - это просто футляр-переходник с USB3 на SATA или NVMe. Хотя встречаются диски, где USB3 распаян на самой плате.
    Там, где вы видите скорость больше +-500мб, в этом варианте внутри диск работает не на SATA, а на NVMe (это не отменяет фактора быть впаянным USB3 напрямую), плюс, чипы памяти позволяют работать с такой скоростью.
    Там, где USB3 не напрямую распаян, вы можете разобрать футляр и сделать диск внутренним.
    Ответ написан
  • Как добавить ещё одну выборку SQL JOIN?

    @alexalexes
    Нужно подзапросом пройтись опять по той же структуре таблиц, и сгруппировать теги относительно категории.
    Атрибут category_tagname покажет все теги, используемые в изображениях той же категории.
    SELECT images.name,
     GROUP_CONCAT(tags.tagname SEPARATOR ", ") AS tagname,
     category.title,
     a.category_tagname
    FROM images
    INNER JOIN images_tags ON images.id = images_tags.images_id
    INNER JOIN tags ON images_tags.tags_id = tags.id
    INNER JOIN category ON images.category_id = category.category_id
    ---------------------
    join (SELECT category.category_id,
                        GROUP_CONCAT(tags.tagname SEPARATOR ", ") AS category_tagname
              FROM images
                  INNER JOIN images_tags ON images.id = images_tags.images_id
                  INNER JOIN tags ON images_tags.tags_id = tags.id
                  INNER JOIN category ON images.category_id = category.category_id
                   GROUP BY category.category_id
    ) a on a.category_id = images.category_id
    ----------------------
    WHERE images.category_id = 1
    GROUP BY images.name, category.title, a.category_tagname

    Или взять полученный массив $arrTable вытащить оттуда $arrTable[tagname], пересобрать, почистить от дубликатов и выводить уже его?

    Можно и на стороне php дообработать выборку. На практике, обычно, смотрят что либо быстрее выполняется, либо меньше по памяти.
    Ответ написан
  • Нормально ли хранить JSON в базе данных?

    @alexalexes
    Если потребуется делать join с одним из параметров внутри JSON, то это и будет показывать, что в данном варианте так делать не нужно.
    Если ни при каких обстоятельствах не возникнет ситуации, что потребуется разбирать JSON, чтобы связать данные таблиц, то храните JSON.
    Ответ написан
    1 комментарий
  • Как подключить 2 монитора к ноутбуку Lenovo Z500?

    @alexalexes
    В ноутбуках в 99% случаях внешние разъемы видео ведут на одну голову. Они сделаны так, чтобы повысить вероятность того, что в походных условиях вы каким-либо способом подключитесь к проектору.
    Ответ написан
    2 комментария
  • Как сформировать json из двух запросов SQL?

    @alexalexes
    Вся проблема в том, что таблица clients_groups не нормализована до третьей нормальной формы. У вас атрибут id_clients пытается вобрать несколько значений, что неприменимо при по пытках построить запросы, где будет фигурировать связка с id_client к другим таблицам.
    Чтобы данной структурой можно было пользоваться, нужно провести такую нормализацию:
    Таблица groups:
    id_group - идентификатор группы
    name_group - наименование группы
    Таблица clients_groups - предназначена для формирования связи многим-ко-многим (связывает множественными связями справочник клиентов со справочником групп):
    id - идентификатор связи
    id_group - идентификатор группы
    id_client - идентификатор клиента
    Тогда такая структура будет иметь следующее содержание:
    Таблица groups:
    id_group, name_group
    1, 'Головна'
    2, 'Менеджер'
    Таблица clients_groups:
    id, id_group, id_client
    1, 1, 2
    2, 2, 2
    3, 2, 3
    Построение запроса:
    select g.id_group, cg.id_client, g.group_name
    from groups as g
    join clients_groups as cg on g.id_group = cg.id_group

    Далее собрать выборку в NodeJS, объединив по группам клиентов и перекодировать результат в JSON.
    Ответ написан
    Комментировать
  • Возможен ли одинаковый МАК адрес на двух устройствах?

    @alexalexes
    Чтобы обходить такое ограничение провайдеров, для этого в роутерах предусмотрена функция клонирования мака с того устройства, на котором первоначально был настроен интернет на wan порт роутера, куда подключается кабель провайдера. Практически любой современный роутер имеет эту функцию, и с его установкой расшарить интернет на домашние устройства проблем не представляет.
    Ответ написан
    2 комментария
  • Как кешировать rss на php?

    @alexalexes
    Вариант 1.
    Использовать cron с настроенным расписанием, чтобы каждые 30 мин выполнял ваш php скрипт, который будет делать запрос rss данных и сохранять локальный файл. Любые другие приложения читают только этот файл, но не делают запросы на его обновление.
    Вариант 2.
    Использовать этот скрипт в качестве подключаемого скрипта на вашем сайте с типичной конструкцией кеша:
    if(существует файл кеша и его время изменения меньше 30 мин)
    {
    // читать кеш
    }
    else
    {
     // запросить новые данные и записать файл
    }
    Ответ написан
    Комментировать
  • Как обрезать картинку только сверху?

    @alexalexes
    Добавьте к картинке свойство object-position: bottom.
    Ответ написан
    Комментировать