Рубрики
devops

Gitea + Drone = CI/CD

Небольшое введение или зачем эта затея?

Первое, с чего нужно начать любому разработчику, это выбор его главного инструмента, оптимизирующего большинство его временных затрат. Таковым является его рабочий репозиторий. Сейчас существует большое количество различных вариантов, где painless можно хранить свою работу.  

Можно конечно и не считать это за проблему и хранить свои наработки и пет проекты где нипопадя, но какие-то локальные проблемы рано или поздно возникнут и не дадут вам спать спокойно.  

Моя статья могла бы и рассмотреть репозитории из большой тройки (github, gitlab, bitbucket), но сейчас появилась отличная конкурентоспособная альтернатива в виде Gitea, которую можно разместить на любом сервере. 

Из плюсов можно выделить то, что весь этот проект написан на go, а также возможность запуска без дополнительного сервера — и обычную и docker версию можно поднять на машине, прокинув порты. 

Рубрики
Blazor

Упрощаем Lifetime Blazor приложения

Исходя из проблематики предыдующей статьи, у меня появились следующие наработки.

30% моих компонентов инициализируются через метод OnInitialized(), а все остальные 70% через оверрайдинг метода OnComponentMountAsync(). Такого метода не существует, но когда я поддержал его в своей компонентной базе, то перестал задумываться о проблемах с построением асинхронных кейсов внутри приложения.

В качестве основы я создал интерфейс IAsyncComponentBase.cs, который оговаривает, что компоненты, наследующие данный интерфейс имеет доступ к специальному делегату. Его вызов приводит к попытке перерендеривания страницы.

using System.Threading.Tasks;

namespace blazor_lifetime.Models
{
    public delegate Task RenderHandleAsync();
    public interface IAsyncContentRenderer
    {
        RenderHandleAsync RenderChildContentAsync { get; set; }
    }
}
Рубрики
Blazor

Проблемы асинхронного лайфтайма Blazor

За долгое время работы с Blazor, начиная с самых ранних сборок и заканчивая .NET Core 3.1.0 мне пришлось достаточно детально рассмотреть процесс взаимодействия с этим фреймом.

И наверно самым главным элементом в данной тематике можно выделить лайфтайм компонента ComponentBase. Если вы хоть раз заглядывали в этот абстрактный интерфейс, то вы наверняка знаете про три метода и три асинхронные перегрузки этих методов. (OnInitialized, OnParametersSet, OnAfterRender).

Не заглядывая в документацию можно с легкостью ответить, за что ответственен каждый из этих методов.