#полезное
❤️🔥 Рекомендуемые расширения для работы с 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.
👉 Новости 👉 База вопросов
Для синхронных операций использовали REST/gRPC: сервисы запрашивали данные друг у друга по НТТР или НТТР/2. Для асинхронных процессов - RabbitMQ или Kafka: публиковали события (OrderCreated) и слушали клиенты. REST подходит для прямых запросов с ожиданием ответа, брокеры - для фоновых задач, рассылок и обеспечения eventual consistency.
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
👨💻 Временные сложности различных структур данных
Big O-нотация описывает, как производительность алгоритма растёт относительно размера входных данных (n). Она используется для оценки эффективности алгоритмов вне зависимости от оборудования или языка программирования.
👉 Новости 👉 База вопросов
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 и т.п.
👉 Новости 👉 База вопросов
WhatItPrints — это браузерная головоломка для разработчиков
Тебе показывают фрагмент кода, а ты должен угадать, что он выведет.
Поддерживает разные языки, включая C#, так что отлично прокачивает:
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 также поддерживает структурированные логи, что хорошо сочетается с трассировкой.
Вот практическое руководство: ссылка
👉 Новости 👉 База вопросов
Вот базовая настройка 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
#полезное
👨💻 Самая большая ошибка джуниоров? Игнорировать SQL.
Невозможно по-настоящему понять, как работают базы данных, если полагаться только на ORM.
Реляционные базы данных существуют уже более 40 лет и не просто так.
Сфокусируйся на:
🟠 основах SQL
🟠 моделировании данных
🟠 транзакциях
🟠 индексировании
Как именно — cмотрите тут
Освой SQL и ты вырастешь как разработчик в 10 раз быстрее
👉 Новости 👉 База вопросов
Невозможно по-настоящему понять, как работают базы данных, если полагаться только на ORM.
Реляционные базы данных существуют уже более 40 лет и не просто так.
Сфокусируйся на:
Окупается быстро. Недавно я оптимизировал два запроса:
> SELECT: с 70 мс до 1 мс
> UPDATE: с 300 мс до 52 мс
Как именно — cмотрите тут
Освой SQL и ты вырастешь как разработчик в 10 раз быстрее
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
📞 Одна из самых недооценённых возможностей HttpClient?
Идеально подходит для реализации сквозной логики, такой как:
🟢 Аутентификация
🟢 Логирование
🟢 Аудит
🟢 Кэширование
🟢 Повторные попытки (Retries)
Вместо того чтобы дублировать этот код в каждом запросе — оформляется единый чистый pipeline.
Вот как использовать
👉 Новости 👉 База вопросов
DelegatingHandler — это middleware для исходящих HTTP-запросов.Идеально подходит для реализации сквозной логики, такой как:
Вместо того чтобы дублировать этот код в каждом запросе — оформляется единый чистый pipeline.
Вот как использовать
DelegatingHandler в .NETPlease open Telegram to view this post
VIEW IN TELEGRAM
#Собес #CSharp
🤔 Что такое List‹ T › и как реализованы его Count и Capacity?
👉 Новости 👉 База вопросов
List‹T› - это обёртка над массивом T[] , которая автоматически расширяется по мере добавления элементов. Поле count хранит число фактически добавленных элементов, а capacity - длину внутреннего массива. При достижении count == Capacity при добавлении нового элемента создаётся новый массив с увеличенной capacity (обычно в полтора раза), в который копируются старые элементы.Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
😇 Использование nameof вместо
В этом нет ничего надуманного, даже ReSharper содержит инспекцию на этот случай.
Reddit тред -> ссылка
👉 Новости 👉 База вопросов
ToString() при обращении к имени члена перечисления в .NET — это абсолютно валидная техника оптимизации производительности.В этом нет ничего надуманного, даже ReSharper содержит инспекцию на этот случай.
nameof выносит получение строки в compile-time, тем самым существенно снижает время выполнения и устраняет аллокации — что особенно важно в производительно-критичных hot-path'ахReddit тред -> ссылка
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
#полезное
👍 OmniSharp — интеллектуальная подсказка для C# без Visual Studio. Этот движок на базе Roslyn превращает любой редактор кода в полноценную C#-IDE. В отличие от монолитных решений, он работает как отдельный сервер, предоставляя автодополнение, навигацию по коду и анализ проектов даже в минималистичных средах разработки.
Проект запускается под .NET 6 на Windows и через Mono на Linux/macOS. Интеграция с редакторами занимает буквально пару строк конфига, а сборки из мастер-ветки доступны сразу после каждого коммита.
Гитхаб
👉 Новости 👉 База вопросов
Проект запускается под .NET 6 на Windows и через Mono на Linux/macOS. Интеграция с редакторами занимает буквально пару строк конфига, а сборки из мастер-ветки доступны сразу после каждого коммита.
Гитхаб
Please open Telegram to view this post
VIEW IN TELEGRAM
🦄1
#полезное
👋 Squidex — автономный CMS с открытым исходным кодом. Этот проект переосмысливает традиционный подход к системам управления контентом, предлагая вместо готового интерфейса мощный API с поддержкой OData-фильтров и Swagger-спецификаций. Разработчики могут использовать Squidex как основу для сайтов, мобильных приложений или серверных решений, сохраняя полный контроль над фронтендом.
Система построена на ASP.NET Core с архитектурой CQRS и работает как на Windows, так и на Linux. В отличие от аналогов, Squidex не навязывает конкретную клиентскую часть — вы сами решаете, как визуализировать контент.
Гитхаб
👉 Новости 👉 База вопросов
Система построена на ASP.NET Core с архитектурой CQRS и работает как на Windows, так и на Linux. В отличие от аналогов, Squidex не навязывает конкретную клиентскую часть — вы сами решаете, как визуализировать контент.
Гитхаб
Please open Telegram to view this post
VIEW IN TELEGRAM
#Собес #CSharp
🤔 Для чего используется класс StringBuilder и как он оптимизирует работу со строками?
👉 Новости 👉 База вопросов
StringBuilder предназначен для сборки строк путём последовательного добавления, чтобы не создавать новые объекты string при каждой конкатенации. Он хранит изменяемый буфер символов и расширяет его по необходимости, что значительно уменьшает число аллокаций и повышает производительность при большом числе операций.Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2
#полезное
🥄 GitHub Copilot Chat теперь с открытым кодом
Microsoft сделали первый шаг к превращению VS Code в полноценный опенсорс AI-редактор
Теперь можно заглянуть под капот: как работает agent mode, что уходит в LLM, как устроены промпты и даже какую телеметрию они собирают
Код доступен на GitHub
👉 Новости 👉 База вопросов
Microsoft сделали первый шаг к превращению VS Code в полноценный опенсорс AI-редактор
Теперь можно заглянуть под капот: как работает agent mode, что уходит в LLM, как устроены промпты и даже какую телеметрию они собирают
Код доступен на GitHub
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
😴 C#‑«скрипт» для отправки HTTP-запроса с использованием Flurl.
Эта возможность появится в .NET 10 — подробнее
👉 Новости 👉 База вопросов
Эта возможность появится в .NET 10 — подробнее
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
#полезное
😴 Как быстро расчистить раздутые API-контроллеры:
Используй метод-инъекцию э
Это малоизвестная фича в
Для этого используется
Хотя
Когда стоит использовать метод-инъекцию:
🟠 когда сервис используется только в одном экшене
🟠 когда конструктор начинает превращаться в кашу из зависимостей
🟠 когда сервис тяжёлый, и важно контролировать его создание и утилизацию
Да, внедрение через конструктор — это дефолтный подход.
Но метод-инъекция — это удобный инструмент, если ты:
- хочешь придерживаться Single Responsibility Principle
- не хочешь превращать контроллер в свалку зависимостей
👉 Новости 👉 База вопросов
Используй метод-инъекцию э
Это малоизвестная фича в
ASP.NET Core, которая позволяет внедрять зависимости не в конструктор, а напрямую в метод-обработчик.Для этого используется
[FromServices] IYourServiceХотя
[FromServices] можно и опустить — оно не обязательно.Когда стоит использовать метод-инъекцию:
Да, внедрение через конструктор — это дефолтный подход.
Но метод-инъекция — это удобный инструмент, если ты:
- хочешь придерживаться Single Responsibility Principle
- не хочешь превращать контроллер в свалку зависимостей
Please open Telegram to view this post
VIEW IN TELEGRAM
#Собес #CSharp
🤔 Как устроена строка в С# — ссылочный тип или значимый, и зачем нужен string pool (интернирование)?
👉 Новости 👉 База вопросов
string в С# - ссылочный тип с неизменяемым содержимым. CLR использует intern pool - таблицу статически созданных литералов и интернированных строк, чтобы хранить одну копию одинаковых значений. Это экономит память и ускоряет сравнение через ссылочное равенство для литералов.Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
😎 C# наконец-то получает дискриминируемые объединения
Ну, возможно?
Появилось новое предложение по добавлению объединений типов (Type Unions) в C#. И это действительно важно.
Почему?
Это открывает нативную поддержку таких конструкций, как
Больше не нужно городить костыли, оборачивать значения или зависеть от сторонних библиотек, чтобы описать функцию, возвращающую успех или ошибку.
Теперь это может измениться.
В предложении описываются нативные union-типы, включая поддержку pattern matching, проверку исчерпывающего перебора (exhaustiveness checks) и другие фичи.
Не хочешь ждать?
Вот как можно реализовать паттерн
Если предпочитаешь бросать исключения — можешь это пропустить.
👉 Новости 👉 База вопросов
Ну, возможно?
Появилось новое предложение по добавлению объединений типов (Type Unions) в C#. И это действительно важно.
Почему?
Это открывает нативную поддержку таких конструкций, как
Result и Option.Больше не нужно городить костыли, оборачивать значения или зависеть от сторонних библиотек, чтобы описать функцию, возвращающую успех или ошибку.
Я уже много лет выступаю за использование паттерна Result. Но до сих пор отсутствие поддержки на уровне языка делало его применение неуклюжим.
Теперь это может измениться.
В предложении описываются нативные union-типы, включая поддержку pattern matching, проверку исчерпывающего перебора (exhaustiveness checks) и другие фичи.
Не хочешь ждать?
Вот как можно реализовать паттерн
Result уже сегодняЕсли предпочитаешь бросать исключения — можешь это пропустить.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥1
#полезное
😊 Работать с HTTP-заголовками это сложно?
Короткий ответ: нет. И вот почему
Если ты взаимодействуешь с HTTP-клиентами и запросами, тебе неизбежно придётся работать с заголовками.
Это дополнительные данные, передаваемые вместе с запросом или ответом, которые содержат метаинформацию о сообщении.
Заголовки делятся на 4 группы по контексту:
🟠 Request headers (заголовки запроса)
🟠 Response headers (заголовки ответа)
🟠 Representation headers (информация о формате представления)
🟠 Payload headers (сведения о теле запроса/ответа)
В большинстве случаев ты будешь работать именно с заголовками запроса и ответа.
Добавить заголовки в HTTP-запрос можно двумя способами:
🟠 Добавить ко всем запросам
🟠 Добавить только к конкретному запросу
Если нужно извлечь значение из заголовка , это тоже делается просто.
Оба сценария реализуются достаточно прямолинейно.
HTTP-заголовки повсеместны в современных веб-приложениях, поэтому важно придерживаться лучших практик:
🟠 Использовать лаконичные и понятные заголовки
🟠 Настраивать кэширование через заголовки (
🟠 Учитывать CORS (
🟠 Обеспечивать безопасность уже на уровне заголовков
👉 Новости 👉 База вопросов
Короткий ответ: нет. И вот почему
Если ты взаимодействуешь с HTTP-клиентами и запросами, тебе неизбежно придётся работать с заголовками.
Это дополнительные данные, передаваемые вместе с запросом или ответом, которые содержат метаинформацию о сообщении.
Заголовки делятся на 4 группы по контексту:
В большинстве случаев ты будешь работать именно с заголовками запроса и ответа.
Добавить заголовки в HTTP-запрос можно двумя способами:
Если нужно извлечь значение из заголовка , это тоже делается просто.
Оба сценария реализуются достаточно прямолинейно.
HTTP-заголовки повсеместны в современных веб-приложениях, поэтому важно придерживаться лучших практик:
Cache-Control, ETag)Access-Control-Allow-Origin)(Strict-Transport-Security, Content-Security-Policy и др.)Please open Telegram to view this post
VIEW IN TELEGRAM
#Собес #CSharp
🤔 Чем отличаются lEnumerable и IQueryable? Где применяется отложенное выполнение запросов?
👉 Новости 👉 База вопросов
IEnumerable<T> выполняет перебор элементов в памяти (in-memory) и поддерживает отложенное выполнение только LINQ-to-Objects. IQueryable‹T› расширяет IEnumerable‹T> и позволяет строить выражения, которые переводятся в запрос на удалённый источник (БД), выполняя отложенное (deferred) выполнение на стороне сервера при первом переборе.Please open Telegram to view this post
VIEW IN TELEGRAM