#Собес #postgres
🤔 Что такое таблица в PostgreSQL и как её создать?
Таблица в PostgreSQL — это структура, используемая для хранения данных в виде строк и столбцов. Для создания таблицы используется команда
👉 Новости 👉 Платформа
Таблица в PostgreSQL — это структура, используемая для хранения данных в виде строк и столбцов. Для создания таблицы используется команда
CREATE TABLE имя таблицы (список_ столбцов) ; .Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
#полезное
😬 Посмотрите этот классный open-source инструмент для визуализации JSON-данных в интерактивных графах.
Он предлагает функции конвертации JSON в другие форматы (CSV, YAML), генерацию JSON Schema, выполнение запросов и экспорт визуализаций в виде изображений.
Также он умеет форматировать, валидировать и создавать интерфейсы TypeScript.
Репозиторий: https://github.com/AykutSarac/jsoncrack.com
👉 Новости 👉 База вопросов
Он предлагает функции конвертации JSON в другие форматы (CSV, YAML), генерацию JSON Schema, выполнение запросов и экспорт визуализаций в виде изображений.
Также он умеет форматировать, валидировать и создавать интерфейсы TypeScript.
Репозиторий: https://github.com/AykutSarac/jsoncrack.com
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2👍1
#полезное
🤣 Паттерн Options в .NET — это одна из тех фич, которые я стабильно использую во всех своих C#-проектах
✅ Более чистое управление конфигами
✅ Сильно типизированные классы
✅ Простая интеграция с DI
✅ Без проблем работает с
Почему это важно
Вместо того чтобы раскидывать значения конфигов по всему коду, ты централизуешь их в структурированных классах. Это не только улучшает читаемость, но и делает код более тестируемым и удобным в сопровождении.
Обычно это выглядит так
🟠 Определяешь конфиг в
🟠 Создаёшь POCO-класс
🟠 Биндишь его через
🟠 Инжектишь в сервисы через
Просто. Масштабируемо. Аккуратно.
А ты используешь этот паттерн у себя или до сих пор дёргаешь значения конфигов через
👉 Новости 👉 База вопросов
appsettings.json, secrets.json, Azure Key Vault и прочим Почему это важно
Вместо того чтобы раскидывать значения конфигов по всему коду, ты централизуешь их в структурированных классах. Это не только улучшает читаемость, но и делает код более тестируемым и удобным в сопровождении.
Обычно это выглядит так
appsettings.json .AddOptions<T>().BindConfiguration() IOptions<T> Просто. Масштабируемо. Аккуратно.
А ты используешь этот паттерн у себя или до сих пор дёргаешь значения конфигов через
IConfiguration["key"] Please open Telegram to view this post
VIEW IN TELEGRAM
❤2👍1
#Собес #postgres
🤔 Что такое PostgreSQL каковы его основные особенности?
PostgreSQL — это мощная обьектно-реляционная система управления базами данных с открытым исходным кодом. Она поддерживает расширяемость, соответствие стандарту SQL, работу с JSON, многоверсионное управление параллелизмом (MVCC) и транзакции с ACID-свойствами.
👉 Новости 👉 Платформа
PostgreSQL — это мощная обьектно-реляционная система управления базами данных с открытым исходным кодом. Она поддерживает расширяемость, соответствие стандарту SQL, работу с JSON, многоверсионное управление параллелизмом (MVCC) и транзакции с ACID-свойствами.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
#Собес #postgres
🤔 Как создать новую базу данных в PostgreSQL?
B PostgreSQL новую базу данных можно создать с помощью команды SQL
👉 Новости 👉 Платформа
B PostgreSQL новую базу данных можно создать с помощью команды SQL
CREATE DATABASE имя_базы; или используя утилиту командной строки createdb имя_базы Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
📞 Изоляция данных в модульном монолите
🟠 Схема и роль на модуль — для каждого модуля создаётся собственная схема и роль
🟠 Привилегии только для своей схемы — модуль не имеет доступа к данным других схем
🟠 Отдельный DbContext + схема по умолчанию — разделение кода и данных на уровне ORM
🟠 Разные строки подключения и миграции — независимое управление конфигурацией и развёртыванием
🟠 Read-only представления для межмодульных запросов — безопасный доступ к данным между модулями
Смотрите пошаговое руководство: ссылка
👉 Новости 👉 База вопросов
Смотрите пошаговое руководство: ссылка
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
😅 Запуск .NET в браузере без Blazor
https://andrewlock.net/running-dotnet-in-the-browser-without-blazor/
В этой статье автор показывает, как запустить .NET в браузере без использования Blazor, а вместо этого опереться на более низкоуровневые абстракции, которые предоставляют [JSImport] и [JSExport].
👉 Новости 👉 База вопросов
https://andrewlock.net/running-dotnet-in-the-browser-without-blazor/
В этой статье автор показывает, как запустить .NET в браузере без использования Blazor, а вместо этого опереться на более низкоуровневые абстракции, которые предоставляют [JSImport] и [JSExport].
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
#полезное
😱 Вызов Azure Function из Azure SQL DB
Да, это реально. Хранимая процедура
👉 Новости 👉 База вопросов
Да, это реально. Хранимая процедура
sp_invoke_external_rest_endpoint позволяет дергать HTTPS REST endpoint, переданный ей в качестве аргумента.Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
#полезное
🤯 Что такое RBAC и как это помогает с авторизацией
RBAC расшифровывается как Role-Based Access Control, то есть управление доступом на основе ролей
Суть простая
• У ролей есть набор разрешений
• Пользователи получают роли
• Разрешения определяют, что пользователи могут делать
Всё довольно просто, но при этом мощно
Хотя сами по себе роли могут быть слишком широкими
Поэтому я предпочитаю комбинировать роли с более точечными разрешениями.
Вместо того чтобы хардкодить правила доступа, я привязываю разрешения к конкретным действиям и уже потом связываю эти разрешения с ролями
Так проще управлять и легче расширять
Как смоделировать такой подход и применить его в .NET — читать
👉 Новости 👉 База вопросов
RBAC расшифровывается как Role-Based Access Control, то есть управление доступом на основе ролей
Суть простая
• У ролей есть набор разрешений
• Пользователи получают роли
• Разрешения определяют, что пользователи могут делать
Всё довольно просто, но при этом мощно
Хотя сами по себе роли могут быть слишком широкими
Поэтому я предпочитаю комбинировать роли с более точечными разрешениями.
Вместо того чтобы хардкодить правила доступа, я привязываю разрешения к конкретным действиям и уже потом связываю эти разрешения с ролями
Так проще управлять и легче расширять
Как смоделировать такой подход и применить его в .NET — читать
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
🏕 Rider 2025.2 теперь с расширенной поддержкой C# 14
Теперь доступны все свежие фичи языка:
🟠 Extensions
🟠 Partial events и конструкторы
🟠 Null-conditional assignments
Плюс обновления анализа кода в Rider 2025.2 : подробнее
👉 Новости 👉 База вопросов
Теперь доступны все свежие фичи языка:
Плюс обновления анализа кода в Rider 2025.2 : подробнее
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
#полезное
🏠 Когда исключения неизбежны, нужен механизм для их обработки.
Вот как это можно настроить за несколько минут:
Начиная с .NET 8 у вас есть интерфейс
Это абстракция для управления исключениями с одним методом:
Он отвечает за обработку исключений в пайплайне ASP.NET Core.
Метод возвращает
Это позволяет реализовать кастомную логику под разные сценарии.
Для конфигурации нужно сделать три шага:
1⃣ Зарегистрировать сервис
2⃣ Зарегистрировать
3⃣ Зарегистрировать
Третий шаг опционален, но я настоятельно рекомендую его использовать, чтобы ошибки были более читаемыми.
👉 Новости 👉 База вопросов
Вот как это можно настроить за несколько минут:
Начиная с .NET 8 у вас есть интерфейс
IExceptionHandlerЭто абстракция для управления исключениями с одним методом:
TryHandleAsyncОн отвечает за обработку исключений в пайплайне ASP.NET Core.
Метод возвращает
true, если исключение обработано успешно, и false, если его нельзя обработать.Это позволяет реализовать кастомную логику под разные сценарии.
Для конфигурации нужно сделать три шага:
IExceptionHandler через dependency injectionExceptionHandlerMiddleware в пайплайне запросовProblemDetails ответТретий шаг опционален, но я настоятельно рекомендую его использовать, чтобы ошибки были более читаемыми.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3
#Собес #mongoDB
🤔 Что такое составной индекс и когда его следует использовать?
💬 Кратко:
Составной индекс в MongoDB используется для индексации нескольких полей вместе. Он эффективен для запросов, которые фильтруют или сортируют данные по нескольким полям. Составные индексы значительно повышают производительность таких запросов.
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
💬 Кратко:
Составной индекс в MongoDB используется для индексации нескольких полей вместе. Он эффективен для запросов, которые фильтруют или сортируют данные по нескольким полям. Составные индексы значительно повышают производительность таких запросов.
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
🛞 Хочешь писать более чистый C#-код?
Начни с чистых функций.
Чистая функция проста:
Берёт входные данные, возвращает результат и больше ни на что не влияет.
Никаких запросов в базу. Никаких случайных значений. Никаких скрытых побочных эффектов
Такой код легче тестировать, отлаживать и ему проще доверять.
Если логика кажется непредсказуемой — попробуй вынести её в чистую функцию.
Удивишься, насколько всё станет понятнее.
👉 Новости 👉 База вопросов
Начни с чистых функций.
Чистая функция проста:
Берёт входные данные, возвращает результат и больше ни на что не влияет.
Никаких запросов в базу. Никаких случайных значений. Никаких скрытых побочных эффектов
Такой код легче тестировать, отлаживать и ему проще доверять.
Если логика кажется непредсказуемой — попробуй вынести её в чистую функцию.
Удивишься, насколько всё станет понятнее.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5
#полезное
🤯 Примеры использования разделителя цифр (_) в C#
👉 Новости 👉 База вопросов
// Можно использовать в целых числах
int oneMillion = 1_000_000;
Console.WriteLine(oneMillion); // Выведет: 1000000
// Работает и с числами с плавающей точкой
double billion = 1_000_000_000.0;
Console.WriteLine(billion); // Выведет: 1000000000
// Поддерживается и в двоичной, и в шестнадцатеричной записи
int binary = 0b1010_1011_1100;
Console.WriteLine(binary); // Выведет: 2748
int hexadecimal = 0x1234_abcd;
Console.WriteLine(hexadecimal); // Выведет: 305441741
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4
#полезное
😱 В dotnet 9 появился обобщённый
Во многих случаях нужно хранить пары ключ-значение с сохранением порядка и быстрым поиском по ключу. Теперь это можно делать с помощью обобщённого
👉 Новости 👉 База вопросов
OrderedDictionary Во многих случаях нужно хранить пары ключ-значение с сохранением порядка и быстрым поиском по ключу. Теперь это можно делать с помощью обобщённого
OrderedDictionary в .NET 9.Please open Telegram to view this post
VIEW IN TELEGRAM
👍2😈1
#Собес #mongoDB
🤔 Как обрабатываются изменения схемы в MongoDB?
💬 Кратко:
MongoDB является схемофлексибельной базой данных, позволяя изменять структуру документов без воздействия на уже существующие. Для обработки изменений схемы можно использовать версии документов, миграции данных и схему валидации с использованием JSON Schema.
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
💬 Кратко:
MongoDB является схемофлексибельной базой данных, позволяя изменять структуру документов без воздействия на уже существующие. Для обработки изменений схемы можно использовать версии документов, миграции данных и схему валидации с использованием JSON Schema.
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
С неявными преобразованиями в
👉 Новости 👉 База вопросов
Span<T> в .NET 10 теперь можно передавать массивы напрямую в методы, которые ожидают Span<T> или ReadOnlySpan<T>, без вызова .AsSpan(). Это делает высокопроизводительный код без аллокаций чище и безопаснее. Очень удобноPlease open Telegram to view this post
VIEW IN TELEGRAM
❤2
Техническое собеседование. Осень 2024. Просил 350 к. Опыт в резюме: 3+ года. На собеседование было много вопросов по .NET, паттернам проектирования, в конце затронули математику.
Вопросы:
- Объясните механизм deferred execution (отложенного выполнения) в LINQ на примере First() и счётчика.
- Как в вашем проекте определялось, какую стратегию использовать - через фабрику, DI или иным способом?
- С какими ORM вы сталкивались (Entity Framework, Dapper и др.) ?
- Приходилось ли писать T-SQL-запросы вручную?
Все вопросы можно посмотреть на нашей платформе
#собес #коллеции
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1👍1
#Собес #mongoDB
🤔 Какую роль играет кэш WiredTiger в MongoDB и как он влияет на производительность?
💬 Кратко:
Кэш WiredTiger в MongoDB хранит часто используемые данные и индексы в памяти, улучшая производительность чтения, сокращая обращения к диску. Размер кэша критичен для производительности: слишком маленький кэш приведет к частым чтениям с диска, замедляя операции, а слишком большой - вызовет проблемы с распределением памяти.
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
💬 Кратко:
Кэш WiredTiger в MongoDB хранит часто используемые данные и индексы в памяти, улучшая производительность чтения, сокращая обращения к диску. Размер кэша критичен для производительности: слишком маленький кэш приведет к частым чтениям с диска, замедляя операции, а слишком большой - вызовет проблемы с распределением памяти.
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
#полезное
😎 Dictionary Expressions в C#?
Сейчас это предложение в статусе champion (ссылка ниже) и продолжение фичи Collection Expressions из C# 12.
Предложение Dictionary Expressions
👉 Новости 👉 База вопросов
Сейчас это предложение в статусе champion (ссылка ниже) и продолжение фичи Collection Expressions из C# 12.
Предложение Dictionary Expressions
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
This media is not supported in your browser
VIEW IN TELEGRAM
#полезное
😱 Как кеш может работать неправильно?
Есть несколько типичных ситуаций. Проблема стадного эффекта возникает, когда одновременно истекает много ключей. Все запросы начинают идти прямо в базу, и она перегружается.
Это решается добавлением случайного времени к сроку жизни ключей или ограничением доступа к базе только для критичных данных, пока кеш не восстановится.
Пробой кеша случается, когда ключа нет ни в кеше, ни в базе. Приложение не может обновить кеш и создаёт лишнюю нагрузку. В этом случае помогает кеширование null для несуществующих ключей или проверка ключа через bloom filter, чтобы лишний раз не обращаться к базе.
Есть и пробой по «горячему» ключу. Когда один популярный ключ истекает, вся нагрузка уходит в базу. Поскольку такие ключи могут составлять большую часть запросов, для них обычно не задают время жизни.
Кеш может и просто упасть. Тогда все запросы идут в базу, и система перестаёт справляться. Здесь выход либо в использовании circuit breaker, который блокирует обращения и к кешу, и к базе, либо в развёртывании кластера кеша, чтобы повысить его доступность.
👉 Новости 👉 База вопросов
Есть несколько типичных ситуаций. Проблема стадного эффекта возникает, когда одновременно истекает много ключей. Все запросы начинают идти прямо в базу, и она перегружается.
Это решается добавлением случайного времени к сроку жизни ключей или ограничением доступа к базе только для критичных данных, пока кеш не восстановится.
Пробой кеша случается, когда ключа нет ни в кеше, ни в базе. Приложение не может обновить кеш и создаёт лишнюю нагрузку. В этом случае помогает кеширование null для несуществующих ключей или проверка ключа через bloom filter, чтобы лишний раз не обращаться к базе.
Есть и пробой по «горячему» ключу. Когда один популярный ключ истекает, вся нагрузка уходит в базу. Поскольку такие ключи могут составлять большую часть запросов, для них обычно не задают время жизни.
Кеш может и просто упасть. Тогда все запросы идут в базу, и система перестаёт справляться. Здесь выход либо в использовании circuit breaker, который блокирует обращения и к кешу, и к базе, либо в развёртывании кластера кеша, чтобы повысить его доступность.
Please open Telegram to view this post
VIEW IN TELEGRAM