• Как определить яркость основного цвета изображения?

    @alexalexes
    1. Ищите реализацию "Определение основного цвета изображения в PHP".
    2. Ищите реализацию "RGB to HSL (или HSV) для PHP".
    3. Устанавливаете пороговое значение для L параметра из цветовой модели HSL (или V в HSV) пикселя основного цвета. От этого будет зависеть, что изображение "условно светлое" или "условно темное".
    Ответ написан
    Комментировать
  • Приспособить старый роутер asus под раздачу флешки по webdav?

    @alexalexes
    https://4pda.to/forum/index.php?showtopic=712598
    Посмотрите другие прошивки. Где-то есть smb клиент, где-то dlna.
    Если очень заморочиться, то можно поставить OpenWRT и если остаток памяти позволит, то добавить модуль webdav https://openwrt.org/docs/guide-user/services/webse....
    Далее, настроить его https://openwrt.org/docs/guide-user/services/nas/webdav.
    Ответ написан
    Комментировать
  • Как сравнить по времени в таблицах, отбросив минуты и секунды до часов?

    @alexalexes
    Select t1.ID, t1.TIME
    from 
    TABLE_1 t1 
    JOIN TABLE_2 t2 ON t1.ID=t2.ID
                  and to_char(t1.TIME, 'DD.MM.YYYY HH24') = to_char(t2.TIME, 'DD.MM.YYYY HH24')

    Вариант 2 (возможно, пригодится при оптимизации, так как на выходе сравниваются значения в типе дата время, а не строк):
    ... and trunc(t1.TIME, 'hh24') = trunc(t2.TIME, 'hh24')

    PS: Хорошо бы еще индекс создать под этот формат времени для колонок t1.TIME и t2.TIME, тогда запрос будет всегда производителен.
    Ответ написан
    4 комментария
  • Если я поменяю наполнение сайта, как изменится ранжирование его в поисковых системах?

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

    @alexalexes
    Примерно никак.
    Шифрование диска идет блоками. Соответственно самая малая изменяемая единица данных - это шифрованный блок. Для дисковой системы запись шифрованного блока ничем не будет отличаться от нешифрованного, хоть и размеры могут существенно отличаться. Насколько я помню, самый маленький блок данных - это кластер (классически, его размер устанавливался от 512 байт, до 32 кбайт), в настоящее время такой кластер не может быть меньше 4кбайт. У SSD дисков записываемые блоки больше чем размер кластера ввиду особенности архитектуры. Типичные размеры: 512Кбайт... несколько Мбайт. Могу предположить, что шифрованные блоки будут по размеру в районе SSD-шных записываемых блоков. Тогда никакой разницы нет, что перезаписывать - весь шифрованный блок или весь нешифрованный блок при изменении одного байта данных.
    Ответ написан
    Комментировать
  • В каком виде хранят данные Гугл-документы и похожие сервисы?

    @alexalexes
    Только не пытайтесь в базе хранить буквальное представление ежедневника как двумерной сетки из квадратиков - где пишут заметки на определенный день. Сетка ежедневника - это просто удобная форма вывода данных, но не способ их хранения.
    Хранится это все будет, скорее всего линейно и банально списком заметок с заданными начальными и конечными интервалами:
    Таблица заметок:
    id - идентификатор заметки
    begin_date - начало интервала
    end_date - конец интервала
    comment - заметка
    Вот это минимум, что будет содержаться в базе данных в ее таблице.
    А уже как будете получать данные этой таблицы и строить представление по дням, рисовать календарик - это уже не задача СУБД, а приложения, которое будет использовать эти данные.
    Ответ написан
    2 комментария
  • Возвращает [object HTMLDivElement].?

    @alexalexes
    let div = document.createElement('div'); // создаем div лишь для того, чтобы положить в него результат функции createContentModal
    div.appendChild(createContentModal()); 
    overlay.innerHTML = div.innerHTML; // и передать его html содержимое куда надо
    Ответ написан
    Комментировать
  • Как в php сделать так чтобы по ссылке xml открывался php файл?

    @alexalexes
    Сделайте rewrite правило в конфиге nginx, чтобы при обращении к sitemap.xml вызывался php скрипт, который и обновит и выведет содержимое sitemap.xml. Только позаботьтесь о некой логики кеша, чтобы функция обновления файла запускалась не каждый раз, а по мере устаревания файла или его отсутствии.
    Ответ написан
    Комментировать
  • Как добавить блок в input?

    @alexalexes
    Либо вместо input использовать textarea высотой в одну строку, чтобы можно было добавить псевдоэлемент.
    Либо повесить обработчик события который перехватывает любой ввод символов в поле, извлекает число из строки, и дописывает символ. Но тут придется еще бороться с тем, чтобы курсор не съезжал в конец строки.
    Ответ написан
    Комментировать
  • Как изменить UTC время на местное в Python?

    @alexalexes
    C python не знаком, но я бы попробовал это:
    ....
         frame = frame.set_index('Time')
         # начало кода
         # нужно подключить from dateutil import tz
         # узнаем utc и локальную зону
         from_zone = tz.tzutc()
         to_zone = tz.tzlocal()
         # устанавливаем врем. зону по молчанию (если требуется)
         frame.index = frame.index.replace(tzinfo=from_zone)
         # перевод врем. зоны
         frame.index = frame.index.astimezone(to_zone)
         #конец кода
         frame.index = pd.to_datetime(frame.index, unit='ms')
    Ответ написан
  • Стоит ли использовать апи как бекенд для сайта?

    @alexalexes
    Если сайт изначально проектируется как одностраничное приложение, то никаких других адекватных альтернатив нет, как сделать api для бэкенда. Ну, да, JS на браузере будет просто восприниматься как еще один вариант фронтенд приложения для сервиса.
    Ответ написан
    Комментировать
  • Как написать команду SQL?

    @alexalexes
    SELECT `user_id`, `username`, `first_name`,`last_name`, `title`
      FROM `userdata`
    WHERE `type` in ('supergroup', 'group')

    или то же самое условие:
    SELECT `user_id`, `username`, `first_name`,`last_name`, `title`
      FROM `userdata`
    WHERE `type` = 'supergroup'
       OR `type` = 'group'

    Если user_id - это первичный ключ, то пользователь может одновременно быть только одним типом. С and что-то писать бессмысленно, если, конечно, в этой таблице не нарушена нормализация данных.
    Ответ написан
    Комментировать
  • В ноутбуке стабильно через 1-2 месяца после замены термопасты резко повышаются температуры на половине ядер процессора. С чем может быть связано?

    @alexalexes
    На процессоре и видеочипе должна присутствовать термопаста в вашем ноутбуке. Вопрос может состоять в том, не меняли ли термопрокладки на чипах памяти и дросселях питания (и все ли они в наличии на нужных местах). Если их поставили толще чем по заводу, то слой термопасты на процессоре и видео окажется толще, и охлаждение станет хуже.
    Чтобы проверить не большой ли зазор на процессоре и видео, намажьте на них термопасту как можно тонким слоем, достаточного для контакта с радиатором. После аккуратно установите радиатор не прижимая его сильно, и зафиксируйте все винты. При этом, термопрокладки должны быть все на своих местах. Возможно, придется подождать 5-10 мин на усадку термопрокладок (если они жесткие и достаточно толстые). Снимите радиатор и посмотрите отпечаток термопасты на радиаторе, он должен быть правильной формы - по форме чипа. На отдельных краях отпечатка не должно быть избытка пасты или наоборот - недостатка.
    Если отпечатка нет или касание только точечное - значит зазор слишком большой.
    Если отпечаток имеет перекос в кол-ве термопасты - значит криво фиксируется радиатор.
    Ответ написан
    3 комментария
  • Как раскодировать эту херабору ðîçûñê?

    @alexalexes
    В редакторе вместо режима просмотра документа win-1252 поставьте win-1251, без перекодирования содержимого.
    Ответ написан
    Комментировать
  • Передать значение в форме?

    @alexalexes
    <form action="/index.php" method="POST" >
      <input name='pers_delete' type='hidden' value="сюда подставляете значение переменной"/>  
      <input name='submit' type='submit' value="1" class='del_pers'/> 
    </form>

    <?php
       if (isset($_POST['submit']))
       {
         echo $_POST['pers_delete'];
       }
    ?>
    Ответ написан
    Комментировать
  • Как подключить 2 монитора?

    @alexalexes
    62dc50876ddff435143411.jpeg
    Посмотрите настройку "Разрешение экрана". Там есть пункт "Несколько экранов". Если в схеме нарисовано два монитора, но изображение выводится только на один, то скорее всего в пункте "Несколько экранов" стоит значение "Отображать рабочий стол только на <номер монитора>".
    Ответ написан
    Комментировать
  • Правильно ли использовать position absolute & relative в верстках?

    @alexalexes
    Менять свойство position оправдано, если стоит задача в одном контейнере визуально наложить друг на друга дочерние блоки, которые в html не вложены друг в друга - по тексту иду один за другим.
    Например, у вас есть контейнер div.photo__container с img и блоком описания div.photo__descr:
    <div class="photo__container">
      <img src="photo.jpg"/>
      <div class="photo__descr">
        <p>Описание для фото</p>
      </div>
    </div>

    Если стили оставить как есть, то описание отобразится под изображением.
    Чтобы наложить описание на фото, нужно изменить позиционирование блока описания.
    Если мы тупо пропишем position: absolute для блока описания photo__descr, то этот блок убежит черт знает куда (точнее, спозиционируется относительно body, или ближайшего родителя, у которого будет position: relative).
    div.photo__descr
    {
      position: absolute;
    }

    Для этого нужно ограничить абсолютное позиционирование данного блока родительским блоком:
    div.photo__container
    {
      position: relative;
    }

    Далее, хотелось бы, чтобы блок приклеился к низу контейнера. Поскольку у нас блок в абсолютном позиционировании, то могут работать свойства top, right, bottom, left. Нужен bottom:
    div.photo__descr
    {
      position: absolute;
      bottom: 0;
    }

    Еще есть желание ограничить макс. высоту блока описания, можно воспользоваться процентами, причем они будут высчитываться от родительского блока position: relative:
    div.photo__descr
    {
      position: absolute;
      bottom: 0;
      max-height: 30%;
      overflow-y: auto; /* можно еще добавить возможность прокручивать содержимое при вертикальном переполнении */
    }

    Увы, чтобы работали процентные величины относительно родителя, нужно чтобы у родителя были заданы конкретные значения ширины и(или) высоты:
    div.photo__container
    {
      position: relative;
      height: 600px;
    }
    Ответ написан
    Комментировать
  • Как преобразовать одномерный массива в многомерный?

    @alexalexes
    Вам нужен определенный навык работы с наполнением ассоциативных массивов. С помощью него можно делать такие трюки.
    // $in_arr - вход
    // $out_arr - выход
    $out_arr = [];
    foreach($in_arr as $in_item)
      $out_arr[$in_item['api_id']][] = $in_item;
    $out_arr = array_values($out_arr);
    Ответ написан
    Комментировать
  • Подойдёт ли 2.5" 12мм жёсткий диск в неттоп, предназначенный для 7мм?

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

    @alexalexes
    Данные прикладываются в первоначальное состояние html.
    В конце страницы есть тег script. Там определяется глобальный объект __NUXT__.
    В нем есть свойство data, в нулевом элементе лежат данные, необходимые для интерактива.
    Среди них есть то, что вы ищите:
    window.__NUXT__.data[0].product.props
    Чтобы забрать значение __NUXT__ нужно выполнить JS этого тега.
    Но можно решить задачу влоб при помощи регулярки, получив содержимое между return и последней закрывающийся фигурной скобкой функции, формирующей этот объект:
    (?<=window\.__NUXT__=\(function\(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,_,\$,aa,ab,ac,ad,ae,af\){return\s).*(?=}\()

    Данная регулярка получит JSON, который можно превратить в объект без выполнения JS.
    Но данный метод будет работать до тех пор, пока разработчики магазина не добавят новых аргументов в эту функцию. Либо эта функция будет иметь переменное кол-во аргументов.
    Ответ написан