🛠 Кастомная обработка событий
NEsper — это библиотека для .NET, предназначенная для сложной обработки событий.
Она позволяет анализировать потоки данных в реальном времени с минимальной задержкой, используя принципы, похожие на SQL, но для событий.
Основные возможности:
• Обрабатывайте события по мере их поступления, выявляйте аномалии или интересные паттерны без задержки.
• Язык для описания правил обработки событий, чем-то похож на SQL, что делает его удобным для разработчиков.
• Поддерживает распределённые системы и интегрируется с Кафкой и RabbitMQ.
Пример использования:
В этом примере создаётся обработчик событий, который срабатывает, когда значение события превышает 100.
Такой шустрый инструмент пригодится в финансах, мониторинге и для обнаружения аномалий.
➡️ Обработать все события
🐸 Библиотека шарписта #буст
NEsper — это библиотека для .NET, предназначенная для сложной обработки событий.
Она позволяет анализировать потоки данных в реальном времени с минимальной задержкой, используя принципы, похожие на SQL, но для событий.
Основные возможности:
• Обрабатывайте события по мере их поступления, выявляйте аномалии или интересные паттерны без задержки.
• Язык для описания правил обработки событий, чем-то похож на SQL, что делает его удобным для разработчиков.
• Поддерживает распределённые системы и интегрируется с Кафкой и RabbitMQ.
Пример использования:
using EsperTech.NEsper;
using EsperTech.NEsper.Client;
using EsperTech.NEsper.Config;
var config = new Configuration();
config.AddEventType("MyEvent", typeof(MyEvent));
var epService = EPServiceProviderManager.GetDefaultProvider(config);
var epStatement = epService.EPAdministrator.CreateEPL("select * from MyEvent where value > 100");
epStatement.Events += (sender, e) =>
{
foreach (var ev in e.NewEvents)
{
Console.WriteLine($"Detected event: {ev.Get("value")}");
}
};
В этом примере создаётся обработчик событий, который срабатывает, когда значение события превышает 100.
Такой шустрый инструмент пригодится в финансах, мониторинге и для обнаружения аномалий.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5👍3
🤖 Как выбрать подходящий режим GitHub Copilot
GitHub Copilot Chat от Microsoft теперь предлагает два режима — Ask Mode и Agent Mode. Оба инструмента предназначены для улучшения работы разработчиков, но каждый из них ориентирован на разные типы задач.
Сами Microsoft помогают разобраться у себя в блоге какой режим выбрать вам.
В Ask Mode Copilot помогает вам, предоставляя четкие ответы и примеры, но при этом не взаимодействует с кодом, находящимся в вашем проекте. Например, запрос «Что такое LINQ?».
В Agent Mode Copilot не только предоставляет ответы, но и выполняет действия в вашем коде, что делает его незаменимым инструментом для более сложных задач. Как пример будет запрос «Отрефактори этот метод».
➡️ Блог разработчиков
🐸 Библиотека шарписта #свежак
GitHub Copilot Chat от Microsoft теперь предлагает два режима — Ask Mode и Agent Mode. Оба инструмента предназначены для улучшения работы разработчиков, но каждый из них ориентирован на разные типы задач.
Сами Microsoft помогают разобраться у себя в блоге какой режим выбрать вам.
В Ask Mode Copilot помогает вам, предоставляя четкие ответы и примеры, но при этом не взаимодействует с кодом, находящимся в вашем проекте. Например, запрос «Что такое LINQ?».
В Agent Mode Copilot не только предоставляет ответы, но и выполняет действия в вашем коде, что делает его незаменимым инструментом для более сложных задач. Как пример будет запрос «Отрефактори этот метод».
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6
Git worktrees — это возможность использовать несколько рабочих деревьев (worktrees) для одного репозитория.
В каждом таком дереве будет своя ветка, и вы можете работать с ними одновременно, без необходимости каждый раз переключаться с одной на другую.
Как это работает
1. Вы создаете новый worktree для выбранной ветки. В результате появляется отдельный каталог, где будет находиться эта ветка:
git worktree add ../my-feature-branch my-feature-branch
2. После создания worktree вы можете работать с веткой, не вмешиваясь в другие ветки. Это удобно, когда нужно параллельно тестировать изменения или делать ревью PR, не мешая текущей работе.
Когда работа с веткой завершена, можно её удалить:
git worktree remove ../my-feature-branch
Практический пример
Если вам нужно протестировать PR, вы можете создать отдельный worktree для его ветки:
git worktree add ../pr-branch pr-branch
cd ../pr-branch
Применяйте и властвуйте над ветками гита.
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔7❤1
✏️ Промпт для создания абстракции
Мы подготовили для вас полезный промпт, который поможет создать абстракцию для любой задачи.
Используйте его, чтобы сделать ваш код более гибким, расширяемым и удобным для поддержки.
Промпт:
Хороший способ улучшить архитектуру вашего кода и овладеть лучшими практиками ООП.
🐸 Библиотека шарписта #буст
Мы подготовили для вас полезный промпт, который поможет создать абстракцию для любой задачи.
Используйте его, чтобы сделать ваш код более гибким, расширяемым и удобным для поддержки.
Промпт:
Опиши, как создать абстракцию для задачи "[вставьте краткое описание задачи]" с использованием методик объектно-ориентированного проектирования. В ответе подробно изложи основные этапы проектирования абстракции, включая выявление ключевых классов и их ответственности, применение принципов SOLID и паттернов проектирования. Добавь пример кода на С# или диаграмму классов UML, иллюстрирующую предложенную абстракцию.
Хороший способ улучшить архитектуру вашего кода и овладеть лучшими практиками ООП.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1🤩1🌚1
🔄 Обновление MCP C# SDK
В свежем обновлении Microsoft выводит разработку AI‑приложений на новый уровень. Разберём самое вкусное в обновлении.
• Диалоговый сбор данных
Механизм, позволяющий вашим приложениям заранее задавать пользователю структурированные вопросы — например, «Введите количество элементов» (число), «Укажите путь к файлу» (строка) или «Разрешить доступ?» (флаг).
• Структурированный вывод инструментов
Позволяет инструментам явно описывать формат возвращаемых данных через JSON‑схему: какие поля будут, какого они типа и какие обязательны.
• Улучшенные метаданные
Расширенный блок _meta, включающий человекочитаемые поля name и title для каждого инструмента и подсказки.
Как обновиться
Чтобы начать пользоваться всеми этими возможностями, достаточно ввести в консоли проекта команду:
После этого пересоберите приложение и убедитесь, что используемая версия пакета соответствует 2025‑06‑18.
🐸 Библиотека шарписта #свежак
В свежем обновлении Microsoft выводит разработку AI‑приложений на новый уровень. Разберём самое вкусное в обновлении.
• Диалоговый сбор данных
Механизм, позволяющий вашим приложениям заранее задавать пользователю структурированные вопросы — например, «Введите количество элементов» (число), «Укажите путь к файлу» (строка) или «Разрешить доступ?» (флаг).
• Структурированный вывод инструментов
Позволяет инструментам явно описывать формат возвращаемых данных через JSON‑схему: какие поля будут, какого они типа и какие обязательны.
• Улучшенные метаданные
Расширенный блок _meta, включающий человекочитаемые поля name и title для каждого инструмента и подсказки.
Как обновиться
Чтобы начать пользоваться всеми этими возможностями, достаточно ввести в консоли проекта команду:
dotnet add package ModelContextProtocol --prerelease
После этого пересоберите приложение и убедитесь, что используемая версия пакета соответствует 2025‑06‑18.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
Please open Telegram to view this post
VIEW IN TELEGRAM
😁23
🔥 Хороший ML-разработчик не начинает с нейросетей
На собеседовании по ML System Design кандидату дают задачу «предсказать отток», а он сразу лезет в нейросети. Красиво, модно, дорого.
Но профи думает иначе:
💭 Логрегрессия? Градиентный бустинг?
💭 А сколько у нас данных и времени?
💭 Что с интерпретируемостью?
Потому что не выбрать адекватную модель — это уже ошибка.
Нейросети — это круто. Но без понимания классического ML вы просто «подключаете модельку», а не строите решения.
➡️ На курсе разберём:
— линейные модели, деревья, PCA, кластеризацию
— метрики, переобучение, bias vs variance
— инженерные подводные камни, которые идут сразу после fit()
🎁 Скидка 10 000₽ по промокодуEarlybird , только до 27 июля.
А ещё — подарок для первых 10 участников: специальный лонгрид по теме курса, чтобы вы могли начать погружение в материал уже сегодня.
🔗 Успей записаться — и начни карьеру в Data Science уже через 3 месяца!
На собеседовании по ML System Design кандидату дают задачу «предсказать отток», а он сразу лезет в нейросети. Красиво, модно, дорого.
Но профи думает иначе:
💭 Логрегрессия? Градиентный бустинг?
💭 А сколько у нас данных и времени?
💭 Что с интерпретируемостью?
Потому что не выбрать адекватную модель — это уже ошибка.
Нейросети — это круто. Но без понимания классического ML вы просто «подключаете модельку», а не строите решения.
➡️ На курсе разберём:
— линейные модели, деревья, PCA, кластеризацию
— метрики, переобучение, bias vs variance
— инженерные подводные камни, которые идут сразу после fit()
🎁 Скидка 10 000₽ по промокоду
А ещё — подарок для первых 10 участников: специальный лонгрид по теме курса, чтобы вы могли начать погружение в материал уже сегодня.
🔗 Успей записаться — и начни карьеру в Data Science уже через 3 месяца!
👍2❤1
🧑💻 Как отменить асинхронную операцию с помощью CancellationToken
Одной из ключевых особенностей асинхронного программирования в C# является возможность отменить долгие или зависшие операции, используя
Для создания токена отмены используется объект типа
Пример отмены с помощью токена. Вызываем функцию и передаём в неё токен:
Сама функция:
При отмене операции метод выбрасывает исключение
🐸 Библиотека шарписта #буст
Одной из ключевых особенностей асинхронного программирования в C# является возможность отменить долгие или зависшие операции, используя
CancellationToken
. CancellationToken
— это объект, который передается в метод асинхронной операции. Он позволяет сигнализировать об отмене операции, если она больше не требуется. Для создания токена отмены используется объект типа
CancellationTokenSource
, который предоставляет токен для отмены, а также метод Cancel()
, который сигнализирует об отмене.Пример отмены с помощью токена. Вызываем функцию и передаём в неё токен:
using System;
using System.Threading;
using System.Threading.Tasks;
class Program
{
static async Task Main(string[] args)
{
// Создаем объект CancellationTokenSource
var cancellationTokenSource = new CancellationTokenSource();
// Получаем токен отмены
var cancellationToken = cancellationTokenSource.Token;
// Запускаем асинхронную задачу
var task = LongRunningOperation(cancellationToken);
// Через 3 секунды отменяем операцию
await Task.Delay(3000);
cancellationTokenSource.Cancel();
try
{
// Ожидаем завершения операции
await task;
}
catch (OperationCanceledException)
{
Console.WriteLine("Операция была отменена.");
}
}
}
Сама функция:
// Асинхронная операция, которая может быть отменена
static async Task LongRunningOperation(CancellationToken cancellationToken)
{
Console.WriteLine("Операция началась.");
for (int i = 0; i < 10; i++)
{
// Проверка на отмену операции
if (cancellationToken.IsCancellationRequested)
{
Console.WriteLine("Операция отменена.");
throw new OperationCanceledException();
}
// Имитация работы
Console.WriteLine($"Шаг {i + 1}...");
await Task.Delay(1000); // Задержка в 1 секунду
}
Console.WriteLine("Операция завершена.");
}
}
При отмене операции метод выбрасывает исключение
OperationCanceledException
, которое можно ловить и обрабатывать соответствующим образом. Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤7😁3🥱1
Асинхронное программирование стало неотъемлемой частью разработки на C#. Но появляется вопрос: нужно ли использовать асинхронность в каждом методе?
Когда стоит использовать
async
— Асинхронность идеально подходит для работы с медленными операциями, такими как запросы к базе данных, сетевые операции или чтение/запись файлов.
— Асинхронный код позволяет серверам и приложениям обрабатывать значительно больше запросов без блокировки.
— Применяя async/await, мы освобождаем потоки от ожидания завершения I/O операций.
Но за плюсами спрятались и минусы
— Асинхронные методы всегда требуют дополнительных накладных расходов, таких как создание задач, контекст переключения и управление потоками.
— Применение асинхронности везде может привести к проблемам с синхронизацией данных и контекстом выполнения.
— Если приложение не работает с большим количеством асинхронных операций, добавление
async/await
в каждый метод не даст значительного прироста производительности.Please open Telegram to view this post
VIEW IN TELEGRAM
❤8
💻 Удалённая разработка в Rider
Не всегда нужно хранить код у себя на пк. Хранение и выполнение кода на удалённых хостах и контейнерах давно стало реальностью.
Rider делает работу с с такими хостами настолько удобной, что даже самые сложные задачи становятся простыми.
Подключение к серверу через SSH
Настроить SSH-подключение в Rider — проще, чем вы думаете. Всё, что нужно — это пару кликов в настройках IDE.
1. Откройте File → Settings → Tools → Deployment.
2. Выберите Add Remote Server и в качестве типа соединения выберите SSH.
3. Введите IP-адрес удалённого сервера, пользовательские данные и путь к приватному ключу (или пароль).
4. Нажмите Test Connection и, если всё в порядке, готово — подключение установлено!
🧑💻 Работа с проектами на удалённом сервере
Когда подключение установлено, вы получаете доступ к файловой системе удалённого сервера. Это значит, что вы можете:
• Перемещать файлы между локальной машиной и сервером
• Редактировать код, компилировать и запускать его на сервере.
• Открывать логи, работать с конфигурационными файлами и запускать процессы прямо из Rider.
Один из самых полезных инструментов при удалённой разработке — это отладка через SSH.
Вы можете подключиться к процессу, который работает на удалённом сервере, и отлаживать код, как если бы он выполнялся локально.
Чтобы начать удалённую отладку:
1. Запустите приложение на удалённом сервере
2. Выберите Run → Edit Configurations и создайте конфигурацию для Remote Debugging.
3. Подключитесь к удалённому процессу через SSH и начинайте отладку прямо из Rider.
Если вы ещё не настроили SSH в Rider, самое время попробовать.
🐸 Библиотека шарписта #буст
Не всегда нужно хранить код у себя на пк. Хранение и выполнение кода на удалённых хостах и контейнерах давно стало реальностью.
Rider делает работу с с такими хостами настолько удобной, что даже самые сложные задачи становятся простыми.
Подключение к серверу через SSH
Настроить SSH-подключение в Rider — проще, чем вы думаете. Всё, что нужно — это пару кликов в настройках IDE.
1. Откройте File → Settings → Tools → Deployment.
2. Выберите Add Remote Server и в качестве типа соединения выберите SSH.
3. Введите IP-адрес удалённого сервера, пользовательские данные и путь к приватному ключу (или пароль).
4. Нажмите Test Connection и, если всё в порядке, готово — подключение установлено!
🧑💻 Работа с проектами на удалённом сервере
Когда подключение установлено, вы получаете доступ к файловой системе удалённого сервера. Это значит, что вы можете:
• Перемещать файлы между локальной машиной и сервером
• Редактировать код, компилировать и запускать его на сервере.
• Открывать логи, работать с конфигурационными файлами и запускать процессы прямо из Rider.
Один из самых полезных инструментов при удалённой разработке — это отладка через SSH.
Вы можете подключиться к процессу, который работает на удалённом сервере, и отлаживать код, как если бы он выполнялся локально.
Чтобы начать удалённую отладку:
1. Запустите приложение на удалённом сервере
2. Выберите Run → Edit Configurations и создайте конфигурацию для Remote Debugging.
3. Подключитесь к удалённому процессу через SSH и начинайте отладку прямо из Rider.
Если вы ещё не настроили SSH в Rider, самое время попробовать.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤7👍5
😤 Устал листать туториалы, которые не складываются в картину
У тебя в голове уже есть логрегрессии, деревья, метрики и какая-то PCA, но системного понимания всё нет?
Пора с этим разобраться!
Наш курс по классическому ML:
— научит выбирать адекватные модели под задачу
— разложит метрики, переобучение и bias по полочкам
— покажет, что скрывается за fit/predict, и что с этим делать
🔔 До 27 июля по промокодуEarlybird — минус 10.000₽
P.S. Первые 10 участников получат эксклюзивный лонгрид, чтобы начать изучать тему ещё до старта курса.
👉 Поменяй свою жизнь: старт карьеры в AI — успей до закрытия набора!
У тебя в голове уже есть логрегрессии, деревья, метрики и какая-то PCA, но системного понимания всё нет?
Пора с этим разобраться!
Наш курс по классическому ML:
— научит выбирать адекватные модели под задачу
— разложит метрики, переобучение и bias по полочкам
— покажет, что скрывается за fit/predict, и что с этим делать
🔔 До 27 июля по промокоду
P.S. Первые 10 участников получат эксклюзивный лонгрид, чтобы начать изучать тему ещё до старта курса.
👉 Поменяй свою жизнь: старт карьеры в AI — успей до закрытия набора!
Когда вы рассказываете о своих проектах в резюме, важно не только указать, что было сделано, но и правильно подать информацию.
В карточках объяснили какие ошибки могут быть при описании пет-проектов.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤4🔥2
Please open Telegram to view this post
VIEW IN TELEGRAM
😁6❤2
😁29👏3👾3
🤔 «Начни сразу с нейросетей — зачем тебе логрегрессия?»
Это один из худших советов для начинающего ML-разработчика. Зрелость — это понимать, где простого достаточно, а не тянуть трансформеры на любую задачу из-за хайпа.
Классика ML — это не допотопная теория, а база (bias/variance, деревья, метрики), без которой не понять Deep Learning.
⚡️ Хотите освоить этот фундамент на реальных задачах? Приходите на наш курс по классическому ML. Только хардкор, только продовые задачи!
📆 Старт — 12 августа.
Для первых 10 участников бонус — специальный лонгрид по теме курса, чтобы вы могли начать разбираться уже сейчас.
🎁 Последний день промокодаEarlybird на скидку 10.000₽.
👉 Не упустите шанс!
Это один из худших советов для начинающего ML-разработчика. Зрелость — это понимать, где простого достаточно, а не тянуть трансформеры на любую задачу из-за хайпа.
Классика ML — это не допотопная теория, а база (bias/variance, деревья, метрики), без которой не понять Deep Learning.
⚡️ Хотите освоить этот фундамент на реальных задачах? Приходите на наш курс по классическому ML. Только хардкор, только продовые задачи!
📆 Старт — 12 августа.
Для первых 10 участников бонус — специальный лонгрид по теме курса, чтобы вы могли начать разбираться уже сейчас.
🎁 Последний день промокода
👉 Не упустите шанс!