4119
Админ - @haarrp @itchannels_telegram - 🔥 лучшие ит каналы @ai_machinelearning_big_data - машинное обучение @programming_books_it - бесплатные it книги @pythonl - 🐍 @ArtificialIntelligencedl - AI @datascienceiot
Ребята, дайте бан это человеку, @DmitryMorozov24 , развод полный 😊
Читать полностью…
Надо всегда стараться грязный код вытаскивать максимально близко к точке входа в приложение или в настройки DI
Читать полностью…
а разве это нормально что вызывающий класс знает какая строка подключения должна быть, разве это не противоречит SOLID?
Читать полностью…
Application. Run совершит свою работу только тогда когда главный поток приложения завошит свою работу.
Читать полностью…
public PersonalProcess(ICache sr)
{
_actualBalancesCache = sr(*подключение*);
}
в эту сторону нужно двигаться?
Так передавайте им тогда уже подготовленное подключение чтобы они не знали что есть 2 базы
Читать полностью…
поэтому их два. Один добавляет инфу о классе A, второй про Б
Читать полностью…
Все очень криво. Поясните зачем вам 2 базы и 2 одинаковых класса?
Читать полностью…
Точнее можно посмотреть консоль и без студии. Но это еще больший геморрой. Сначала запустить консоль а потом из нее запустить само приложение.
Читать полностью…
Ну это уже экзотика и работать будет только в режиме отладки.
Читать полностью…
Console.WriteLine только консоль вы эту никогда не увидите :)
Читать полностью…
#вакансия #job #работа #.NET #nodejs #vue #express #webpack #nginx #html5 #css3 #english #удалёнка #fulltime
Вакансия: Fullstack Senior developer;
Компания: Top Selection;
Уровень зп: от 400 000 - 520 000 ₽ gross;
Локация: Россия;
Формат: офис/удаленная работа;
Занятость: fulltime, 5/2;
Опыт: от 3х лет;
Друзья, в компанию по производству телекоммуникационного оборудования в настоящий момент требуется Fullstack Senior developer в команду разработки ПО для телекоммуникационных систем.
Обязанности:
· Разработка frontend+backend для сервера телекоммуникационного оборудования;
· Документирование написанного кода.
Требования:
· Высшее образование;
· Опыт работы с Node.js от 3 лет;
· Обязательный опыт работы с Vue.js, Express, Webpack, Nginx;
· .NET (C#) 3+ года;
· Отличное знание HTML5 и CSS3;
· Технический английский язык (чтение документации);
Условия:
· Работа в команде;
· Офис (5 минут пешком от метро Бабушкинская) или удаленная работа по России;
· Уровень зп от 400 000 ₽ до 520 000 ₽ gross (обговаривается с кандидатом);
· Оформление по ТК РФ, отпуск 28 календарных дней, белая зарплата на карточку;
· ДМС;
· Полный рабочий день, возможна удаленная работа.
Контакты:
По всем вопросам обращайтесь в Telegram @leonety_lety или на емаил igwtforever7@gmail.com
В DI нет. Это самая грязная зона приложения. Там никах солидов нет
Читать полностью…
public PersonalProcess(ServiceResolverForCache sr)
{
_actualBalancesCache = sr(ImplementationCache.Personal);
}
Если вот этот класс хочет вызвать ICache реализацию, как мне через DI ему подавать подключение, у меня проблема конечно с DI, не беситесь сильно если глупости пишу
в одной базе в редисе лежит одна инфа, в другой другая, каждый класс делает что-то со своей базой
Читать полностью…
Друзья, посоветуйте, пожалуйста, куда двигаться и как лучше это сделать.
У меня есть интерфейс A и от него наследуются классы a, b. Все два класса делают одно и то же, взаимодействуют с Redis, но с разными базами данных.
a с первым, b со вторым. По сути, их код один и тот же, номер базы я передаю конструктору класса через IOptions<RedisOptions>, где у меня есть поля numDbOne, numDbTwo и так далее.
public class AListManager : ICache
{
private ConnectionMultiplexer _connection;
private int dbNum;
public AListManager(IOptions<RedisOptions> options)
{
dbNum = options.Value.AListDbNum;
ConfigurationOptions config = new ConfigurationOptions()
{
EndPoints = { options.Value.RedisServer, options.Value.RedisPort },
AbortOnConnectFail = false,
ConnectTimeout = options.Value.ConnectTimeout
};
_connection = ConnectionMultiplexer.Connect(config);
}
public async Task AddAsync(Data data)
{
DataCache cache = new DataCache()
{
AA= data.aa,
FF= data.ff,
};
var db = _connection.GetDatabase(dbNum);
await db.StringSetAsync(cache.aa + cache.ff JsonSerializer.Serialize(cache));
}
public async Task<DataCache?> GetAsync(long aa, string ff)
{
var db = _connection.GetDatabase(dbNum);
var result = await db.StringGetAsync(aa + ff);
if (result.HasValue)
return JsonSerializer.Deserialize<DataCache>(result);
else return null;
}
public async Task<bool> ExistAsync(long aa, string ff)
{
var db = _connection.GetDatabase(dbNum);
return await db.KeyExistsAsync(aa + ff);
}
public async Task RemoveAsync(long aa, string ff)
{
var db = _connection.GetDatabase(dbNum);
await db.KeyDeleteAsync(aa + ff);
}
}
`public PersonalProcess(ServiceResolverForCache sr)
{
_actualBalancesCache = sr(ImplementationCache.Personal);
}`
`public delegate ICache ServiceResolverForCache(ImplementationCache key);
public enum ImplementationCache
{
Personal,
Base
}`
`services.AddSingleton<ServiceResolverForCache>(serviceProvider => key =>
{
switch (key)
{
case ImplementationCache.Base:
return serviceProvider.GetService<BListManager>();
case ImplementationCache.Personal:
return serviceProvider.GetService<AListManager>();
default:
return null;
}
});`
Ну там же в свойствах проекта можно включить, чтобы и форма и консоль отображались
Читать полностью…
Возможно это связано с тем что в яве все методы виртуальные и если где-то в коде класса вы вызываете публичный метод его кто-то сможет переопределить и класс вести себя будет не так как должен
Читать полностью…