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

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

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

Для связи: @ruslan_kuyanets
Download Telegram
#Собес #postgres
🤔 Что означает команда enable-debug в PostgreSQL?

Команда enable-debug в PostgreSQL для включения дополнительных параметров отладки при компиляции. Она необходима разработчикам и администраторам баз данных для диагностики проблем и улучшения производительности.

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
#Собес #postgres
🤔 Какой максимальный размер таблицы в PostgreSQL?

B PostgreSQL максимальный размер таблицы ограничен размером базы данных - до 32 ТБ, если используется стандартный блок данных размером 8 КБ. Это ограничение связано с максимальной длиной идентификатора блока в системе.

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
#полезное
📞 Создание кастомного GPT в ChatGPT может быть крайне полезным.

Например, разработчик хочет заменить SqlClient-операции на Dapper и ему предстоит проделать это множество раз.
С помощью кастомного GPT можно избежать постоянного ввода промптов — достаточно просто вставить код и получить результат.

В этом случае я создал инструкцию в Microsoft Word, сохранил её в PDF и загрузил в кастомного GPT

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
#полезное
😵‍💫 В .NET 10 снижена «надбавка» за использование IEnumerable с 83% до 10%

В .NET 9 перебор массива через IEnumerable обходился на 83% дороже, чем прямой перебор массива, тогда как в .NET 10 эта разница составила всего 10%

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
#полезное
👋 𝗛𝘆𝗯𝗿𝗶𝗱𝗖𝗮𝗰𝗵𝗲 в .𝗡𝗘𝗧 𝟵

В .NET 9 появился новый API для кэширования — HybridCache.

Он решает ограничения IMemoryCache и IDistributedCache

Что он предлагает:

🟠 Единый API (и для in-process, и для out-of-process кэша)
🟠 Настраиваемую сериализацию
🟠 Защиту от «штамповки» (stampede protection)
🟠 Очистку кэша по тегам

Метод GetOrCreateAsync проверяет и основной, и вторичный кэш. Если значения нет — вызывает фабрику, сохраняет результат и возвращает его.

Stampede protection означает: на один ключ — только один вызов фабрики одновременно.

Вот как можно начать использовать HybridCache уже сегодня: read

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
🫡 IServiceScopeFactory vs IServiceProvider — что использовать для создания пользовательских скоупов?

Оба могут создавать скоупы, но ключевой момент в следующем:

IServiceProvider.CreateScope() просто получает IServiceScopeFactory и вызывает у него CreateScope()

Так что использование IServiceScopeFactory — более прямой подход.

Обычно пользовательские скоупы нужны, когда вы работаете с root-провайдером.

Вот решение на практике: тык

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
This media is not supported in your browser
VIEW IN TELEGRAM
#полезное
🏠 В режиме Ask в VScode ты можешь общаться напрямую с экспертами — так называемыми участниками (participants). Например, участник Remote-SSH может ответить на вопросы о разработке по SSH, помочь с настройкой окружения и даже разобраться с ошибками подключения

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
#полезное
😊 Думаешь, хорошо разбираешься в ASP.NET Core middleware?

Этот пост поменяет твой взгляд на перехват HTTP-запросов

Middleware в ASP.NET Core — это компонент, участвующий в конвейере обработки HTTP-запросов и ответов.

Есть три подхода: на делегатах (inline), по соглашению (класс), и через IMiddleware для кастомной логики.

1⃣Сначала можно использовать метод Use напрямую в конфигурации WebApplication.
Такое middleware на основе делегата выполняется до и после следующего компонента в конвейере.

2⃣Если логика растёт — вынеси её в отдельный класс middleware по соглашению.
Класс должен иметь конструктор с RequestDelegate и метод InvokeAsync.

3⃣ Либо реализуй интерфейс IMiddleware — это более безопасный, проверяемый компилятором способ.
Зарегистрируй класс IMiddleware в DI-контейнере, и фреймворк сам будет его разрешать.

Но есть важные нюансы:

🟠 Middleware по умолчанию живёт как singleton, поэтому внедряй только singleton-зависимости.
🟠 Если нужны scoped-сервисы — передавай их через параметры InvokeAsync в middleware по соглашению.

Кастомные middleware используют для:

• логирования
• авторизации
• валидации
• модификации ответов

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
Диаграмма последовательности выполнения запроса в Entity Framework

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

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

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
#полезное
😱 Скриптинг на C# это круто

Отлично подходит для простых POC и наполнения тестовыми данными, как в этом примере

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4
#полезное
🛞 Visual Studio теперь отображает возвращаемые значения методов прямо в коде

Фича появилась в версии 17.12 (выпущена в ноябре).

Я всегда считал, что временные переменные помогают снизить когнитивную нагрузку при работе с возвратами методов, но, похоже, теперь игра изменилась

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1👍1
#полезное
🥄 NBomber — нагрузочное тестирование на .NET без привязки к протоколам. Этот фреймворк позволяет описывать сценарии нагрузочного тестирования на чистом C#/F#, без изучения специализированного DSL.

Ключевая особенность проекта в распределённом режиме для имитации реалистичной нагрузки и интеграция с Grafana/InfluxDB для мониторинга в реальном времени. При этом сценарии можно запускать как консольное приложение или даже как xUnit-тесты в CI/CD.
Гитхаб

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

VACUUM - это команда в PostgreSQL, которая удаляет ненужные данные, освобождает место и предотвращает разрастание базы данных. Регулярное выполнение vAcuum помогает поддерживать производительность базы.

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