TGViewer
Channel Public Channel
C# Development | YeaHub

C# Development | YeaHub

@yeahub_c_sharp_dev

Теория, подготовка к интервью и курсы для C# разработчиков

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

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

Для связи: @ruslan_kuyanets
Subscribers
743
Photos
304
Videos
33
Links
537

Showing posts older than #221 · Back to latest

Older Posts 20 shown
Post #220 207
#полезное
👍 OmniSharp — интеллектуальная подсказка для C# без Visual Studio. Этот движок на базе Roslyn превращает любой редактор кода в полноценную C#-IDE. В отличие от монолитных решений, он работает как отдельный сервер, предоставляя автодополнение, навигацию по коду и анализ проектов даже в минималистичных средах разработки.

Проект запускается под .NET 6 на Windows и через Mono на Linux/macOS. Интеграция с редакторами занимает буквально пару строк конфига, а сборки из мастер-ветки доступны сразу после каждого коммита.
Гитхаб

👉Новости 👉База вопросов
  • 🦄 1
Post #219 232
#полезное
😇 Использование nameof вместо ToString() при обращении к имени члена перечисления в .NET — это абсолютно валидная техника оптимизации производительности.

В этом нет ничего надуманного, даже ReSharper содержит инспекцию на этот случай. nameof выносит получение строки в compile-time, тем самым существенно снижает время выполнения и устраняет аллокации — что особенно важно в производительно-критичных hot-path'ах

Reddit тред -> ссылка

👉Новости 👉База вопросов
  • 👍 1
Post #218 227
#Собес #CSharp
🤔 Что такое List‹ T › и как реализованы его Count и Capacity?

List‹T› - это обёртка над массивом T[] , которая автоматически расширяется по мере добавления элементов. Поле count хранит число фактически добавленных элементов, а capacity - длину внутреннего массива. При достижении count == Capacity при добавлении нового элемента создаётся новый массив с увеличенной capacity (обычно в полтора раза), в который копируются старые элементы.

👉Новости 👉База вопросов
Post #217 255
#полезное
📞 Одна из самых недооценённых возможностей HttpClient?

DelegatingHandler — это middleware для исходящих HTTP-запросов.

Идеально подходит для реализации сквозной логики, такой как:

🟢 Аутентификация
🟢 Логирование
🟢 Аудит
🟢 Кэширование
🟢 Повторные попытки (Retries)

Вместо того чтобы дублировать этот код в каждом запросе — оформляется единый чистый pipeline.

Вот как использовать DelegatingHandler в .NET

👉Новости 👉База вопросов
Post #216 224
#полезное
👨‍💻 Самая большая ошибка джуниоров? Игнорировать SQL.

Невозможно по-настоящему понять, как работают базы данных, если полагаться только на ORM.

Реляционные базы данных существуют уже более 40 лет и не просто так.

Сфокусируйся на:

🟠основах SQL
🟠моделировании данных
🟠транзакциях
🟠индексировании

Окупается быстро. Недавно я оптимизировал два запроса:

> SELECT: с 70 мс до 1 мс
> UPDATE: с 300 мс до 52 мс


Как именно — cмотрите тут

Освой SQL и ты вырастешь как разработчик в 10 раз быстрее

👉Новости 👉База вопросов
Post #215 226
#полезное
😵‍💫 Трудно отследить, что происходит внутри твоего .NET-приложения?

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

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

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

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

- Seq
- Jaeger
- Grafana
- Aspire Dashboard

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

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

👉Новости 👉База вопросов
Post #214 207
#Собес #CSharp
🤔 Какова сложность доступа к элементу по индексу в List ‹Т› и почему?

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

👉Новости 👉База вопросов
Post #213 267
#полезное
😎 Это может быть полезно

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

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

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

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

👉Новости 👉База вопросов
Post #212 207
#полезное
🤓 В VS Code Insiders теперь по умолчанию включён IntelliSense в терминале

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

👉Новости 👉База вопросов
Post #211 228
#полезное
👨‍💻 Временные сложности различных структур данных

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

👉Новости 👉База вопросов
Post #210 219
#Собес #CSharp
🤔 Как организовывалось взаимодействие между микросервисами (REST API, брокеры сообщений) ?

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

👉Новости 👉База вопросов
Post #209 282
#полезное
❤️‍🔥 Рекомендуемые расширения для работы с Copilot prompt-файлами:

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

👉Новости 👉База вопросов
  • ❤ 1
Post #208 284
#полезное
👋 Стриминговые API в C# — используй IAsyncEnumerable

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

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

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

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

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

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

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

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

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

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

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

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

👉Новости 👉База вопросов
Post #207 245
#полезное
😐 В .NET 10, который выйдет в ноябре этого года, значительно оптимизируют работу с небольшими массивами

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

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

👉Новости 👉База вопросов
  • 👍 1
Post #206 228
#Собес #postgres
🤔 Что такое триггеры (Triggers) в PostgreSQL?

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

👉Новости 👉База вопросов
Post #205 253
#полезное
😊 В .NET 10 появится {Async}Enumerable.{Infinite}Sequence

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

👉Новости 👉База вопросов
Post #204 254
#полезное
👍 Визуализатор планов SQL-запросов для Entity Framework

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

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

👉Новости 👉База вопросов
  • 🥰 2
Post #203 233
#Собес #postgres
🤔 Что такое EXPLAIN в PostgreSQL?

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

👉Новости 👉База вопросов
Post #202 263
#полезное
😜 5 недооценённых LINQ-методов, которые мгновенно улучшают твой код:

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

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

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

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

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

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

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

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

👉Новости 👉База вопросов
  • ❤ 1
Post #201 197
#полезное
😜 Видишь баг?

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

Проблема:

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

Решение:


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

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

👉Новости 👉База вопросов
  • 👍 1
  • 🤯 1
Older posts →
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →