В нашей компании тоже минувшим летом организовали обучение по трем направлениям — фронтенд (ангуляр), бэкенд (.net, ms sql, etc.) и devops. Вызвался вести семинары (бэк) вместе с еще одним коллегой, и ничуть не пожалел.
На первом занятии собралось 15 человек, правда половина из них почти сразу отвалилось. Но по окончании двух месяцев занятий (по плану собирались раз в неделю, но почти каждую неделю проводили по два занятия) осталось пятеро человек, которые демонстрировали то что успели сделать, и в итоге четырем направили оффер. Двое уже работают с нами в команде.
Понравилось, когда обучаешь людей новым интересным для них вещам, видишь позитивный отклик.
Думаю, минусы оттого, что Ваш комментарий не содержит ничего по теме статьи, лишь жалобу про ограниченный профиль. Оппонируйте, или выскажите свою мысль, которая будет развивать представленные в статье тезисы.
Мы на своём проекте договорились следовать конвенции FindUser(int id) — поиск по идентификатору, если не найден — вернуть null; GetUser(int id) — получить юзера по известному идентификатору. И во втором случае уже при неудачной попытке будет выброшено исключение.
Вспоминаю историю, как в какой-то стране (вроде Великобритании) на съездах устанавливали отбойники, которые из-за трамплинообразной формы провоцировали опрокидывание автомобиля в случае наезда на них на скорости.
Из-за того, что статистику анализировали на основе координат ДТП, долгое время проблема оставалась невыявленной, а власти не спешили признавать проблему — ведь «горячих точек» на карте не было, аварии были распределены по множеству съездов и перекрестков.
Часто использую VS Code как «продвинутый блокнот», и частым сценарием является вставка и форматирование json-ответов, для удобного просмотра их содержимого: вставить в новый документ, переключить язык документа на json (Ctrl-Shift-P -> Change lang mode), форматирование json (Alt-Shift-F).
Недавно нашёл способ пропустить второй шаг, установив дефолтный языковой режим для нового документа настройкой
Полагаю, нужно разграничивать цели, для которых можно использовать такой подход.
Например, для кода с бизнес-логикой extension-методы очень редко используются — их трудно мокать, как уже упомянули выше. Да и в целом такой код иногда нуждается в полиморфизме, то есть переопределении логики для классов-наследников.
Для инфраструктурного кода методы расширения — это очень мощный инструмент, который позволяет писать более декларативный код без необходимости изменения классов, с которыми он работает (а иногда к ним может вообще не быть доступа, например для классов из сторонних библиотек). Поскольку такой код обычно не содержит бизнес-логики, то вопрос с юнит-тестами не стоит так остро.
Впрочем, и для методов расширения можно реализовать механизмы, которые позволят переопределить логику работы в юнит-тестах, если внутри них обращаться к синглтону, который и содержит логику их работы, и может быть подменён при запуске тестов.
В предыдущих примерах при отсутствии файла appsettings.json приложение выбросит исключение
Если для создания хоста приложения (в файле Program.cs) используется метод CreateDefaultBuilder, то файл «appsettings.json» уже добавлен с опциями «optional: true» и «reloadOnChange: true»:
Насколько я помню из нумизматики, тогда (в начале XVIII века) года вовсе буквами обозначали. Например АѰЕ
обозначало 1705.
Если кому интересно, можно погуглить «год буквами на монетах»
Так нет такого «нулевого года», именно об этом речь. Когда человек рождается, он проживает первый год.
Сейчас на дворе две тысячи двадцатый год, то есть прошло от начала эры только 2019 полных лет.
Согласен: если речь идёт о функции, которая принимает object и сверяет его тип на соответствие конкретным типам, такой код явно пахнет.
Но в случае, например, Union-типов, когда на входе у нас, например, `Customer | Error`, можно обработать ошибочный сценарий в функциональном стиле при помощи паттерн-матчинга. Эх, вот бы наконец завезли в C# Union-типы…
Вряд ли там наберется материала на 8 постов, тем более некоторые функции там достаточно тривиальны. Поэтому решил оформить одним постом, и вот три часа назад опубликовал: в комментариях пост был принят достаточно тепло, а на гитхабе прибавилось несколько звёздочек и целых 6 человек сегодня клонировали репозиторий)) Спасибо Вам за мотивацию! =)
вкладка полезна людям, которые пользуются макросами в экселе
Не совсем так. Надстройка общего назначения. Например, среди функций есть преобразование чисел из текстовой формы:
Частая боль при работе с числами, отформатированными как текст
При обработке выгрузки из сторонней системы в эксель числа отформатированы как текст, и их нельзя ни просуммировать, ни среднее арифметическое посчитать. Приходится изобретать хаки (например, при помощи функции «текст по столбцам»). В моей надстройке есть функция, которая позволяет преобразовать текст в числа, гибко учитывая различные десятичные разделители: например, «12.34», «56,78»). Конечно, такая гибкость может и подвести — например, для «1.234» неочевидно, является ли точка разделителем дробной части или тысяч.
Поэтому предполагаю, что круг людей, которым проект может быть полезным, гораздо шире. Вот список функций:
Список остальных функций
подсветка дублей (разными цветами группы одинаковых значений)
очистка текста от «лишних» пробелов по краям ячейки и повторных пробелов в середине
интерактивный поиск всех формул с ошибками ("#Н/Д" и другие) на листе
«размерживание» объединенных ячеек с их заполнением
снятие пароля с защищённой книги и листов
экспорт таблицы в markdown
проверка значений в выделенном диапазоне ячеек (числа, даты, валидный текст для XML и т.д.)
Также есть функции по работе с XML, не относящиеся напрямую к Excel, но в которых иногда возникает потребность, а инструмента, который бы свободно распространялся и вызывал доверие, у меня сходу найти не получилось:
сформировать пример XML файла на основе XSD-схемы
проверить XML по XSD-схеме
На пикабу я не решился писать «рекламный» пост именно о своей надстройке, и описал общие приемы и советы по отладке VBA и созданию xlam-надстройки, лишь в конце упоминая свой проект. Вот сейчас задумался, может быть всё-таки стоит представить свой проект отдельным постом — конечно, читателей Хабра таким не впечатлить, но на Пикабу может зайти. =)
P. S. подписался на Вас, буду читать новости о «малиновых» компьютерах)
На первом занятии собралось 15 человек, правда половина из них почти сразу отвалилось. Но по окончании двух месяцев занятий (по плану собирались раз в неделю, но почти каждую неделю проводили по два занятия) осталось пятеро человек, которые демонстрировали то что успели сделать, и в итоге четырем направили оффер. Двое уже работают с нами в команде.
Понравилось, когда обучаешь людей новым интересным для них вещам, видишь позитивный отклик.
Из-за того, что статистику анализировали на основе координат ДТП, долгое время проблема оставалась невыявленной, а власти не спешили признавать проблему — ведь «горячих точек» на карте не было, аварии были распределены по множеству съездов и перекрестков.
Недавно нашёл способ пропустить второй шаг, установив дефолтный языковой режим для нового документа настройкой
"files.defaultLanguage": "json"
stackoverflow.com/questions/35904221/change-vscode-default-language-for-new-files
Например, для кода с бизнес-логикой extension-методы очень редко используются — их трудно мокать, как уже упомянули выше. Да и в целом такой код иногда нуждается в полиморфизме, то есть переопределении логики для классов-наследников.
Для инфраструктурного кода методы расширения — это очень мощный инструмент, который позволяет писать более декларативный код без необходимости изменения классов, с которыми он работает (а иногда к ним может вообще не быть доступа, например для классов из сторонних библиотек). Поскольку такой код обычно не содержит бизнес-логики, то вопрос с юнит-тестами не стоит так остро.
Впрочем, и для методов расширения можно реализовать механизмы, которые позволят переопределить логику работы в юнит-тестах, если внутри них обращаться к синглтону, который и содержит логику их работы, и может быть подменён при запуске тестов.
Если для создания хоста приложения (в файле Program.cs) используется метод CreateDefaultBuilder, то файл «appsettings.json» уже добавлен с опциями «optional: true» и «reloadOnChange: true»:
github.com/dotnet/aspnetcore/blob/7e9e03b70124784b1de5564c573bd65cdaccbfcc/src/DefaultBuilder/src/WebHost.cs#L173
В том-то и дело, что не прошел — нумеруя год единицей, мы говорим что он первый. В прямом смысле — самый первый год (относящийся к нашей эре).
АѰЕ
обозначало 1705.
Если кому интересно, можно погуглить «год буквами на монетах»
Сейчас на дворе две тысячи двадцатый год, то есть прошло от начала эры только 2019 полных лет.
ru.wikipedia.org/wiki/От_Рождества_Христова
должно быть
Иначе просто не скомпилируется.
Но в случае, например, Union-типов, когда на входе у нас, например, `
Customer | Error
`, можно обработать ошибочный сценарий в функциональном стиле при помощи паттерн-матчинга. Эх, вот бы наконец завезли в C# Union-типы…Источник
Пример отсюда
Не совсем так. Надстройка общего назначения. Например, среди функций есть преобразование чисел из текстовой формы:
Поэтому предполагаю, что круг людей, которым проект может быть полезным, гораздо шире. Вот список функций:
Также есть функции по работе с XML, не относящиеся напрямую к Excel, но в которых иногда возникает потребность, а инструмента, который бы свободно распространялся и вызывал доверие, у меня сходу найти не получилось:
На пикабу я не решился писать «рекламный» пост именно о своей надстройке, и описал общие приемы и советы по отладке VBA и созданию xlam-надстройки, лишь в конце упоминая свой проект. Вот сейчас задумался, может быть всё-таки стоит представить свой проект отдельным постом — конечно, читателей Хабра таким не впечатлить, но на Пикабу может зайти. =)
P. S. подписался на Вас, буду читать новости о «малиновых» компьютерах)