• Почему отключается клавиатура на ноутбуке, при том что работает кнопка питания?

    @alexalexes
    Версия 1. У вас в кармане одежды магнит (или на одежде есть намагниченный элемент). Вы воздействуете им на датчик закрытия крышки. Ноутбук ведет себя так, как будто вы закрыли крышку. Возможно, неисправен этот датчик, и локальный магнетизм тут не причем.
    Версия 2. В ноутбуке есть механические повреждения. Отошел шлейф клавиатуры и т.п. после того, как его когда-то уронили.
    Ответ написан
    Комментировать
  • Как сделать логи изменения отдельной таблицы в MariaDB?

    @alexalexes
    Стандартная практика ведения истории изменения данных таблицы.
    Вешаете триггер по операциям UPDATE, INSERT, DELETE перед их выполнением (опция before) на интересуемую таблицу и вставляете данные из атрибутов old.* триггера в таблицу истории.
    Таблица истории:
    history_id - идент. записи истории
    next_history_id - идент. следующей записи истории в пределах одной записи отслеживаемой таблицы (у последней он null)
    oper_type - тип операции (UPDATE, INSERT, DELETE - можно числами записать)
    old.* - все атрибуты таблицы, значения до выполнения операции.
    new.* - все атрибуты таблицы, которые пытались внести операциями UPDATE или INSERT. Этот набор нужен, если вы следите за историей на транзакциях, которые были откатаны назад (неудачные попытки). В этом случае, в триггере нужно указать специальную опцию, чтобы он работал в режиме автономной транзакции.
    При внесении новой записи истории, в предыдущей записи по такому же первичному ключу отслеживаемой таблицы нужно добавлять next_history_id от history_id новой записи.
    Таким образом в отслеживаемой таблице будет актуальное состояние записи, а в таблице истории - цепочка изменений записей.
    По каждому первичному ключу записи отслеживаемой таблицы можно построить цепочку изменений по history_id и next_history_id.
    А по next_history_id is null можно быстро получить последнее изменение из этой цепочки.
    Естественно, к этим полям нужно добавить индексы.
    Ответ написан
    Комментировать
  • Как найти точки максимального изменения графика?

    @alexalexes
    Найдите длину отрезков между точками и отсортируйте массив этих длин по убыванию.
    Если нужно, то получите разницу между длинами (это значения производной первого порядка для длин), записав эти значения в новый массив.
    На основании первого и второго массива составьте целевую функцию, задав критерии аномально длинных отрезков (параметры целевой функции).
    Ответ написан
    2 комментария
  • Как отправить данные с формы $_POST на разные страницы в зависимости от нажатой кнопки (перенаправление)?

    @alexalexes
    Button может отправлять форму с иными атрибутами, если их переопределить в button, например, можно задать другой action.
    <form name="MyForm" method="post" >
        <label for="select-option">Select an option:</label>
        <select name="select-option" id="select-option">
            <option value="option1">Option 1</option>
            <option value="option2">Option 2</option>
            <option value="option3">Option 3</option>
        </select>
        <br>
        <button formaction="/termin" type="submit">termin</button>
        <button formaction="/info" type="submit">termin</button>
    </form>

    Тогда не нужен никакой роутер на стороне сервера для текущей страницы.
    Ответ написан
    6 комментариев
  • Как сделать табы с выводом из бд?

    @alexalexes
    Выводить также как из любого другого источника данных.
    1. Подготовьте источник данных.
    - Разверните службу СУБД в операционной системе сервера.
    - Выберите менеджер, чем вам будет удобно просматривать объекты СУБД.
    - Установите менеджер СУБД.
    - При помощи менеджера СУБД заведите пользователя базы данных, схему базы данных, структуру таблиц и связей, вставьте необходимые данные.
    2. Изучите способы подключения к источнику данных и взаимодействия из PHP (как делать коннект к СУБД, как подготавливать запросы и параметры к ним, как фетчить результат выборки запроса).
    3. Подключитесь к базе, выполните запрос, встройте выборку результата в ваш шаблон HTML (табы).
    Ответ написан
    3 комментария
  • Как создать диаграммы в docx?

    @alexalexes
    Нужно иметь библиотеку, которая может создавать объекты chart-ы, работать с его методами и помещать результат в xml контейнер (docx, pptx - не важно). По сути, делать визуализацию только возможностями этих объектов.
    Пример: https://github.com/python-openxml/python-docx/pull/392
    Ответ написан
    Комментировать
  • Как сделать так, чтобы элемент можно было тащить влево-вправо?

    @alexalexes
    1. На десктопе рулят события мыши: mousedown - эквивалент touchstart, mousemove - эквивалент touchmove, mouseup - эквивалент touchend.
    2. Вместо множества точек касаний (пальцы) у вас одна точка - курсор мыши, поэтому свойства changedTouches в объекте события не будет.
    3. Тестировать, что окружение браузера имеет сенсорный экран, можно проверкой наличием доступного свойства любого события touch в window:
    if("touchstart" in window)
    {
      // работаем с сенсорными обработчиками
    }
    else
    {
      // работаем с мышиными обработчиками
    }

    4. Событие завершения управления элементом (touchend, mouseup) лучше вешать не на сам элемент item, а на его контейнер, который будет занимать всю ширину экрана (идеально, если это будет body). Логика обработки может застрять на обработчике move, если во время движения точка воздействия на объект убежит за пределы объекта.
    В определенных случаях могут выручить события mouseover/mouseout.
    Ответ написан
    Комментировать
  • Что это за разъём в ноутбуке?

    @alexalexes
    Судя по примечанию этой статьи.
    Rear Connector Note: Some laptop/notebook computers may use rear connector adapters to change the position and shape of the rear connectors. In this case, you need to remove that rear adapter from original drive and re-use the rear adapter with the new drive.

    В те далекие времена мало приобрести привод IDE для ноутбука. Нужно еще заказать у производителя ноута проприетарный переходник, так как производитель может сделать разъем на материнской плате для CD rom в удобном для него месте, а не как у типичного CD-rom.
    PS: В вашем случае проще снять жесткий диск, купить под него IDE переходник на USB и подготовить его для установки системы вне ноутбука.
    Вариант 2. Есть вероятность, что живых жестких дисков под ноутбучные IDE не останется в скором времени. Поэтому для этих целей лучше взять переходник-эмулятор жесткого диска под IDE, в которую вставляется SD-карта. Я как-то возился с компом-тонким клиентом, у которого был нестандартный IDE. Проще было подключить такой эмулятор, чем искать оригинальный флеш-диск. Для bios такой эмулятор ничем не отличается от классического IDE диска, так как он себя ничем не выдает, полностью ведет себя по выходному интерфейсу как IDE устройство.
    Ответ написан
    1 комментарий
  • Regexp с условиями?

    @alexalexes
    (?<=link\shref=['"])(?!http(s)?:\/\/)(.+?)(?=['"])
    Оберните эту регулярку в "просмотр вперед".
    В одном случае курсор установится в позицию между кавычкой и началом ссылки без слеша:
    (?=(?<=link\shref=['"])(?!http(s)?:\/\/)[^\/](.+?)(?=['"]))

    Нужно дополнить домен со слешем.
    https://site1.ru/
    Во втором случае регулярка ищет ссылку со слешем:
    (?=(?<=link\shref=['"])(?!http(s)?:\/\/)\/(.+?)(?=['"]))

    Дополняем без слеша.
    https://site1.ru
    ЗЫ: Скорее всего вы некорректно допишите относительные ссылки. К ним еще нужно знать base url. Это регуляркой не решить. Или вы должны знать адрес обрабатываемой страницы без запросной части (path), чтобы им дополнить первый случай.
    Ответ написан
    3 комментария
  • Что делать если я не могу научится самостоятельно писать код даже с опытом работы на реальном проекте?

    @alexalexes
    Значит, ни на работе, ни в университете вы не научились декомпозиции задач (разбивать задачи на подзадачи), оценивать сложность каждой задачи, ставить условия минимума для выполнения элемента задачи. Искать справочные источники для решения каждого элемента задачи.
    Здесь не в кодинге дело, а умение крутить-вертеть предметную область, с которой работаете.
    Ответ написан
    Комментировать
  • Как сделать, чтобы высота iframe была равна соотношению 16:9?

    @alexalexes
    Чтобы сохранить пропорции при отображении в любом браузере, нужно сделать контейнер под видео с относительным позиционированием:
    .video__container
    {
      position: relative;
    }

    И в него положить img от png файла с однотонным заполнением с нужным соотношением сторон (можно в виде встроенного бинарника сформировать ресурс, такой файл в эквиваленте png весит пару сотен байт).
    Для iframe сделать абсолютное позиционирование, чтобы можно было его приподнять над img блоком, с помощью z-index, и задать 100% ширину и высоту, чтобы его размер зависел от контейнера, а размер (точнее, пропорции) контейнера будет зависеть от размера img.
    iframe.video__iframe
    {
      position: absolute;
      z-index: 1;
      /* width и height устанавливаются в атрибутах iframe! */
    }

    В итоге получится такая конструкция:
    <div class="video__container">
      <img src="video-iframe-background-1920x1080.png"/>
      <iframe class="video__iframe" src="" width="100%" height="100%"></iframe>
    </div>

    Такой подход позволяет гибко настраиваться размерам контейнеру .video__container, или фиксировать один из его размеров. При этом, iframe всегда будет держать пропорции того изображения, которое заложено в img. И это будет работать практически на любом браузере не первой свежести.
    Ответ написан
    Комментировать
  • Как отправить массив файлов на сервер?

    @alexalexes
    См. документацию к formData.
    Для прикрепления файлов есть перегрузка метода append на 3 параметра, причем несколько файлов крепятся вот так:
    formData.append("userpic", myFileInput.files[0], "chris1.jpg");
    formData.append("userpic", myFileInput.files[1], "chris2.jpg");

    Обратите внимание на 1-й параметр, в нем нет попыток создать массив, formData должна сама это разрулить, если под одно имя поля последовательно применять append.
    Ответ написан
    1 комментарий
  • 2 роутера в одной подсети, каждый раздает свой wifi, почему не дает зайти в настройки 1го роутера по ip при подключении к wifi 2го роутера?

    @alexalexes
    1. На одном роутере нужно оставить включенной службу DHCP, чтобы только он выдавал IP адреса всем подключенным к нему устройствам в той же подсети, на которую настроена служба. На остальных роутерах служба DHCP должна быть выключена. Тем самым остальные роутеры должны работать в режиме свича.
    2. Собственный адрес роутера нужно перенастраивать, если не он раздает IP адреса. Желательно, зафиксировать MAC адреса роутеров в таблице маршрутизации в активной службе DHCP, чтобы роутеры всегда получали только для них предназначенные IP.
    Ответ написан
    Комментировать
  • Почему глючит видеокарта?

    @alexalexes
    Скачивайте всеми любимый ремонтниками видюх MATS и тестируйте.
    Ответ написан
    Комментировать
  • Может ли видеокарта 16 pin питаться от БП с 1 шнурком 8 pin на котором 2 штекера?

    @alexalexes
    Тут 12pin коннекторы откисают, работая на пределе конструкционной технологии, но народ упорно хочет поиграть в русскую рулетку, когда ему создали все условия, чтобы такого не было, оставив 8pin по 2.
    Ответ написан
    Комментировать
  • Как сделать проверку на значения в переменной?

    @alexalexes
    Вариант 1. Если надо проверить одно единственное булево выражение и что-то вывести, не отходя от склейки строки:
    td>".($row["ID_EMPLOYEE"] ==1 ? "первое значение" : "второе значение")." </td>

    Вариант 2. Когда у вас возможна более толстая логика вывода в каждой ветке if:
    echo 'Перед if прекращаем шлепать HTML закрывающейся кавычкой и точкой запятой';
    if(условие)
    {
      echo 'Шлепаем HTML по истине if-а';
    }
    else
    {
      echo 'Шлепаем HTML по ИНАЧЕ';
    }
    echo 'Продолжаем шлепать HTML';
    Ответ написан
    8 комментариев
  • Front-end разработчик обязан уметь верстать в разных программах?

    @alexalexes
    Какой бы программой вы не пользовались, вам нужно уметь всего лишь снимать метрики с графических примитивов с помощью линейки, пипеткой брать цвет, знать как извлечь коэффициент прозрачности и характеристики градиентов, блюров, снимать характеристики шрифта с текста. Больше ценится навык, как вы все эти параметры наиболее быстро запихнете в CSS или напишите шаблон для предпроцессора CSS. И если какая-та программа на выходе получит сырой CSS - как его дошлифовать до конечного результата?
    Ответ написан
    Комментировать
  • Возможно ли снять ошибку "Неоригинальный картридж" ecosys p3145dn НАВСЕГДА?

    @alexalexes
    Вариантов немного:
    1. Сбросить счетчик страниц.
    2. Заменить чип на картридже.
    Действует это до момента накопления макс. значения счетчика в чипе, тогда снова будет говорить, что неоригинальный картридж.
    Ответ написан
    Комментировать
  • Какой тип должна возвразать функция при скачивании файла?

    @alexalexes
    Если возвращается идентификатор файла - тип integer.
    Если возвращается полный путь к файлу или его url - тип string.
    Если возвращаются бинарные данные содержимого файла - тип string.
    Если возвращаются raw данные из буфера ob_* вместе с http заголовками и телом файла - тип string.
    Если файл открыт файловой функцией и берется ее указатель - смотрите какой тип возвращает эта функция для указателя.
    Ответ написан
    2 комментария
  • С помощью чего сделан эффект как на сайте https://www.fromscout.com/?

    @alexalexes
    Анимация по ключевым кадрам.
    animation: main-logo-texture 10s linear infinite;
    Ключевые кадры:
    @keyframes main-logo-texture {
        0% {
            transform: translate(0)
        }
    
        to {
            transform: translate(-99px)
        }
    }
    Ответ написан
    3 комментария