• Как получать по 5 элементов из массива?

    @kttotto
    Netnamee, ладно, выпросили готовое решение
    n = 0;
    while(n < list.Count - 5)
    {	
    	// вариант 1
    	var slice = list.Skip(n).Take(5);
    	n += 5;
    	
    	// вариант 2
    	var slice = new ArraySegment<string>(list, n, n + 5);
    	n += 5;
    	
    	foreach(var el in slice)
    	{
    		// делаем что-то с el
    	}
    }
  • С# стоимость приведения типа?

    @kttotto
    Роман, если Вы в тип object явно не положили string, то при (string)obj по сути будет выполнен obj.ToString(), результатом будет новая строка с полным именем объекта.
  • С# стоимость приведения типа?

    @kttotto
    Роман, Во первых, не совсем правильный пример. Как раз при приведении object к string при касте будет создаваться новый объект. Речь идет только о классах. Во вторых, я не увидел примера, о котором я сказал, что не скомпилируется. Тип object является общим для всех, работает полиморфизм, поэтому ошибок при компиляции здесь не будет. Вы создайте Class1 и приведите его к типу Class2.
  • Где найти ментора для обучению верстки?

    @kttotto
    Сергей К, Вас не смущает, что все Вам отвечают практически одно и то же? И это действительно ответ. Но Вы считаете, что ответ должен быть другим. Но если Вы знаете, каким должен быть ответ, зачем тогда задавать вопрос. Вам ответили: на халяву - нигде, платно - на курсах, на работу, с Вашим подходом, Вы не устроитесь. Что в ответе может не устраивать? Что нет конкретного адреса и фамилий? Но тогда Вы ошиблись с профессией.

    Разработчик в IT (или верстальщик) всегда имеет дело с задачами, которые раньше не решал, где нет готовых решений и четких ответов. Все задачи решаются исходя из личного опыта, который можно получить только самостоятельно решая задачи. Все промежуточные нюансы есть в инете и книгах. И если Вы собираетесь дальше идти в профессию, то должны понимать, что находить решения этих нюансов без человека рядом это и есть профессионализм. Учитесь этому. А если будете ждать ответов, которые хотите услышать, остановитесь на вечном поиске ментора.
  • Где найти ментора для обучению верстки?

    @kttotto
    Сергей К, курсы, которые я знаю (они все в первой раздаче поисковика), всегда предполагают на время обучения менторство. Преподаватель, на время обучения, готов выделять время под любой Ваш вопрос в рамках курса. В плоть до того, что Вы расшариваете преподавателю свой экран и вы вместе решаете задачу.
  • Где найти ментора для обучению верстки?

    @kttotto
    Сергей К, Вам ответили, но Вы хотите услышать что-то другое.

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

    Поэтому есть два варианта: первый - купить менторство (т.е. купить курсы, где преподаватель будет с опытом реальной работы), второй - устроиться на работу. Но второй вариант для Вас маловероятен, обычно не нужны чисто верстальщики, еще нужно разбираться в сопредельных областях.
  • Где найти ментора для обучению верстки?

    @kttotto
    Сергей К, значит еще одни курсы и беритесь за что-то посложнее, чем лендиг.
  • Фрилансер без сайта и сотрудников и Персональные данные - оператор?

    @kttotto
    AngryMouse, Эти физлица платят наличкой?? Я так же работаю и с физлицами, но оплата через р/с и касса при этом не требуется.
    от знакомого получил информацию, что если получаю платежи на расч счет и веду переписку в имейл - то да, надо.

    Ваш знакомый шутник однако))
  • C# Как отсортировать символы вставкой?

    @kttotto
    Как сортировать цифры - это понятно.

    А в чем отличие символа от цифры? Берешь код символа и сортируй как числа.
  • Почему функция нестабильно читает файл?

    @kttotto
    Дмитрий Королев, Вы на русский гугл переводчиком переводили?)) Очень уж странные обороты речи)

    Я думаю, что проблема в ручном закрытии потока br.Close(). Такая вещь должна происходить в разделе
    finally, что собственно и делает using
    try
    	{ 	}
    	catch 
    	{   }
    	finally
    	{
    		if (br != null)
                br.Close();
    	}
  • Почему функция нестабильно читает файл?

    @kttotto
    Дмитрий Королев, возможно, что Вы же его открыли на чтение и не закрыли. Я не знаю всего Вашего кода, поэтому мне на пальцах судить тяжело.
    Я бы посоветовал создание ридера запихнуть в using
    using(var fs = new FileStream(path, FileMode.OpenOrCreate))
    using(var br = new BinaryReader(fs))
    {
    	string path = new FileInfo(...);
    	try
    	{ 
    		...
    		schedule = new ScheduleCollection(...);
    	}
    	catch 
    	{ ... }
    }

    В этом случае можно быть точно уверенным, что все закроется после отработки.
  • C#. Как исключить ошибку в данном случае?

    @kttotto
    Проблема в Single. Почитайте документацию, если он не находит результат, то бросает исключение. Используйте с дополнением Default, тогда если не находит, то вернет Null, в место проброса эксепшина. Но не забудьте тогда проверять output на null перед дальнейшим использованием.
  • Как изменить главную ветку в Pull Request?

    @kttotto
    DEATH2298, создайте новую ветку D из B, сделайте merge A в D и работайте с D. Можно rebase, но ветка A сольется с D в этом случае.
  • Как правильно варить многопоточность на тасках?

    @kttotto
    Виктор П., Нет, не три. Я действительно не верно написал. Я подразумевал, что Result всегда будет ожидать результат. Синтаксис, написанный Вами выше корректен и должен работать так, как Вы задумывали
    var task = db.Image.CountAsync();
    var task2 = db.Image.ToArrayAsync();
    Task.WaitAll(task, task2); // Это и есть ожидание всех результатов
    var result = task.Result;
    var result2 = task2.Result;


    Если хотите GetStatistic сделать асинхронным, сделайте так
    Task<ImgStatisticDto> GetStatistic(enImg section)
    {
    	return Task.Run(() =>
    	{
    		var res = new ImgStatisticDto(section);
    
                using (var db = ImagesContextFactory.Create(section))
                {
                    var count = db.Image.CountAsync();
                    var notReady = db.Image.Where(x => !x.IsReady).CountAsync();
                    Task.WaitAll(count, notReady);
                    res.Count = count.Result;
                    res.NotReady = notReady.Result;
                }
    
                return res;
    	}
    }


    Тогда будете его вызывать
    await GetStatistic(section)
    Либо в примере, который я давал с форичем, запихнуть запросы к бд в WaitAll.
  • Как правильно варить многопоточность на тасках?

    @kttotto
    Петр, Асинхронность не подразумевает многопоточность, о чем и говорится в статье.
  • Как правильно варить многопоточность на тасках?

    @kttotto
    Роман, А что такое Task? TPL это библиотека для работы с пулом потоков, обертка над thread, для более удобного использования и бОльшего контроля.
  • Как правильно варить многопоточность на тасках?

    @kttotto
    Виктор П.,
    Так в чем отличие
    Task.Wait(db.Image.CountAsync()) и Task.WaitAll(db.Image.CountAsync())

    В данном случае ни в чем. Отличие Wait от WaitAll, только в том, что второй принимает список задач.

    var task = db.Image.CountAsync();
    Task.Wait(task);
    var result = task.Result;

    Вы опять допускаете туже ошибку. На первой строке Вы получаете задачу, на второй вы дожидаетесь когда она выполнится, но результата задачи Вы не получите. На третей строке Вы ее опять запускаете, но с ожиданием получения результата, который уйдет в переменную result.
  • Как правильно варить многопоточность на тасках?

    @kttotto
    Виктор П., все это на коленке, просто чтобы смысл был понятен, но я бы предложил так
    var imgStatistics = new ConcurrentBag<ImgStatisticDto>();
    
    var enums = Enum.GetValues(typeof(enImg))
    	.Where(en => en != enImg.none)
    	.ToArray();
    	
    Parallel.ForEach(enums, async (section) => 
    {	
    	using (var db = ImagesContextFactory.Create(section))
    	{
    		var res = new ImgStatisticDto(section);
    		res.Count = await db.Image.CountAsync();
    		res.NotReady = await db.Image.Where(x => !x.IsReady).CountAsync();
    		
    		imgStatistics.Add(res);
    	}	
    });
  • Как правильно варить многопоточность на тасках?

    @kttotto
    Виктор П.,
    db.Image.CountAsync(); возвращает только задачу. Расценивайте это как обещание или план действий. Выполнение этой задачи будет, тогда, когда Вы попросите или запросите результат
    db.Image.CountAsync().Result
    await db.Image.CountAsync()
    db.Image.CountAsync().Wait()
    Task.Wait(db.Image.CountAsync())
  • Является ли хорошей практикой делать интерфейсы даже тогда, когда класс не планируется заменять?

    @kttotto
    Ryabos, "Правило первой пули" - это термин из какой-то книги гуру мира IT, которую я когда-то прочитал и где описывался принцип KISS ("Keep it simple, stupid"). В контексте, "первая пуля" означало "первые проблемы", которые возникали с текущей реализацией кода.