Задать вопрос
  • INSERT INTO при тестировании через sqlmock?

    kvaks
    @kvaks
    для INSERT нужно добавлять результат и не забывай про обрамлять слешом SQL запросы в mock (regex online)

    вот пример кода
    mock.ExpectExec(`INSERT INTO Products \(model, company, price\) values \('\$1', \$2, \$3\)`).
    				WithArgs(tt.args.model, tt.args.company, tt.args.price).
    				WillReturnResult(sqlmock.NewResult(1, 1))
    Ответ написан
    1 комментарий
  • Какой объём трафика у websocket если ничего не передавать и просто держать соединение?

    @deliro
    PING/PONG кидается раз в 20 секунд https://websockets.readthedocs.io/en/latest/topics...
    PING/PONG фреймы — по одному байту. Плюс, если считаем, объём TCP и IP фреймов.

    Итого за час 180 пингов и 180 понгов или 360 байт не считая оверхэда на нижележащие фреймы.
    Если считать оверхэд, то примерно 65 байт x (180 пингов + 180 понгов) ~ 23кб/час

    Плюс, какой-то оверхэд даст TLS и его хэндшейки, плюс, незначительный оверхэд дадут хэндшейки TCP. Но это явно не близко к 70мб
    Ответ написан
    2 комментария
  • Что должен уметь Junior C# Web разработчик?

    1. Уметь работать с asp net core.
    Написание нового контроллера не должно вызывать никаких сложностей.
    Должен знать про middleware и разные фильтры. Знать, какими сущностями в разные моменты времени обрабатывается запрос
    2. Знать как устроен HTTP хотябы на поверхностом уровне.
    Знать что в http-запросе есть заголовки и тело.
    3. Уметь работать с dotnet cli, если понадобится. Уметь вызывать dotnet build, dotnet watch, dotnet run, и dotnet publish
    4. Уметь искать нужные библиотеки в гугле и в нугете.
    5. Уметь работать с git хотябы на базовом уровне: git init, git branch, git add, git commit, git merge.
    Можно через GUI. Можно через встроенный плагин в IDE
    6. Уметь работать с какой-нибудь одной IDE на базовом уровне: с VS или с Rider.
    На базовом уровне - это значит, что ты можешь мышкой создать проект, добавить в него новые файлы, и запустить проект.
    7. Хотябы поверхностно знать про фронтенд. Чтобы мог загуглить и решить несложную задачу.
    8. Уметь работать с debugger-ом. Ставить точки останова, делать шаг вперёд, с заходом, с обходом.
    9. Уметь работать с какой-нибудь реляционной БД. Знать основы про всякие нормальные формы, уметь писать сырой sql запрос.
    10. Ну и кнонечно C#, ООП, всякие паттерны.
    Ответ написан
    7 комментариев
  • Стоит ли браться за изучение 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 комментария