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
Бро дропнул самый жёсткий StepOne эдит и думал что мы не заметим 😨

https://youtube.com/shorts/ZUQuS19-niI
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥104😁2😍2👍1
Сентябрь 2024 точно будет гореть 🔥

Ведь StepOne выступит аж на трёх конференциях!!!
Настоящий дотнет тур!

1️⃣5-8 сентября, DevFest в Омске
Искусство unit-тестирования. Сокращаем Arrange до нуля


2️⃣10-11 сентября, DotNext в Москве
Как в C# 11 появилась обобщенная математика


3️⃣ 27-28 сентября, Стачка в Санкт-Петербурге
Такого "Посетителя" вы ещё не видели - Visitor NET


Сохраняй этот пост, чтобы не потерять расписание ❤️
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥16🤩43👍1
Всем привет, коллеги!

Прямо сейчас у вас есть уникальная возможность получить опыт контрибута в опен-сорс проект!

При чём не за счёт обновления библиотек или правки опечаток, а благодаря разработке фичей и проектированию архитектуры!

Приглашаю всех желающих в свой репозиторий https://github.com/Stepami/hydranoscript

Это учебный проект, начинавшийся как недоJS, и пришедший в состояние смеси TypeScript и Go

Я наконец-то закончил годовалый рефакторинг, и готов открыть миру его исходный код без стыда)

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

Проект движется в сторону интерпретатора на DDD и Clean Architecture - эксперимент по упрощению понимания и без того архисложной предметки

Также из интересного: получилось изобрести велосипед структуру данных для адресации, которая при изменении набора элементов пересчитывает адреса за O(1)

Что это значит?

Например, есть список инструкций, и у каждой инструкции есть адрес, например, некоторое число:
0: a = 0
1: x = 2
2: y = a
3: print x

Мы видим, что инструкции с адресом 0 и 2 можно выкинуть, они являются мёртвым кодом.
Тогда останется:
1: x = 2
3: print x

Но теперь виртуальная машина ах*еет , потому что старт у неё ноль, следующий шаг плюс 1 - она просто не сможет пройтись по оставшемуся набору, нужно пересчитать адреса:
0: x = 2
1: print x

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

Сейчас там есть две горящих задачки, с которыми справится даже джун:


1️⃣https://github.com/Stepami/hydranoscript/issues/29

2️⃣ https://github.com/Stepami/hydranoscript/issues/30

С меня опыт на интересном, уважаемом и перспективном проекте, с вас - звёздочка репозиторию)
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥9👍63😁2
HR не нужны или нужны?

Наткнулся в интернетах на очередной кейс дискредитации современного найма в айти и института подбора кадров в целом

Азиат, который лучше всех нас во всём, по имени Джерри Ли решил проверить на практике мой гайд по резюме на бусти

Данную мной структуру иностранный специалист сохранил, а опыт он решил придумать 👀
При этом намеренно абсурдным:
Запускал новые продукты под ЛСД и грибами


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

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

Так что мои фразы про 6 секунд в гайде нисколько не драматизация

Всё это уже было доказано научно в рамках исследования

Прикладываю в виде пдфок полный кейс и исследование

P.S. ИЧСХ, об этом изначально написала другая рекрутерша 🤣
Please open Telegram to view this post
VIEW IN TELEGRAM
6🔥3👍2😁2🤩2
Ловите ещё одну красивую картинку, которая возможно пригодится на собесе
👍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