Pull to refresh
0
0
Игорь Руло @igoriok

Senior Software Engineer

Это потому что вы не используете IDisposable ресурсов, которые кидают ObjectDisposedException (например: HttpClient).
Вы неправильно используете IServiceScope — вы его уничтожаете сразу после создания, не дождавшись выполнения задачи. А используя ActivatorUtilities из Microsoft.Extensions.DependencyInjection можно избежать регистрации самих задач в контейнере.
Код
public class JobFactory : IJobFactory
{
    private readonly IServiceProvider _provider;

    public JobFactory(IServiceProvider provider)
    {
        _provider = provider;
    }

    public IJob NewJob(TriggerFiredBundle bundle, IScheduler scheduler)
    {
        return new JobWrapper(_provider, bundle.JobDetail.JobType);
    }

    public void ReturnJob(IJob job)
    {
        (job as IDisposable)?.Dispose();
    }
}

public class JobWrapper : IJob, IDisposable
{
    private readonly IServiceScope _serviceScope;
    private readonly IJob _job;

    public JobWrapper(IServiceProvider serviceProvider, Type jobType)
    {
        _serviceScope = serviceProvider.GetRequiredService<IServiceScopeFactory>().CreateScope();
        _job = ActivatorUtilities.CreateInstance(_serviceScope.ServiceProvider, jobType) as IJob;
    }

    public Task Execute(IJobExecutionContext context)
    {
        return _job.Execute(context);
    }

    public void Dispose()
    {
        _serviceScope.Dispose();
    }
}

public class DataJob : IJob
{
    private readonly IEmailSender _emailSender;

    public DataJob(IEmailSender emailSender)
    {
        _emailSender = emailSender;
    }

    public async Task Execute(IJobExecutionContext context)
    {
        await _emailsender.SendEmailAsync("example@gmail.com", "example", "hello");
    }
}

Если начинать изучать, то лучше сразу с ASP.NET Core и Entity Framework Core. Для MySQL лучше использовать MySqlConnector.
Rider хорош, но вот как работать в команде, если у всех только студия? Но как альтернатива покупке Resharper'а может некоторым и зайдёт.

или диванных оставить в своей песочнице, а клава-мышей кидать к пк-шникам

В Fortnite долгое время был просто зверский L2R2 (прицел-выстрел) auto-aim. И все клава-мышеры писали кипятком от постоянных хедшотов. Поэтому конкретно в Fortnite проблема скорее не в прицеливании, а в недостатке кнопок (привет Scuf). А так многие профессионалы играют только на джойстике.

С .net 4.7 новых фишек вообще не было последние 2 года, а с выходом 4.8 особо ничего не изменилось.
А меня наоборот пугают такие веяния. Сейчас .NET Core кажется более независимым от LTS цикла и развивается настолько быстро насколько вообще может. А так получается что новые фишки будут приходить только раз в год. Я больше за то, чтобы .NET Framework 5 был более стабильным подмножеством .NET Core с LTS.

Отличная статья, спасибо. Ещё хотелось бы узнать про dynamic volume provisioning на bare-metal.

Базовые образы уже давно поменялись:
для сборки: microsoft/dotnet:2.2-sdk
для публикации: microsoft/dotnet:2.2-aspnetcore-runtime
и минимальные образы: microsoft/dotnet:2.2-aspnetcore-runtime-alpine
И уже в альфе 3.0 версия которая будет запускаться исключительно на netcoreapp 3.0.

Материал изложен прекрасно. Но к сожалению (а может и к счастью) обходит стороной реальный процесс настройки кластера (kubeadm, kops, terraform) и принцип работы его основных компонентов (kubelet, kube-proxy, kube-apiserver, kube-scheduler, kube-controller-manage и прочие).

Для работы я бы рекомендовал покупать мониторы с USB Type-C входом, например: Samsung S27H850QFN. У LG есть получше. Монитор + зарядка (Power Delivery) + USB-хаб и всего один провод на столе.

Тренд Ютуба. Бессмысленный и беспощадный. Но функционал полезный.

Внедрение web real-time communications снизило задержку живого видео с камер в 5-7 раз

Это по сравнению с чем? HLS? Какова вообще реальная задержка real-time видео?

Есть ли вообще смартфоны без фронталки с большим дисплеем (свыше 90% площади) и с нормальными характеристиками?

В цивилизованном мире Крым — это часть Украины, аннексированная Россией.
Виндузятникам привет от тИШ ЁЯдЦ тИй ЁЯНП

Почитайте про ARM big.LITTLE. В кратце, так проще оптимизировать энергоэффективность.

Осталось прикрутить X-Forwarded-*, Load Balancer, кеширование и… тогда легче настроить nginx или HAProxy.

— Скорость порта на уровне 2.0
— Нет поддержки USB Type-C Alt Mode (USB 3.1)
— Нет поддержки Quick Charge (только свой Dash Charge)
Говорят, это всё из-за Dash Charge от Oppo, который распиновкой не совместим со стандартом 3.1.

Information

Rating
Does not participate
Location
Николаев, Николаевская обл., Украина
Date of birth
Registered
Activity