Давно работал с ClosedXML.Report, не подскажу. А зачем программно добавлять изображение? Там же вся прелесть в том, что оформляешь шаблон как хочешь средствами самого Excel а программно только данные предоставляешь. Или изображение динамически менять надо в зависимости от условий?
Недавно возникла инициатива собрать материалы для обучения C# для новичков и не только. Где-то раз в две недели проходит круглый стол на youtube. Материалы по встречам в репозитории на GitHub.
На ASP.NET Core MVC можно писать многостраничные приложения, но на ASP.NET Core Razor Pages просто удобней. Обработчики страницы, представление, модель представления расположены рядом, а не разнесены по разным папкам как контроллеры, модели и представления в случае MVC. MVC же хорошо тогда, когда нет представления, то есть веб-API. Так же если это многостраничное приложение, где страницы отправляют много запросов на частичное обновление, то есть смесь многостраничного приложения и веб-API. Или если переносится приложение с предыдущего ASP.NET Framework MVC, чтобы меньше кода переписывать.
Именно так. Плюс к этому full-stack разработчики часто склонны к синдрому самозванца, так как понимают, как много ещё не знают, и занижают свою стоимость. Кроме того, они нужны там где экономят на сотрудниках.
А подруга просто хороший переговорщик, плюс перегретый рынок, плюс повезло.
Скорее всего ответят, что есть одна ресурсоемкая задача, которая выделяется большой продолжительностью в сравнении с другими. Такую, возможно, действительно стоит запустить отдельным потоком.
KodeR0, нет. Но их легко задать себе самому. Типичная задача — реализовать изученный алгоритм на любом языке программирования.
Но если хочется задач, то можно пройти курс Тима Рафгардена по алгоритмам на lagunita.stanford.edu; эх, а не пройти ли мне его снова и теперь уже до конца :) Задания выполняются на любом языке программирования. Курс на английском. Но вышли переводные книги Рафгардена. Они тоже отлично подойдут новичку. И вот в них есть задачи. Фактически, это тот же курс.
Ну и если речь зашла про курсы, то наверняка упомянут курс Седжвика; один из немногих, которые я прошёл до конца :) Курс на английском, задания привязаны к Java. В отличие от Рафгарденовского тут нужно не реализовывать алгоритмы, а использовать готовые для решения поставленных задач. На курсере задания доступны обычно только в платной версии, но этот курс остался полностью бесплатным, емнип.
Один проект. В каждом файле класс и одно и то же пространство имен. Если класс статический, вызываешь из Main его метод. Иначе сначала создаёшь объект, потом вызываешь его метод.
Плюс к неизменяемости также добавляется:
возможность работать с функциями как с данными (передавать их другим функциям и возвращать),
композиция функций (объединение функций в одну функцию-конвейер),
каррирование (преобразование функции со многими аргументами в набор функций с одним аргументом).
Можно сказать, что функциональное программирование — это процедурное программирование с дополнительными ограничениями.
Ну не надо цепляться к словам и начинать выяснять кто главнее.
Нам, действительно, проще мыслить и моделировать в терминах ООП. И ООП никуда не денется. Но, по большому счёту, все эти методологии ООП, ФП и т.п. — это просто борьба со сложностью программ.
Почему ФП сейчас на подъёме? Прежде всего многопоточность, такое программирование позволяет проще распараллеливать программы, что очень ценно в эпоху многоядерных процессоров. Затем, отсуствие побочных эффектов, что облегчает тестирование.
Кроме того, популярным способом упрощения больших систем сейчас являются микросервисы, то есть вертикальная нарезка системы на небольшие сегменты. А микросервис всё равно на чём писать, хоть ООП, хоть ФП.
6 часов — это очень круто, если работать продуктивно и без хабра. ТК сообщает, что для группы В (творческие работники за компьютером) время работы должно быть не свыше шести 6 часов за смену, перерыв составляет 15 минут через каждый трудовой час.
Как по мне, ничего лучше разбиения на старые добрые академические часы с малыми и большими переменами не придумали. Впрочем, время можно подбирать индивидуально.