StepOne | Степан Минин – Telegram
StepOne | Степан Минин
3.42K subscribers
249 photos
35 videos
6 files
313 links
StepOne by Степан Минин @ststphn

Твой первый шаг к успеху в программировании

Закрытый тг канал https://news.1rj.ru/str/tribute/app?startapp=slOA

По вопросам рекламы @Spiral_Yuri

Ютуб https://www.youtube.com/@steponeit
Download Telegram
Личная выгода vs общественная польза

Неделю назад прилетел домой в Москву из Омска, где завершился DevFest
Подъехали фоточки, так что поделюсь своим experience

Моя мотивация подаваться на миллион конференций была донельзя примитивной - ачивка «speaker» level-up’ет CV и позволяет просить больше денег на собесе 🤵

Плюс, это повод для злорадства и хвастовства в сторону компаний, когда-то не способных сделать достойное предложение 😈
Ведь теперь они упустили не просто профи, а спикера DotNext) Чувствуете, как ценник поднялся?

После DevFest я стал считать своё мышление ошибочным, потому что первый же день в Омске показал, что ребята делают что-то другое, ну реально другое 😲

Как только услышал следующий девиз, он поселился в голове rent-free
Такого точно не хватает большинству мероприятий

Make New Friends


Пока аля-jugru втыкает стенды и нагоняет certified dushnil на авось, здесь строится площадка для встречи новых крутых людей

Чтобы находить единомышленников, запускать проекты, находить вдохновение и мотивацию, да и просто развивать it сообщество

Это неочевидный и сложный путь - пусть у организаторов всё получится 🙏❤️

Благодаря DevFest, я надеюсь, что нашёл новых друзей, и совершенно точно зарядился сделать лучший дотнет инструмент для экономии времени при написании тестов!

Если не расскажу про него в следующем году, можете отписаться и начать учить джаву ☠️
Настолько высоки ставки

Уже сейчас открыта продажа билетов на 2025, поэтому искренне советую запланировать посещение - это личный совет, а не реклама

Совершенно точно, для меня DevFest - открытие года, и хочется посетить его снова, потому что там 💯 будет круто!
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥21❤‍🔥83👍3🥰2
🇷🇺
Please open Telegram to view this post
VIEW IN TELEGRAM
👍33😁11🔥91🤩1
⚰️⚰️⚰️
Please open Telegram to view this post
VIEW IN TELEGRAM
1😁15🤩2
StepOne | Степан Минин
Разбор резюме❗️ Мне очень нравится общаться с аудиторией, особенно когда степванчики предлагают какие-то новые рубрики и форматы ❤️ Сегодня, благодаря @Roman_Suhih_tg у вас есть возможность попросить меня разобрать резюме Для этого просто скиньте пдфку…
Наконец-то новый разбор!

Напоминаю, что в комменты под постом в реплае можно скинуть своё резюме и я его публично разберу

На этот раз CV https://news.1rj.ru/str/steponeit/388?comment=4181 от @cher_misha

Вижу, что Михаил - начинающий специалист, сразу бросается в глаза малое количество даже не лет, а месяцев опыта
Очень смелая и неплохая идея расписать курсовой проект - правда 3 месяца для него маловато

Всё-таки кажется, что минимальные курсы разработки в университетах длятся семестр, то есть полгода

Не совсем ясно, для чего указывать курс по Flask, если автор шарпист 🤷‍♂️

Неплохо расписана последняя практика в PARMA по разработке сервиса логгирования

Я бы на твоём месте слепил её с предыдущей в один отрезок времени)

Из описания практики по валидации артефактов не понял ценность продукта, поэтому убрал бы этот раздел в пользу последнего

Направление задано неплохое, скелет хороший - надо "набирать мясо" и всё будет 💪
🔥7👍21🤩1
StepOne | Степан Минин
StepOne - Senior DevOps??? GitHub Actions CI/CD Expert На выходных сделал две вещи: 1️⃣Дописал статью на Хабр с подробным рассказом про свой пет-проект hydranoscript. Там появился логотип кстати, прикладываю к посту! Выйдет в конце августа - начале сентября…
Пытался перевести hydranoscript на AOT

В любом случае релиз паблишит на конкретные платформы, а тут под них ещё и оптимизацию пообещали

Сначала сомневался даже попробовать - на винду надо ставить террабайты плюсистого кала, чисто чтобы была возможность прогнать команду

Через некоторое время, вспомнил, что у меня есть макбук, поэтому попробовал там - оказалось, что проект не готов из-за json зависимостей, надо было переходить на сурс ген, о чём расскажу в следующем посте

Однако, в Github Actions такое можно катить без проблем - на винду они ставят кал-плюс-плюс автоматом, на маках уже стоит xcode, а на православном линухе достаточно один апт-гет вызвать

В итоге, переход не удался из-за Scrutor и System.CommandLine
👍6🤩32
System.Text.Json | Source Generator

Сурс ген входит в жизнь дотнет разрабов всё глубже

И это не может не радовать - достойная замена псевдоИИ как никак

Одним из платформенных решений стал перенос сериализации в compile-time, что ofc должно бустануть перф

Во-первых, в .csproj прописываем
<JsonSerializerIsReflectionEnabledByDefault>false</JsonSerializerIsReflectionEnabledByDefault>


Во-вторых, пилим partial наследника JsonSerializerContext, где указываем какие типы надо поддержать, например:
[JsonSourceGenerationOptions(GenerationMode = JsonSourceGenerationMode.Serialization)]
[JsonSerializable(typeof(List<object>))]
[JsonSerializable(typeof(Dictionary<string, object>))]
[JsonSerializable(typeof(bool))]
[JsonSerializable(typeof(double))]
[JsonSerializable(typeof(string))]
private partial class AsStringSerializationContext : JsonSerializerContext;


Что здесь super tricky и не очевидно, то это настройка и передача опций


Часть можно передать в атрибут [JsonSourceGenerationOptions], но он не поддерживает работу с циклическими ссылками в том числе

Оказывается, можно просто создать экземпляр контекста руками и не париться:
private static readonly AsStringSerializationContext AsStringJsonContext = new(new JsonSerializerOptions
{
WriteIndented = true,
ReferenceHandler = ReferenceHandler.IgnoreCycles,
PropertyNamingPolicy = JsonNamingPolicy.CamelCase,
NumberHandling = JsonNumberHandling.AllowNamedFloatingPointLiterals
});


Ах да, к чему это я всё? Если хотите AOT, то сериализация должна быть на сурс гене)
В результате перевода hydranoscript на сурс ген жсон получился такой PR:
https://github.com/Stepami/hydranoscript/pull/80/files
🔥10👍6❤‍🔥1
💻Секция «С# & .NET» на IT-конференции «Стачка» в Питере

27-28 сентября поговорим про новинки .NET, об архитектуре типичных приложений на C#, и всесторонне рассмотрим подходы к разработке кроссплатформенных приложений.

Кому будет полезно: бэкенд разработчикам на платформе .NET (преимущественно C#), разработчикам других backend-стеков.

→ Степан Минин — ведущий разработчик C#. Доклад: «Такого "Посетителя" вы ещё не видели - Visitor.NET»

→ Марк Шевченко — главный программист «Иннотех». Доклад: «Избавляемся от бойлерплейта в C#»

→ Станислав Сидристый — системный архитектор «Газпром-Нефть». Доклад: «Разработка плагинов к микросервисам»

👨‍💻 Эксперт секции: Игорь Лабутин — более 15 лет в проектировании и разработке бэкенд на C#/Java в виде монолитов и микросервисов. Организатор .NET сообществ SpbDotNet и DotNetRu, член программного комитета и спикер конференции DotNext.

Кто еще выступит на «Стачке» в Питере, смотрите на сайте: https://spb24.nastachku.ru/.

Stop working — все на «Стачку»!
Please open Telegram to view this post
VIEW IN TELEGRAM
👍111
This media is not supported in your browser
VIEW IN TELEGRAM
Джависты напишут:
«Мало, Смаев 320 жмёт»
🔥205🤩3👍2
StepOne | Степан Минин
Сентябрь 2024 точно будет гореть 🔥 Ведь StepOne выступит аж на трёх конференциях!!! Настоящий дотнет тур! 1️⃣5-8 сентября, DevFest в Омске Искусство unit-тестирования. Сокращаем Arrange до нуля 2️⃣10-11 сентября, DotNext в Москве Как в C# 11 появилась обобщенная…
Вот и отъездил три конфы этой осени

На самом деле, их могло быть четыре, но от четвёртой отказался, поскольку она уже была не по силам…

В процессе произошла очень крутая вещь, которой хочется поделиться

На каждом из мероприятий я встретил своих подписчиков

И все рассказали, как подписка на StepOne изменила их жизнь в лучшую сторону

Кому-то нравится контент по шарпам, кому-то заходят мои идеи, кто-то просто угарает

Вести соцсети сложно, потому что практически не встречаешь своего влияния на реальный мир

Но ваши рассказы о том, как отдельные советы с канала меняли целые процессы разработки в командах нереально заряжают двигаться дальше

Спасибо, что читаете ❤️
25👍10🥰2❤‍🔥1
Задача со звёздочкой

Столкнулся с неочевидной вещью

Что выведет этот код?

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
🔥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 символов в длину - очень легко в ручном режиме опечататься и налажать

Получается, что её надо генерировать на основе исходного кода конфигурации

Но вот незадача - результат генерации надо подставлять в другой генератор, уже платформенный, через атрибут
[GeneratedRegex]


А генератор1 не видит результат работы генератора2, потому что оба пользуются AST из кода, написанного руками

Здесь получилось обхитрить систему, потому что настоящего доступа к AST и семантической модели мне не требуется

Я хочу просто прочитать конфиг и выплюнуть строчку, поэтому достаточно руками забрать этот конфиг, а строку с паттерном подложить сборке через
context.RegisterPostInitializationOutput


Такие сорцы генераторы видят, потому что обычно метод используется для создания маркерных атрибутов или других вспомогательных служебных объектов

Получился такой PR, пользуйтесь)
https://github.com/Stepami/hydranoscript/pull/115
👍8🔥51
Короче, степванчики, я вам видео снял и в благородство играть не буду.

Посмотрите его до конца - и мы в расчёте!

Заодно посмотрим, как вам контент после перерыва зайдёт)

А по вашей теме постараюсь разузнать: хрен его знает, на кой ляд вам эта ссылка на видео сдалась…

Но! Я в чужие дела не лезу! Не хотите вбивать поисковой запрос - значит есть причина

https://youtu.be/FS-1ch2gZ9M
2🔥19👍5❤‍🔥22
StepOne | Степан Минин
Программисту нет смысла ходить в офис Ведь у него даже не будет своего кабинета 🤯 В самом начале своей карьеры мне казалось: вот стану важным сеньором - дадут свой кабинет Но потом, по мере смены работ всё сильнее разочаровывался в концепции её посещения…
👍112🔥2
Программирование не даёт мне спиться 🥃

Странная мысль, согласен) 🥃

Но быть пьяным классно: не думаешь о проблемах, потому что не в состоянии их осознать 🥂

Я мог бы выпить море
Я мог бы стать другим
Вечно молодым
Вечно пьяным


Правда, жизнь вносит свои коррективы 🥂

Я неоднократно слышал фразу:
«Без пол-литра не разберёшься»


В разработке, к сожалению, не прокатит - разум затуманивается, теряется способность к фокусировке, сужается контекст с оперативкой и так далее

В общем, мыслительный процесс серьёзно ослабевает

А ещё нужно в канал запостить, видос придумать, доклад подготовить, пет-проект покодить
Про несовместимость с качалкой вообще молчу…

И вот так получается, что везде нужна трезвая голова

Получается, от алкоголизма меня защищает не сила воли, а профессия…

P.S. Знали бы вы какой у меня дома бар, и как я люблю коктейли…
Please open Telegram to view this post
VIEW IN TELEGRAM
😁24👍111
МОКИРУЕМ ADO NET РЕБЯТА 😱

Иногда хочется просто написать мужицкий 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
🔥17👍62
This media is not supported in your browser
VIEW IN TELEGRAM
Прячусь от созвонов 🌊
🔥12😁116