Задать вопрос
  • Paз в 5 минyт пpoиcxoдит мopгaниe мoнитopa?

    @alexalexes
    Посмотрите режим питания в панели управления, возможно, это как раз тот интервал, когда комп пытается перейти в энергосберегающий режим, но ничего не получается из-за недоустановленных или кривоустановленных драйверов управления питания (acpi)/видео/и прочих.
    PS: Еще монитор может тухнуть, если на одной линии 220В подключен холодильник, бойлер или насос, который периодически включается. Но в этом случае сбои будут происходить в независимости, пользуетесь компом или нет.
    Ответ написан
    1 комментарий
  • Как передать вложенную структуру в функцию?

    Vindicar
    @Vindicar
    RTFM!
    Правильнее будет void func(const Test2& buff){} если ты не собираешься изменять структуру внутри функции. В этом случае будет передана не копия структуры, а ссылка на оригинал, что будет быстрее. Если собираешься изменять, и тебе нужно передать изменения "наружу" func(), убери const.
    Ответ написан
    1 комментарий
  • Что за тип Unit в Haskel Rust Kotlin? Чем отличается от Void?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Я не понимаю зачем ты поставил такое число тегов? Мы что здесь 4 разных языка обсуждать будем?
    У них у всех разные механизмы работы с типами.

    Что за тип Unit в Haskel Rust Kotlin? Чем отличается от Void?
    Раз 500 прочел, не понял ни разу.

    Программирование - это практическая наука. Это не философия и не политология.
    Тебе не надо 500 раз читать. Читай 1 раз и пиши программу. И смотри как она себя ведет.
    void - это просто заглушка. Синтаксически полезна в операциях с указателями чтобы
    указывать что тип ссылки - неизвестен. Unit в некоторых языках (Scala) это тип-значение
    и его можно возвращать. В Хаскеле чтобы вернуть "ничто" - используется монада Maybe.

    int a=(int)(object)1;
    Что довольно дорого и долго. С выделением памяти в куче.

    Не понимаю что здесь дорого и долго? Или это пример неудачный. Хороший компиллятор
    сворачивает боксированные типы и сводит их к примитивам. Боксы также в runtime
    инициализируются через Flyweight чтоб иметь ровно 1 экземпляр на примитив.

    Ведь это прекрасно покроет все простые структурные типы, int char double.,

    Какие структурные типы? Откуда ты берешь терминилогию. Я тебя очень прошу в данном
    форуме - не придумывай новое применение устоявшимся терминам!

    То что ты хочешь (передача 8 байт) хорошо реализуется в Си и Ассемблере. Если тебе нужен именно такой
    уроверь абстракции - то тебе прямая дорога туда. Я напомню тебе также что типы в ЯВУ создавались
    долгие десятилетия. Они создавались с целью помочь программисту не делать ошибок и проводить
    формальное доказательство правоты программы. Программа с типами - имеет шанс быть правильной.
    Программа лишенная мехнизмов проверки типов - будет кишмя кишеть ошибками рантайма. И даже
    тестирование не будет доказывать их отсутствие в будущем.
    Ответ написан
    1 комментарий
  • Что за тип Unit в Haskel Rust Kotlin? Чем отличается от Void?

    vabka
    @vabka Куратор тега Rust
    void означает, что функция ничего не возвращает. Такие функции не получится использовать в выражениях и их результат нельзя никуда присвоить. Из-за этого многие обобщённые вещи приходится писать по два раза: один раз для обычных функций и ещё раз для функций, которые возвращают void.
    Такие функции ещё называют процедурами.

    unit же напротив является значением, просто всего с одним возможным вариантом. Компиляторы часто его оптимизируют так, что он занимает 0 байт и не требует никаких инструкций для передачи. То же самое с указателем на юнит.


    Можно ли увидеть аналог пример кода на c# java с этим типом?

    Нельзя, тк в их системе типов такого типа просто нет. Можно его имитировать при помощи пустой структуры например.
    Но в мире дотнета есть f#, а в мире жавы - скала и котлин.

    А еще, вот к примеру я придумал, почему нету(может этот тип и есть), К примеру в c# есть понятие Boxing типов при касте через object
    int a=(int)(object)1;
    Что довольно дорого и долго. С выделением памяти в куче.
    А почему нету Типа, который ни чего не упаковывает, а просто передает двойное машинной слово? Ведь это прекрасно покроет все простые структурные типы, int char double., Enum, кортежи в 8 байт. А все остальное уже как объект.

    1. А что делать если тебе боксинг явно нужен?
    2. А где ты будешь метаданные передавать? Как в такой ситуации отличить тот же long от ссылки на объект?
    3. По спецификации передаётся ссылка, а не двойное машинное слово.

    И каким боком боксинг имеет отношение к юниту?
    Ответ написан
    3 комментария
  • Что использовать для чтения технической литературы?

    @CBET_TbMbI
    Недавно обзор был: https://habr.com/ru/articles/757306/

    Электронные чернила всё же часто лучше. Ну а по удобству личтания туда-сюда с бумажной книгой мало что сравнится может.
    Ответ написан
    Комментировать
  • API для создания изображений-карточек к публикациям?

    Maksclub
    @Maksclub
    maksfedorov.ru
    Такое легко делается
    В свое время еще когда не программировал — легко сделал для блога своего на php

    На гитхабе посмотрите реализации по поиску test to image, text2image
    Почти все делают возможность задавать обложку, и центровка текста и лого/др картинки помещать.
    Ответ написан
    Комментировать
  • Возможно ли обучить ИИ определять данные анализов по фото?

    Тут больше задача на OCR и машинное зрение похожа.
    Нужно определить границы таблицы и распознать текст в ячейках.
    Можно попробовать Opencv + tesseract.

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

    @firstmixon
    Console.Readln(), что то типа этой записи вставте перед Return
    Ответ написан
    Комментировать
  • Не получается сделать exe. Почему?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Он скорее всего работает. Просто консоль так быстро появляетя и исчезает что ты не успеваешь разглядеть.
    Там сразу после печати Hello идет return.

    Добавь туда cin >> для того чтоб было какое-то ожидание от пользователя.
    Ответ написан
    1 комментарий
  • Как сделать чтобы данные в DBGrid фильтровались через несколько Edit по разным столбцам таблицы грида?

    HemulGM
    @HemulGM Куратор тега Delphi
    Delphi Developer, сис. админ
    Фильтровать данные нужно на уровне датасета, а не грида. У датасета есть поле Filter, которое соответствует WHERE в SQL. Вот и составляй фильтр как буд-то пишешь WHERE для запроса.
    Для обоих Edit обработай событие OnChange в котором будет вызывать метод обновления фильтра. А метод обновления фильтра бурет значение из обоих фильтров и меняет свойство Filter у датасета.

    Хех. GPT почти слово в слово ответил)
    Для реализации фильтрации данных в DBGrid через несколько Edit по разным столбцам таблицы грида необходимо использовать событие OnChange каждого Edit и применять фильтры для каждого столбца, основываясь на значениях всех Edit.

    Вот пример, демонстрирующий, как это можно сделать:
    1. Создайте несколько компонентов TEdit и установите им соответствующие имена, например, Edit1, Edit2 и Edit3.
    2. Добавьте компонент TDBGrid на форму и установите его свойство DataSource на соответствующий источник данных, например, TDataSource.
    3. Привяжите каждый компонент TEdit к событию OnChange и вызовите процедуру фильтрации:

    procedure TForm1.Edit1Change(Sender: TObject);
    begin
      ApplyFilters;
    end;
    
    procedure TForm1.Edit2Change(Sender: TObject);
    begin
      ApplyFilters;
    end;
    
    procedure TForm1.Edit3Change(Sender: TObject);
    begin
      ApplyFilters;
    end;
    
    procedure TForm1.ApplyFilters;
    var
      FilterString: string;
    begin
      // Создаем строку фильтрации на основе значений всех Edit
      FilterString := '';
      if Edit1.Text <> '' then
        FilterString := 'Column1 LIKE ''%' + Edit1.Text + '%''';
      
      if Edit2.Text <> '' then
      begin
        if FilterString <> '' then
          FilterString := FilterString + ' AND ';
        
        FilterString := FilterString + 'Column2 LIKE ''%' + Edit2.Text + '%''';
      end;
      
      if Edit3.Text <> '' then
      begin
        if FilterString <> '' then
          FilterString := FilterString + ' AND ';
        
        FilterString := FilterString + 'Column3 LIKE ''%' + Edit3.Text + '%''';
      end;
      
      // Применяем фильтр
      TDBGrid.DataSource.DataSet.Filter := FilterString;
      TDBGrid.DataSource.DataSet.Filtered := FilterString <> '';
    end;


    Обратите внимание, что в данном примере мы предполагаем, что таблица имеет три столбца (Column1, Column2 и Column3), которые должны фильтроваться с помощью соответствующих Edit (Edit1, Edit2 и Edit3). Вы можете изменить код в соответствии с вашей конкретной структурой таблицы и компонентов.
    Ответ написан
  • Как читать данный график?

    Maksim_64
    @Maksim_64
    Data Analyst
    Как читать, тут не важно что ты обучаешь, обучения нет обычный шум разного уровня, с увеличением количества шагов у тебя постепенно (обычно не линейно) должна снижаться ошибка (минимизироваться функция потери). Ничего подобного на графиках нет. Просто случайный шум да и все. Обучения НЕ ПРОИСХОДИТ.
    Ответ написан
    Комментировать
  • Как читать данный график?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Легенда пишет что мы имеем 3 графика величн Loss, PriorLoss, Instance Loss. Первым делом надо
    читать что это такое. Какой смысл вкладывает Stable Diffusion в эти величины.

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

    What is an early return?
    An early return, or “return early” is an approach to keep readability in functions and methods.

    It is always considered a wise choice to return early if simple conditions apply that can be checked at the beginning of a method.
    https://dev.to/jpswade/return-early-12o5
    Ответ написан
    1 комментарий
  • Как вычислить значение x mod 2 на машине Тьюринга?

    mayton2019
    @mayton2019
    Bigdata Engineer
    В унарном виде - это как цепочка единичек. Например число 5 будет.

    _11111_

    Справа и слева должен стоять blank sysmbol. Типа признак конца ленты чтоб было что проверять.

    Тогда (5 mod 2) = 1

    И мы должны получить на ленточке просто единичку.

    _1_

    Это можно сделать поглощая пары соседних единичек. А для четного числа будет пустая лента. Тоесть остаток от деления равен нулю.

    Ну вот такой алгоритм. Дальше надо делать конечный автомат который ищет пары единичек.
    Ответ написан
    Комментировать
  • Как сделать узконаправленным ChatGPT api python?

    GavriKos
    @GavriKos
    Если апи этого не предоставляет - никак.

    Да и в том то и прикол языковой в том, что как раз классифицировать архисложно.
    "Какой бы фильм посмотреть" - не относится к медикам.
    "Какой фильм посмотреть медикам" - относится в какой то степени, но не факт что будет спрашивать медик.
    Ответ написан
    Комментировать
  • Как сравнить объекты и найти различия?

    Мне кажется, такой вариант вам может подойти:
    function generateJsonPatch(obj1, obj2) {
      const patch = [];
    
      // Рекурсивно обходим все свойства первого объекта
      for (const prop in obj1) {
        if (obj1.hasOwnProperty(prop)) {
          // Если свойство отсутствует во втором объекте, удаляем его
          if (!obj2.hasOwnProperty(prop)) {
            patch.push({op: "remove", path: `/${prop}`, oldVal: obj1[prop]});
          } else {
            // Если свойство является объектом или массивом, рекурсивно обходим его
            if (typeof obj1[prop] === "object") {
              patch.push(...generateJsonPatch(obj1[prop], obj2[prop]).map(p => {
                p.path = `/${prop}${p.path}`;
                return p;
              }));
            } else {
              // Если значение свойства отличается от значения во втором объекте, обновляем его
              if (obj1[prop] !== obj2[prop]) {
                patch.push({op: "replace", path: `/${prop}`, value: obj2[prop], oldVal: obj1[prop]});
              }
            }
          }
        }
      }
    
      // Обходим свойства второго объекта, которых нет в первом объекте
      for (const prop in obj2) {
        if (obj2.hasOwnProperty(prop) && !obj1.hasOwnProperty(prop)) {
          // Добавляем новое свойство
          patch.push({op: "add", path: `/${prop}`, value: obj2[prop], oldVal: undefined});
        }
      }
    
      return patch;
    }

    Вот что он выдаёт в вашем случае:
    [ { op: 'replace', path: '/colorQty', value: 1, oldVal: 0 } ]


    Код генерировал не я. Я попросил ChatGPT:
    prompt и оригинальный ответ



    Напиши функцию на javascript, которая принимает в себя два js-объекта или массива, на выходе я должен получить jsonpatch, который можно применить к первому объекту, чтобы получился объект идентичный второму

    ... вариант без oldValue ...

    добавь ещё в каждую операцию jsonpatch и старое значение, чтобы при чтении было понятно, что на что заменяется

    Вот обновлённый код функции generateJsonPatch с добавлением старого значения в каждую операцию jsonpatch:

    function generateJsonPatch(obj1, obj2) {
      const patch = [];
    
      // Рекурсивно обходим все свойства первого объекта
      for (const prop in obj1) {
        if (obj1.hasOwnProperty(prop)) {
          // Если свойство отсутствует во втором объекте, удаляем его
          if (!obj2.hasOwnProperty(prop)) {
            patch.push({op: "remove", path: `/${prop}`, oldVal: obj1[prop]});
          } else {
            // Если свойство является объектом или массивом, рекурсивно обходим его
            if (typeof obj1[prop] === "object") {
              patch.push(...generateJsonPatch(obj1[prop], obj2[prop]).map(p => {
                p.path = `/${prop}${p.path}`;
                return p;
              }));
            } else {
              // Если значение свойства отличается от значения во втором объекте, обновляем его
              if (obj1[prop] !== obj2[prop]) {
                patch.push({op: "replace", path: `/${prop}`, value: obj2[prop], oldVal: obj1[prop]});
              }
            }
          }
        }
      }
    
      // Обходим свойства второго объекта, которых нет в первом объекте
      for (const prop in obj2) {
        if (obj2.hasOwnProperty(prop) && !obj1.hasOwnProperty(prop)) {
          // Добавляем новое свойство
          patch.push({op: "add", path: `/${prop}`, value: obj2[prop], oldVal: undefined});
        }
      }
    
      return patch;
    }


    Каждая операция jsonpatch теперь содержит поле `oldVal`, которое хранит старое значение свойства, которое было изменено. Если свойство было удалено или добавлено, то `oldVal` будет иметь значение `undefined`.

    Пример использования:

    const obj1 = {a: {b: "hello"}, c: [1, 2, 3]};
    const obj2 = {a: {b: "world", d: "foo"}, c: [1, 2, 4, 5], e: "bar"};
    
    const patch = generateJsonPatch(obj1, obj2);
    
    console.log(patch);
    // Output:
    // [
    //   {"op":"replace","path":"/a/b","value":"world","oldVal":"hello"},
    //   {"op":"add","path":"/a/d","value":"foo","oldVal":undefined},
    //   {"op":"remove","path":"/c/2","oldVal":3},
    //   {"op":"add","path":"/c/3","value":5,"oldVal":undefined},
    //   {"op":"add","path":"/e","value":"bar","oldVal":undefined}
    // ]


    Обратите внимание, что поле oldVal в jsonpatch содержит информацию только о тех свойствах, которые были изменены или удалены. Если свойство не было изменено, то его oldVal будет иметь значение undefined.



    PS: сам удивился, на сколько он хорош в подобных задачах. Можно было бы написать и самому, точно также рекурсивно обойдя объекты, но эта шняга сэкономила достаточно много времени.
    Ответ написан
    3 комментария
  • В чем может быть проблема если выдает такую ошибку?

    @a1nsworth
    Смотрите, эта ошибка с чем-то схожа с out of range , чтобы это доказать , попробуйте вместо обращение к элементу через [index], сделать через метод .at(index) , т.к данный метод выбрасывает исключение в случае, когда данный индекс выходит за границы. Как замените, покажите результат.
    Ответ написан
    Комментировать
  • Почему ChatGPT зачеркнул текст?

    Просто так рендерится текст, обрамлённый тильдами. Это баг.
    Ответ написан
    Комментировать
  • Почему не работает программа нормально?

    Vindicar
    @Vindicar
    RTFM!
    Ты объявляешь функцию replay(), но не вызываешь её.
    А вообще, тебе тут нужен цикл, а не рекурсия.
    Ответ написан
    Комментировать