• Как продублировать значения из одной строки в другую внутри таблицы?

    @alexalexes
    Измените запрос update, который делает обновление в этой таблице, чтобы в where подставлялся не конкретный id строки, а было условие, которое соответствует всем строкам, которым нужно сделать обновление.
    Ответ написан
    Комментировать
  • Непонятный ssd толи новый толи б\у?

    @alexalexes
    По счетчикам времени/объема работы видно, что у кого-то постоял полгодика в качестве системного диска.
    Если чипы хорошие, то еще походит много лет. У качественных дисков ресурс записи будет пару сотен Тбайт, а тут только первый Тбайт пройден.
    Можно погонять в тестах на запись поверхности (не файлов), если просадок скоростей нет до уровня нескольких Mбайт/с - то диск в настоящее время относительно живой.
    Ответ написан
    1 комментарий
  • Как сидеть с 1 браузера на куче аккаунтов в вк?

    @alexalexes
    Авторизоваться в Chrome в нескольких гугл-аккаунтах, тогда при старте браузера Chrome будет предлагать, в окружении какого гугл-аккаунта работать (так называемый "Профиль Chrome"). В каждом окружении можно независимо авторизовываться на различных сайтах.
    Ответ написан
  • В какой базе данных лучше всего хранить данные для дашбордов?

    @alexalexes
    В реляционной базе - основная таблица - это лог событий.
    event_log:
    event_id - идентификатор события
    event_date - дата и время события
    event_type_id - тип события (пришло или ушло)
    value - сколько (пришло или ушло, положительное значение)
    А чтобы подготовить данные для визуализации, переводите лог в агрегированный вид:
    либо делаете view на основе запроса, либо делаете хранимую процедуру для генерации агрегированных данных и кладете их в отдельную таблицу:
    daily_statistics:
    id - идентификатор агрегированной точки
    stat_date - дата агрегированной точки
    in_value - пришло (кол-во)
    out_value - ушло (кол-во)
    current_value - баланс

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

    @alexalexes
    Сначала напишите чистый SQL:
    select n.*, -- атрибуты новости
               p1.*, -- атрибуты автора
               p2.*, -- атрибуты исполнителя
               s.* -- атрибуты статуса новости
    from news n
    join status s on s.statusId = n.statusId
    left join people p1 on p1.peopleId = n.authorId
    left join people p2 on p2.peopleId = n.executorId
    where p1.fullName like :search
           or p2.fullName like :search

    Потом откройте документацию по ORM и перепишите в методологии ORM.
    Сначала попробуйте простой запрос:
    select *
    from news

    Потом посмотрите, как делать join и работать с псевдонимами таблиц:
    select n.*, -- атрибуты новости
               s.* -- атрибуты статуса новости
    from news n
    join status s on s.statusId = n.statusId

    Потом как с where работать:
    select n.*, -- атрибуты новости
               s.* -- атрибуты статуса новости
    from news n
    join status s on s.statusId = n.statusId
    where s.statusId = :statusId

    Потом, как лайкать:
    select n.*, -- атрибуты новости
               p1.*, -- атрибуты автора
               p2.*, -- атрибуты исполнителя
               s.* -- атрибуты статуса новости
    from news n
    join status s on s.statusId = n.statusId
    left join people p1 on p1.peopleId = n.authorId
    where p1.fullName like :search

    И в заключение, как к лайкам добавить OR (самый первый запрос).
    Ответ написан
    Комментировать
  • Почему диспетчер не видит видеочип Nvidia?

    @alexalexes
    Если Windows 10 не скачала драйверы с интернета (хотя, очень странно), то вы обнаружите свою видеокарту в категории "Другие устройства" (или "Базовый видеоадаптер (Майкрософт)" в разделе "Видеоадаптеры", если это MS-кие драйвера).
    Можно принудительно поставить драйверы самому, тогда драйверы будут родные и название корректное:
    https://www.nvidia.com/download/driverResults.aspx...
    (скорее всего у вас видеокарта 700m семейства).
    Никак не войти в БИОС. Всё перепробовал.

    Тут ублюдочная схема. Вам нужно испортить текущую дату через настройки даты и времени - отмотать ее на лет 10 назад. Потом перезагрузить комп, и ждать, когда но поругается на настройку часов. Тогда доступен F1 и вход в биос. Тоже самое будет, если вытащить маленькую батарейку из матери.
    Ответ написан
  • Не крутится вентилятор в ноутбуке в винде, что делать?

    @alexalexes
    Это норма. Нет нагрузки - нет тепловыделения - нет нужды гонять вентилятор.
    Тем более в вашем ноуте стоит проц. с теплопакетом в 12...28 ватт, его можно охлаждать любым куском алюминия без вентилятора.
    Ответ написан
    3 комментария
  • Как хранить онлайн статус пользователя?

    @alexalexes
    сделать 1 строка -> 1 пользователь и при запросе к апи делать update времени?

    Так и делают в большинстве случаев.
    Только не 1 строка -> 1 пользователь, 1 строка -> 1 сессия авторизации. Один пользователь может авторизоваться не только на одном устройстве (браузере, экземпляре программы, ОС), но и на еще одном, и даже на утюге. Нужно отслеживать, когда каждая сессия открыта, когда закрыта (по принудительному разлогированию), когда последний раз пользователь пинговал апи (время онлайн).
    Этих сведений в большинстве систем достаточно.
    То, что вы пишите каждый запрос в свои логи - эти логи есть в логах сервера. Если не стоит задачи их детального анализа в контексте пользователя, то нет нужды писать такие сведения в своих логах.
    Ответ написан
    Комментировать
  • Как правильно загружать картинки?

    @alexalexes
    Я нажимаю добавить картинку, она уходит на сервер, там ей присваивается новое уникальное имя,

    ... которое сервер тут же передает клиенту, как только файл гарантировано сохранился в хранилище (да, не обязательно, чтобы это был каталог сервера, он может загрузить файл через api облака, например, сам являясь клиентом системы хранения файлов).
    На клиенте, в скрытом поле вы собираете коллекцию уникальных имен файлов (идеально, если это будут id/guid/или другой род хеша).
    Когда пользователь удаляет файл, который был успешно отправлен серверу, можно отправить запрос, чтобы файл с таким-то идентификатором можно удалить, или поставить на удаление в очередь, если зачистка не сразу происходит.
    Когда пользователь сабмитит форму, тогда серверу передаются уникальные идентификаторы файлов, по которым сервер уже либо перемещает файлы на постоянное хранение, либо меняет их статус (файлы связывают с идентификатором поста, например).
    Те, файлы, которые остались в статусе черновика, скажем, в течение недели, можно зачистить скриптом, запускаемым по расписанию.
    Ответ написан
    Комментировать
  • Как передать значение переменной из JS в PHP без перезагрузки страницы?

    @alexalexes
    В php скриптах не обязательно всегда отдавать клиенту html-текст, тем более в виде статики (за пределами тегов <? ?>).
    А если вы еще используете ajax, обращаясь к тем же скриптам, что формируют полную html страницу, то можно отдавать ответ гораздо гибче (отдавать только чистые данные, без html в случае AJAX, и в остальных случаях - html оснастку, чтобы браузер нарисовал начальное состояние страницы):
    <?php
        if(isset($_POST['checkout']))
        {
          // получили параметр, который используется в AJAX - отдаем только данные (числа, строки, или json объекты)
           echo 'posted:'.$_POST['checkout'];
        }
       else
       {
         // не получили специфичных для ajax параметров - отдаем клиенту обычный HTML
          echo '<!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
    </head>
    <body>
        <div><?php echo $test ?></div>    
        <script type="text/javascript" src="js/jquery-3.6.0.min.js"></script>
        <script type="text/javascript" src="script.js"></script>
    
    </body>
    </html>';
       }
    ?>

    На этом строят API своей системы.
    Ответ написан
    Комментировать
  • Как увеличить скорость работы оперативной памяти?

    @alexalexes
    Частоты памяти упираются с одной стороны - в возможности процессора, с другой стороны в возможности памяти.
    На DDR3 было два поколения процессоров - Sandy Bridge (2-e поколение Intel), которая поддерживает 2 частоты памяти 800 и 1066. И Ivy Bridge (3-e поколение Intel), которая поддерживает 4 частоты памяти 800, 1066, 1333 и 1600.
    Чтобы увеличить скорость оперативки, нужно поставить память с макс. частотой, которая доступна для данного поколения процессора.
    При этом, вы не отличите на глаз без бенчмарков работу 800 или 1066 на Sandy Bridge, и 1333 или 1600 на Ivy Bridge. Но зато заметна разница, на тех же объемах памяти у разных поколений процессоров скажем, на 1066 и 1333. При этом, на Ivy Bridge вы вряд ли встретите в стоковом состоянии установленную оперативку ниже 1333.
    В общем, на старых ноутах установка оперативки с повышенной частотой не дает существенного прироста производительности, а смена процессора на другое поколение не всегда доступа (или недоступна вовсе) - где можно было бы это наблюдать.
    Дополнено:
    Да-да, у вас Arrandale, поставьте его перед Sandy Bridge, и вывод вышесказанного не поменяется. Играет роль больше поколение процессора, а не частота памяти.
    Ответ написан
    Комментировать
  • Какую видеокарту выбрать?

    @alexalexes
    Никакая. Вам нужно заново собирать системный блок.
    К более менее современной видеокарте (пусть это будет 1660 Super) вам нужно будет блок питания от 550-600 ватт, и материнка с PCI-e версии, не ниже 3, и процессор, чтобы был, хотя бы не ниже 10 поколения Intel (у вас 3-е).
    А тут и корпус продуваемый сверху и со стороны передней панели нужен...
    И оперативка DRR4 (про частоты можно закрыть глаза)...
    Ответ написан
    3 комментария
  • Как безопасно скачивать и открывать файлы (например zip,txt,jpg) из интернета?

    @alexalexes
    По поводу расширений файлов.
    Нужно понимать, на что способен софт, которым вы открываете файлы, и может ли софт открыть какой-то файл и интерпретировать его содержимое как макрос.
    Например, zip-файл можно открыть любым архиватором, и вряд ли есть способ, чтобы что-то распаковать из этого архива архиватором и запустить на исполнение, не применив дополнительную команду.
    Другое дело, у вас есть docx, xlsx, pptx файлы, которые тоже по своей природе zip-архивы, но вы эти файлы открываете уже не архиватором, как правило, а офисным приложением. Если открывать такие файлы MS Office-ом, то вполне реально помимо работы с содержимым документа получить автоматическое выполнение VB-скриптов (офис предупредит об этом, но все же), которые могут иметь доступ к окружению ОС - это уже будет реальным вектором атаки.
    На примере jpg - та же самая история. Если это действительно JPEG, то любой графический редактор откроет содержимое. Но, например, стоит туда положить содержимое не JPEG, а например, PSD c active-скриптами, то какой-нибудь Photoshop захочет по-другому открыть содержимое, и выполнить макросы, которые возможны в PSD.
    Самое печальное, что в современные ОС, в проводники встраивают функционал предварительного чтения содержимого файла и отображения миниатюр и кратких сведений о файле (не касающегося его размера и прочих параметров файловой системы). Если эта технология предварительного просмотра будет способна запустить макрос из "правильно сформированного" файла, то это не есть хорошо.
    Ответ написан
    Комментировать
  • Можно ли вставить другой аккумулятор в ноутбук?

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

    @alexalexes
    Вас просят написать что-то с клаузой Having.
    Если читать вопрос влоб, то вас просят сгруппировать выборку по атрибуту point_lifetime, и проанализировать сумму баллов в having:
    select point_lifetime, sum(point)
    from t
    group by point_lifetime
    having sum(point) <= N -- N нужно рассматривать как входной параметр запроса

    Тут бы логично по user_id что-то интересное искать, но в задачке point_lifetime. В общем, нужно видеть с какими исходными данными работаете, чтобы понять, что вы группируете.
    Дополнено:
    -- тестовые данные
    with t as (select  1 id, 1 user_id, 10 point, from_unixtime(1701533439) point_lifetime
    union
    select  2 id, 1 user_id, 10 point, from_unixtime(1701533439) point_lifetime
    union
    select  3 id, 2 user_id, 10 point, from_unixtime(1001433439) point_lifetime
    union
    select  4 id, 1 user_id, -10 point, from_unixtime(1901533439) point_lifetime
    union
    select  5 id, 1 user_id, 100 point, from_unixtime(1801733439) point_lifetime)
    
    -- экспериментальный запрос
    select a.*
    from (select t.id,
           t.user_id,
           t.point,
           t.point_lifetime, 
           sum(t.point) over (partition by t.user_id) sum_point,
           row_number() over (partition by t.user_id order by case when t.point > 0 then 0 else 1 end, -- продавливаем положительные баллы вверх
                                                                    t.point_lifetime desc) rn -- локальный счетчик записей по пользователю, чтобы понять, какую запись хотите выдернуть из подзапроса, нужно сделать так, чтобы интересуемые записи имели rn = 1
    from t
      where point_lifetime > str_to_date('02.12.2023 10:00:00', '%d.%m.%Y %H:%i:%s') -- считаем, что отметка "сейчас" - это 02.12.2023 10:00:00
    ) a
    where a.sum_point >= 30 -- берем все то, что больше минимальной суммы
      and a.rn = 1 -- берем только интересуемую запись по каждому пользователю
     order by id
    Ответ написан
  • Как сделать что-то вроде джойна из таблицы в ту же самую таблицу?

    @alexalexes
    Еще бы какой-то атрибут добавить, чтобы тип записи различать - тогда жить можно.
    select t1.*, -- тематики
          t2.* -- вопросы
    from table_1 t1
    join table_1 t2 on t2.topic = t1.id
    where t1.topic is null
    and t1.Name like 'Тематика%' -- не хватает атрибута type, чтобы различать раздел от тематики
    Ответ написан
  • Как в таблице обернуть столбец в рамку?

    @alexalexes
    table подразумевает работу со строковыми данными, но с помощью псевдо-селекторов nth-child, можно сделать некоторый трюк, выделив колонку:
    /*7 - текущая колонка, 6 - предыдущая - можно номер выделенной колонки вынести в css переменную и манипулировать только ей*/
    tr:first-child td:nth-child(6),
    tr td:nth-child(6),
    tr td:nth-child(7)
    {
      border-right: 2px solid red;
    }
    tr td:nth-child(7) /*страховка для вырожденного случая, когда выделена первая колонка */ 
    {
      border-left: 2px solid red;
    }
    tr:first-child td:nth-child(7)
    {
      border-top: 2px solid red;
    }
    tr:last-child td:nth-child(7)
    {
      border-bottom: 2px solid red;
    }
    Ответ написан
    3 комментария
  • Как исключить конкретный лейбл из генератора PDF?

    @alexalexes
    <?php echo $field_label == "название лейбла" ? "": $field_label; ?>

    А вообще, нужно искать источник, откуда берется перечень полей, и исправлять его. А не делать костыли в шаблоне вывода.
    Ответ написан
    2 комментария
  • Нужно ли поставить конденсаторы большей емкости на 50-100% взамен разбухших?

    @alexalexes
    Да, это фильтрующие конденсаторы. Избыточной емкостью и вольтажом кашу маслом не испортишь в таких цепях.
    При таком ремонте там, где по заводу стояло на 16в - я ставлю на 25в, где 10в - ставлю 16в (как раз держу десяток кондеров 1000x25 и 2200x25 из алика для таких случаев). Обычно, до второго подобного ремонта такие БП не доживают - либо морально устаревают, либо дохнет ШИМ микросхема.
    Ответ написан
    Комментировать
  • Как иерархические данные из таблицы преобразовать в объекты Java?

    @alexalexes
    Составить SQL-запрос на основе синтаксиса WITH RECURSIVE, чтобы выборка происходила от корня к листьям.
    Выполнить запрос и получившуюся выборку прогнать через рекурсивную функцию, которая построит дерево, на основе описанной структуры элемента дерева.
    Ответ написан
    Комментировать