This media is not supported in your browser
VIEW IN TELEGRAM
«Мало, Смаев 320 жмёт»
🔥20❤5🤩3👍2
StepOne | Степан Минин
Сентябрь 2024 точно будет гореть 🔥 Ведь StepOne выступит аж на трёх конференциях!!! Настоящий дотнет тур! 1️⃣ 5-8 сентября, DevFest в Омске Искусство unit-тестирования. Сокращаем Arrange до нуля 2️⃣ 10-11 сентября, DotNext в Москве Как в C# 11 появилась обобщенная…
Вот и отъездил три конфы этой осени
На самом деле, их могло быть четыре, но от четвёртой отказался, поскольку она уже была не по силам…
В процессе произошла очень крутая вещь, которой хочется поделиться
На каждом из мероприятий я встретил своих подписчиков
И все рассказали, как подписка на StepOne изменила их жизнь в лучшую сторону
Кому-то нравится контент по шарпам, кому-то заходят мои идеи, кто-то просто угарает
Вести соцсети сложно, потому что практически не встречаешь своего влияния на реальный мир
Но ваши рассказы о том, как отдельные советы с канала меняли целые процессы разработки в командах нереально заряжают двигаться дальше
Спасибо, что читаете ❤️
В процессе произошла очень крутая вещь, которой хочется поделиться
На каждом из мероприятий я встретил своих подписчиков
И все рассказали, как подписка на StepOne изменила их жизнь в лучшую сторону
Кому-то нравится контент по шарпам, кому-то заходят мои идеи, кто-то просто угарает
Вести соцсети сложно, потому что практически не встречаешь своего влияния на реальный мир
Но ваши рассказы о том, как отдельные советы с канала меняли целые процессы разработки в командах нереально заряжают двигаться дальше
Спасибо, что читаете ❤️
❤25👍10🥰2❤🔥1
Задача со звёздочкой
Столкнулся с неочевидной вещью
Что выведет этот код?
Отлаживать строго в голове!
StepOne был в шоке…😱
Столкнулся с неочевидной вещью
Что выведет этот код?
int[] arr = [];
Console.WriteLine(
arr.All(x => x % 2 != 0));
Отлаживать строго в голове!
StepOne был в шоке…
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥12👍1🤩1
Совершенно неожиданно, но абсолютно предсказуемо
Буду учить digital заводчан искусству резюме в секции HR на конференции Merge 15-16 ноября в Сколково
https://skolkovo2024.mergeconf.ru/hr/inovationprocess/minin
Буду учить digital заводчан искусству резюме в секции HR на конференции Merge 15-16 ноября в Сколково
https://skolkovo2024.mergeconf.ru/hr/inovationprocess/minin
skolkovo2024.mergeconf.ru
Степан Минин | IT-конференция Merge Сколково 2024
Резюме 600к в секунду. Рецепт прагматика | IT-конференция Merge Сколково 2024
🔥7👍4🤩3😁1
Напишите в комментах, чем вы занимаетесь в рабочее время вместо задач 😐
Please open Telegram to view this post
VIEW IN TELEGRAM
😁7
Forwarded from Деплой (Ваня Ботанов)
Забавная история, показывающая, почему в России сильное IT.
Потому что любят работать и достигать результат, очевидно :)
Потому что любят работать и достигать результат, очевидно :)
👍22😁10
Главное ограничение Source Generators в .NET
Source Generators позволяют делать много крутых вещей
Вообще, на мой взгляд, это крайне недооценённая разработчиками фича
Поверьте, чуть ли не каждый реальный проект имеет место, которое SG может сильно улучшить
Однако, они не всемогущи, есть узкое место, которого лично мне недавно не хватило
Ранее на канале было замечено, что нельзя строить цепочки или пайплайны из генераторов
Этому посвящён целый issue в репозитории Roslyn - https://github.com/dotnet/roslyn/issues/57239
Проблема в том, что пока не удаётся найти компромисс между тем, чтобы построить удачный пользовательский опыт для программиста и сохранить высокий перформанс инструмента
При этом скорость работы генераторов, которая действительно на уровне, является высоким приоритетом, от того задача ещё более не решаемая
С ограничением столкнулся в пет-проекте, как обычно)
Пилю, значит, интерпретатор hydranoscript, и захотелось оптимизировать лексический анализ с помощью скомпилированных регулярных выражений
Но вот незадача - регулярка очень большая получается, около 600 символов в длину - очень легко в ручном режиме опечататься и налажать
Получается, что её надо генерировать на основе исходного кода конфигурации
Но вот незадача - результат генерации надо подставлять в другой генератор, уже платформенный, через атрибут
А генератор1 не видит результат работы генератора2, потому что оба пользуются AST из кода, написанного руками
Здесь получилось обхитрить систему, потому что настоящего доступа к AST и семантической модели мне не требуется
Я хочу просто прочитать конфиг и выплюнуть строчку, поэтому достаточно руками забрать этот конфиг, а строку с паттерном подложить сборке через
Такие сорцы генераторы видят, потому что обычно метод используется для создания маркерных атрибутов или других вспомогательных служебных объектов
Получился такой PR, пользуйтесь)
https://github.com/Stepami/hydranoscript/pull/115
Source Generators позволяют делать много крутых вещей
Вообще, на мой взгляд, это крайне недооценённая разработчиками фича
Возможно, в силу недостатка квалификации
Поверьте, чуть ли не каждый реальный проект имеет место, которое SG может сильно улучшить
Однако, они не всемогущи, есть узкое место, которого лично мне недавно не хватило
Ранее на канале было замечено, что нельзя строить цепочки или пайплайны из генераторов
Этому посвящён целый issue в репозитории Roslyn - https://github.com/dotnet/roslyn/issues/57239
Проблема в том, что пока не удаётся найти компромисс между тем, чтобы построить удачный пользовательский опыт для программиста и сохранить высокий перформанс инструмента
При этом скорость работы генераторов, которая действительно на уровне, является высоким приоритетом, от того задача ещё более не решаемая
С ограничением столкнулся в пет-проекте, как обычно)
Пилю, значит, интерпретатор hydranoscript, и захотелось оптимизировать лексический анализ с помощью скомпилированных регулярных выражений
Но вот незадача - регулярка очень большая получается, около 600 символов в длину - очень легко в ручном режиме опечататься и налажать
Получается, что её надо генерировать на основе исходного кода конфигурации
Но вот незадача - результат генерации надо подставлять в другой генератор, уже платформенный, через атрибут
[GeneratedRegex]
А генератор1 не видит результат работы генератора2, потому что оба пользуются AST из кода, написанного руками
Здесь получилось обхитрить систему, потому что настоящего доступа к AST и семантической модели мне не требуется
Я хочу просто прочитать конфиг и выплюнуть строчку, поэтому достаточно руками забрать этот конфиг, а строку с паттерном подложить сборке через
context.RegisterPostInitializationOutput
Такие сорцы генераторы видят, потому что обычно метод используется для создания маркерных атрибутов или других вспомогательных служебных объектов
Получился такой PR, пользуйтесь)
https://github.com/Stepami/hydranoscript/pull/115
👍8🔥5❤1
Короче, степванчики, я вам видео снял и в благородство играть не буду.
Посмотрите его до конца - и мы в расчёте!
Заодно посмотрим, как вам контент после перерыва зайдёт)
А по вашей теме постараюсь разузнать: хрен его знает, на кой ляд вам эта ссылка на видео сдалась…
Но! Я в чужие дела не лезу! Не хотите вбивать поисковой запрос - значит есть причина
https://youtu.be/FS-1ch2gZ9M
Посмотрите его до конца - и мы в расчёте!
Заодно посмотрим, как вам контент после перерыва зайдёт)
А по вашей теме постараюсь разузнать: хрен его знает, на кой ляд вам эта ссылка на видео сдалась…
Но! Я в чужие дела не лезу! Не хотите вбивать поисковой запрос - значит есть причина
https://youtu.be/FS-1ch2gZ9M
YouTube
Почему тебе не даётся программирование
https://news.1rj.ru/str/steponeit
00:00 Вступление
00:50 Ловушка мышления
03:44 Как перестать быть вечным студентом
04:50 Специализация программиста
06:54 Сила сообщества
00:00 Вступление
00:50 Ловушка мышления
03:44 Как перестать быть вечным студентом
04:50 Специализация программиста
06:54 Сила сообщества
2🔥19👍5❤🔥2❤2
StepOne | Степан Минин
Программисту нет смысла ходить в офис Ведь у него даже не будет своего кабинета 🤯 В самом начале своей карьеры мне казалось: вот стану важным сеньором - дадут свой кабинет Но потом, по мере смены работ всё сильнее разочаровывался в концепции её посещения…
Наткнулся на статью, где приложенным исследованием подтверждается тезис о вреде опен спейса для коммуникации
А также там развеяно много других мифов о зарплатах и эффективности
https://www.researchgate.net/publication/326130488_The_impact_of_the_'open'_workspace_on_human_collaboration
А также там развеяно много других мифов о зарплатах и эффективности
Хабр
Гуманизм против «эффективного менеджмента». Почему заботиться о людях выгодно
Бизнес полон "эффективных менеджеров" и их "лучших практик". Переработки, стресс, политика кнута без пряника, урезания зарплат и премий, обманы и подлоги. Эти практики распространены очень широко,...
👍11❤2🔥2
Программирование не даёт мне спиться 🥃
Странная мысль, согласен)🥃
Но быть пьяным классно: не думаешь о проблемах, потому что не в состоянии их осознать🥂
Правда, жизнь вносит свои коррективы🥂
Я неоднократно слышал фразу:
В разработке, к сожалению, не прокатит - разум затуманивается, теряется способность к фокусировке, сужается контекст с оперативкой и так далее
В общем, мыслительный процесс серьёзно ослабевает
А ещё нужно в канал запостить, видос придумать, доклад подготовить, пет-проект покодить
Про несовместимость с качалкой вообще молчу…
И вот так получается, что везде нужна трезвая голова
Получается, от алкоголизма меня защищает не сила воли, а профессия…
P.S. Знали бы вы какой у меня дома бар, и как я люблю коктейли…
Странная мысль, согласен)
Но быть пьяным классно: не думаешь о проблемах, потому что не в состоянии их осознать
Я мог бы выпить море
Я мог бы стать другим
Вечно молодым
Вечно пьяным
Правда, жизнь вносит свои коррективы
Я неоднократно слышал фразу:
«Без пол-литра не разберёшься»
В разработке, к сожалению, не прокатит - разум затуманивается, теряется способность к фокусировке, сужается контекст с оперативкой и так далее
В общем, мыслительный процесс серьёзно ослабевает
А ещё нужно в канал запостить, видос придумать, доклад подготовить, пет-проект покодить
Про несовместимость с качалкой вообще молчу…
И вот так получается, что везде нужна трезвая голова
Получается, от алкоголизма меня защищает не сила воли, а профессия…
Please open Telegram to view this post
VIEW IN TELEGRAM
😁24👍11❤1
МОКИРУЕМ ADO NET РЕБЯТА 😱
Иногда хочется просто написать мужицкий SQL запрос без всяких ORM
Но вот незадача, несмотря на наличие абстракций по типу DbConnection, DbCommand и так далее
Не понятно, как такой код тестировать - как будто только интеграционники, и тут их адепты могут начать плясать с радостной пеной у рта
Но не тут было: на просторах GitHub нашлась библиотека, которая решает проблему
Например, есть сервис, который сравнивает кол-во строк в двух таблицах
Тогда замокировать можно следующим образом:
Товарищу предлагаю накинуть звёзд
Иногда хочется просто написать мужицкий SQL запрос без всяких ORM
Но вот незадача, несмотря на наличие абстракций по типу DbConnection, DbCommand и так далее
Не понятно, как такой код тестировать - как будто только интеграционники, и тут их адепты могут начать плясать с радостной пеной у рта
Но не тут было: на просторах GitHub нашлась библиотека, которая решает проблему
Например, есть сервис, который сравнивает кол-во строк в двух таблицах
Тогда замокировать можно следующим образом:
var mockDbConnection = new MockDbConnection();
mockDbConnection.Mocks
.When(cmd => cmd.CommandText.Contains("count(*) from t1"))
.ReturnsTable(
MockTable.WithColumns("Count")
.AddRow(1));
mockDbConnection.Mocks
.When(cmd => cmd.CommandText.Contains("count(*) from t2"))
.ReturnsTable(
MockTable.WithColumns("Count")
.AddRow(2));
Товарищу предлагаю накинуть звёзд
Please open Telegram to view this post
VIEW IN TELEGRAM
GitHub
GitHub - Apps72/DbMocker: Data Mocker for C# DbConnection
Data Mocker for C# DbConnection. Contribute to Apps72/DbMocker development by creating an account on GitHub.
🔥17👍6❤2
This media is not supported in your browser
VIEW IN TELEGRAM
Мы знаем, что делать, если омерика отключит погромирование
😁16👍2❤1🔥1🤩1
StepOne | Степан Минин
Контроль архитектуры компилятором вместо тестов Наконец-то окончательно завершён многолетний рефакторинг моего интерпретатора - архитектура настолько проработана, хороша и не противоречива, насколько это возможно и задумывалось изначально ООП, DDD, Clean…
Directory.Build.props и CPM - это 🟢
После рефакторинга hydranoscript в solution появилось 6 проектов исходников
После выделения интеграционников тестовых проектов стало 2
Когда добавил автоматизацию через Source Generator ещё плюс 2 проекта
Естественно, захотелось обобщить конфигурацию, чтобы написать один раз xml разметку и почивать на лаврах:
В дотнет есть решения из коробки на все случаи жизни, так что платформа позволяет написать один раз шаблон проекта и пользоваться
Почитать про работу пропсов можно тут 👉 https://blog.ndepend.com/directory-build-props/
Помимо этого, оказывается, есть удобный централизованный менеджмент пакетов (CPM), про него писал Евгений @epeshkblog вот тут 👉 https://news.1rj.ru/str/epeshkblog/183
Кстати, что интересно если в Rider ставить новую либу - она автоматом в Directory.Packages.props заезжает!
Все эти прелести разработки заехали в репу hydranoscript благодаря моему подписчику Расиму @Keyros_z
Большое спасибо ❤️
Посмотреть PR можно по ссылке 👉 https://github.com/Stepami/hydranoscript/pull/113
После рефакторинга hydranoscript в solution появилось 6 проектов исходников
После выделения интеграционников тестовых проектов стало 2
Когда добавил автоматизацию через Source Generator ещё плюс 2 проекта
Естественно, захотелось обобщить конфигурацию, чтобы написать один раз xml разметку и почивать на лаврах:
<Project>
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
</PropertyGroup>
</Project>
В дотнет есть решения из коробки на все случаи жизни, так что платформа позволяет написать один раз шаблон проекта и пользоваться
Почитать про работу пропсов можно тут 👉 https://blog.ndepend.com/directory-build-props/
Помимо этого, оказывается, есть удобный централизованный менеджмент пакетов (CPM), про него писал Евгений @epeshkblog вот тут 👉 https://news.1rj.ru/str/epeshkblog/183
Все эти прелести разработки заехали в репу hydranoscript благодаря моему подписчику Расиму @Keyros_z
Большое спасибо ❤️
Посмотреть PR можно по ссылке 👉 https://github.com/Stepami/hydranoscript/pull/113
Please open Telegram to view this post
VIEW IN TELEGRAM
GitHub
Добавлен Directory.Build.props +semver:skip by Keyros · Pull Request #113 · Stepami/hydranoscript
Denoscription
Перешли на CPM.
Начали использовать Directory.Build.props.
Удалили ссылку на System.Text.Json из HydraScript.Infrastructure.LexerRegexGenerator.
Related Issues
#74 #112
Checklist:
I...
Перешли на CPM.
Начали использовать Directory.Build.props.
Удалили ссылку на System.Text.Json из HydraScript.Infrastructure.LexerRegexGenerator.
Related Issues
#74 #112
Checklist:
I...
🔥11👍4😁2❤1
Please open Telegram to view this post
VIEW IN TELEGRAM
👍34❤🔥9❤4🔥3😁1
StepOne | Степан Минин
Главный итог сентября
На что обратить внимание из октябрьского?
🥇 Обходим ограничения Source Generators
📱 W Youtube ролик
🌎 DbMocker, must install
🔄 Улучшаем .csproj двумя дедовскими методиками и ещё пакет не забываем, ага
Напишите в комментах - зарядить ли на Хабр текстовые версии сентябрьских докладов?
Напишите в комментах - зарядить ли на Хабр текстовые версии сентябрьских докладов?
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9❤🔥1❤1
🔥 Всем привет! Приглашаю вас на Merge в Сколково 15–16 ноября, где я, Степан Минин, расскажу, как получить оффер за ваше резюме на 600к в секунду! Мой доклад «Резюме 600к в секунду. Рецепт прагматика» — это реальный взгляд на прагматичный подход к поиску работы. Поделюсь рецептом, как Dev/SA/QA/PM и другим IT специалистам написать резюме так, чтобы HR их отобрали и предложили зарплату выше рынка!
Merge — это масштабная IT-конфа, где более 150 экспертов и 2000 участников из разных сфер собираются, чтобы делиться свежими идеями и рабочими лайфхаками. 30 секций, море общения и тренды, которые нельзя пропустить.
🎟 А у меня для вас промокод MININ — он даст вам 20% скидку на участие! Присоединяйтесь и приходите за вдохновением и новыми инструментами для работы. Увидимся на Merge в Сколково! Забирайте билет по ссылке: https://skolkovo2024.mergeconf.ru/#tickets
Merge — это масштабная IT-конфа, где более 150 экспертов и 2000 участников из разных сфер собираются, чтобы делиться свежими идеями и рабочими лайфхаками. 30 секций, море общения и тренды, которые нельзя пропустить.
🎟 А у меня для вас промокод MININ — он даст вам 20% скидку на участие! Присоединяйтесь и приходите за вдохновением и новыми инструментами для работы. Увидимся на Merge в Сколково! Забирайте билет по ссылке: https://skolkovo2024.mergeconf.ru/#tickets
skolkovo2024.mergeconf.ru
IT-конференция Merge в Сколково
Профессиональная межрегиональная IT-конференция | 15-16 ноября 2024, Технопарк Сколково
🔥11❤1👍1