Задать вопрос
  • Для надёжности, какой тип внешнего диска лучше выбрать, SSD vs HDD?

    @alexalexes
    Надежнее иметь от двух источников одних и тех же данных при их переносе.
    При ваших вводных, различия примерно такие:
    1) что SSD выживет, если свалится со стола или выскользнет из рук, а HDD - не всегда;
    2) на SSD есть не нулевой риск потерять данные при сбое питания или при сбое функционирования прошивки, в HDD данные физически останутся на своих местах, чтобы внести изменения нужно применить запись.
    3) на SSD невозможно проводить восстановление данных, признанных удаленными - прошивка будет подчищать их и оптимизировать место хранения. На HDD вполне предсказуемо профессиональное восстановление, если он не повреждался ударно.
    4) SSD быстры - ограничение упрется только в поколение usb 3 интерфейса и быстроту контролера SSD по записи. HDD - при хорошем раскладе скорость будет 100...120 Мбайт/с, не более.
    Ответ написан
    Комментировать
  • Какой из запросов более оптимальный?

    @alexalexes
    Использование in нужно избегать, если вы в нем не прописываете статичные значения, или известное кол-во переменных с альтернативными вариантами.
    Более живенько будет работать с обычными join:
    SELECT u.* FROM users u 
    JOIN pp1 ON u.id = pp1.id and pp1.organization = 1 
    union
    SELECT u.* FROM users u 
    JOIN pp2 ON u.id = pp2.id and pp2.organization = 1
    ORDER BY name
    LIMIT 15

    Или использовать exists в where - так вы планировщику даете понять, что можно не искать все варианты в подзапросе, а найти один, подходящий под условие.
    SELECT u.* FROM users u 
    where exists (select 1 from pp1 where u.id = pp1.id and pp1.organization = 1 )
         or exists (select 1 from pp2 where u.id = pp2.id and pp2.organization = 1 )
    ORDER BY u.name
    LIMIT 15

    PS: Наличие однотипных таблиц pp1 и pp2 говорит о наличии ошибки проектирования базы данных. От видов сущностей pp у вас не должно плодится таблицы с pp. У таблицы pp должно быть свойство вида сущности, например pp_type_id и таблица-справочник pp_type - куда вы будете добавлять новый вид сущности, а не создавать новую таблицу.
    Тогда запрос у вас будет выглядеть так:
    SELECT u.*
       FROM users u 
    where exists (select 1 
                  from pp
                 where u.id = pp.id
                   and pp.organization = 1 
                   and pp.pp_type_id in (1, 2) -- собственно, в таблице содержится все, что раньше находилось в pp1 и pp2, появилось поле, которое отличает разновидности записей
              )
    ORDER BY u.name
    LIMIT 15
    Ответ написан
    3 комментария
  • Будут ли работать Bluetooth наушники с не родным блютуз адаптером?

    @alexalexes
    Посмотрите внимательно документацию к наушникам Razer Barracuda X какая у вас их модификация. На рынке есть такие наушники с Bluetooth, а есть только с радиоканалом. Если в документации указано, что у ваших есть Bluetooth, то можно взять любой Bluetooth адаптер с такой же поддерживаемой версией или старше.
    Ответ написан
    Комментировать
  • Как с помощью jQuery повторить событие oninput и вызов функции при нажатии на button?

    @alexalexes
    $('.plus').click(function(e) {
     checkNumber(
    // про this - сюда вставьте указатель на ноду HTML - конкретный экземпляр инпут с классом намбер, который будете проверять. Будьте внимательны, если на странице несколько input.number, возможно, выбранный вами способ будет захватывать первый попавшийся input.number. Добейтесь того, чтобы захватывался только тот намбер, соседом которого является плюс или минус (можно через родительский контейнер вычислить это).
    
    // про event. Возможно, возможно, внутри реализации checkNumber, допустим есть отмена действия по умолчанию, или остановка всплытия события, посмотрите, будет ли отличия от события oninput на намбере. Можно попробовать передать указатель события клика от плюса/минуса (обратите внимание на аргумент e в function(e) )
    
    // про '1' - если заглянуть в хрустальный шар - реализацию функции checkNumber, то можно предположить, что это значение по умолчанию или минимальное значение поля input.number )
    });
    Ответ написан
    Комментировать
  • Будет ли работать пк без видеокарты, с процессором без встроенной видеопамяти?

    @alexalexes
    В ноутбуках при замене проца можно упереться в то, что материнка не будет знать про этот процессор ничего (в биосе не будет о нем сведений). И второй момент, можно упереться в теплопакет (TDP) - проц. заведется, но системы охлаждения будет не хватать, чтобы охлаждать его под нагрузкой.
    Если хотите поставить проц. по производительнее, то посмотрите, какие модификации проца бывают у ноута Dell Vostro 3300. Если там есть какой-нибудь i5 той же архитектуры, то 90% вероятности, что такой же можно поставить и в ваш.
    Другой вариант, посмотреть какой конкретно у вас процессор и посмотреть ноутбуки других производителей с тем же процессором и посмотреть по их линейке моделей, что в том же линейке модификаций посмотреть, какой ноутбук оборудован самым мощным процессором - это тоже будет показатель "потолка" заменяемости процев.
    Ответ написан
    Комментировать
  • Как отслеживать выход из сети?

    @alexalexes
    Чтобы реализовать вашу идею, нужен стек, где сервер выступает в роли ведущего по части отправки http-запроса клиенту. Сервер PHP, обычно, выступает в роли ведомого - когда клиент соизволит сделать запрос, тогда сервер может проанализировать, жив ли клиент. В случае с WebSocket можно на стороне сервера понять, закрылось ли соединение, не дожидаясь внятного ответа от клиента.
    Сервер PHP может в WebSocket, но реализации у него кривые. На эту роль идеально подходят NodeJS + WebSocket.
    С PHP вы только можете отслеживать, когда последний раз клиент отправлял запрос - если больше условных 10 минут назад, то он скорее мертв, чем жив.
    Ответ написан
    Комментировать
  • Как приручить событие "keydown" в браузере?

    @alexalexes
    Чтобы вовремя удалить обработчики, нужно их методы деанонимизировать - присвоить имена или иметь где-то указатели на оригинал обработчика, чтобы внутри обработчика он смог снять сам себя с события.
    let setSpeedToUpHandler = function(e)
    {
      if(e.key === " "){
          document.removeEventListener("keydown", setSpeedToUpHandler); // удаляем текущий обработчик с этого типа события 
         setMovementSpeedToSpeedUp(); // увеличиваем скорость персонажа
      };
    };
    let setMovementSpeedToNormalHandler = function(e)
    {
      if(e.key === " "){
         document.removeEventListener("keyup", setMovementSpeedToNormalHandler); // удаляем текущий обработчик с этого типа события 
         setMovementSpeedToNormal(); // устанавливаем скорость на нормальное значение
      };
    };
    document.addEventListener("keydown", setSpeedToUpHandler);
    document.addEventListener("keyup", setMovementSpeedToNormalHandler);
    Ответ написан
    Комментировать
  • Как "захватить" регуляркой оставшуюся часть строки после третьего дефиса?

    @alexalexes
    Регулярки не удаляют и не модифицируют исходную строку.
    Вашу задачу нужно рассматривать как:
    "Взять первые три слова, разделенные дефисами".
    Можно сматчить примерно такой регуляркой:
    ^([a-z]*\-){2}[a-z]*
    "Взять два раза слово+дефис и еще слово впереди".
    Ответ написан
    1 комментарий
  • Существует ли альтернатива видео api ютуба?

    @alexalexes
    Ну, так не единым ютубом жив видеохостинг.
    Если в ВК или в Рутубе вы воспользуетесь кнопкой "поделиться", то там обнаружите вариант для получения iframe, где будут ссылки следующего вида:
    https://vk.com/video_ext.php?oid=некий_ключ&id=некий_идентификатор_видео&hd=2

    https://rutube.ru/pl/?pl_id&pl_type&pl_video=некий_хеш_видео
    Ответ написан
    Комментировать
  • Можно ли как либо защитить php-проект от "угона" другим наёмным программистом (фрилансером)?

    @alexalexes
    Меры безопасности такие же как и в любом коммерческом банке.
    1. Разделение информационной системы предприятия на контуры по готовности релиза: продакш (к управлению допускаются только ключевые технические специалисты компании), предпродакш (к управлению допускается только помощники ключевых технических специалистов, в контуре могут испытываться как тестовые данные, так и часть боевых данных), дев-контур для разработчиков (допускаются разработчики только по узкому направлению, в контуре циркулируют только тестовые данные).
    2. Разделение информационной системы предприятия по функционалу и делегирование прав доступа от рядового разработчика к ключевому специалисту в рамках одной подсистемы. Разработчики и их руководители должны иметь только те права доступа, которые необходимы для текущей работы.
    Ответ написан
    1 комментарий
  • Как отредактировать dll-файл?

    @alexalexes
    Некоторые статичные сообщения программ можно посмотреть в dll через старый добрый Restorator.
    Ответ написан
    Комментировать
  • Как обратиться к определенному элементу внутри div и удалить весь div родительский?

    @alexalexes
    Нужно извлечь из страницы все ссылки с атрибутом rel="tag". Пройтись по списку найденных ссылок и найти ссылку с необходимым содержанием. Далее подняться на 4 предка вверх и удалить его.
    let anchors = document.querySelectorAll('a[rel="tag"]');
    for(let i = 0; i < anchors.length; i++)
    {
      if(anchors[i].innerHTML.indexOf('Онкология') >= 0)
      {
        anchors[i].closest('.case-col').remove();
        break;
      }
    }

    PS: Jquery должен умереть, не используйте его там, где справятся нативные функции JS.
    Ответ написан
    3 комментария
  • Как сохранить get параметр при переходе на другую страницу?

    @alexalexes
    Если вы хотите сохранить выбранный населенный пункт в вашем разрабатываемом сайте (интернет магазине), то вам не нужно тянуть этот параметр при каждой ссылке. Вам нужно при выборе города от пользователя получить этот параметр один раз и сохранить его либо в куках $_COOKIE, либо в сессионной переменной в $_SESSION, либо в базе данных в профиле пользователя.
    Далее, при любом обращении к любой странице вашего сайта доставать этот параметр из описанных выше источников и использовать как некую переменную контекста для выбора и формирования контента страницы.
    Ответ написан
    1 комментарий
  • Если файл, содержащий пространство имён, сам подключает файл через 'include', какое в подключаемом файле будет пространство имён?

    @alexalexes
    Проверяйте на практике:
    echo '"', __NAMESPACE__, '"';
    https://www.php.net/manual/en/language.namespaces....
    Сами разберетесь быстрее и вопросов меньше будете задавать.
    Ответ написан
    Комментировать
  • Как сделать боксы подряд?

    @alexalexes
    Либо по старинке - всем элементам, которые хотите сделать в ряд, даете свойство display: inline-block; либо по молодежному - делаете контейнер с display: flex и добавляете необходимые flex-свойства элементам, чтобы обеспечить выравнивание и пропорции заполнения блоков.
    Еще древнее способ и самый правильный с точки зрения семантики HTML - элемент .button используете как input, а не div, чтобы все элементы в ряду были строчного типа - тогда мучиться с выравниванием не придется.
    Ответ написан
    5 комментариев
  • Как вставить скрипт, чтоб он не открывался на всю страницу?

    @alexalexes
    Либо обращайтесь к разработчикам виджета - help@unitiki.com
    Либо смотрите, какие ccs-селекторы воздействуют на модальное окно виджета и пытайтесь перебить их свойства своими css-стилями.
    Ответ написан
    Комментировать
  • Успешно! вместо текста?

    @alexalexes
    Браузеру пофигу на метазаголовки, если сервер пришлет http-заголовок с другой кодировкой.
    Нужно смотреть:
    1) в какой кодировке файл php (можно пересохранить в другой кодировке);
    2) какой браузеру приходит http-заголовок, связанный с кодировкой от сервера на вкладке Сеть по F12 (можно добавить http-заголовок с нужной кодировкой через функцию header);
    3) meta-заголовки кодировки бесполезны, если выводом контента рулит php-скрипт.
    Ответ написан
    Комментировать
  • Возможно ли отследить утерянный ноутбук с сим картой?

    @alexalexes
    На вновь купленном ноутбуке заказать глубокую декоративную гравировку на крышку ноута, на верхнюю часть и на поддон, чтобы с любого ракурса фотографирования, как для продажи легко узнавалась, и было проблематично удалить. Тогда красть такой ноут для перепродажи будет бессмысленно, только на запчасти пускать, а это меньше выгода для вора.
    Ответ написан
    Комментировать
  • При замене сетевой карты на ноутбуке нужно менять антену для приёма 5Ггц?

    @alexalexes
    Проблем быть не должно с существующими антеннами.
    Ответ написан
    Комментировать
  • Почему сортировка по сумме двух полей не работает?

    @alexalexes
    Оберните все в подзапрос и посчитайте уже там:
    select A.*, (A.count + A.amount) total
    from (...) A
    order by total desc
    Ответ написан
    Комментировать