🚀 Обновленный CodeBehind
Вышел CodeBehind 4.0, который добавляет новые возможности для удобного разделения логики и разметки в Blazor.
Основные изменения:
➖ Обновленный BlazorComponentBase — улучшена поддержка жизненного цикла компонентов.
➖ Удобный Dependency Injection — сервисы передаются напрямую в код-бихайнды.
➖ Source Generators — автоматическая генерация кода для снижения рутины.
➖ Гибкая обработка событий — больше контроля и возможностей.
➖ Автоматическая синхронизация состояний — меньше бойлерплейта.
➡️ Подробный обзор обновления
🐸 Библиотека шарписта
Вышел CodeBehind 4.0, который добавляет новые возможности для удобного разделения логики и разметки в Blazor.
Основные изменения:
➡️ Подробный обзор обновления
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤2👾1
This media is not supported in your browser
VIEW IN TELEGRAM
KnightMoves.SqlObjects: объектно-ориентированный SQL-конструктор для .NET, который позволяет писать запросы максимально близко к чистому SQL, но с удобством C#.
Вместо строкового SQL-запроса создаются объекты, которые позволяют собирать SQL-инструкции интуитивно:
using KnightMoves.SqlObjects;
var sql = TSQL
.SELECT()
.STAR()
.FROM("Products")
.Build();
Console.WriteLine(sql);
В итоге получится запрос:
SELECT * FROM Products;
Please open Telegram to view this post
VIEW IN TELEGRAM
😁38🤔10😢5👏2🥱2
💻 Управление пакетами в .NET
Благодаря NuGet разработчики могут сосредоточиться на коде, а не на поиске и подключении библиотек. Это стандарт в экосистеме .NET, который упрощает разработку как для одиночных программистов, так и для команд.
➖ Почему NuGet важен
• Автоматическое управление зависимостями – избавляет от ручного скачивания библиотек
• Центральный репозиторий – тысячи готовых пакетов, включая Newtonsoft.Json, Entity Framework и Serilog
• Лёгкая интеграция с .NET CLI, Visual Studio и CI/CD
➖ Что такое
Этот URL — официальный репозиторий пакетов NuGet, поддерживаемый Microsoft
➖ Работа с NuGet в .NET CLI
Установка пакета:
Обновление пакетов:
Удаление пакета:
➡️ Подробнее на официальном сайте
🐸 Библиотека шарписта
Благодаря NuGet разработчики могут сосредоточиться на коде, а не на поиске и подключении библиотек. Это стандарт в экосистеме .NET, который упрощает разработку как для одиночных программистов, так и для команд.
• Автоматическое управление зависимостями – избавляет от ручного скачивания библиотек
• Центральный репозиторий – тысячи готовых пакетов, включая Newtonsoft.Json, Entity Framework и Serilog
• Лёгкая интеграция с .NET CLI, Visual Studio и CI/CD
api.nuget.org/v3/index.json
. Этот URL — официальный репозиторий пакетов NuGet, поддерживаемый Microsoft
Установка пакета:
dotnet add package Newtonsoft.Json
Обновление пакетов:
dotnet restore
Удаление пакета:
dotnet remove package Newtonsoft.Json
Please open Telegram to view this post
VIEW IN TELEGRAM
🥱25👍3🔥1
Swipe right or swipe left
Что делать, если твои мэтчи в жизни не такие точные, как твой код?
Спокойно, 14 февраля в 19:00 по МСК мы разберём, как ML анализирует speed dating и предсказывает match.
📌 Мы возьмем реальные данные со speed dating.
📌 Обучим модель, которая скажет: match или swipe left.
📌 Разберём, какие признаки реально важны (спойлер: работа в IT — не прям гарантия успеха (наши маркетологи подтверждают 😥).
💡 Приходи, если хочешь прокачать свой Python, ML и, возможно, станешь идеальной парой, как самый стильные форсы.
👉 Записаться
Что делать, если твои мэтчи в жизни не такие точные, как твой код?
Спокойно, 14 февраля в 19:00 по МСК мы разберём, как ML анализирует speed dating и предсказывает match.
📌 Мы возьмем реальные данные со speed dating.
📌 Обучим модель, которая скажет: match или swipe left.
📌 Разберём, какие признаки реально важны (спойлер: работа в IT — не прям гарантия успеха (наши маркетологи подтверждают 😥).
💡 Приходи, если хочешь прокачать свой Python, ML и, возможно, станешь идеальной парой, как самый стильные форсы.
👉 Записаться
😁7👍5🥱3❤1
Visual Studio позволяет генерировать и настраивать AI-коммиты. Можно задать длину, формат и количество строк, чтобы коммиты соответствовали стандартам команды.
Перейти в Tools > Options > Copilot и настроить шаблоны и параметры
Please open Telegram to view this post
VIEW IN TELEGRAM
🥱9👍3
Гибридный кэш это баланс между скоростью и масштабируемостью. Он объединяет два уровня хранения данных:
1️⃣ Кэш в памяти. Хранит часто используемые данные локально, обеспечивая моментальный доступ.
2️⃣ Распределенный кэш: Redis, SQL Server Cache. Используется для хранения данных, доступных нескольким серверам.
То есть это метод, при котором данные сначала проверяются в локальном кэше, а если их там нет, запрашиваются из распределенного кэша, например, Redis.
Настройка гибридного кэша в .NET
Чтобы реализовать гибридное кэширование можно использовать HybridCache, который сочетает кэш в памяти и Redis.
Please open Telegram to view this post
VIEW IN TELEGRAM
👏4👍2👾1
🛠 Асинхронное взаимодействие микросервисов в .NET
Одним из самых популярных брокеров сообщений является RabbitMQ, а MassTransit — это удобная библиотека для работы с ним в .NET. Сейчас разберем, как связать эти инструменты и создать отказоустойчивую систему обмена сообщениями.
➖ Какие инструменты нужны
• RabbitMQ. Брокер сообщений, который позволяет сервисам отправлять и получать сообщения асинхронно, используя очереди.
• MassTransit. Библиотека для .NET, которая предоставляет простой и удобный API для работы с брокерами сообщений.
➖ Как использовать их вместе
1️⃣ Устанавливаем RabbitMQ
RabbitMQ можно развернуть в Docker:
2️⃣ Настраиваем MassTransit
Необходимо зарегистрировать MassTransit и подключить его к RabbitMQ:
Этот код создает подключение к RabbitMQ, которое позволяет сервису отправлять и получать сообщения.
3️⃣ Создаем производителя
Производитель отправляет сообщения в очередь, используя MassTransit:
4️⃣ Создаем потребителя
Потребитель автоматически получает и обрабатывает сообщения из очереди:
💾 Сохраняйте мини-гайд себе, чтобы не потерять
📎 Подробный гайд в источнике
🐸 Библиотека шарписта
Одним из самых популярных брокеров сообщений является RabbitMQ, а MassTransit — это удобная библиотека для работы с ним в .NET. Сейчас разберем, как связать эти инструменты и создать отказоустойчивую систему обмена сообщениями.
• RabbitMQ. Брокер сообщений, который позволяет сервисам отправлять и получать сообщения асинхронно, используя очереди.
• MassTransit. Библиотека для .NET, которая предоставляет простой и удобный API для работы с брокерами сообщений.
RabbitMQ можно развернуть в Docker:
docker run -d --hostname my-rabbit --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:management
Необходимо зарегистрировать MassTransit и подключить его к RabbitMQ:
builder.Services.AddMassTransit(x =>
{
x.UsingRabbitMq((context, cfg) =>
{
cfg.Host("localhost", "/", h =>
{
h.Username("guest");
h.Password("guest");
});
});
});
Этот код создает подключение к RabbitMQ, которое позволяет сервису отправлять и получать сообщения.
Производитель отправляет сообщения в очередь, используя MassTransit:
public async Task SendMessage(IBus bus, string message)
{
var endpoint = await bus.GetSendEndpoint(new Uri("queue:order-queue"));
await endpoint.Send(new OrderCreated { OrderId = Guid.NewGuid(), Message = message });
}
Потребитель автоматически получает и обрабатывает сообщения из очереди:
public class OrderConsumer : IConsumer<OrderCreated>
{
public Task Consume(ConsumeContext<OrderCreated> context)
{
Console.WriteLine($"Получено сообщение: {context.Message.Message}");
return Task.CompletedTask;
}
}
💾 Сохраняйте мини-гайд себе, чтобы не потерять
Please open Telegram to view this post
VIEW IN TELEGRAM
👍23❤6🥱1
This media is not supported in your browser
VIEW IN TELEGRAM
🖥 Windows Terminal Preview 1.23 – что нового в обновлении
Вышла новая версия превью терминала Windows! В этом обновлении разработчики сосредоточились на переносе множества настроек в графический интерфейс, а также внесли исправления ошибок и улучшения доступности.
Ключевые нововведения:
1️⃣ Обновления интерфейса настроек: Многие параметры, ранее доступные только в файле settings.json, теперь можно настроить непосредственно через интерфейс.
2️⃣ Новая вкладка "Совместимость": Добавлена страница настроек "Совместимость", где можно разрешить фоновую работу терминала, включить отладочные функции и изменить режим измерения текста.
3️⃣ Настройка меню новой вкладки: Теперь пользователи могут кастомизировать меню новой вкладки прямо через интерфейс настроек.
Cтабильная версия Windows Terminal обновлена до 1.22, включающей поддержку Sixel и панель сниппетов из предыдущей превью-версии.
Установить Windows Terminal Preview можно со страницы релизов на GitHub или с помощью winget.
👉 Подробности читайте в официальном блоге
Вышла новая версия превью терминала Windows! В этом обновлении разработчики сосредоточились на переносе множества настроек в графический интерфейс, а также внесли исправления ошибок и улучшения доступности.
Ключевые нововведения:
Cтабильная версия Windows Terminal обновлена до 1.22, включающей поддержку Sixel и панель сниппетов из предыдущей превью-версии.
Установить Windows Terminal Preview можно со страницы релизов на GitHub или с помощью winget.
👉 Подробности читайте в официальном блоге
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8
🧑💻 Мокирование последовательных вызовов в Moq
Когда один и тот же метод вызывается несколько раз в тестах, часто требуется вернуть разные значения при каждом вызове. Например, первый вызов возвращает 1, второй — 2, а третий выбрасывает исключение.
Для подобных задач можно использовать
🛠 Как это работает
Допустим, у нас есть интерфейс
Это удобно при тестировании кеширования, ретраев, обработки ошибок или сложных зависимостей.
➡️ Подробнее о SetupSequence и примерах использования
🐸 Библиотека шарписта
Когда один и тот же метод вызывается несколько раз в тестах, часто требуется вернуть разные значения при каждом вызове. Например, первый вызов возвращает 1, второй — 2, а третий выбрасывает исключение.
Для подобных задач можно использовать
SetupSequence()
. 🛠 Как это работает
Допустим, у нас есть интерфейс
IMyInterface
с методом MyMethod()
, который вызывается несколько раз. Вместо обычного Setup()
мы используем SetupSequence()
, чтобы задать разные результаты:var mock = new Mock<IMyInterface>();
mock.SetupSequence(m => m.MyMethod())
.Returns(1)
.Returns(2)
.Throws(new Exception("Ошибка"));
Это удобно при тестировании кеширования, ретраев, обработки ошибок или сложных зависимостей.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍25👾3
🤔 Какие вебинары вам действительно нужны?
Привет, шарписты! 👋
Мы готовим новые вебинары и хотим сделать их максимально полезными для вас. Это поможет нам не только создавать актуальный контент, но и развивать проект, находя новые точки контактов для вас.
Ваши ответы дадут нам понимание, какие темы и форматы действительно важны, а также помогут сделать вебинары интереснее и продуктивнее.
Заполнение займет всего пару минут, а нам это очень поможет! Спасибо, что участвуете в нашем развитии! 💙
👉 Пройти опрос
Привет, шарписты! 👋
Мы готовим новые вебинары и хотим сделать их максимально полезными для вас. Это поможет нам не только создавать актуальный контент, но и развивать проект, находя новые точки контактов для вас.
Ваши ответы дадут нам понимание, какие темы и форматы действительно важны, а также помогут сделать вебинары интереснее и продуктивнее.
Заполнение займет всего пару минут, а нам это очень поможет! Спасибо, что участвуете в нашем развитии! 💙
👉 Пройти опрос
❤1
Как классическая классификация ML помогает в реальном мире
🤖 Классификация в ML — это метод обучения, в котором модель обучается на размеченных данных и предсказывает, к какому классу относится новый объект.
✅ Фильтрация спама – чтобы в почте оставалось только важное.
✅ Рекомендации фильмов – Netflix знает, что ты любишь!
✅ Кредитный скоринг – банки решают, дать ли тебе займ.
✅ Предсказание мэтчей – как на нашем вебинаре по speed dating.
14 февраля мы разберём на практике задачу классификации:
- Как выбрать оптимальные признаки
- Что делать с несбалансированными данными
- Как интерпретировать результаты модели
🔥 Если уже работаешь с ML или только начинающий программист – приходи на наш вебинар, в котором мы разберем «как предсказывать мэтч на speed dating» .
Приходи!
🤖 Классификация в ML — это метод обучения, в котором модель обучается на размеченных данных и предсказывает, к какому классу относится новый объект.
✅ Фильтрация спама – чтобы в почте оставалось только важное.
✅ Рекомендации фильмов – Netflix знает, что ты любишь!
✅ Кредитный скоринг – банки решают, дать ли тебе займ.
✅ Предсказание мэтчей – как на нашем вебинаре по speed dating.
14 февраля мы разберём на практике задачу классификации:
- Как выбрать оптимальные признаки
- Что делать с несбалансированными данными
- Как интерпретировать результаты модели
🔥 Если уже работаешь с ML или только начинающий программист – приходи на наш вебинар, в котором мы разберем «как предсказывать мэтч на speed dating» .
Приходи!
👍1
До сих пор в LINQ не было встроенного метода для случайного перемешивания коллекций. Разработчикам приходилось использовать разные неэффективные методы.
В новом PR был добавлен метод
Shuffle()
в IEnumerable<T>
. Будем ждать в одном из следующих релизов .NETПример будущего кода:
var shuffledItems = items.Shuffle();
Подробности:
🔗 Обсуждение необходимости метода
🔗 Реализация в .NET
Please open Telegram to view this post
VIEW IN TELEGRAM
👍40🤔7
Вам нравится читать контент на этом канале?
Возможно, вы задумывались о том, чтобы купить на нем интеграцию?
Следуйте 3 простым шагам, чтобы сделать это:
1) Нажмите на ссылку: Вход
2) Пополняйтесь удобным способом
3) Размещайте публикацию
Если тематика вашего поста подойдет нашему каналу, мы с удовольствием опубликуем его.
Возможно, вы задумывались о том, чтобы купить на нем интеграцию?
Следуйте 3 простым шагам, чтобы сделать это:
1) Нажмите на ссылку: Вход
2) Пополняйтесь удобным способом
3) Размещайте публикацию
Если тематика вашего поста подойдет нашему каналу, мы с удовольствием опубликуем его.
Telegram
Telega.in
Платформа для запуска рекламы в Telegram: продвигайтесь в проверенных каналах и чатах.
👍5🥱1
Forwarded from Proglib.academy | IT-курсы
Как применять сторителлинг на IT-собеседовании
Чтобы выделиться среди других кандидатов, можно использовать сторителлинг — инструмент, который помогает не только запомниться работодателю, но и показать свои софт-скиллы и опыт в выгодном свете.
➡️ Что внутри статьи:
▪️ Почему сторителлинг работает лучше сухого перечисления навыков.
▪️ Советы по созданию историй для IT-собеседований.
▪️ Готовые примеры успешных историй.
🔗 Читать статью
🔵 Чтобы подготовиться к IT-собеседованию, попробуйте наш курс «Алгоритмы и структуры данных»
Чтобы выделиться среди других кандидатов, можно использовать сторителлинг — инструмент, который помогает не только запомниться работодателю, но и показать свои софт-скиллы и опыт в выгодном свете.
▪️ Почему сторителлинг работает лучше сухого перечисления навыков.
▪️ Советы по созданию историй для IT-собеседований.
▪️ Готовые примеры успешных историй.
🔗 Читать статью
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2🔥1
Temporal.io — это инструмент для управления сложными рабочими процессами, который обеспечивает автоматическое восстановление, управление состоянием и предсказуемость выполнения задач.
🛠 Как использовать Temporal в .NET
1. Добавляем Temporal в .NET проект
dotnet add package Temporalio
2. Настраиваем клиент Temporal
var client = await TemporalClient.ConnectAsync(new TemporalClientConnectOptions
{
TargetHost = "localhost:7233"
});
TargetHost
— это адрес сервера Temporal, который управляет процессами.3. Создаем Workflow
[Workflow]
public class MyWorkflow
{
public async Task<string> RunAsync(string name)
{
return $"Hello, {name}!";
}
}
Workflow — это логика, которая будет управляться Temporal.
4. Запускаем Workflow из .NET-кода
var handle = await client.StartWorkflowAsync(
(MyWorkflow wf) => wf.RunAsync("Temporal.io"),
new WorkflowOptions("my-workflow"));
Console.WriteLine($"Workflow started: {handle.Id}");
Temporal автоматически отслеживает состояние процесса, перезапускает его при сбоях и масштабирует при необходимости.
Temporal + .NET = надежная система, где даже долгие процессы не теряются, не ломаются и автоматически восстанавливаются
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🌚9❤1
Forwarded from C# jobs — вакансии по C#, .NET, Unity
📈 IT-найм 2025: почему сеньоры будут на вес золота, а джуны — без работы?
Времена «мастеров на все руки» в IT подходят к концу. Работодатели все чаще отдают предпочтение кандидатам с опытом работы на конкретном стеке и с продолжительным опытом в конкретной отрасли, будь то финтех, е-ком, ритейл, фудтех и т. д.
Все потому, что рынок требует специалистов с глубоким пониманием специфики отрасли, способных решать задачи в рамках строгих ограничений.
Рассказываем, какие специалисты будут востребованы в 2025 году и как ими стать.
👉 Читать статью
Времена «мастеров на все руки» в IT подходят к концу. Работодатели все чаще отдают предпочтение кандидатам с опытом работы на конкретном стеке и с продолжительным опытом в конкретной отрасли, будь то финтех, е-ком, ритейл, фудтех и т. д.
Все потому, что рынок требует специалистов с глубоким пониманием специфики отрасли, способных решать задачи в рамках строгих ограничений.
Рассказываем, какие специалисты будут востребованы в 2025 году и как ими стать.
👉 Читать статью
👍7🤔2
🧑💻 Каналы в .NET – скрытая жемчужина для асинхронной обработки
Каналы в .NET – это асинхронные очереди в памяти, которые позволяют передавать данные быстро и без задержек. Разберём как их использовать.
➖ Что такое каналы
Каналы — это быстрая и эффективная альтернатива очередям для перемещения данных внутри приложения. Они позволяют передавать данные между потоками без блокировок.
➖ Где они полезны
• Фоновые задачи: например, отправка email после регистрации.
• Внутрипроцессные очереди: без необходимости поднимать Redis или Kafka.
• Обработка событий в реальном времени: без задержек и потерь данных.
➡️ Чтобы узнать про каналы подробнее посмотрите видео
🐸 Библиотека шарписта
Каналы в .NET – это асинхронные очереди в памяти, которые позволяют передавать данные быстро и без задержек. Разберём как их использовать.
Каналы — это быстрая и эффективная альтернатива очередям для перемещения данных внутри приложения. Они позволяют передавать данные между потоками без блокировок.
• Фоновые задачи: например, отправка email после регистрации.
• Внутрипроцессные очереди: без необходимости поднимать Redis или Kafka.
• Обработка событий в реальном времени: без задержек и потерь данных.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15
🧪 Мутационное тестирование в .NET
Мутационное тестирование это метод тестирования, при котором код намеренно мутирует:
📌 Если тесты замечают изменения — хорошо.
📌 Если не замечают — тест бесполезен.
Как это работает в .NET
Для мутационного тестирования в .NET можно использовать Stryker.
Stryker — это библиотека для автоматического мутационного тестирования в .NET. Она анализирует тесты, создает мутации в коде и проверяет, насколько хорошо тесты обнаруживают эти изменения.
1️⃣ Берем исходный код и вносим мутации
• Инструмент автоматически меняет код, создавая мутантов.
• Например, если есть return x > 10;, он заменяет > на < или return true;.
2️⃣ Запускаем тесты на мутированном коде
• Если тест замечает изменения и падает — мутант убит.
• Если тест проходит — мутант выжил, а значит, тест неэффективен.
3️⃣ Анализируем отчет
• Сколько мутантов было убито, какие тесты не заметили изменений и какие части кода не защищены?
Мутационное тестирование — это как "стресс-тест" для тестов. Оно имитирует баги, проверяя, смогут ли тесты их поймать.
➡️ Подробнее про мутационное тестирование
🐸 Библиотека шарписта
Мутационное тестирование это метод тестирования, при котором код намеренно мутирует:
📌 Если тесты замечают изменения — хорошо.
📌 Если не замечают — тест бесполезен.
Как это работает в .NET
Для мутационного тестирования в .NET можно использовать Stryker.
Stryker — это библиотека для автоматического мутационного тестирования в .NET. Она анализирует тесты, создает мутации в коде и проверяет, насколько хорошо тесты обнаруживают эти изменения.
• Инструмент автоматически меняет код, создавая мутантов.
• Например, если есть return x > 10;, он заменяет > на < или return true;.
• Если тест замечает изменения и падает — мутант убит.
• Если тест проходит — мутант выжил, а значит, тест неэффективен.
• Сколько мутантов было убито, какие тесты не заметили изменений и какие части кода не защищены?
Мутационное тестирование — это как "стресс-тест" для тестов. Оно имитирует баги, проверяя, смогут ли тесты их поймать.
➡️ Подробнее про мутационное тестирование
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥10🤩5👍3
🎮💉 Инъекция зависимостей в Unity для самых маленьких
В разработке на Unity часто возникает проблема высокой связанности кода, что затрудняет поддержку и тестирование. Инъекция зависимостей помогает сделать архитектуру гибче, упрощая управление зависимостями между компонентами.
В свежей статье разбираются подходы к DI в Unity, сложности, связанные с MonoBehaviour, и примеры улучшения структуры проекта.
➡️ Читать статью
🐸 Библиотека шарписта
В разработке на Unity часто возникает проблема высокой связанности кода, что затрудняет поддержку и тестирование. Инъекция зависимостей помогает сделать архитектуру гибче, упрощая управление зависимостями между компонентами.
В свежей статье разбираются подходы к DI в Unity, сложности, связанные с MonoBehaviour, и примеры улучшения структуры проекта.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4😁1
Большие JSON-объекты замедляют десериализацию, перегружают память и увеличивают задержки.
Что делать, чтобы JSON не тормозил приложение:
JsonSerializer.DeserializeAsync
, чтобы не загружать весь объект в память.🖇 Полное руководство
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3❤1