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 #281 · Back to latest

Older Posts 20 shown
Post #280 421
#полезное
🤯 Что такое RBAC и как это помогает с авторизацией

RBAC расшифровывается как Role-Based Access Control, то есть управление доступом на основе ролей

Суть простая

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

Всё довольно просто, но при этом мощно

Хотя сами по себе роли могут быть слишком широкими

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

Так проще управлять и легче расширять

Как смоделировать такой подход и применить его в .NET — читать

👉Новости 👉База вопросов
Post #279 361
#полезное
😱 Вызов Azure Function из Azure SQL DB

Да, это реально. Хранимая процедура sp_invoke_external_rest_endpoint позволяет дергать HTTPS REST endpoint, переданный ей в качестве аргумента.

👉Новости 👉База вопросов
  • ❤ 1
Post #278 408
#полезное
😅 Запуск .NET в браузере без Blazor

https://andrewlock.net/running-dotnet-in-the-browser-without-blazor/

В этой статье автор показывает, как запустить .NET в браузере без использования Blazor, а вместо этого опереться на более низкоуровневые абстракции, которые предоставляют [JSImport] и [JSExport].

👉Новости 👉База вопросов
  • ❤ 2
Post #277 384
#полезное
📞 Изоляция данных в модульном монолите

🟠 Схема и роль на модуль — для каждого модуля создаётся собственная схема и роль
🟠 Привилегии только для своей схемы — модуль не имеет доступа к данным других схем
🟠 Отдельный DbContext + схема по умолчанию — разделение кода и данных на уровне ORM
🟠 Разные строки подключения и миграции — независимое управление конфигурацией и развёртыванием
🟠 Read-only представления для межмодульных запросов — безопасный доступ к данным между модулями

Смотрите пошаговое руководство: ссылка

👉Новости 👉База вопросов
Post #275 418
#Собес #postgres
🤔 Что такое PostgreSQL каковы его основные особенности?

PostgreSQL — это мощная обьектно-реляционная система управления базами данных с открытым исходным кодом. Она поддерживает расширяемость, соответствие стандарту SQL, работу с JSON, многоверсионное управление параллелизмом (MVCC) и транзакции с ACID-свойствами.

👉Новости 👉Платформа
  • ❤ 1
Post #274 458
#полезное
🤣 Паттерн Options в .NET — это одна из тех фич, которые я стабильно использую во всех своих C#-проектах

✅ Более чистое управление конфигами
✅ Сильно типизированные классы
✅ Простая интеграция с DI
✅ Без проблем работает с appsettings.json, secrets.json, Azure Key Vault и прочим

Почему это важно

Вместо того чтобы раскидывать значения конфигов по всему коду, ты централизуешь их в структурированных классах. Это не только улучшает читаемость, но и делает код более тестируемым и удобным в сопровождении.

Обычно это выглядит так

🟠Определяешь конфиг в appsettings.json
🟠Создаёшь POCO-класс
🟠Биндишь его через .AddOptions<T>().BindConfiguration()
🟠Инжектишь в сервисы через IOptions<T>

Просто. Масштабируемо. Аккуратно.

А ты используешь этот паттерн у себя или до сих пор дёргаешь значения конфигов через IConfiguration["key"]

👉Новости 👉База вопросов
  • ❤ 2
  • 👍 1
Post #273 430
#полезное
😬 Посмотрите этот классный open-source инструмент для визуализации JSON-данных в интерактивных графах.

Он предлагает функции конвертации JSON в другие форматы (CSV, YAML), генерацию JSON Schema, выполнение запросов и экспорт визуализаций в виде изображений.

Также он умеет форматировать, валидировать и создавать интерфейсы TypeScript.

Репозиторий: https://github.com/AykutSarac/jsoncrack.com

👉Новости 👉База вопросов
  • ❤ 2
  • 👍 1
Post #272 406
#Собес #postgres
🤔 Что такое таблица в PostgreSQL и как её создать?

Таблица в PostgreSQL — это структура, используемая для хранения данных в виде строк и столбцов. Для создания таблицы используется команда CREATE TABLE имя таблицы (список_ столбцов) ; .

👉Новости 👉Платформа
  • ❤ 2
Post #271 510
🖥 Middle C# Backend разработчик в компанию IT One

Техническое собеседование. Осень 2024. Просил 270к+. Опыт в резюме: 3.6 года. Обсуждали опыт работы с микросервисами, оптимизацию запросов. Был лайвкодинг - задачи на проверку дубликатов в массиве и вычисление чисел Фибоначчи.

Вопросы:
- Как обеспечивается атомарность и изоляция транзакций?
- Как проектировали архитектуру базы данных для системы с высокой нагрузкой?
- Как работают кластеризованные и некластеризованные индексы? Когда их стоит применять?
- Какие методы использовали для оптимизации SQL-запросов (индексы, уменьшение JOIN, проверка на NULL) ?

Все вопросы можно посмотреть на нашей платформе

#собес
  • ❤ 3
Post #270 507
#полезное
😊 Не совершайте эту ошибку

Не используйте .ToLower() для сравнения строк. Почему?

Метод .ToLower() создаёт новую строку в памяти для каждого сравнения, что приводит к лишним аллокациям.

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

Кроме того, .ToLower() чувствителен к культуре, то есть результат может различаться в зависимости от текущей культуры, установленной в исполняющем потоке.

Что использовать вместо этого?

В .NET есть мощное перечисление — StringComparison.

Возможные варианты StringComparison:

- Ordinal — используйте в большинстве случаев, когда культурные правила не важны. Самый быстрый вариант.
- OrdinalIgnoreCase — для сравнений без учёта регистра, где культурные правила не имеют значения.
- CurrentCulture и CurrentCultureIgnoreCase — используйте при сравнении строк, отображаемых пользователю, так как они учитывают культурные правила.
- InvariantCulture и InvariantCultureIgnoreCase — подходят, когда нужна единообразная логика вне зависимости от культуры, например, при сохранении и извлечении данных.

> EF Core выбросит исключение, если использовать методы вроде
> String.Equals(string, StringComparison), так как они не транслируются в SQL.

Это не будет работать с EF.
Если вы используете SQL Server с коллацией по умолчанию, сравнение строк уже нечувствительно к регистру, поэтому обычное a == b или string.Equals(a, b) в LINQ будет работать.

👉Новости 👉База вопросов
  • 👍 3
  • ❤ 1
Post #269 383
#Собес #postgres
🤔 Какие существуют типы индексов в PostgreSQLu когда их использовать?

PostgreSQL поддерживает несколько типов индексов: B-Tree, Hash, GIN, GiST, BRIN, и SP-GiST. B-Tree подходит для поиска равенства и диапазона, Hash - только для равенства, GIN и GiST - для полнотекстового поиска, а BRIN оптимален для больших таблиц с последовательными данными.

👉Новости 👉Платформа
  • ❤ 2
Post #267 417
#полезное
🛞 Числовой StringComparer появится в dotnet 10

Он позволяет сравнивать числа по их числовому значению, а не в лексикографическом порядке.

👉Новости 👉База вопросов
  • ❤ 4
  • 👍 4
Post #266 428
#ЛитКод
Задача: 728. Self Dividing Numbers

Например, 128 является саморазделяющимся числом, потому что 128 % 1 == 0, 128 % 2 == 0 и 128 % 8 == 0. Саморазделяющееся число не может содержать цифру ноль. Если даны два целых числа left и right, верните список всех саморазделяющихся чисел в диапазоне [left, right].

Пример:
Input: left = 1, right = 22
Output: [1,2,3,4,5,6,7,8,9,11,12,15,22]


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

1⃣Переберите все числа в диапазоне от left до right.

2⃣Для каждого числа проверьте, является ли оно саморазделяющимся: Разделите число на его цифры. Убедитесь, что ни одна цифра не равна нулю и число делится на каждую из своих цифр без остатка.

3⃣Добавьте саморазделяющиеся числа в результативный список и верните его.

😎 Решение:
public class Solution {
public IList<int> SelfDividingNumbers(int left, int right) {
List<int> result = new List<int>();
for (int num = left; num <= right; num++) {
if (IsSelfDividing(num)) {
result.Add(num);
}
}
return result;
}

private bool IsSelfDividing(int num) {
int n = num;
while (n > 0) {
int digit = n % 10;
if (digit == 0 || num % digit != 0) {
return false;
}
n /= 10;
}
return true;
}
}


👉Новости 👉База вопросов
LeetCode Self Dividing Numbers - LeetCode Can you solve this real interview question? Self Dividing Numbers - A self-dividing number is a number that is divisible by every digit it contains. * For example, 128 is a self-dividing number because 128 % 1 == 0, 128 % 2 == 0, and 128 % 8 == 0. A self…
  • 👍 4
  • ❤ 2
Post #265 381
#Собес #postgres
🤔 Что такое таблицы с наследованием в PostgreSQL и зачем они нужны?

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

👉Новости 👉Платформа
  • ❤ 3
Post #264 517
#полезное
😘 Fluent UI Blazor — библиотека компонентов от Microsoft, которая переносит фирменный Fluent Design в Blazor-приложения. Она включает готовые решения для кнопок, карточек, таблиц и сложных элементов вроде диалоговых окон, сохраняя единый стиль современных продуктов Microsoft.

Проект имеет глубокую интеграцию с .NET 8/9 и гибкость: темы настраиваются через CSS-переменные, есть поддержка RTL и адаптация под системные настройки. Для старта можно использовать готовые шаблоны dotnet new или вручную подключить NuGet-пакеты.
Гитхаб

👉Новости 👉База вопросов
  • ❤ 2
Post #263 444
#Собес #postgres
🤔 Какие есть типы соединений (JOIN) в PostgreSQL?

PostgreSQL поддерживает четыре основных типа соединений: INNER JOIN, LEFT JOIN, RIGHT JOIN и FULL OUTER JOIN. Они используются для объединения данных из нескольких таблиц, выбирая соответствующие или все записи в зависимости от типа соединения.

👉Новости 👉Платформа
  • ❤ 2
Post #262 575
#полезное
😐 Пример Task.WhenEach в .NET 9

В .NET 9 появилась новая API — Task.WhenEach, которая позволяет обрабатывать асинхронные задачи по мере их завершения.

В простом примере выше выполняется несколько запросов через HttpClient, и их результаты обрабатываются по мере готовности, а не после завершения всех задач.

👉Новости 👉База вопросов
  • ❤ 4
Post #261 605
🖥 Middle C# Backend Developer в ПочтаТех

Техническое собеседование. Осень 2024. Вилка: 200к+. Опыт в резюме: 3
года. Были вопросы по С#, базам данных, рассматривались реальные
кейсы.

Вопросы:
- Какие методы использовали для оптимизации SQL-запросов (индексы, уменьшение JOIN, проверка на NULL)?
- В чём отличие кластеризованного и некластеризованного индекса? Когда их стоит применять?
- Что такое сборщик мусора (Garbage Collection) в С#?
- В чем разница между методами Dispose и Finalize в С#?

Все вопросы можно посмотреть на нашей платформе

#собес
  • ❤ 2
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 →