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
Ловите ещё одну красивую картинку, которая возможно пригодится на собесе
👍109🔥2
StepOne | Степан Минин
Меня зовут Степан Минин, мне 23 и я - один из самых успешных 📱 программистов в медийной сфере Моя история настолько исключительная и уникальная, что её нельзя описать двумя предложениями Поэтому, я сделал целую трилогию постов, ознакомиться с которой можно…
Дорогие подписчики 💔

Мне кажется, я вас обманул(

Это настолько фундаментальное противоречие, что молчать невозможно!

Нет, я действительно сеньор, работаю в хорошем месте над сложными задачами и получаю за это много денег)

Но путь в эту точку был другим.

Я не смотрел чужие собесы, не искал сливы задач, не просил опытного программиста ласково шептать в наушник.

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

А опыт не надо было накручивать, так как трудовую книжку получил в 18 лет.

Наоборот, его так много, что пора уже скрывать лишнее!)

Каждый день в голове проскакивают строчки, и не рэперские, а на C#!)

Программирование для меня не просто работа, а образующее дело, за пределами которого себя не вижу...

Да, мне в кайф этим жить и дышать, как бы душно и скучно моментами это не казалось.

Только вдумайтесь, три поста, три простыни текста потрачено на описание моей пахоты, а вы так и не поняли, что у вас было прямо под носом...

Верно говорят - хочешь что-то спрятать, положи у всех на виду.

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

Но я не могу научить вас читкодам и схемам, потому что сам этим не пользовался и просто являюсь ох*енным спецом, потратившим уйму сил и времени, чтобы им стать.

Чему вас точно могу научить, так это:
- Мужественно встречать жизненные испытания
- Воле к победе
- Труду вопреки слабости и обстоятельствам
- Упорству не меньше бычьего

Так что, vision перенастроен.
Идём дальше, надеюсь вы со мной💪

Настал момент, когда пора самому быть примером
Отлиться светом, на который смогли бы плыть люди

🙏🙏🙏
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥16👍9😁53🥰1
Строго типизированные теории в xUnit

Для передачи данных в тест есть много способов: [InlineData] [MemberData] [ClassData]

Последние два способа оперируют контрактом IEnumerable<object[]>

Встаёт вопрос - как надавать по рукам тем, кто засунет в object[] то, что в тест попадать не должно?

Для этого существует класс TheoryData<>

Он даёт все преимущества строгих проверок типов C# на этапе компиляции

Использовать можно по-разному, например так:
public class CalculatorTestData : TheoryData<int, int, int>
{
public CalculatorTestData()
{
Add(1, 2, 3);
Add(-4, -6, -10);
Add(-2, 2, 0);
Add(int.MinValue, -1, int.MaxValue);
Add(1.5, 2.3m, "The value"); // will not compile!
}
}


И далее в тесте:

[Theory]
[ClassData(typeof(CalculatorTestData))]
public void CanAdd(int value1, int value2, int expected)
{
var calculator = new Calculator();
var result = calculator.Add(value1, value2);
Assert.Equal(expected, result);
}


А пример с мембер датой можно подсмотреть в моём репозитории hydranoscript:
https://github.com/Stepami/hydranoscript/blob/master/tests/HydraScript.IntegrationTests/SuccessfulProgramsTests.cs
👍132🔥2
Контроль архитектуры компилятором вместо тестов

Наконец-то окончательно завершён многолетний рефакторинг моего интерпретатора - архитектура настолько проработана, хороша и не противоречива, насколько это возможно и задумывалось изначально

ООП, DDD, Clean Architecture, изолированные поддомены, независимые контракты, слабосвязанные компоненты и сильносвязные модули

В этом посте расскажу об одном приёме, который помог мне добиться этого архитектурного успеха

Остальную историю проекта расскажу чуть позже в статье на Хабре

Секрет в использовании проектов вместо папок 😱

Это настоящая архитектурная статическая типизация

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

Так гораздо проще, чем писать тесты на ArchUnitNET и потом внедрять их в CI/CD
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13🔥43
Разрабатывай HydraScript

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

Как mantainer расскажу о приоритетной вещи, на которую стоит обратить внимание, помимо тех задач, которые выкладывал на канале ранее

Сейчас хочется увеличить покрытие проекта unit тестами, да и в целом написать их)

Какие-то тесты есть, и часть из них использует библиотеку Moq

Чтобы не погружаться корнями в зависимость от этого инструмента - сейчас надо перейти на другой, пока переезд будет стоит дёшево (очень)

Поэтому приглашаю забрать этот issue и помочь мне переехать на NSubstitute
👍41🤩1
Забыл написать, если вы хотите знать какие задачи лёгкие и брать сейчас, то в Issues проекта hydranoscript выбираете:
- milestone 2.0.0
- label "good first issue"

https://github.com/Stepami/hydranoscript/issues?q=is%3Aopen+is%3Aissue+milestone%3Av2.0.0+label%3A%22good+first+issue%22
👍41🔥1
StepOne | Степан Минин
Контроль архитектуры компилятором вместо тестов Наконец-то окончательно завершён многолетний рефакторинг моего интерпретатора - архитектура настолько проработана, хороша и не противоречива, насколько это возможно и задумывалось изначально ООП, DDD, Clean…
StepOne - Senior DevOps???
GitHub Actions CI/CD Expert


На выходных сделал две вещи:

1️⃣Дописал статью на Хабр с подробным рассказом про свой пет-проект hydranoscript.
Там появился логотип кстати, прикладываю к посту!
Выйдет в конце августа - начале сентября

Как раз добью рейтинги перед конфами

2️⃣ Провозился с пайплайнами и построил свою маленькую автоматизацию мечты 🥰
Разобрался с автоматическим версионированием и сборкой GitHub релиза (не путать с паблишем исполняемых файлов)

Версионирование на плечах GitVersion: версия не прописывается руками, а подставляется при билде!

Теперь разработка ведётся согласно GitHubFlow - каждый мёрж в master == Patch increment.

Каждый пуш триггерит workflow (она же pipeline в GitLab), где происходит:
- сборка и прогон юнит тестов
- создание и загрузка отчёта о покрытии
- прогон интеграционников
- загрузка windows билда (для фича веток)

При мерже в мастер если есть инкремент, то происходит пуш тега

Чтобы не релизить на каждый тег, было принято решение запускать релизный workflow при пуше в ветку release

Там происходит автоматическое создание и заполнение релиза тулзой GitReleaseManager, которая считывает milestone и связанные issues

А в артефакты загружаются исполняемые файлы для четырёх платформ: винда, линух, мак интел, мак м1

Подсмотреть yml можно тут -> https://github.com/Stepami/hydranoscript/tree/master/.github/workflows

UPD Автоматически сгенерированный релиз выглядит так https://github.com/Stepami/hydranoscript/releases/tag/v2.0.0
Please open Telegram to view this post
VIEW IN TELEGRAM
👍121🔥1
Долой микросервисы!
Даёшь монолиты с монорепами!!!
❤‍🔥10🔥9👍51
😁18👍7🤩1
Вопрос к тимлидам 🤓

Если вы не тимлид, то пришлите этот пост своему, и отправьте отвечать в комментарии


Представим ситуацию

У вас есть сотрудник, и вы довольны его работой
Что значит "довольны"? Соглашусь, понятие размытое, сейчас определим

Задачи доезжают в срок, от коллег общий позитивный фидбек, есть свои огрехи как у всех
То есть типовые два плюса по меркам Яндекса, или троечка в Авито

Тут выясняется, что всё это время (или значительную его часть) у него была вторая фулл-тайм работа


Ваши действия?

Что сделал бы я на месте лида напишу через неделю, а вы отвечайте сейчас в комментах 💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍61🔥1
Rap | TensorFlow | Build from source

Был у меня опыт сбора из сорцов, доведённый до конца

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

Как оказалось работа с текстом была доступна в TensorFlow в виде отдельного pip пакета, но чсх, под мою версию CUDA нвидиа gpu не было релиза

Поэтому я пошёл в tensorflow.org/install/source_windows

И началось:
Выбери питон
Выбери нампи и керас
Выбери базель
Выбери мсус2
Выбери куда билдтулс

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

А я на винде сидел, дааа 😩🥵🥵

В итоге я собрал этот несчастный пип пакет и понял, что проще текст сгенерировать своей головой, настолько там все просто

Реп карьеру забросил после одного альбома, потому что писать код пока получается лучше чем треки

линк на альбом в лс

Поделитесь в комментах своим cringe в IT ✍️
Please open Telegram to view this post
VIEW IN TELEGRAM
😁4👍3❤‍🔥2🤩1
5😁20👍2🤩1
StepOne | Степан Минин
Вопрос к тимлидам 🤓 Если вы не тимлид, то пришлите этот пост своему, и отправьте отвечать в комментарии Представим ситуацию У вас есть сотрудник, и вы довольны его работой Что значит "довольны"? Соглашусь, понятие размытое, сейчас определим Задачи доезжают…
Очень рад, что на канале единомышленники!

Работодатели, всё очень просто: вам не принадлежат жизни ваших работников. То, что они делают, когда не работают на вас, просто не ваше дело.


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

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

Помните, что вы участвуете в честном обмене: сотрудники дают вам своё время, вы получаете их результаты. Всё остальное вас не касается. Умный лидер поймёт ситуацию и попытается сделать так, чтобы от неё выиграли все.
1👍182🔥1
привет степванчикам)))

тут с коллегами по цеху решили открыть неформальное интернет пространство со свободой слова в IT без модерации @csharpcommon

можно приходить делать грязь, и даже желать deallocation джавистам с гошниками 🔥🔥🔥

для привлечения внимания решили разыграть полезную и хорошую книжку - Внедрение Зависимостей Марка Симанна

книжка толще кости страшной одноклассницы 😱

Аж 7 призовых мест!!!


присоединиться к крестовому походу на неверных еретиков:

https://news.1rj.ru/str/csharpcommon

Я интернета сына, я Windows 98
Всю эту осень по вебпанку мы картинки постим
Please open Telegram to view this post
VIEW IN TELEGRAM
10🔥3🤩2
Forwarded from Четыре плюса (НеСерьезный шарпист)
This media is not supported in the widget
VIEW IN TELEGRAM
Разбор резюме❗️

Мне очень нравится общаться с аудиторией, особенно когда степванчики предлагают какие-то новые рубрики и форматы ❤️

Сегодня, благодаря @Roman_Suhih_tg у вас есть возможность попросить меня разобрать резюме

Для этого просто скиньте пдфку в коммент к этому посту 📝

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

Не бойтесь писать и предлагать что-либо в нашем чатике, мне в личку, в комментах - это развивает канал и укрепляет нашу связь ☺️
Please open Telegram to view this post
VIEW IN TELEGRAM
😍32🥰2
Вопрос к аудитории

В своём "нашумевшем" пет-проекте использовал ту самую keyed регистрацию из DI NET 8

https://github.com/Stepami/hydranoscript/blob/master/src/Application/HydraScript.Application.CodeGeneration/ServiceCollectionExtensions.cs

Мне не очень нравится, что строки передаются обычными литералами

Такое легко забывается и теряется

Поэтому, спрашиваю: чем бы вы их заменили - енамкой или статик классом с константами?

Голосуй реактами:
🔥 - енам
❤️ - константа
🔥5826🤩1
Осмысленная подсветка строк
[StringSyntax]


Уверен, в ваших проектах встречались ситуации, когда строка, передаваемая в качестве параметра или используемая в качестве поля/свойства, была не просто контейнером данных, а имела особый смысл.

Например, представляла дату, число или даже регулярное выражение.

Но даже в IDE это обогащение терялось из-за обычной подсветки

Это можно исправить с помощью атрибута StringSyntaxAttribute с указанием формата подсветки:
- JSON
- XML
- RegEx
- Дата время
- Guid
- Числа
- и многое другое

Пример можно подглядеть в моём пет-проекте
🔥32🤩41
Кризис это возможности 💪

Видео про влияние математики на доход программиста перевалило за тысячу просмотров!!! 📈

Спасибо моим зрителям❤️
Please open Telegram to view this post
VIEW IN TELEGRAM
👍84🔥3