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

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

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

Для связи: @ruslan_kuyanets
Download Telegram
This media is not supported in your browser
VIEW IN TELEGRAM
#полезное
😎 Самое раздражающее при отладке C#-кода?

(что может серьёзно замедлить процесс)

Проверка значений в коллекции.

Приходится разворачивать каждый элемент, чтобы посмотреть значения свойств.

Чтобы решить эту проблему, в Visual Studio недавно появилась функция закрепляемых свойств (pinnable properties).

Она позволяет быстро отслеживать нужные свойства.

Чтобы воспользоваться, наведите курсор на свойство и нажмите на иконку закрепления.

См. видео-пример, как это использовать

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
This media is not supported in your browser
VIEW IN TELEGRAM
#полезное
😐 Режим агента теперь доступен в публичной предварительной версии для всех пользователей в Visual Studio 17.14.

Режим агента в Visual Studio позволяет задавать задачи с помощью естественного языка — Copilot самостоятельно планирует действия, редактирует кодовую базу, вызывает инструменты и итеративно решает проблемы.

В отличие от Copilot Chat или Copilot Edits, агент не останавливается на одной подсказке или правке файла — он действует автономно и выполняет задачу до конца.
Тык сюда

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1👎1🔥1
#полезное
😐 RoslynPad — легковесная C#-песочница с интеллектуальным кодом. Этот кроссплатформенный редактор превращает написание C#-кода в интерактивный процесс. В отличие от громоздких IDE, здесь есть только самое нужное: автодополнение на базе Roslyn, подсветка ошибок и быстрый запуск кода.

Проект особенно удобен для экспериментов: можно тестировать фрагменты кода без создания полноценного проекта. Под капотом у инструмента движок компилятора C# и редактор AvalonEdit с поддержкой темной темы.
Гитхаб

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

Репликация в PostgreSQL - это процесс создания копий данных из основной базы данных на другие серверы. Это повышает отказоустойчивость, позволяет балансировать нагрузку и обеспечивает резервное копирование. Существует несколько типов репликации: синхронная и асинхронная.

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
#ЛитКод
Задача: 510. Inorder Successor in BST II

Дан узел в двоичном дереве поиска, верните его последующего (in-order successor) в этом дереве. Если у узла нет последующего, верните null.

Последующий узла — это узел с наименьшим ключом, большим, чем node.val.

Вы будете иметь прямой доступ к узлу, но не к корню дерева. Каждый узел будет иметь ссылку на своего родителя. Ниже приведено определение для Node:
class Node {
public int val;
public Node left;
public Node right;
public Node parent;
}


Пример:
Input: tree = [5,3,6,2,4,null,null,1], node = 6
Output: null
Explanation: There is no in-order successor of the current node, so the answer is null.


👨‍💻 Алгоритм:

1⃣Проверка правого поддерева
Если у узла есть правый потомок, перейдите к правому узлу, затем спускайтесь влево до самого нижнего узла. Этот узел будет следующим узлом в порядке in-order.

2⃣Поиск предка
Если у узла нет правого потомка, поднимайтесь по дереву до тех пор, пока узел не станет левым потомком своего родителя. Родитель этого узла будет следующим узлом в порядке in-order.

3⃣Возвращение результата
Верните найденный узел или null, если следующий узел не найден.

😎 Решение:
public class Node {
public int val;
public Node left;
public Node right;
public Node parent;
}

public class Solution {
public Node InorderSuccessor(Node x) {
if (x.right != null) {
x = x.right;
while (x.left != null) {
x = x.left;
}
return x;
}

while (x.parent != null && x == x.parent.right) {
x = x.parent;
}
return x.parent;
}
}


👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2👾1
This media is not supported in your browser
VIEW IN TELEGRAM
#полезное
❤️‍🔥 Событийно-ориентированные фоновые задачи в C#

BackgroundWorker — это легковесный инструмент для выполнения асинхронной работы.

Обмен сообщениями между хостом и рабочим происходит через события.

Есть встроенная поддержка отмены задач и обновлений прогресса.

LINQPad визуализирует весь процесс :

вызвал Dump() — и данные сразу в окне Results как HTML.

Хочешь, стилизуй вывод с помощью CSS.

Полный скрипт для загрузки доступен по ссылке

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
#полезное
👋 Пример использования паттерна IOptions в ASP dotnet

IOptions<T> обеспечивает безопасность на этапе компиляции и устраняет использование магических строк.

На втором примере эквивалент с использованием IConfiguration вместо IOptions

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

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

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
👨‍💻 MongoDB теперь нативно доступен на Azure.

Больше никаких "костылей" между сервисами.

Теперь можно:

🟠 Запускать MongoDB Atlas напрямую из Azure Portal
🟠 Интегрироваться с Azure AI, Databricks, OpenAI — в одном потоке
🟠 Получать единый биллинг по всему стеку

Это будущее cloud-native разработки?

Или тесная интеграция с облаком — палка о двух концах для свободы разработчиков?

Полная разбивка: https://fnf.dev/4n1fsLd

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
😊 Сократил время выполнения SQL-запроса с 70 мс до 1 мс.

Без изменений в коде. Без кэширования. Просто добавил filtered index (фильтрованный индекс).

Фильтрованные индексы — одна из самых недооценённых возможностей SQL.

Они позволяют индексировать только подмножество строк, соответствующих определённому условию — идеально подходят для флагов вроде ProcessedAt IS NULL.

Но есть нюанс: если условие выполняется для большинства строк, индекс не даст прироста производительности.

Эта оптимизация дала огромный прирост в одном из проектов.

В статье подробно разбирается реализацию и показывается, как это использовать: читать

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
😇 В EF Core 9 улучшена функция ExecuteUpdate

Небольшое, но полезное улучшение.

Эта возможность появилась в EF Core 8 — для производительного обновления данных в базе без загрузки в память.

Однако изначально она поддерживала только примитивные типы.

Если нужно было обновить комплексный тип, приходилось вручную перечислять все его свойства… до выхода EF Core 9.

Теперь комплексные типы полностью поддерживаются — больше не нужно делать это вручную

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1👍1
#Собес #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