• Как организовать очередь сообщений в Kafka?

    Jeer
    @Jeer
    уверенный пользователь
    Ну это асинхронная обработка, типа норма ) я сносил внешние ключи в базе, прописывал правила в своей ORM. Наверно более правильный вариант делать таблицу входящих сообщений, типа инбокс, и уже с него пытаться распихивать по нормальным таблицам, если не записалось - делать ретраи через паузы
    Ответ написан
    Комментировать
  • Нормальная ли у меня теория по оценке вклада участников в стартап?

    Jeer
    @Jeer Автор вопроса
    уверенный пользователь
    Комментировать
  • Неуловимая 400 ошибка как поймать?

    Jeer
    @Jeer
    уверенный пользователь
    Привет,
    Какая модель отправляется? Что видно в инспекторе браузера на вкладке network? Headers, Payload, Preview
    На бекенде как написан контроллер, какие атрибуты, от какого класса наследуется?
    Как написан метод, интересуют параметры
    Ответ написан
    Комментировать
  • Как перезагрузить страницу после деплоя?

    Jeer
    @Jeer
    уверенный пользователь
    Если нужно прям с сервера отправлять команды на фронты, то надо реализовывать механизм двустороннего взаимодействия через веб сокеты.
    Типа, если у вас уже реализован какой-то чат на сайте, то норм, но ради одного пуша после обновления постоянно держать соединения мне кажется расточительством. Обновляйте не ломающими изменениями вначале бекенд, а фронт на следующий день ))
    Ответ написан
    Комментировать
  • Как отправить POST -запрос на сайт через консоль браузера?

    Jeer
    @Jeer
    уверенный пользователь
    возможно, вам нужно покурить расширения для хрома
    Пишете расширение для определенного (не вашего) сайта. У него можно сделать небольшой интерфейс, выпадающее окно с настройками (включить/выключить и может еще какое расписание нужно)
    У расширения будет доступ к дом-модели, сможете по селекторам выбирать какие-то кнопки и прожимать на них клики
    Запросы можно делать на тот же домен без проблем, если нужны запросы на другой домен (например, отправлять статистику на ваш сервер, то нужно на вашем сервере будет настраивать cors политики)
    Примера хз, под рукой нет, я такое давным-давно делал
    Ответ написан
    Комментировать
  • Как в реактивных формах Angular предотвратить ввод определённых символов?

    Jeer
    @Jeer
    уверенный пользователь
    Можешь на событие keyDown повесить функцию, внутри которой просто результат к цифрам кастишь или другую нужную тебе логику делаешь. Либо еще посмотри события (input) или что-то про change text
    Ответ написан
    Комментировать
  • Можно ли подменить экземпляр сервиса в DI?

    Jeer
    @Jeer Автор вопроса
    уверенный пользователь
    Я разобрался, регистрирую же по интерфейсу, доставать тоже нужно по интерфейсу и кастить
    var logger = _servicesProvider.GetRequiredService<ILogger<ConsumerHostedService<Entity>>() as FakeConsumerHostedServiceLogger;
    var msgs = logger.messages;
    Ответ написан
    Комментировать
  • Электронный дневник/календарь для самообучения?

    Jeer
    @Jeer
    уверенный пользователь
    Вам требуется что-то специфичное, в таком формате ничего не найти.
    Попробуйте поковырять просто основы планирования, посмотрите про кайздзен с применением трелло, это должно расставить по полочкам имеющуюся у вас информацию и должно быть достаточно
    Ответ написан
    Комментировать
  • Как объявить MemoryRouter в реакте с query параметрами?

    Jeer
    @Jeer Автор вопроса
    уверенный пользователь
    Пока писал походу сам разобрался, соррян
    render(
          <MemoryRouter initialEntries={["/epic/details?id=1"]}>
            <Routes>
              <Route path="/epic/details" element={<DetailsPage />} />
            </Routes>
          </MemoryRouter>
        );
    Ответ написан
    Комментировать
  • Какой фреймворк для логирования использовать в WPF приложении?

    Jeer
    @Jeer
    уверенный пользователь
    Посмотри Microsoft.Extensions.Logging + Serilog + Kibana - эта связка вроде как должна на всех типах проектов хорошо лежать (я не знаком с wpf, но вроде как разницы не должно быть)
    Ответ написан
  • Почему не обновляется страница react-context?

    Jeer
    @Jeer Автор вопроса
    уверенный пользователь
    Тут тоже никто не ответил, в общем, я переделал свой сервис на функцию вот так:
    import UserModel from "../models/user.model";
    import React from "react";
    
    const UserService = () => {
      const localStorageKey = "user";
      const [user, setStateUser] = React.useState<UserModel | null>(null);
    
      function getUser(): UserModel | null {
        if (user != null) return user;
    
        const usr = localStorage.getItem(localStorageKey);
        if (usr != null) setStateUser(new UserModel(JSON.parse(usr)));
    
        return user;
      }
    
      function setUser(val: UserModel) {
        localStorage.setItem(localStorageKey, JSON.stringify(val));
        setStateUser(val);
      }
    
      function logOut(){
        localStorage.removeItem(localStorageKey);
        setStateUser(null);
      }
    
      function isAuth(): boolean {
        return user != null && user.userName != null;
      }
    
      function hasRole(roleId: number): boolean {
        if (!user || !isAuth || user.roles == null) return false;
        return user.roles.indexOf(roleId) > -1;
      }
    
      return{
        getUser,
        setUser,
        logOut,
        isAuth,
        hasRole
      }
    }
    
    export default UserService;


    А свой провайдер с контекстом сделал вот так:
    import React, { useContext } from "react";
    import UserService from "../services/user.service";
    
    const userContext = React.createContext(null);
    
    export const UserProvider = ({ children }: any) => {
      const userService = UserService();
    
      return (
        <userContext.Provider value={userService}>
          {children}
        </userContext.Provider>
      );
    };
    
    export const useUser = () => useContext(userContext);

    Тут действительно контекст создается с null, как по мне выглядит довольно криво, но только так работает
    Ответ написан
    Комментировать
  • Как можно отрефакторить код?

    Jeer
    @Jeer Автор вопроса
    уверенный пользователь
    Что-то никто так и не ответил. В общем, нам нужно сделать некий обобщенный интерфейс и под него подтянуть наши шаги, которые потом можно вынести отдельно. Получится что-то такое:
    using CartCalculator.Models;
    
    namespace CartCalculator;
    
    public class Calculator
    {
        private readonly Product[] _allMenuProducts;
        private readonly Promocode[] _allAvailablePromocodes;
        private readonly DeliveryZone[] _allDeliveryZones;
    
        public Calculator(Product[] allMenuProducts, Promocode[] allAvailablePromocodes, DeliveryZone[] allDeliveryZones)
        {
            _allMenuProducts = allMenuProducts;
            _allAvailablePromocodes = allAvailablePromocodes;
            _allDeliveryZones = allDeliveryZones;
        }
    
        public double CalculateTotalPrice(Cart cart)
        {
            double totalPrice = 0;
    
            ICalculationStep[] steps =
            {
                new ProductsSumStep(_allMenuProducts),
                new PromoCodeStep(_allAvailablePromocodes),
                new DeliveryFeeStep(_allDeliveryZones),
            };
    
            foreach (var step in steps)
            {
                totalPrice = step.Calculate(cart, totalPrice);
            }
    
            return totalPrice;
        }
    }
    Ответ написан
    Комментировать
  • Как правильно подключить метрики c#?

    Jeer
    @Jeer Автор вопроса
    уверенный пользователь
    В общем, как обычно тупка какая-то, мне не нужно было выносить в отдельное поле, достаточно было зарегистрировать в конструкторе (стыдно за такие вопросы, но удалять не буду, что поделать)
    using System.Diagnostics.Metrics;
    
    namespace MyProject.Outbox;
    
    public class OutboxMetrics
    {
        private readonly IOutboxRepository _repository;
        public static readonly Meter OutboxMeter = new("Outbox");
        public readonly Counter<int> OutboxPublishCounter = OutboxMeter.CreateCounter<int>("outbox-publish");
    
        public OutboxMetrics(IOutboxRepository repository)
        {
            _repository = repository;
    
            OutboxMeter.CreateObservableGauge<long>("outbox-count", () => GetOutboxLength);
        }
    
        private long GetOutboxLength => _repository.GetLength().GetAwaiter().GetResult();
    }
    Ответ написан
    Комментировать
  • Как начать изучать ASP.NET Core?

    Jeer
    @Jeer
    уверенный пользователь
    Так просто нужно написать своё приложение ) если нет своих идей, можно скопировать что-то в лайт варианте, например, написать для себя таск-трекер (жира на минималках) или приложение по учету своих вещей (склад на минималках). А что непонятно как делать - подглядывать на метаните или других сайтах.
    Добавить логи/метрики/тесты/ci-cd, выложить на хостинг, посчитать, что винда дорого, добавить докер и развернуть в линуксе, переписать фронт на реакт... )
    Ответ написан
  • Почему getElementsByClassName - undefined?

    Jeer
    @Jeer
    уверенный пользователь
    Если элемент на страницу добавляется динамически, то через getElementsByClassName его получить нельзя. Гуглите в эту сторону, я не помню, как нужно обходить (раньше в jquery был метод .live, но те годы давно прошли, что-то должно быть в html5 нативное)
    Ответ написан
    Комментировать
  • В чем может быть причина, что не работает аутентификация через Cookies в asp.net?

    Jeer
    @Jeer
    уверенный пользователь
    Привет,
    На вид подключено правильно.
    Оставьте app.UseAuthorization(); и добавьте обычный метод рядом с фильтром [Authorization]
    Если он работает, то это дает гарантии, что подключено правильно )
    Попробуйте переставить блоки UseAuthentication и UseAuthorization поставить до или после UseStaticFiles, порядок может играть роль
    Ответ написан
    1 комментарий
  • Как дебажить JavaScript Visual Studio 2022?

    Jeer
    @Jeer
    уверенный пользователь
    Кто пробовал пользоваться отладчиком js в студии часто хапали проблемы. Я при установке студии сразу выключаю связь с браузером, это сделано коряво и неудобно.
    Все веб разработчики пользуются средствами разработчика хрома.
    если нужна точка останова, можно написать в js слово debugger и там остановится само, не нужно будет искать место
    в консоли можно получать(смотреть) и изменять значение переменных, это бывает удобно
    ну и третья полезная вкладка network, там можно смотреть, какие именно запросы и какие в них данные уходят/приходят
    Этого достаточно и удобно пользоваться
    Ответ написан
    Комментировать
  • Что учить для полного понимания ASP.NET CORE?

    Jeer
    @Jeer
    уверенный пользователь
    Привет, напиши почту, скину level assesment, там видно, что и как нужно знать и сможешь вести свой прогресс
    Ответ написан
    6 комментариев
  • Можно ли через бразуер соединить двух пользователей во видео связи по IP?

    Jeer
    @Jeer
    уверенный пользователь
    Что такое WebRTC?
    WebRTC (Web Real Time Communications) — это стандарт, который описывает передачу потоковых аудиоданных, видеоданных и контента между браузерами (без установки плагинов или иных расширений) или другими поддерживающими его приложениями в режиме реального времени. Данная технология позволяет превратить браузер в оконечный терминал видеоконференцсвязи. Чтобы начать общение, достаточно просто открыть веб-страницу конференции.
    Ответ написан
    Комментировать
  • Как переопределить встроенную валидацию в конвейер обработки запроса .net core?

    Jeer
    @Jeer Автор вопроса
    уверенный пользователь
    Нашел самостоятельно ответ,
    Речь идёт про автоматический ответ, если в запросе невалидная модель https://docs.microsoft.com/en-us/aspnet/core/web-a...
    И там же ниже показано, как убрать этот обработчик:
    https://docs.microsoft.com/en-us/aspnet/core/web-a...
    builder.Services.AddControllers()
        .ConfigureApiBehaviorOptions(options =>
        {
            options.SuppressConsumesConstraintForFormFileParameters = true;
            options.SuppressInferBindingSourcesForParameters = true;
            options.SuppressModelStateInvalidFilter = true; // вот это
            options.SuppressMapClientErrors = true;
            options.ClientErrorMapping[StatusCodes.Status404NotFound].Link =
                "https://httpstatuses.com/404";
        });
    Ответ написан
    Комментировать