Я большой фанат серии игр S.T.A.L.K.E.R.
2007 стоит вернуть, хотя бы для того, чтобы заново пройти Тени Чернобыля в первый раз)
И вот недавно в реках ютуба наткнулся на такой интересный видос, который объясняет архитектуру и принципы работы его системы игрового искусственного интеллекта A-Life
Видос мне зашёл, потому что он в какой-то степени и для программистов)
Там есть всякие вставки кода, автоматы (state machine), алгоритмы и так далее
В общем, прям захотелось почитать исходники X-Ray Engine...
2007 стоит вернуть, хотя бы для того, чтобы заново пройти Тени Чернобыля в первый раз)
И вот недавно в реках ютуба наткнулся на такой интересный видос, который объясняет архитектуру и принципы работы его системы игрового искусственного интеллекта A-Life
Видос мне зашёл, потому что он в какой-то степени и для программистов)
Там есть всякие вставки кода, автоматы (state machine), алгоритмы и так далее
В общем, прям захотелось почитать исходники X-Ray Engine...
YouTube
Как работает A-life в S.T.A.L.K.E.R. Тень Чернобыля и как создали симуляцию жизни в Cталкере ?
S.T.A.L.K.E.R.: Тень Чернобыля - игра с самым честным живым миром. Сегодня разберёмся, что такое система A - Life, как она появилась и как работает. Как именно устроен AI в Сталкере, как проходила разработка легендарного проекта и в чём секрет успеха Shadow…
🔥13👍6❤1
dotnet console
Бывает такое на работе, что надо потестить какое-нибудь решение: алгоритм, библиотеку не важно
И для этих целей отлично подходит консольное приложение - создал, накидал нугетов с гумнокодом и радуешся
Но как пользователь Rider столкнулся, судя по всему, с последствиями санкций
Когда в очередной раз хотел создать солюшн полигон через UI, то получил ошибку:
Ну видимо, корпоративная сеть, все дела
И тут я вспомнил, что вообще-то в старом добром терминале всё есть - и создание проектов, и миллион шаблонов
Решил дропнуть сюда простенький скрипт для создания такого полигона из CLI:
Ну а про другие шаблоны можно прочитать тут 👉 https://learn.microsoft.com/ru-ru/dotnet/core/tools/dotnet-new-sdk-templates
Бывает такое на работе, что надо потестить какое-нибудь решение: алгоритм, библиотеку не важно
И для этих целей отлично подходит консольное приложение - создал, накидал нугетов с гумнокодом и радуешся
Но как пользователь Rider столкнулся, судя по всему, с последствиями санкций
Когда в очередной раз хотел создать солюшн полигон через UI, то получил ошибку:
Error updating templates
Ну видимо, корпоративная сеть, все дела
И тут я вспомнил, что вообще-то в старом добром терминале всё есть - и создание проектов, и миллион шаблонов
Решил дропнуть сюда простенький скрипт для создания такого полигона из CLI:
mkdir TestSpace
cd TestSpace
dotnet new sln
mkdir ConsoleApp
cd ConsoleApp
dotnet new console
cd ..
dotnet sln .\TestSpace.sln add .\ConsoleApp\ConsoleApp.csproj
Ну а про другие шаблоны можно прочитать тут 👉 https://learn.microsoft.com/ru-ru/dotnet/core/tools/dotnet-new-sdk-templates
Docs
Шаблоны по умолчанию для .NET для dotnet new - .NET CLI
Узнайте о шаблонах dotnet new, которые поставляются с помощью пакета SDK для .NET.
👍16❤2🔥1😁1
Ставь 🔥 если тоже хочешь устроиться в Яндекс, начислить всем по миллиарду баллов Плюса и выставить отрицательную стоимость Такси
https://habr.com/ru/news/851968/
https://habr.com/ru/news/851968/
Хабр
Стажёр устроился в ByteDance и изнутри два месяца саботировал выполнение проекта по разработке нейросетей
Программист Keyu Tian устроился в компанию ByteDance стажёром и изнутри два месяца саботировал выполнение проекта по разработке нейросетей, добавляя ошибки в код. Из-за действий стажёра команда из...
😁18🔥13❤2👍1
Как я познакомился с xUnit DI
В xUnit есть классный инструментарий для создания разделяемого контекста между тестами с разным временем жизни - https://xunit.net/docs/shared-context
Если кто-то читал исходники интеграционных тестов
Силами фреймворка экземпляр класса контекста пропихивается в конструктор класса тестов, реализующих указанный интерфейс
Однако, что меня всегда смущало абстрацию для вывода он прогнать в конструктор контекста не может
Приходилось писать руками бойлерплейт:
1. Запросить
2. Передать в
Однако, я познакомился с библиотекой Xunit.DependencyInjection, которая решает эту проблему добавляя DI для этих самых контекстов
Получилось очень хитрое решение, убравшее бойлерплейт - TestHostFixture
Ну а PR отрисуется чуть ниже 👇
В xUnit есть классный инструментарий для создания разделяемого контекста между тестами с разным временем жизни - https://xunit.net/docs/shared-context
Если кто-то читал исходники интеграционных тестов
hydranoscript, то мог заметить, что там я использую IClassFixture<>Силами фреймворка экземпляр класса контекста пропихивается в конструктор класса тестов, реализующих указанный интерфейс
Однако, что меня всегда смущало абстрацию для вывода он прогнать в конструктор контекста не может
Приходилось писать руками бойлерплейт:
1. Запросить
ITestOutputHelper в конструкторе тестового класса2. Передать в
fixture.GetRunnerОднако, я познакомился с библиотекой Xunit.DependencyInjection, которая решает эту проблему добавляя DI для этих самых контекстов
Получилось очень хитрое решение, убравшее бойлерплейт - TestHostFixture
Ну а PR отрисуется чуть ниже 👇
GitHub
Внедрение ITestOutputHelper через xUnit DI +semver:skip by Stepami · Pull Request #116 · Stepami/hydranoscript
Denoscription
https://stackoverflow.com/a/73141087
При создании новых интеграционников я бы упёрся в проблему копипасты бойлерплейта:
Запросить ITestOutputHelper в конструкторе тестового класса
Пере...
https://stackoverflow.com/a/73141087
При создании новых интеграционников я бы упёрся в проблему копипасты бойлерплейта:
Запросить ITestOutputHelper в конструкторе тестового класса
Пере...
👍5🔥3❤1
StepOne | Степан Минин
На что обратить внимание из октябрьского? 🥇 Обходим ограничения Source Generators 📱 W Youtube ролик 🌎 DbMocker, must install 🔄 Улучшаем .csproj двумя дедовскими методиками и ещё пакет не забываем, ага Напишите в комментах - зарядить ли на Хабр текстовые…
Зима близко 🥶
Ноябрь заканчивается…
🛫 ОФИЦИАЛЬНО
StepOne - open source contributor
🛫 Позор ФуфлЯндекса
🥜 NNNUT
🛫 Прожарка HR
🛫 StepOne technologies edit
Ноябрь заканчивается…
StepOne - open source contributor
🥜 NNNUT
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥2❤1😍1
Выйдя из военкомата, захотелось сообщить важную новость
С этого дня открываю постоянную рубрику гостевых постов
Вы можете прислать мне в личку ( @ststphn ) контент/идеи/наработки, а я помогу их допилить и опубликовать здесь, на канале
Это предложение для тех, кому нужна площадка для публикации, не такая токс как Хабр, когда хотелось попробовать, но идей только на один пост или нужна простая проба пера
Всем StepOne, конец связи 🤝
Вы можете прислать мне в личку (
Это предложение для тех, кому нужна площадка для публикации, не такая токс как Хабр, когда хотелось попробовать, но идей только на один пост или нужна простая проба пера
Всем StepOne, конец связи 🤝
👍26🔥3❤1
This media is not supported in your browser
VIEW IN TELEGRAM
🔥12😁7❤5❤🔥2👍1
Найм сломан
Давайте честно, хх ру, хабр карьера и линкедин просто достали!
Эти бездушные гигантские корпораты только поощряют ту вакханалию, которую постоянно устраивают HRюши…
А что если бы появилось онлайн пространство для построения карьеры, которое о вас заботится?
Что если бы появился помощник, который всегда доступен и подберёт наилучшую стратегию карьерного роста, используя индивидуальный подход?
И я тоже) Потому что мой подписчик, Роман Сухих @Roman_Suhih_tg, занимается разработкой такого проекта
Его детище - соцсеть Grossmann, которая заставит наконец отказаться от паразита на теле IT в виде HR
Индивидуальные рекомендации по развитию талантов, постоянная поддержка в развитии, нетворкинг с единомышленниками, анализ роста доходов и многое другое
That’s the whole freaking package!
Роман занимается разработкой в одиночку на протяжении полугода и ему нужна помощь
Не помешают как бэкенд разработчики, так и фронтенд в особенности
За это время уже есть есть три полноценных микросервиса, и еле движимый фронт
Джависты мимо - стек джентельменский, шарпы: SignalR, RabbitMQ, Garnet
Со стороны фронта Vue, SCSS, Typenoscript
Связаться с Романом:
https://news.1rj.ru/str/Roman_Suhih_tg
#гостевой
Давайте честно, хх ру, хабр карьера и линкедин просто достали!
Эти бездушные гигантские корпораты только поощряют ту вакханалию, которую постоянно устраивают HRюши…
А что если бы появилось онлайн пространство для построения карьеры, которое о вас заботится?
Что если бы появился помощник, который всегда доступен и подберёт наилучшую стратегию карьерного роста, используя индивидуальный подход?
Имаджинировали увольнение бесполезных рекрутерш?
И я тоже) Потому что мой подписчик, Роман Сухих @Roman_Suhih_tg, занимается разработкой такого проекта
Его детище - соцсеть Grossmann, которая заставит наконец отказаться от паразита на теле IT в виде HR
Индивидуальные рекомендации по развитию талантов, постоянная поддержка в развитии, нетворкинг с единомышленниками, анализ роста доходов и многое другое
That’s the whole freaking package!
Роман занимается разработкой в одиночку на протяжении полугода и ему нужна помощь
Не помешают как бэкенд разработчики, так и фронтенд в особенности
За это время уже есть есть три полноценных микросервиса, и еле движимый фронт
Джависты мимо - стек джентельменский, шарпы: SignalR, RabbitMQ, Garnet
Со стороны фронта Vue, SCSS, Typenoscript
Связаться с Романом:
https://news.1rj.ru/str/Roman_Suhih_tg
#гостевой
❤🔥14🔥6👍3🥰2
This media is not supported in your browser
VIEW IN TELEGRAM
gotta pump those numbers up, those are rookie numbers 🗿
😁12🤩3❤2
В декабрьской суете я пропустил, что .NET 9 оказывается уже релизнулся, аж месяц назад
Одним из самых значимых нововведений считаю внедрение в стандартную библиотеку UUIDv7
Почему цифра 7 важна?
Раньше, значение было реализовано согласно стандарту v4 - на основе случайных байтов
Грубо говоря, написать
Это создаёт проблемы с производительностью, поскольку когда значения случайны, они неупорядочены, как следствие, их тяжелее индексировать и сортировать
Стандарт v7 предлагает другую концепцию - идентификатор, основанный на метке времени
Соответственно, значения будут упорядочены в неубывающем порядке по определению, такой вот IDENTITY автоинкремент на стероидах
Новый API:
Одним из самых значимых нововведений считаю внедрение в стандартную библиотеку UUIDv7
Почему цифра 7 важна?
Guid полезен для БД, как тип первичного ключа, поскольку гарантирует сильную уникальность своим разнообразием значенийРаньше, значение было реализовано согласно стандарту v4 - на основе случайных байтов
Грубо говоря, написать
Guid.NewGuid() семантически равносильно Random.NextInt64()Это создаёт проблемы с производительностью, поскольку когда значения случайны, они неупорядочены, как следствие, их тяжелее индексировать и сортировать
Стандарт v7 предлагает другую концепцию - идентификатор, основанный на метке времени
Соответственно, значения будут упорядочены в неубывающем порядке по определению, такой вот IDENTITY автоинкремент на стероидах
Новый API:
var guid = Guid.CreateVersion7();
var guidWithTimestamp = Guid.CreateVersion7(DateTimeOffset.UtcNow);
🔥35👍17❤5
StepOne | Степан Минин
Потому что в скором времени будет совместный стрим с Анатолием @overrideTech, где ваши CV будут прожарены)
Рад вам анонсировать, что стрим состоится 21 декабря в 18:00
Ссылочка
https://www.twitch.tv/overrideTech
Ссылочка
https://www.twitch.tv/overrideTech
Twitch
OverrideTech - Twitch
Аллоха, меня зовут Толя, в недавнем прошлом я разработчик. Почти каждый вечер на стриме я менторю: провожу ревью кода и знаний, готовлю к собеседованиям, помогаю делать крутые продающие резюме. Присоединяйся, задавай вопросы и проси помощи, если думаешь,…
👍3🔥3🤩1
StepOne | Степан Минин
Запись выступления на Стачке 💪 Наконец-то стала доступна! Бекендеры были в шоке, когда узнали, что при перекладывании JSON'ов можно...😅
Начиная с .NET 7 я пристально слежу за обновлениями платформенного сериализатора
9-я же версия не копает куда-то вглубь, а растёт вширь, охватывая всего понемножку.
Во-первых, наконец-то завезли нормальную сериализацию енамов:
Во-вторых, добавили глубокую проверку на равенство:
В-третьих, убрали строгость порядка полей метанаданных:
В общем, то тут то там, по мелочи чего-то добавили
Полная сводка всех свежих новостей тут 👉 https://devblogs.microsoft.com/dotnet/system-text-json-in-dotnet-9
System.Text.Json просто потому, что в 7-й версии сделали прорыв с полиморфизмом, а в 8-й с интеграцией Source Generators9-я же версия не копает куда-то вглубь, а растёт вширь, охватывая всего понемножку.
Во-первых, наконец-то завезли нормальную сериализацию енамов:
JsonSerializer.Serialize(MyEnum.Value1 | MyEnum.Value2); // "Value1, Custom enum value"
[Flags, JsonConverter(typeof(JsonStringEnumConverter))]
enum MyEnum
{
Value1 = 1,
[JsonStringEnumMemberName("Custom enum value")]
Value2 = 2,
}
Во-вторых, добавили глубокую проверку на равенство:
JsonElement left = JsonDocument.Parse("10e-3").RootElement;
JsonElement right = JsonDocument.Parse("0.001").RootElement;
JsonElement.DeepEquals(left, right); // TrueВ-третьих, убрали строгость порядка полей метанаданных:
JsonSerializerOptions options = new() { AllowOutOfOrderMetadataProperties = true };
JsonSerializer.Deserialize<Base>("""{"Name":"Name","$type":"derived"}""", options); // SuccessВ общем, то тут то там, по мелочи чего-то добавили
Полная сводка всех свежих новостей тут 👉 https://devblogs.microsoft.com/dotnet/system-text-json-in-dotnet-9
Microsoft News
What’s new in System.Text.Json in .NET 9
An overview of all new .NET 9 features in System.Text.Json for developers.
👍25🔥4❤3