• Как сделать преобразование данных jsonb в таблицу с определенными полями?

    @alexalexes
    Как сделать так, чтобы из сохраняемого JSON создать новую таблицу

    Такой скрипт не должен создавать новые структуры в СУБД, он должен делать только вставки записей (insert-ы) в заранее подготовленные таблицы на этапе проектирования базы данных.

    id-question: "идентификатор_вопроса_с_указанием_типа"
    answer: "value":<ответ_на_вопрос>
    date: "created":"<дата_ответа>"

    Вот и создайте эту структуру ручками, create table вам в помощь.
    и далее объединить с таблицей, где будут поля

    Опять же, при вставке данных в базе не должно происходить модификации самой структуры базы.
    Вы при выборке данных сопоставляете данные из одной таблицы с другой таблицей при помощи внешних ключей.
    Запрос выборки будет иметь конструкцию join:
    select *
     from  Answer A
      join Question Q on Q.id_question = A.id_question -- как раз соединение по ключам
      ...

    В общем, учите мат. часть по реляционным СУБД.
    Ответ написан
    Комментировать
  • Как можно сверстать такую рамку на сайте?

    @alexalexes
    Примерно так можно сверстать:
    Ответ написан
    1 комментарий
  • Putty крэшится. Windows показывает ошибку 0xc0000005 и смещение ошибки 0x0006fc7b. Что это?

    @alexalexes
    Поставьте нормальную версию Putty - не портативную версию, в каталог, где имеются необходимые права доступа для приложения.
    Ответ написан
    Комментировать
  • Как обойти sql запрос в циклах по группировкам?

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

    @alexalexes
    Веб разработчик крайне ограничен в стилизации скроллбара.
    Повлиять можно только на 3 параметра:
    1) Ширина скроллбара;
    2) Цвет бегунка (+ hover);
    3) Цвет подложки бегунка.
    Все остальное поведение зависит от браузера и пользовательских настроек вне контекста песочницы веб-страницы (и даже доступные стилизации могут быть перебиты внешними настройками просто потому что потому).
    Ответ написан
    Комментировать
  • Скрытие первой части архива в многотомном архиве, как дополнительный способ безопасности данных. Реально ли?

    @alexalexes
    Помимо пароля на архив вы можете указать опцию "Создать непрерывный архив", чтобы исключить возможность подобрать ключ по известному содержанию файла. Например, вы добавите в архив какой-нибудь readme файл от известной программной библиотеки, если он будет зашифрован отдельно от бинарного потока архива, то есть возможность подбирать ключ по заранее известному содержимому этого файла.
    Также стоит зашифровать имена файлов, чтобы исключить в принципе анализ на известное содержимое.
    Потеря тома никак не влияет на безопасность расшифровки архива - она влияет на невозможность расшифровать архив тому, кто имеет корректный ключ. Чтобы подстраховаться, добавляют информацию для восстановления, но ее может быть недостаточно при полной потере тома.
    Ответ написан
    1 комментарий
  • Как передать переменную из Js в python(Flask)?

    @alexalexes
    1. На JS любым способом сделать ajax запрос на сервер, передав нужный набор параметров для обработки.
    2. Обработать запрос на серверe, передать клиенту результат.
    3. На JS обработать результат в callback функции ajax.
    Примерная заготовка, как это будет на стороне JS:
    function getValue()
    {
      let xhr = new XMLHttpRequest();
      xhr.open("POST", "" /*<- тут должен быть адрес скрипта на сервере, где будет обработка запроса */, true);
      // создаем виртуальную форму, чтобы нагрузить запрос параметрами
      let t_form = new FormData();
      // нагружаем параметром форму
      t_form.append("input-id", document.getElementById('input-id').value);
      // ... еще какой-то параметр
      // t_form.append("какой-то параметр", "какое-то значение");
       // callback функция ответа
       xhr.onreadystatechange = function(e)
      {
         // состояние, когда ответ сформирован
         if(xhr.readyState === 4 && xhr.status === 200)
         {
             // что-то делаем с ответом, например выводим сообщение
              alert(xhr.responseText);
          }
       };
       // отправляем запрос на сервер, нагружаем его формой с параметрами
       xhr.send(t_form);
    }
    Ответ написан
    1 комментарий
  • Как организовать учет сотрудников и оборудование, которое на руках?

    @alexalexes
    Из минимального, что можно создать, не привлекая специалистов - локальную базу данных в Microsoft Access.
    Вам нужно как минимум 3 таблицы: Сотрудники, Оборудование, Закрепление оборудования.
    Создать формы для добавления Сотрудника, Оборудования и Закрепления оборудования.
    И, возможно, 2 отчета - Закрепленное оборудование по сотруднику, Закрепленное оборудование всех сотрудников.

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

    @alexalexes
    Если у вас MySQL 8+ версия, то список чатов получается тривиально - используя оконную функцию:
    SELECT A.*
    from (
    SELECT class_messages.id as class_messages_id,
          `class_messages_chat`.`to_user_id`,
           `class_messages_chat`.`from_user_id`,
           `class_users`.`id`,
           `class_users`.`user_status`,
           `class_users`.`online`,
           `class_messages_chat`.`chat_id`,
           `class_messages_chat`.`ad_id`,
           `class_ads`.user_id,
           `class_ads`.title,
           row_number() over (partition by `class_messages_chat`.`chat_id` order by class_messages.id desc) rn -- этой функцией нумеруем в пределах чата сообщения
        FROM `class_messages_chat`
        inner join `class_ads` on `class_messages_chat`.ad_id = `class_ads`.id
        INNER JOIN `class_users` ON `class_users`.`id`=`class_ads`.`user_id`
        inner join `class_messages` on `class_messages_chat`.`chat_id` = `class_messages`.`chat_id`
    WHERE (   `class_messages_chat`.`to_user_id` = 133337
           or `class_messages_chat`.`from_user_id` = 133337)
    and class_messages_chat.chat_id is not null
    ) A
    where A.Rn = 1 -- оставляем, все что с первым номером счетчика
    order by A.class_messages_id desc

    В mySQL 5.7
    SELECT A.*
    from (
    SELECT
          `class_messages_chat`.`to_user_id`,
           `class_messages_chat`.`from_user_id`,
           `class_users`.`id`,
           `class_users`.`user_status`,
           `class_users`.`online`,
           `class_messages_chat`.`chat_id`,
           `class_messages_chat`.`ad_id`,
           `class_ads`.user_id,
           `class_ads`.title,
      IF(@prev <>  `class_messages_chat`.`chat_id`, @rn:=1,@rn), @prev:= `class_messages_chat`.`chat_id`, @rn:=@rn+1 AS rn -- этой функцией нумеруем в пределах чата сообщения
        FROM `class_messages_chat`
        inner join `class_ads` on `class_messages_chat`.ad_id = `class_ads`.id
        INNER JOIN `class_users` ON `class_users`.`id`=`class_ads`.`user_id`
        inner join `class_messages` on `class_messages_chat`.`chat_id` = `class_messages`.`chat_id`,
         (SELECT @rn:=1)rn,
         (SELECT @prev:=-1)prev
    WHERE (   `class_messages_chat`.`to_user_id` = 133337
           or `class_messages_chat`.`from_user_id` = 133337)
    and class_messages_chat.chat_id is not null
    order by class_messages.id desc
    ) A
    where A.Rn = 1 -- оставляем, все что с первым номером счетчика

    Второй вариант для 5.7, если некорректно будет работать сортировка.
    select B.*
    from (SELECT A.*,
               IF(@prev <> A.chat_id, @rn:=1,@rn), @prev:= A.chat_id, @rn:=@rn+1 AS rn -- этой функцией нумеруем в пределах чата сообщения
    from (
    SELECT
          `class_messages_chat`.`to_user_id`,
           `class_messages_chat`.`from_user_id`,
           `class_users`.`id`,
           `class_users`.`user_status`,
           `class_users`.`online`,
           `class_messages_chat`.`chat_id`,
           `class_messages_chat`.`ad_id`,
           `class_ads`.user_id,
           `class_ads`.title
        FROM `class_messages_chat`
        inner join `class_ads` on `class_messages_chat`.ad_id = `class_ads`.id
        INNER JOIN `class_users` ON `class_users`.`id`=`class_ads`.`user_id`
        inner join `class_messages` on `class_messages_chat`.`chat_id` = `class_messages`.`chat_id`
    WHERE (   `class_messages_chat`.`to_user_id` = 133337
           or `class_messages_chat`.`from_user_id` = 133337)
    and class_messages_chat.chat_id is not null
    order by class_messages.id desc
    ) A,
    (SELECT @rn:=1)rn,
         (SELECT @prev:=-1)prev
    ) B
    where B.Rn = 1 -- оставляем, все что с первым номером счетчика
    Ответ написан
  • Как расположить панель внизу через стили css?

    @alexalexes
    .ch_list
    {
      position: absolute;
      width: 100vw;
      ...
    }
    Ответ написан
    Комментировать
  • Как использовать полученное значение из подзапроса для join?

    @alexalexes
    Если я не напутал с окном partition by va.order_id, apa.sale_type_id, то скорее всего можно переписать так:
    select json_build_object('id', A.id, 'status', A.status)
    from (select apa.id,  apa.status, va.created_at,
                 row_number() over (partition by va.order_id, apa.sale_type_id order by apa.created_at desc) Rn 
              from vt.applications va
              join orders o on va.order_id = o.id 
              join cc.additional_projects_actions apa on apa.order_id = va.order_id
              and apa.sale_type_id = va.sale_type_id
              where o.id = 64
              and va.sale_type_id is not null
    ) A
    where A.Rn = 1 -- отсекаем 1 запись - аналог order by apa.created_at desc limit 1 из первоначального запроса
    order by A.created_at desc;
    Ответ написан
    1 комментарий
  • Насколько (не)безопасны беспроводные клавиатуры?

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

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

    @alexalexes
    Панель управления -> Звук.
    Из cmd вызывается командой:
    control mmsys.cpl sounds
    Ответ написан
    2 комментария
  • Как сделать чтобы скобочки, кавычки и прочие символы сами закрывались?

    @alexalexes
    Опции -> Настройки... -> Автозавершение, группа параметров "Автовставка". Выбираете, какие категории символов завершать.
    Ответ написан
    Комментировать
  • Как сгруппировать по двум полям?

    @alexalexes
    SELECT TOP (100)   
    [error_number] ,
    [error_desc],
    COUNT([error_number])as total      
    FROM Db.tab_error
    group by error_number, error_desc

    Добавить и в select, и в group by.
    Группировка не распадется, если у всех одинаковых error_number строго одно и тоже содержание error_desc.
    Если error_desc не обладает таким свойством, то придется использовать оконную функцию:
    SELECT TOP (100)   
    [error_number] ,
    [error_desc],
    COUNT(*) over (partition by [error_number]) as total      
    FROM Db.tab_error
    Ответ написан
    1 комментарий
  • Как сделать круг на фоне числа?

    @alexalexes
    Нужно квадратному желтому элементу скруглить углы на не менее 50% радиуса его размера.
    Ответ написан
    Комментировать
  • Как передать значения в команду?

    @alexalexes
    Выглядит как кейс для шедулера Postgres.
    Можно написать хранимую процедуру на plsql и поставить ее на выполнение в планировщик СУБД.
    И не надо ничего из вне вызывать. А если надо вне очереди, то вызывать только хранимку - очень удобно.
    Ответ написан
    Комментировать
  • Как реализовать переход по ссылке силами CSS?

    @alexalexes
    Нужно помнить, что у тега a и button по умолчанию поведение display: inline - строчные элементы.
    Если хотите, чтобы они служили там, где используются блочные элементы (display: block) и блочно-строчные (display: inline-block), как div в вашем примере. Так обеспечьте их этим свойством - указав его явно.
    Зная это, можно спокойно заменить div на a и решить вашу проблему.
    Ответ написан
    Комментировать
  • Как скрыть разделы жесткого диска для разных пользователей?

    @alexalexes
    Скрыть - не скроете, но через пользователя Admin можете поместить пользователей Mom desktop, My desktop под группу НЕ администраторов, и отнять у них права на чтение/запись/доступ у определенных томов. При попытке войти туда пользователь будет получать сообщение "Отказано в доступе".
    Ответ написан
    1 комментарий