Задать вопрос
  • Стоит ли браться за изучение ML.NET?

    1. Если интересно - можно попробовать.
    Правда лично мне она показалась слишком высокоуровневой и не очень гибкой.
    Нельзя самостоятельно выбрать количество слоёв.
    Нельзя обучать на видеокартах.
    Картинки на вход принимает только если они сохранены на диске - по пути.
    2. Можно питон. К WPF потом эту модель можно подключить через ml net.
    ML NET умеет работать с универсальным форматом onnx, так что ты можешь обучить нейросеть на питоне, а потом экспортировать её в onnx
    Вот пример использования onnx
    https://docs.microsoft.com/en-us/dotnet/machine-le...
    Ответ написан
    2 комментария
  • Node SASS vs Dart SASS. Какой производительнее при каких условиях?

    @Flying
    1. dart-sass - reference implementation языка т.е. является образцом того как должен работать язык. node-sass binding libsass (реализации спецификации языка на C++) к node.js.

      dart-sass содержит в себе все последние фичи языка, к примеру там уже есть поддержка sass modules, libsass отстаёт, а node-sass отстаёт от libsass. За пруфами - сюда и сюда
    2. libsass производительнее, местами - существенно. К примеру в моих тестах интенсивная работа с sass maps в libsass примерно в 10 раз быстрее чем в dart sass. Насчёт микросекунд - у меня есть проекты которые по 15-20 секунд компилируют только стили на node-sass, на dart-sass всё намного медленнее
    3. Приведённые ссылки - сравнение тёплого с мягким. Есть реализации языков, а есть плагины для их подключения к различным сборщикам. sass - сама реализация языка, gulp-sass - binding для Gulp, sass-loader - binding для Webpack
    Ответ написан
    Комментировать
  • Отдельные типы данных или один var?

    xez
    @xez
    TL Junior Roo
    https://docs.microsoft.com/ru-ru/dotnet/csharp/lan...
    var - говорит "дальше будет переменная", а тип переменной уже определяет компилятор.
    В вашем, конкретном, примере понятно, что обе переменные - double из правой части присваивания.
    Ответ написан
    Комментировать
  • Как сделать object to HTML string?

    0xD34F
    @0xD34F Куратор тега JavaScript
    const voidTags = [ 'input', 'img', 'br', 'hr', ещё какой-то тэг, и ещё, ... ];
    
    function createHTML(data) {
      const attrs = Object
        .entries(data.attrs ?? {})
        .map(n => `${n[0]}="${n[1]}"`)
        .join(' ');
    
      const startTag = `<${data.tagName}${attrs && (' ' + attrs)}>`;
    
      if (voidTags.includes(data.tagName)) {
        return startTag;
      }
    
      const children = (data.subTags ?? [])
        .map(createHTML)
        .join('');
    
      return `${startTag}${data.text ?? ''}${children}</${data.tagName}>`;
    }
    Ответ написан
    Комментировать
  • Как происходит трекинг использования функции скриншотов?

    @sergiodev
    https://stackoverflow.com/questions/13484516/ios-d...

    NotificationCenter.default.addObserver(
        forName: UIApplication.userDidTakeScreenshotNotification,
        object: nil,
        queue: .main) { notification in
            // пользователь сделал скриншот, ваш код тут
    }
    Ответ написан
    2 комментария
  • Как складывать числа, представленные в виде массивов цифр?

    0xD34F
    @0xD34F
    Массивы перебираются от конца к началу; цикл крутится до тех пор, пока какой-то из массивов не полностью обработан или имеет место быть переполнение разряда. Сумма разряда - сумма элементов массивов (если массив кончился, то 0) и переполнения предыдущего разряда. Цифра разряда нового числа - младший разряд суммы (т.е., остаток от деления на 10).

    function sum(a, b) {
      const result = [];
    
      for (
        let i = ~-a.length, j = ~-b.length, overflow = 0;
        i >= 0 || j >= 0 || overflow;
        i--, j--
      ) {
        const digit = (a[i] | 0) + (b[j] | 0) + overflow;
        overflow = +(digit > 9);
        result.push(digit % 10);
      }
    
      return result.reverse();
    }
    Ответ написан
    6 комментариев
  • Как хранить большие строки красиво?

    Перепиши в ООП-шном стиле.
    https://refactoring.guru/ru/replace-conditional-wi...

    А большие строки хранить можно в константах или ресурсах, в зависимости от требований
    Ответ написан
    Комментировать
  • Как исправить утечку памяти при работе с EF?

    1. Кучу памяти сжирает change tracker в EF, так что первым шагом его отключаем, добавляя AsNoTracking к каждому запросу.
    А там где действительно нужно отcлеживать изменения - отсоединяем объекты, когда они не нужны при помощи Detach
    2. Включаем ServerGarbageCollection, чтобы сборщик мусора мог работать в несколько потоков
    3. Заменяем синхронные вызовы EF на асинхронные.
    По идее тоже должно немного помочь
    4. Вытаскиваем объекты из базы не по одному, а пачками штук по 100, тк GC проще работать с большими кусками, чем с маленькими
    5. Если я правильно понимаю, это у вас HostedService.
    В таком, случае смотрите внимательно на использование контекста, тк ещё в другом месте может Change Tracker нагружаться
    Ответ написан
    4 комментария
  • Как получить названия всех установленных шрифтов на системе в виде массива строк в C#?

    @antonwx
    https://docs.microsoft.com/ru-ru/dotnet/desktop/wp...

    Думаю преобразовать в строки труда не составит
    Ответ написан
    Комментировать
  • Стоит ли подписывать такой nda ???

    BasiC2k
    @BasiC2k
    .NET developer (open to job offers)
    В договоре можно указать штраф хоть на миллиард. Но при взыскании этой суммы в судебном порядке (только так, если Вы не согласны) судья попросит обосновать эту сумму, т.е. пояснить - какой ущерб был причинен работодателю. И есть ли причинно-следственная связь между Вашими действиями и последствиями. Также в организации должен быть закреплен приказом перечень сведений, составляющих коммерческую тайну. И, что важно, должны проводиться конкретные мероприятия по защите этой самой тайны. Разумеется со всеми документами Вы должны быть ознакомлены под роспись.

    Короче, работодатель должен предпринять довольно много юридически значимых действий, чтобы с Вам хоть что-то взыскать. Поэтому остаётся только вариант запугивания шестизначными суммами в договоре.

    PS Разглашать чужие тайны плохо.
    Ответ написан
    Комментировать
  • Каков тут алгоритм?

    delphinpro
    @delphinpro
    frontend developer
    Двоичная записьДвоичная, с нулямиДесятичная
    110113
    10011
    1001004

    3 + 1 = 4
    Ответ написан
    Комментировать
  • Почему интерпретатор php не воспринимает кириллицу?

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    Перед тем, как писать веб-серверы на C#, надо учиться описывать проблемы не языком домохозяек.

    Не существует такой кодировки - "кириллица". Есть конкретная кодировка, которую необходимо указать в вопросе.
    Нет такой команды в C# -"послать интерпретатору". Есть конкретная команда или действие, которое надо описать в вопросе.
    Нет такой команды - "сказать, что находится по пути". Есть конкретный код, который надо привести в вопросе.
    РНР - не посетитель в ресторане, чтобы "отказываться". Это программа. Которая либо работает, либо выдаёт сообщение об ошибке. Которое программист должен прочитать. Или по крайней мере, если не понял в нем ни одного слова, то аккуратно скопировать в свой вопрос.

    В целом РНР прекрасно работает с любыми кодировками, которые используются для отображения русских букв, даже с теми адовыми костылями, которые используются в Микрософт Виндоус с середины конца прошлого века по сей день.

    Для того чтобы убедиться в том, что РНР прекрасно работает с русскими буквами, надо создать скрипт test.php
    <?php
    header('Content-Type: text/html; charset=utf-8');
    echo hex2bin('d0bfd180d0b8d0b2d0b5d182'); 
    // текст UTF закодировн в hex чтобы избежать влияния кривых ручек тестировщика/выкрутасов Виндоус


    перейти в папку с ним
    запустить встроенный веб-сервер
    php -S localhost:8081
    и открыть в браузере адрес localhost:8081/test.php

    И после этого разбираться с тем, как своя программа на модном языке сишарп не может прочитать русские буквы.

    Судя по классической картинке, https://habr.com/en/post/147843/ где-то происходит перекодирование utf-8 -> 866(!)
    Ответ написан
    1 комментарий
  • При использовании команды, вылетает ошибка?

    Вам консоль показывает место ошибки. Вас не смущают какие-то **? Должно быть так:
    server.on('request', (request, response) => {
        console.log(`URL: ${request.url}`);
        response.end('Hello, server!')
    })
    Ответ написан
    Комментировать
  • Как отражается изменения словаря на присваиваемые?

    ayazer
    @ayazer
    Sr. Software Engineer
    https://docs.microsoft.com/en-us/dotnet/csharp/lan...

    как я понимаю если я буду менять значения в Dictionary1 то они будут меняться и в 2 и 3 словарях?

    да, так как все будут ссылатся на один и тот-же объект

    но если я буду менять значения в 2 и 3 словарях они не будут затрагивать друг друга?

    будут, т.к. они будут ссылатся на один и тот-же объект

    то есть меняя значения в 2 словаре это никак не отразится на 3 словарь, я правильно понимаю?

    нет

    А то просто во недавно столкнулся с такой проблемой что присвоил один словарь другому Dictionary2 = Dictionary1 потом 1й очистил и 2й автоматом тоже оказался очищенным


    это один и тот-же словарь. просто на него ссылаются две переменные.

    те
    private Dictionary<string, ClassTest> Dictionary1  // переменная Dictionary1 типа Dictionary<> 
        = new Dictionary<string, ClassTest>(); //которая ссылается на объект Dictionary [id=1]
    private Dictionary<string, ClassTest> Dictionary2 // переменная Dictionary2 типа Dictionary<> 
        = new Dictionary<string, ClassTest>(); //которая ссылается на объект Dictionary [id=2]
    private Dictionary<string, ClassTest> Dictionary3 // переменная Dictionary3 типа Dictionary<> 
        = new Dictionary<string, ClassTest>(); //которая ссылается на объект Dictionary [id=3]
    
    //Dictionary1 -заполняем данными
    Dictionary2 = Dictionary1; //переменная Dictionary2 теперь ссылается туда-же, куда и переменная Dictionary1, 
    // т.е на Dictionary [id=1]
    
    Dictionary3 = Dictionary1; //переменная Dictionary3 теперь ссылается туда-же, куда и переменная Dictionary1, 
    // т.е на Dictionary [id=1]
    
    // a объекты Dictionary [id=2] и Dictionary [id=3] будут собраны сборщиком мусора, т.к. они больше не нужны


    UPD:

    а как мне сделать 2 словаря по типу 1го, то есть у меня есть 1й словарь шаблон, я хочу чтобы 2й и 3й словари изначально так же и выглядели (имели все те же данные), но далее данные в них менялись независимо друг от друга?


    ну например как-то так:
    var dict1 = new Dictionary<int, int>()
    {
        [1] = 2,
    };
    
    var dict2 = new Dictionary<int, int>(dict1);
    
    dict1.Add(2, 3);
    dict2.Add(2, 1);
    
    
    var log = new Action<Dictionary<int,int>>((dict) =>
    {
        Console.WriteLine(string.Join(", ", dict.Select(c => $"{c.Key}={c.Value}")));
    });
    
    log(dict1);  //1=2, 2=3
    log(dict2);  //1=2, 2=1
    Ответ написан
  • Можно создать перменные в цикле?

    Nipheris
    @Nipheris Куратор тега C#
    Что вы понимаете под "создавать переменные"? Если вы имеете в виду объявление переменных, то это не просто нормальное явление, а рекомендация - если переменная нужна вам только в цикле (а за пределами цикла её видно не будет, т.к. у цикла будет свой scope), то намного лучше, если вы в цикле её и объявите.

    Правило очень простое - держите объявление переменных поближе к месту их использования, а если точнее - то держите переменные в самом вложенном скоупе, насколько это возможно согласно местам их использования.
    Ответ написан
    3 комментария
  • Как удалить все вложенные папки(cmd)?

    wisgest
    @wisgest
    Не ИТ-специалист
    Если речь не идёт об удалении самого каталога, использовать цикл с ключом /D:
    for /d %d in (*) do rd /s "%d"
    (в командном файле % надо удвоить).
    Ответ написан
    Комментировать
  • Как динамично сформировать объект?

    0xD34F
    @0xD34F Куратор тега JavaScript
    const obj = Object.fromEntries(arr.map((n, i) => [ `answer${i + 1}`, n ]));

    или

    const obj = arr.reduce((acc, n, i) => (acc['answer' + ++i] = n, acc), {});

    или

    const obj = {};
    for (const [ i, n ] of arr.entries()) {
      obj['answer'.concat(-~i)] = n;
    }
    Ответ написан
    5 комментариев