C# Development | YeaHub
743 subscribers
304 photos
33 videos
1 file
537 links
Теория, подготовка к интервью и курсы для C# разработчиков

YeaHub — это платформа для IT-специалистов, объединяющая обучение, карьерный рост, развитие и сообщество единомышленников.

Платформа: https://yeahub.ru

Для связи: @ruslan_kuyanets
Download Telegram
#Собес #postgres
🤔 Что такое схемы (schemas) в PostgreSQL?

Схемы в PostgreSQL — это контейнеры для объектов базы данных (таблиц, представлений, функций и т. д.). Они позволяют организовывать объекты базы данных в логически разделенные группы, что помогает упорядочить структуру базы данных и избегать конфликтов имен.

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
😵‍💫 Улучшения производительности FrozenDictionary с целочисленными (int) ключами в .NET 10

FrozenDictionary представляют собой коллекции, оптимизированные для чтения (Dictionary и Set), создание которых занимает больше времени, но чтение из них происходит быстрее по сравнению с неизменяемыми (immutable) коллекциями.

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
#полезное
🥺 Внедрение настроек в .NET? Существует три основных интерфейса:

🟠 IOptions: кэшируется на всё время жизни приложения

🟠 IOptionsSnapshot: переоценивается при каждом запросе (scoped)

🟠 IOptionsMonitor: позволяет получать текущее значение и реагировать на изменения

Используйте IOptions для статической конфигурации, IOptionsSnapshot — в веб-приложениях, где конфигурация может меняться между запросами, а IOptionsMonitor — когда нужно отслеживать изменения настроек.

Подробнее о том, как работает паттерн Options и когда какой интерфейс использовать: read

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
🥴1
#полезное
🤓 EF Core: DbContextOptionsBuilder используется для настройки DbContext, как показано в примере для консольного проекта. Также он может применяться вместе с внедрением зависимостей (dependency injection)

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1🔥1🥴1
#Собес #postgres
🤔 Что такое Foreign Key (внешний ключ) в PostgreSQL?

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

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
🛞 Хочешь отслеживать изменения в базе данных в реальном времени?

Я реализовал Change Data Capture (CDC) в .NET с использованием Debezium, PostgreSQL и RabbitMQ.

Поток обработки:

🟠 PostgreSQL настроен на генерацию событий об изменениях
🟠 Debezium перехватывает эти изменения
🟠 События публикуются в RabbitMQ
🟠 MassTransit в .NET потребляет и обрабатывает их

Это лишь один из способов реализации архитектуры, основанной на событиях (Event-Driven Architecture).

Если ты проектируешь распределённые системы в .NET — вот полный гайд по созданию event-driven-систем с RabbitMQ

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
#полезное
😜 Видишь баг?

9 из 10 разработчиков пропускают его. Проверь себя

Проблема:

> ExecuteUpdateAsync и ExecuteDeleteAsync обходят Change Tracker в EF Core
> Если SaveChangesAsync() потом упадёт — обновления в базе не откатятся автоматически

Решение:


✅ Явно оборачивай все такие команды в транзакцию вручную

Мелочь, а последствия могут быть серьёзные

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1🤯1
#полезное
😜 5 недооценённых LINQ-методов, которые мгновенно улучшают твой код:

1⃣ Zip — объединяет две последовательности в пары

2⃣ Chunk — разбивает коллекцию на чанки фиксированного размера

3⃣ OfType<T>() — фильтрует элементы по типу

4⃣ DistinctBy — возвращает уникальные элементы по заданному ключу

5⃣ SelectMany — разворачивает вложенные коллекции в плоский список

Бонус, который почти попал в топ:

🟠 SequenceEqual — сравнивает две коллекции на равенство
🟠 Aggregate — накапливает значение с помощью функции (reduce)
🟠 GroupJoin — объединяет по группам (аналог LEFT OUTER JOIN)
🟠 ToLookup — создает коллекцию, похожую на Dictionary, но с множеством значений
🟠 Intersect — возвращает пересечение двух коллекций

LINQ — кладезь полезных методов, если знаешь, где копать

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
#Собес #postgres
🤔 Что такое EXPLAIN в PostgreSQL?

EXPLAIN — это команда в PostgreSQL, которая показывает план выполнения запроса. Она помогает увидеть, как PostgreSQL планирует обрабатывать запрос, какие индексы используются и сколько времени займет выполнение каждого шага.

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
👍 Визуализатор планов SQL-запросов для Entity Framework

Расширение EFCore.Visualizer для Visual Studio может стать настоящим прорывом.

Оно позволяет разработчикам просматривать план выполнения SQL-запросов напрямую внутри Visual Studio.

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
🥰2
#полезное
😊 В .NET 10 появится {Async}Enumerable.{Infinite}Sequence

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

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#Собес #postgres
🤔 Что такое триггеры (Triggers) в PostgreSQL?

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

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
😐 В .NET 10, который выйдет в ноябре этого года, значительно оптимизируют работу с небольшими массивами

Если JIT-компилятор определяет, что массив достаточно мал и не выходит за пределы области видимости метода, он размещает его в стеке, а не в куче. Это означает, что память не аллоцируется в heap, GC не задействуется, а производительность повышается почти в два раза.

Например, в .NET 9 массив из 11 элементов занимал 72 байта и выполнялся за 7.7 наносекунды. В .NET 10 те же данные, но 0 байт аллокации и всего 3.9 наносекунды. И самое главное это работает автоматически

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
#полезное
👋 Стриминговые API в C# — используй IAsyncEnumerable

IAsyncEnumerable оптимизирован для потоковой передачи данных и полностью совместим с async/await.

🟠 Производители используют IAsyncEnumerable<T> с yield return
🟠 Потребители читают данные через await foreach

Зачем нужны стриминговые API?

В отличие от bulk-передачи, стриминг отправляет данные пакетами.

Сколько и когда передавать — зависит от кода, создающего IAsyncEnumerable.
Параметр T задаёт тип элемента, который будет возвращаться в потоке.

Где особенно полезно:

1⃣ Отправка больших (или даже бесконечных) наборов данных

Пример: поливать сад из шланга вместо таскания вёдер с водой.
Вёдра тяжелее (ресурсоёмко) и требуют ожидания (блокировка).

2⃣ Получение внешних данных — API, IoT-сенсоры, очереди сообщений

Когда нельзя предсказать, когда будет готов следующий элемент — IAsyncEnumerable идеально подходит.

3⃣ Снижение потребления памяти

Данные проходят потоком и не накапливаются в памяти целиком.

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
❤️‍🔥 Рекомендуемые расширения для работы с Copilot prompt-файлами:

🟠File Explorer for Visual Studio — даёт доступ к prompt-файлам прямо внутри Visual Studio.
🟠Open in Visual Studio Code — позволяет удобно создавать и редактировать prompt-файлы во внешнем редакторе (VS Code)

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
#Собес #CSharp
🤔 Как организовывалось взаимодействие между микросервисами (REST API, брокеры сообщений) ?

Для синхронных операций использовали REST/gRPC: сервисы запрашивали данные друг у друга по НТТР или НТТР/2. Для асинхронных процессов - RabbitMQ или Kafka: публиковали события (OrderCreated) и слушали клиенты. REST подходит для прямых запросов с ожиданием ответа, брокеры - для фоновых задач, рассылок и обеспечения eventual consistency.

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
👨‍💻 Временные сложности различных структур данных

Big O-нотация описывает, как производительность алгоритма растёт относительно размера входных данных (n). Она используется для оценки эффективности алгоритмов вне зависимости от оборудования или языка программирования.

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
#полезное
🤓 В VS Code Insiders теперь по умолчанию включён IntelliSense в терминале

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

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
#полезное
😎 Это может быть полезно

WhatItPrints — это браузерная головоломка для разработчиков

Тебе показывают фрагмент кода, а ты должен угадать, что он выведет.

Поддерживает разные языки, включая C#, так что отлично прокачивает:

🟠 понимание синтаксиса
🟠 поведение компилятора
🟠 нюансы типов, LINQ, boxing/unboxing и т.п.

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#Собес #CSharp
🤔 Какова сложность доступа к элементу по индексу в List ‹Т› и почему?

Доступ по индексу к List‹T› выполняется за время О (1) - константное. Это происходит потому, что List<T› хранит элементы в непрерывном массиве, и обращение по индексу сводится к вычислению адреса памяти base + index * sizeof(T) и чтению значения.

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
😵‍💫 Трудно отследить, что происходит внутри твоего .NET-приложения?

Вот базовая настройка OpenTelemetry, которую я использую в каждом проекте:

- ASP .NET Core instrumentation
- HttpClient instrumentation
- EF Core instrumentation
- Redis instrumentation
- Npgsql (или SqlClient)

Это даёт полноценные, сквозные трассировки — и всё это быстро.

Для визуализации можно использовать:

- Seq
- Jaeger
- Grafana
- Aspire Dashboard

Seq также поддерживает структурированные логи, что хорошо сочетается с трассировкой.

Вот практическое руководство: ссылка

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM