Задать вопрос
  • Что такое .Net и .Net framework?

    Сейчас .net framework и .net core объеденили и получился .net (кросплатформенный)

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

    .net framwork и .net core оба используют внутри себя .net standart

    Они не используют внутри себя .net standart, код внутри разный.

    .net standart - это только спецификация на то, какие классы должны быть в BCL, но реализация уже везде будет разная.
    Чем выше версия - тем больше будет доступно, но тем уже будет набор совместимых версий рантайма.

    Самая последняя версия (netstandart 2.1) вообще не поддерживается в .net framework - оно поддерживается только в mono и .net (core) от версии 3.0 и выше.
    Написано
  • Кто качает торрент?

    1. Вроде торрент использует udp
    2. Порты вроде рандомные.
    Написано
  • Мне нужно химичить с заголовками запроса?

    vabka
    @vabka Куратор тега Веб-разработка
    Dmitriy-163-89, вообще если прочитать ещё раз внимательно, то "you are too early in timeline" подразумевает не "вы слишком рано в течение дня зашли, мы работаем со стольки до стольки", а "пока вообще ничего нет. Что-то будет Когда-то в будущем через неделю". И даже не обязательно, что они к времени привязаны - раз уж это сайт с вакансиями, то вакансий просто сейчас нет.
    Написано
  • Как реализовать шумоподавление на c#?

    Как уже написали - шумодав легче всего делать на стороне клиента / силами возможно даже ОС (или сторонних программ).
    Какой-нибудь nvidia broadcast например или через драйвер, да хоть тот же самый krisp, как у дискорда.
    Написано
  • Нормально ли использовать var вместо явной типизации в C#?

    Писать - да, читать - it depends, как говорят англичане.

    Ага и вот в этом самом "зависит" var будет играть меньшую роль.
    Если у тебя в коде лапша типа такой: (тут фотография серверной, где откуда-то сверху свисает огромное количество перепутанных проводов), то "бирки" с типами у каждой переменной (или проводка в случае серверной) тебе не сильно помогут в понимании.
    i?id=a7437031b4b7aaed9907a7d3ad1f9795_l-9220933-images-thumbs&n=13

    А разве в legacy 4-5-летней выдержки, над которым поработало много программистов, хороших и разных, по-другому бывает?

    1. 4-5 лет - это не так уж и много
    2. Читабельность зависит не от того, сколько людей потрогало код, а от процессов и правил, которые были приняты в проекте изначально. На каждый ужасный проект, который я видел - найдётся как минимум 1 очень даже неплохой.

    А ещё бывает, что методы называются почти одинаково, но типы значений у них разные. Пример: builder.Services.AddOptions() и builder.Services.AddOptions() из кода конфигурирования контейнера сервисов, методы расширения IServiceCollection для Option Patterns - типы возвращаемых значений у них разные. А их ещё любят цеплять друг к другу к таким же методам через точку - вот и смотри потом, чой-то в ConfigureOptions какие-то лишние параметры вылезли.

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

    А если ещё учесть, что сейчас принято документацию ограничивать примерами (MS любит, да) - оно вообще весело.

    Ой примеры - это в лучшем случае) Часто обходятся просто кратким summary. Наподобие "AddOptions - add options to service collection"

    Это потому что сейчас главное - быстрее писать MVP, для веба - особенно. Ну, а потом можно сказать волшебное слово: "Legacy".

    Далеко не только лишь.
    Всякие ML-подобные-языки, включая F# и Haskell, Kotlin, Scala, Rust, zig, go - большинство из этих языков имеют очень опосредованное отношение к вебу и подходу "хуяк хуяк и в продакшен", но во всех них есть либо простой вывод типов по правой части выражения (как в C# и Go), так и полноценный хиндли-мильнер (F#), либо что-то среднее (Rust).

    Где-то вывод типов прям необходим (из-за женериков), а где-то он просто чтобы меньше засорять код (типа го)
    Написано
  • Нормально ли использовать var вместо явной типизации в C#?

    Steel_Balls,
    Например, в обычном блокноте или по распечатке на бумаге.

    Я бы сбежал из конторы, где нужно неиронично читать код в блокноте или по распечатке.
    Если дублировать всю полезную информацию о функция в месте вызова, то так мы вернёмся к COBOL или чему-то типа того.
    Написано
  • Нормально ли использовать var вместо явной типизации в C#?

    Nik Faraday, var result = service.GetAll().ToList()
    Вот это как раз плохой пример именования. Что за сервис? Что за GetAll? Что такое это "All"?
    Не удивлюсь, если там даже с конкретным типом не особо понятно будет.
    Особенно во время дебага

    Так во время дебага все типы как раз и так пишутся. Что за IDE?
    Написано
  • Нормально ли использовать var вместо явной типизации в C#?

    Steel_Balls,

    А ты давай нормальные названия методам, чтобы возвращаемое значение было очевидным, набирайся опыта, ищи закономерности.

    Ты же не задаёшься вопросом, какой тип возвращает какой-нибудь GetUser, ToString, TryParse, FirstOrDefault?

    Если тебе сложно понять смысл кода без типов - значит кто-то плохие имена дал переменным.

    Есть ещё вот такая фраза, если по диагонали не читать.
    Скажу так, что даже и без var можно такого говно сделать, что явные типы тебе вот никак не помогут.
    (Например неиронично видел кодовую базу, где всё было через dynamic - вон там реально проще было писать, даже классы объявлять не нужно)
    Написано
  • Нормально ли использовать var вместо явной типизации в C#?

    MVV,

    Правильный вопрос - зачем вообще заставлять работать с анонимными типами? Подозреваю, что их из-за маршрутизации в MVC завезли - как типы параметров, вместо того, чтобы передавать в методы генерации ссылок вместо IDictionary, как это оно там реально требуется

    Анонимные типы появились задолго до нормального asp net.
    Их изначально сделали ради linq.

    А вот про многоэтажные женерики я и забыл
    Написано
  • Как поправить код, чтобы улучшить расхождения времени его выполнения?

    vabka
    @vabka Куратор тега Rust
    разброс в 2 раза - это нормально. Уже хз какой раз пишу, что надо смотреть на распределение.
    У тебя же алгоритм этот max_time запишет, даже если это единичный выброс произошёл.
    Даже выше в комментах дал пример.
    А ещё ты так и не написал, ноутбук у тебя или стационарный пк.
    Ноутбук вполне может при нагреве снижать частоты и из-за этого максимальное время будет расти.
    Написано
  • Как поправить код, чтобы улучшить расхождения времени его выполнения?

    vabka
    @vabka Куратор тега Rust
    TicSo, 300-это мало для такого небольшого объема данных
    Написано
  • Как поправить код, чтобы улучшить расхождения времени его выполнения?

    vabka
    @vabka Куратор тега Rust
    TicSo, погонял критерион. Всё ещё выглядит всё нормально.
    use criterion::{criterion_group, criterion_main, Criterion};
    use rand::Rng;
    use std::{
        hint::black_box,
        time::{Duration, Instant},
    };
    
    fn count_odds(data: &[u8], even: &mut Vec<u8>, odd: &mut Vec<u8>) -> (usize, usize) {
        let mut odd_count = 0;
        let mut even_count = 0;
        for i in data {
            if i % 2u8 == 0u8 {
                even_count += 1;
                even.push(*i);
            } else {
                odd_count += 1;
                odd.push(*i);
            }
        }
    
        (even_count, odd_count)
    }
    
    fn create_test_data(size: usize) -> Vec<u8> {
        let mut data = Vec::with_capacity(size);
        let mut rng = rand::thread_rng();
    
        for _ in 0..size {
            let n: u8 = rng.gen();
            data.push(n);
        }
        data
    }
    
    fn criterion_benchmark(c: &mut Criterion) {
        c.bench_function("count_odds 1M", |b| {
            b.iter_custom(|iters| {
                let size = 1_000_000;
                let data = create_test_data(size);
                let mut total = Duration::default();
    
                for _ in 0..iters {
                    let mut evens = Vec::with_capacity(size);
                    let mut odds = Vec::with_capacity(size);
                    let start = Instant::now();
                    let _ = count_odds(
                        black_box(&data[..]),
                        black_box(&mut evens),
                        black_box(&mut odds),
                    );
                    total += start.elapsed();
                }
                total
            });
        });
    
        c.bench_function("count_odds 1K", |b| {
            b.iter_custom(|iters| {
                let size = 1_000;
                let data = create_test_data(size);
                let mut total = Duration::default();
    
                for _ in 0..iters {
                    let mut evens = Vec::with_capacity(size);
                    let mut odds = Vec::with_capacity(size);
                    let start = Instant::now();
                    let _ = count_odds(
                        black_box(&data[..]),
                        black_box(&mut evens),
                        black_box(&mut odds),
                    );
                    total += start.elapsed();
                }
                total
            });
        });
    }
    
    criterion_group!(benches, criterion_benchmark);
    criterion_main!(benches);


    6702caf97f9c4150407671.png6702cafd3ab52192995295.png
    Написано
  • Как поправить код, чтобы улучшить расхождения времени его выполнения?

    vabka
    @vabka Куратор тега Rust
    TicSo, так тебе же пишут - расхождение это ок. Серьёзно, попробуй через criterion погонять
    Написано
  • Как поправить код, чтобы улучшить расхождения времени его выполнения?

    vabka
    @vabka Куратор тега Rust
    TicSo, 40±10 микросек. Выглядит вполне ок, хотя для нормальной статистики лучше бы больше повторений сделать, чтобы распределение посчитать.
    Написано
  • Как поправить код, чтобы улучшить расхождения времени его выполнения?

    vabka
    @vabka Куратор тега Rust
    1. Бенчмаркать нужно на одном и том же наборе данных.

    2. Для бенямарков надо не велосипед строить, а использовать какой-нибудь criterion, тк есть очень много случайных процессов, которые могут влиять на результаты

    3. subsec_nanos сообщает не полное время, а только количество наносекунд менее одной секунды.
    То есть например, если у тебя Duration = 3 сек и 500нс, то subsec_nanos вернёт 500

    Выводи в консоль сам duration тогда, чтобы не путаться
    Написано
  • Как преобразовать из char массива в string массив в си шарп?

    Очень хотелось просто скинуть решение, но после следующей фразы резко передумал:
    мне это надо так как в цикле, char переводится в цифры(кодировку)

    Можете целиком показать код, в котором возникла проблема? тк вот этот ToString на ровном месте создаст вам кучу аллокаций в памяти, а описанная проблема звучит очень уж странно.
    Написано
  • Встраиваемая акустика, умный дом, кабинет?

    GavriKos, потому и пишу, что для серьезной акустики нужно скорее специальную компанию привлекать.
    Видел в мск есть какая-то фирма, которая домашними / мини кинотеатрами занимаемся
    Написано