• С чем и как есть gRPC?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    1-2. Если говорить про микросервисы: каждый микросервис должен определять свою модель пользователя (только те поля/данные которые нужны конкретно ему) - да это будет копипаст

    Если про реальность: все зависит от области - возможно стоит сделать несколько независимых (в контексте запускаемых процессов) сервисов, но все они будут шарить единственную модель, а может для каждого свою определить.

    3. Зависит
    4. Обычно, для популярных ЯП (ты не указал, но в тегах есть питон) есть официальные библиотеки с кодогенерацией - юзай их
    5. Какой архитектуры? Если про gRPC vs HTTP, то лучше копай в строну понимания синхронного (HTTP, TCP, gRPC) и асинхронного (очереди сообщений) взаимодействия
    Ответ написан
    2 комментария
  • Что выбрать для CI/CD проектов на .net?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    • Самое ближайшее и доступное в вашем случае - GitHub Actions
    • Чуть более сложно, но больше гибкости и автономности - GitLab PipeLines (можно даже у себя захостить сервер)
    Ответ написан
    2 комментария
  • Стоит ли заниматься по курсам от Ulearn?

    vabka
    @vabka
    Токсичный шарпист
    ulearn - вполне хорошие курсы университетского уровня.
    Причём это не "курсы C#", а "курсы программирования, на примере C#", что для новичка даже лучше.
    Ответ написан
    Комментировать
  • Возможно чтобы код С# испольнялся на GPU?

    @rPman
    Погуглю за тебя.
    ilgpu.net, первый же пример.

    Возможно ты что то не то хочешь, и лучше бы тебе сначала посмотреть в сторону opencl, язык там будет похожий на c++, заточен на работу на многопроцессорных ускорителях типа видеокарта. Есть даже реализации для fpga чипов с программируемой логикой, в общем это специализированный стандарт.

    Есть еще cuda, это vendorlock модификация opencl от nvidia (формально это они двигают стандарты в этом направлении, ибо крупнейшие разработчики железа)
    Ответ написан
    Комментировать
  • Как правильно обучаться в начале пути?

    Adamos
    @Adamos
    Решения, которые можно найти на ютубах и форумах, достойны того, чтобы находить их на ютубах и форумах.
    Ничего сколько-нибудь серьезного из этих обрывков (особенно из того мусора, который на ютубах) все равно собрать не получится, голова понадобится.

    "Насчёт паттернов, принципа SOLID и подобных штук": для их изучения необходим опыт, хотя бы говнокодинга, и точка приложения, хотя бы тот же собственный говнокод, в котором груда классов перепутана между собой. Разгребание этой груды позволит применить те принципы на практике, а без практики их изучать бесполезно вовсе.
    Ответ написан
    4 комментария
  • Как сделать самоподписанный сертификат доверенным на Windows?

    saboteur_kiev
    @saboteur_kiev Куратор тега Windows
    software engineer
    У сертификата есть поле Common Name или Certificate Subject, там где ты указывал имя при генерации сертификата.
    Оно должно соответствовать имени домена (например localhost)

    Либо у сертификата есть дополнительное поле Alternative Subject Names, где можно перечислить несколько DNS имен, тогда localhost должен быть или там или там.
    Иначе не пройдет валидация, браузер не будет видеть что сертификат соответствует твоему сайту localhost
    Ответ написан
    Комментировать
  • Что означает оператор => в linq c#?

    vabka
    @vabka Куратор тега C#
    Токсичный шарпист
    Это не оператор, а стрелочка, которая отделяет аргументы анонимной функции от её тела.
    https://learn.microsoft.com/en-us/dotnet/csharp/la...

    Тоесть вот такой код создаёт функцию с единственным аргументом num, которая возвращает значение выражения num != 2.
    num=>num!=2

    Ведь эта строка на много проще

    Нет, не проще.

    Выбирай:
    var noTwo = nums.Where(x=>x != 2);
    // или
    var noTwo=from num in nums
                      where num!=2
                      select num;
    Ответ написан
    Комментировать
  • Как получить текст ответа ASP Net Core API?

    NikFaraday
    @NikFaraday
    Student full-stack Developer
    Основным методом общения между клиентом и сервером являются Status Code. Зачем вам передавать точное описание, что там оно не нашло, если вы можете просто передавать 404 и клиент пусть сам генерирует себе ошибку.

    Вообще забудьте про этот бред return StatusCode. Есть нормальные методы StatusResult к которым относятся Ok(), BadRequest() и тот же NotFound(). В эти методы можете передавать какие-то мета-данные если вам нужно. Либо можете использовать Response.Headers. Но если вам прям очень-очень нужно впихнуть туда вот это вообще об ошибке, так что бы ваш сервер был на все руки мастер, можете сделать что-то типа такого:

    return NotFound(new { message = "Omg, Not Found!!!" });


    UPD:
    Как на клиенте через JS вытянуть ошибку? Я бы использовал просто ajax:

    $.ajax({
        url: '...',
        method: 'get',
        success: (response): {
            let data = JSON.parse(response.responseText);
            console.log(data.message); //Omg, Not Found!!!
        }
    });
    Ответ написан
    3 комментария
  • Как подключить proto файлы к проекту?

    NikFaraday
    @NikFaraday
    Student full-stack Developer
    Клик сюда
    660ebe1a9e832661047201.jpeg

    Далее сюда
    660ebe371e0df243799837.png

    Подключаете .proto файл. После этого делает Rebuild вашего solution'а. Потом даблклик по проекту, в этом .csproj файле ищите секцию ItemGroup в которой будут ваши Protobuf. К ним додаёте аттрибут ProtoRoot, который (Для удобной работы) должен быть таким же как и пусть в аттрибуте Include без указания названия файла .proto

    UPD:
    Так же стоит отметить, чтобы импортировать в .proto ваш другой .proto, они должны быть хотя бы на одном уровне. Другими словами, вы можете импортировать только файлы, который находятся по архитектуре на том же уровне или ниже, потому что в import запрещено использования символа точки и запятой. Это значит, что вы не сможете выйти на уровень выше
    Ответ написан
    7 комментариев
  • Не работает Visual Studio, начинающий изучатель C#?

    vabka
    @vabka Куратор тега C#
    Токсичный шарпист
    1. Работает.
    2. Все ошибки перечислены внизу.
    Ошибка у тебя в том что ты методы пишешь в неймспейсе, а не в классе - смотри внимательно, как код пишет ведущий.
    Ответ написан
    5 комментариев
  • Как сделать редирект на refresh-token когда получаю AuthenticationFailed на asp.net core web api?

    NikFaraday
    @NikFaraday Автор вопроса
    Student full-stack Developer
    Решил. Как это всё делается? Внутрь onAuthenticationFailed вставляем этот код:
    if (context.Exception?.GetType() == typeof(SecurityTokenExpiredException))
    {
        IJwtService jwtService = context.HttpContext.RequestServices.GetService<IJwtService>();
    
        if (context.Request.Cookies.TryGetValue("refresh-token", out string refreshToken))
        {
            Result<ClaimsPrincipal> principalResult = jwtService.ValidateAndDecodeToken(refreshToken);
            if (!principalResult.IsSuccess || principalResult.Value == null)
            {
                return Task.CompletedTask;
            }
    
            Result<string> renewAccessTokenResult = jwtService.Encode(principalResult.Value);
            if (!renewAccessTokenResult.IsSuccess && renewAccessTokenResult.ValidationErrors.Any())
            {
                return Task.CompletedTask;
            }
    
            context.Response.Cookies.Append("access-token", renewAccessTokenResult.Value);
            context.Response.StatusCode = 200;
            context.HttpContext.User = principalResult.Value;
            context.Principal = principalResult.Value;
            context.Success();
        }
    }
    return Task.CompletedTask;


    Т.е.. вызывает сервис, берём refresh token и из него извлекаем ClaimPrincipal, далее на его основе делаем access token из того же сервиса и обрабатываем запрос, что бы он возвращал нужный статус. Как говорил Andrei SunnyPh , это допустимая практика (Спасибо)
    Ответ написан
    Комментировать
  • Почему в Rust использую Tokio?

    @D3lphi
    Потому что она реализует то, чего нет в стандартной библиотеке - асинхронный рантайм. Если писать сетевое приложение без токио, то придется плодить по отдельному потоку на каждый сетевой коннекшен. (на самом деле, речь идет про любой i/o, к которому чтение/запись файлов тоже относится) Каждый из этих потоков большую часть времени будет заблокирован в ожидании завершения сететвого вызова (передачи или приема данных). Однако, операционная система при разблокировке этих тредов будет постоянно переключать контекст для каждого потока и тратить процессорное время.
    Асинхронный подход позволяет обойтись лишь сравнительно небольшим пулом потоков, на которые токио рантайм будет распределять таски (грин треды) и, таким образом, экономить процессорное время.
    Ответ написан
    9 комментариев
  • Как сделать самоподписанный сертификат доверенным на Windows?

    @NortheR73
    системный инженер
    надо импортировать cert.pfx в хранилище сертификатов локальной машины (через certlm.msc), затем там же перенести/скопировать импортированный сертификат в "Доверенные корневые центры сертификации"
    Ответ написан
    8 комментариев
  • Какие данные можно не указывать при регистрации домена?

    yesbro
    @yesbro
    Думаю, помогаю думать
    Лучше вводить все правильно. Из whois данные можно скрыть, у рег.ру такая возможность есть. Будет вот так

    domain: *****
    nserver: ns1.reg.ru.
    nserver: ns2.reg.ru.
    state: REGISTERED, DELEGATED, UNVERIFIED
    person: Private Person
    registrar: REGRU-RU
    admin-contact: http://www.reg.ru/whois/admin_contact
    created: 2024-02-11T05:41:55Z
    paid-till: 2025-02-11T05:41:55Z
    free-date: 2025-03-14
    source: TCI


    Самое важное, это Фамилия Имя Отчество, Паспорт Серия и номер Кем выдан Дата выдачи, Дата рождения - без этого потом ни домен не передать, ни к другому регистратору не перевести.
    Ответ написан
    1 комментарий
  • Какие есть фриланс-направления в разработке?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    Для вас ответы не будут иметь смысла. Вы ищете как бы не работать и получать деньги. Как бы не учиться и получить квалификационную профессию.
    Фриланс бывает ОЧЕНЬ и очень разнообразным. Но прибыльный фриланс начинается с высокого уровня сеньорности. Когда ты можешь сделать практически все.
    К этому моменту направления могут быть какие угодно, включая ентерпрайз.
    Ответ написан
  • В чём отличие между middleware и фильтрами в .Net?

    AshBlade
    @AshBlade Куратор тега C#
    Просто хочу быть счастливым
    Middleware - это часть ASP.NET Core. Они занимаются обработкой HTTP запроса, могут его изменять/дополнять. Например, производить авторизацию или, если запрос пришел от прокси, то разворачивать отображать HTTP заголовки
    Фильтры - это часть MVC, фреймворка внутри ASP.NET Core. Т.е. они часть контроллеров и предназначаются только для них, но могут работать и как Middleware (HttpContext поле доступно). Дополнительно, у них есть иерархия вызовов, в зависимости от типа фильтра, а middleware вызываются каждая и в зависимости от порядка их регистрации
    Ответ написан
    2 комментария
  • Как работать с компилируемым языком?

    vabka
    @vabka Куратор тега C#
    Токсичный шарпист
    При запуске ide, сначала нужно собрать: shift + f10, следом каждый раз мне нужно нажимать ctrl + f5.

    В гугле file watcher - там я могу указать только путь до .exe файла, это не то.

    dotnet watch run есть и hot reload.
    https://www.jetbrains.com/help/rider/Hot_Reload.html
    https://blog.jetbrains.com/dotnet/2022/09/12/jetbr...
    https://learn.microsoft.com/en-us/dotnet/core/tool...
    Ответ написан
    1 комментарий
  • В чём отличие между middleware и фильтрами в .Net?

    yarosroman
    @yarosroman Куратор тега C#
    C# the best
    Middleware работают на уровне запросов, а фильтры на уровне слоя MVC, применяются для контроллеров, actions.
    Ответ написан
    2 комментария
  • Есть ли хороший курс/книга про использование паттерна page object на C#?

    AshBlade
    @AshBlade Куратор тега C#
    Просто хочу быть счастливым
    Курс/книга ради одного паттерна - вряд ли можно найти хорошие.
    Page Object паттерн из GUI тестирования, поэтому искать там. Рекомендую курс от Selenium - https://www.seleniumtraining.com/selenium-c-sharp-...
    Там как раз есть 6 часовой туториал с проектом по Page Object, но он в платной подписке.

    Также по тестированию на C# есть книга Selenium with C# - в 12 главе описывается Page Object

    Есть статья на хабре, но думаю она только описывает этот паттерн, только для знакомства
    Ответ написан
    1 комментарий
  • Как работают SSR компоненты?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Если я правильно понимаю работу Next.js: компоненты без состояния рендерятся на сервере и могут индексироваться поисковыми роботами

    Верно, индексация стандартная.
    А с состоянием - на стороне клиента, и роботы их не видят.

    Не совсем. Поисковики индексируют динамику, но ограниченно, и она проиграет классической статике или ssr. То, что Вы видите динамику в топе - это не заслуга динамики, а недоработка конкурентов со статикой.
    Однако в компоненте самой страницы ArticlePage у меня в любом случае будет использование useState. Значит ли это, что вся страница будет отрисовываться на клиенте?

    Не совсем. Часть страницы будет отрисована на сервере, а часть на клиенте.
    И что поисковые роботы обойдут контент страницы стороной?

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

    К нексту у многих имеются вопросы, поэтому Вы не первый и уж тем более, не последний :)
    Ответ написан
    Комментировать