private record DeserializerKey(byte[] contentType, byte[] contentEncoding)
{
public virtual bool Equals(DeserializerKey? other)
{
if (other == null) return false;
return this.contentType.SequenceEqual(other.contentType) &&
this.contentEncoding.SequenceEqual(other.contentEncoding);
}
public override int GetHashCode()
{
return HashCode.Combine(new BigInteger(contentType), new BigInteger(contentEncoding));
}
};
<BootstrapCol bWidth="col-lg-3" labelText="Priority">
<PriorityCol priorityId={epic.priority} />
</BootstrapCol>
<BootstrapCol bWidth="col-lg-3" labelText="Reporter">
<UserCol userId ={epic.reporter} />
</BootstrapCol>
services
.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
.AddCookie(CookieAuthenticationDefaults.AuthenticationScheme, o =>
{
o.Cookie.HttpOnly = true;
o.Events = new CookieAuthenticationEvents
{
OnRedirectToLogin = redirectContext =>
{
redirectContext.HttpContext.Response.StatusCode = 401;
return Task.CompletedTask;
}
};
});
// ...
app.UseAuthentication();
app.UseAuthorization();
services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer(options =>
...
public readonly Meter OutboxMeter = new("Dodo.Kafka.Outbox");
public readonly Counter<int> OutboxPublishCounter = OutboxMeter.CreateCounter<int>("outbox-publish");
// Cannot access non-static field 'OutboxMeter' in static context
var client = _factory.WithWebHostBuilder(builder =>
{
builder.ConfigureServices(services =>
{
var sp = services.BuildServiceProvider();
using var scope = sp.CreateScope();
var scopedServices = scope.ServiceProvider;
var db = scopedServices.GetRequiredService<ApplicationContext>();
// Тут можно работать с базой. В туториале код выносится в static файл, куда передаётся контекст
// Это уже не очень хороший вариант, но что больше напрягает,
// Остальной код вокруг подразумевается дублировать в каждом методе
});
}).CreateClient();
Та же можно использовать стандартное свойство Model внутри контроллера и из него свойство IsValid для валидации
Когда читал про докер, везде пишется, что образ собирается по слоям, берется базовый образ и на него накручиваются слои. Эта парадигма сильно укрепилась в голове.
Теперь я нашел, что команда FROM не относится к этим слоям, а считается как многоступенчатая сборка, то есть, имея несколько инструкций FROM мы копируем какие-то только необходимые артефакты, избавляясь по прохождению этих шагов от ненужного. Тут было не очевидно, что в результат попадет только последний шаг.
Получается, что на размер образа не будет влиять, сделаю ли я сборку на своей тачке и засуну в докер только нужные файлы из папки паблиша, либо внутри докера сделаю многоступенчатую сборку, окей
Создайте отдельный ответ, отмечу его решением