• Внешний или внутренний 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.
    Ответ написан
    Комментировать
  • Как исправить обводку текста css?

    @alexalexes
    Попробуйте шрифт из этого источника:
    https://fonts-online.ru/fonts/montserrat
    На пробной странице стили обводки текста от этого источника отрабатывают корректно.
    Ответ написан
    Комментировать
  • Как работали городские локальные сети?

    @alexalexes
    Городские локальные сети существовали лишь благодаря особенности первых тарифных сеток провайдера.
    Как правило, тарифы были сильно лимитированы по скорости, либо по объему трафика, но это касалось только тех случаев, когда трафик абонента шел из IP адреса, не принадлежащего провайдеру. Для обмена с внутренними IP адресами провайдер, как правило, не учитывал лимиты тарифа, и позволял практически свободно пользоваться этим преимуществом.
    Второй особенностью было то, что провайдер не только мог предоставлять услуги подключения к Интернету, но и предоставлять услуги хостинга, предоставления доменного имени третьего уровня, других внутренних сервисов, например, облачный диск.
    Два этих фактора давало возможность создать сайт в пределах локальной сети провайдера и разместить на нем каталог торрентов, а отсутствие тарифных ограничений внутри сети позволяло выгодно гонять peer-to-peer трафик. Таким образом это позволило жить и процветать торрентам в таких сетях.
    Еще одной особенностью такого сайта торрента - был свой белый список диапазонов IP адресов в аккурат соответствующий провайдеру. Его полагалось указывать в торрент-клиенте, чтобы не хватануть тарифный трафик, если кто-то чужой зарегистрируется на сайте, и начнет что-то скачивать и отдавать.
    Еще у учетной записи каталога торрента был рейтинг - соотношение отданного к скаченному, чтобы стимулировать пользователей оставаться на раздаче и создавать свои раздачи.
    Сейчас такие ресурсы создавать не имеет смысла - потому, что не каждый провайдер имеет услуги хостинга, ужесточилось законодательство в отношении выкладываемого в сеть материала, тарифные планы дешевы, чтобы купить себе скорость близкую к технологической скорости канала, и нет различий какой трафик поступает.
    Ответ написан
    6 комментариев
  • Как декодировать JSON содержащий кириллицу?

    @alexalexes
    В JSON-е текст с большой вероятностью закодирован в кодировке utf-8 в его экранируемом виде через \u.
    После перекодирования средство просмотра ресурса пытается отобразить результат в однобайтовой кодировке, предположительно в win-1252. Нужно настроить средство просмотра, чтобы оно тоже выводило результат в utf-8. Содержание JSON корректно, некорректен порядок работы с текстом после декодирования.
    Ответ написан
    Комментировать
  • Как подключить один принтер к двум компьютерам, через usb-кабель?

    @alexalexes
    Если в хозяйстве есть роутер с usb гнездом, то можно исследовать его настройки на предмет наличия принт-сервера.
    Если есть такой, то можно подключить принтер к нему. Если в роутере нет принт-сервера, но все же есть usb, то если его не жалко, то можно попробовать поставить прошивку openWRT для установки принт-сервера.

    В этом случае, компьютеры будут подключаться к роутеру по сети или wi-fi, а принтер превратится в сетевой.

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

    @alexalexes
    Вариант 1.
    Провести отдельную толстую линию для вашего теплового насоса - от щитка до него. Чтобы на этой линии не находилось ничего, кроме насоса и других силовых устройств. Обеспечить фильтрующими элементами электрику насоса.
    Вариант 2 (или совместно к варианту 1).
    Завести от щитка отдельную фазу 220В или хотя бы отдельную линию на той же фазе, на которой сидят только приборы с тонкой цифровой начинкой (телевизоры, компьютеры и другая цифровая электроника).
    Ответ написан
    5 комментариев
  • Что делать если не правильно установил на жёсткий диск C ОС и пишет No Bootable Device?

    @alexalexes
    Тут бы хорошо подкрепить вопрос списком разделов диска, который образовался при ваших действиях.
    Если установщик Линукс уже успел форматировать разделы дисков NTFS, то уже никак не вернешь.
    Если разделы NTFS просматриваются в списке, то дело нехитрое восстановить загрузчик Винды.
    Ответ написан
  • Как расположить точки на окружности?

    @alexalexes
    В вашем примере используется карусель, у которой прописаны стартовое положение:
    state = {
        carouselDeg: 17,
        itemDeg: -17,

    carouselDeg - поворот элементов основной окружности в градусах. Опытным путем можно понять, что оно задается как:
    (360 / кол-во элементов) / 2
    Элементов у вас 10, значит, должно быть 18 градусов, а не 17 (можно заметить, что с 17 неровное начальное смещение).
    itemDeg - вращение контента внутри одного элемента. Если хотите, чтобы контент всегда был обращен горизонтально, то берете ту же формулу со знаком минус.
    Далее, есть такие методы:
    next = () => {
        this.getIdItems(true);
        this.setState(state => ({
          carouselDeg: state.carouselDeg - 36,
          itemDeg: state.itemDeg + 36
        }));
      };
    
      prev = () => {
        this.getIdItems(false);
        this.setState(state => ({
          carouselDeg: state.carouselDeg + 36,
          itemDeg: state.itemDeg - 36
        }));
      };

    Число 36 - это шаг вращения, он вычисляется как:
    360 / кол-во элементов
    В принципе все, что нужно знать для правильной ориентации карусели.
    Прорисовкой элементов карусели занимается сама библиотека, позиции элементов на плоскости вам вычислять не нужно.
    Ответ написан
    Комментировать
  • Как лучше хранить мелкие данные в базе?

    @alexalexes
    В самом кратком варианте у вас будет одна таблица, которая будет отвечать за дерево страниц.
    Таблица pages:
    id - идентификатор страницы;
    parent_id - идентификатор родителя страницы;
    title - Название страницы
    short_name - Краткое наименование (обычно используются для пунктов меню)
    alias - имя алиаса для построения url страницы (то что вы указали как type: about, advantages, etc...)
    create_date - дата-время создания страницы
    update_date - дата-время изменения страницы
    content - тело страницы
    is_hidden - флаг скрытости страницы (удобно использовать для устаревания страниц)
    PS: Посмотрите как это реализовано в любой популярной CMS, похожая таблица и свойства таблиц есть в любой из реализаций.
    Ответ написан
    Комментировать
  • Как сделать отправку формы в телеграмм бота но и чтобы форма делала запрос?

    @alexalexes
    document.getElementById('tg').addEventListener('submit',function(e){

    Вместо события submit подпишитесь на событие click не на тег формы, а на кнопку.
    На эту кнопку.
    <button type="submit">Отправить</button>
    У кнопки уберите тип submit - вы же не хотите дергать классическую отправку формы через submit.
    Все отправки делайте через axios (внутри этой библиотеки используется ajax - что вам и требуется, что и так используется).
    Ответ написан
  • Подзапросы. Сколько разных товаров заказывал каждый покупатель (по ФИО) в 1995 году?

    @alexalexes
    Вы просто не освоили group by. Те поля (или хитровычисляемые значения), которые не получены при помощи агрегированных функций, используемые в select и требуют группировки, нужно прописать в group by.
    Чтобы count считал уникальные значения по конечной выборке, не по числу строк, в него прописывают поле или выражение, которое будет определять, как идентифицировать уникальную часть выборки.
    SELECT O.CustomerID, C.ContactName, Count(distinct Od.ProductID) as Product_Unique_Count
                FROM Orders as O
                join Custimers as C on O.CustomerID = C.CustomerID
                join [Order Details] as Od on Od.OrderID = O.OrderID
                WHERE YEAR(O.OrderDate) = 1995
    group by O.CustomerID, C.ContactName
    Ответ написан
    1 комментарий
  • Где на практике применяются комплексные числа? В каких сферах IT они нужны?

    @alexalexes
    Если в IT вы не будете заниматься моделированием физических процессов, создавать новый графический движок, создавать новый кодек для обработки аудио и видео - то в принципе, никогда не столкнетесь с комплексными числами.
    С полями и кольцами вы никогда не столкнетесь, если вас черт не дернет узнавать как работает метод шифрования RSA и более навороченные методы на гладких кривых, и, бог упаси, разрабатывать что-то свое помимо использования стандартных библиотек.
    Ответ написан
    Комментировать
  • Есть ли хорошие конверторы из jquery в js?

    @alexalexes
    В вашем случае лучший конвертер - компетентный программист.
    Ответ написан
    Комментировать