Контакты
Местоположение
Россия, Тюменская обл. и Ханты-Мансийский АО, Тюмень

Наибольший вклад в теги

Все теги (15)

Лучшие ответы пользователя

Все ответы (29)
  • Что предпочтительнее: наследование или обёртка?

    SergeyEgorov
    @SergeyEgorov
    Веб разработчик
    Парсер в данном случае просто интерфейс. Поскольку Python - язык с динамической типизацией, то наследование или обертки не требуются вовсе. Просто все конкретные парсеры должны реализовать подразумеваемый интерфейс:
    class CsvParser:
        def parse(self, file_name):
    
    class XlsParser:
        def parse(self, file_name);


    Экземпляры конкретных парсеров, по мере их появления складываем в обычный словарь, где ключ - это расширение файла, под которое заточен парсер.

    { 'csv': CsvParser(), 'xls': XlsParser(), 'xml': XmlParser() }


    В конечном итоге можно реализовать поставщик парсеров, который будет выбирать подходящий парсер из вышеозначенного словаря, используя расширение имени файла:

    class ParserProvider:
            def provide(file_name):
    Ответ написан
    Комментировать
  • Как избавиться от ошибки "Both an existing DbConnection and a connect" при тестировании приложения в xUnit?

    SergeyEgorov
    @SergeyEgorov
    Веб разработчик
    Ну так в примере https://docs.microsoft.com/en-us/ef/core/miscellan... , из которого вы код взяли английским же по белому написано https://docs.microsoft.com/en-us/ef/core/miscellan...

    А вы тем не менее у себя именно и настраиваете два поставщика баз в контексте.

    Здесь настраиваемся на использование файлового экземпляра:
    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
    	optionsBuilder.UseSqlite("Filename=dbTest.db", options =>
    	{
    		options.MigrationsAssembly(Assembly.GetExecutingAssembly().FullName);
    	});
    
    	if (!optionsBuilder.IsConfigured)
    	{
    		optionsBuilder.UseSqlite("Filename=dbTest.db");
    	}
    
    	base.OnConfiguring(optionsBuilder);
    }


    А в тесте хотим чтобы база разворачивалась в памяти:
    var connection = new SqliteConnection("DataSource=:memory:");
    connection.Open();
    
    var options = new DbContextOptionsBuilder<MyDbContext>()
    	.UseSqlite(connection)
    	.Options;


    Исправьте метод OnConfiguring:

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
    	if (!optionsBuilder.IsConfigured)
    	{
    		optionsBuilder.UseSqlite("Filename=dbTest.db", options =>
    		{
    			options.MigrationsAssembly(Assembly.GetExecutingAssembly().FullName);
    		});
    	}
    
    	base.OnConfiguring(optionsBuilder);
    }
    Ответ написан
    1 комментарий
  • Как автоматически менять ссылку на файл/видео?

    SergeyEgorov
    @SergeyEgorov
    Веб разработчик
    Чтобы такое реализовать, конечный потребитель не должен никогда видеть реальный URL ресурса, к которому ограничивается доступ.

    Конечному потребителю отдается ссылка на прокси метод с приложенным одноразовым токеном, срок действия которого ограничен. Примерно так: `https://acme.videos/download?token=98sт3nl128d29sh... При этом метод download при получении запроса, проверяет действителен ли еще токен, и если токен действителен, то он загружает видео из внутреннего хранилища и отправляет его потребителю.
    Ответ написан
    Комментировать
  • Как правильно организовать обращение к внешнему REST сервису?

    SergeyEgorov
    @SergeyEgorov
    Веб разработчик
    В неправильном.
    Ответ написан
    Комментировать
  • Где найти исходник договора с заказчиком, чтобы не мучиться с правками?

    SergeyEgorov
    @SergeyEgorov
    Веб разработчик
    Выберите любой из вариантов для вставки в договор:
    1. Исполнитель обязуется за свой счет исправить десять обнаруженных в процессе эксплуатации продукта ошибок.
    2. Исполнитель обязуется за свой счет исправить обнаруживаемые в процессе эксплуатации продукта ошибки, выявленные в течение одного календарного месяца с момента сдачи продукта Заказчику.
    3. Исполнитель обязуется исправить обнаруживаемые в процессе эксплуатации продукта ошибки за половину стоимости стандартной ставки оплаты его услуг.
    Ответ написан
    Комментировать