Небольшая консольная утилита, которая создаёт список тестовых пользователей: ID, полное имя, email, телефон и дату рождения — на основе библиотеки Bogus.
В этой задаче:
• Создаём консольный проект на C# и подключаем библиотеку Bogus.
• Генерируем список пользователей с реалистичными данными и локализацией.
• Выводим результат в удобном табличном формате.
Это позволяет быстро наполнять проекты реалистичными тестовыми данными, гибко настраивать формат и локализацию.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤9👍7🔥5
This media is not supported in your browser
VIEW IN TELEGRAM
Позволяет формализовать и наглядно представить сложные системы: от backend-архитектуры и UML-диаграмм до бизнес-процессов и пользовательских сценариев. Поддерживает совместную работу, интеграции с корпоративными сервисами и автоматизацию создания схем. Подходит для проектирования, технической документации и коммуникации внутри команд.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13❤4🔥4
Почему ContainsKey() перед индексатором часто лишний?
Часто со словарём работают так:
Код выглядит логично: сначала проверили ключ, потом достали значение.
Но в таком варианте словарь ищет ключ два раза.
Первый раз — в
Если нужно сразу получить значение, лучше использовать:
🔥 Если тебе нужно значение из словаря,
➡️ C# Ready | #совет
Часто со словарём работают так:
if (users.ContainsKey(id))
{
var user = users[id];
}
Код выглядит логично: сначала проверили ключ, потом достали значение.
Но в таком варианте словарь ищет ключ два раза.
Первый раз — в
ContainsKey(), второй — при обращении через индексатор.Если нужно сразу получить значение, лучше использовать:
if (users.TryGetValue(id, out var user))
{
// используем user
}
TryGetValue() за один вызов проверяет ключ и возвращает значение.TryGetValue() обычно лучше, чем ContainsKey() + индексатор.Please open Telegram to view this post
VIEW IN TELEGRAM
❤13👍11🔥3
This media is not supported in your browser
VIEW IN TELEGRAM
Подробная документация по работе с C# в Godot 4: настройка проекта, структура скриптов, классы, сцены, сигналы и взаимодействие объектов внутри движка. Материал отлично подойдёт тем, кто хочет разрабатывать игры на Godot, используя привычный стек C# и .NET вместо GDScript. В документации много примеров кода и практических объяснений.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤18🔥7👍4
Почему IEnumerable лучше не перечислять несколько раз?
Это может быть LINQ-запрос, чтение из файла, генератор или результат из базы.
Например:
На первый взгляд код нормальный.
Но
А потом
Для маленького массива это не проблема.
Но для тяжёлого источника данных это может быть дорого или даже привести к разным результатам.
Если нужен повторный доступ, лучше явно сохранить данные:
А если нужен только проход — не делай лишнюю проверку перед
🔥 IEnumerable<T> — это не всегда коллекция в памяти. Иногда это инструкция, как получить данные.
➡️ C# Ready | #совет
IEnumerable<T> выглядит как обычная коллекция, но это может быть не список.Это может быть LINQ-запрос, чтение из файла, генератор или результат из базы.
Например:
if (orders.Count() > 0)
{
foreach (var order in orders)
Process(order);
}
На первый взгляд код нормальный.
Но
Count() может пройти всю последовательность.А потом
foreach пройдёт её ещё раз.Для маленького массива это не проблема.
Но для тяжёлого источника данных это может быть дорого или даже привести к разным результатам.
Если нужен повторный доступ, лучше явно сохранить данные:
var orderList = orders.ToList();
А если нужен только проход — не делай лишнюю проверку перед
foreach.Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7❤3👍3
Например, Token Bucket отлично подходит для API с кратковременными burst-нагрузками, а Leaky Bucket помогает выравнивать поток запросов и защищать сервис от перегрузки.
На картинке — 5 популярных стратегий ограничения запросов, которые стоит знать каждому backend-разработчику.
Сохрани, чтобы не потерять!
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9❤3🔥2👎1
Guard: создаём свои проверки аргументов
Иногда в метод приходит значение, которое обязательно должно быть заполнено: email, имя пользователя, путь к файлу или строка подключения.
Часто такие проверки пишут прямо внутри метода:
Такой код работает, но если подобных проверок становится много, они начинают повторяться по всему проекту.
В C# можно вынести такие проверки в небольшой helper и сделать код чище:
Теперь проверку можно использовать в любом месте:
Метод
Такой подход особенно удобен, когда в проекте много входных параметров, DTO, команд или сервисных методов. Вместо копирования одинаковых
Можно сделать вариант ещё удобнее — через extension method:
И тогда код становится короче:
Это не сложный паттерн и не отдельная библиотека, а маленький приём, который помогает убрать шум из методов и сделать проверки единообразными.
🔥 Guard — это способ не размазывать одинаковую валидацию по всему проекту.
➡️ C# Ready | #практика
Иногда в метод приходит значение, которое обязательно должно быть заполнено: email, имя пользователя, путь к файлу или строка подключения.
Часто такие проверки пишут прямо внутри метода:
void CreateUser(string email)
{
if (string.IsNullOrWhiteSpace(email))
throw new ArgumentException("Email is empty");
Console.WriteLine($"User created: {email}");
}
Такой код работает, но если подобных проверок становится много, они начинают повторяться по всему проекту.
В C# можно вынести такие проверки в небольшой helper и сделать код чище:
public static class Guard
{
public static string NotEmpty(string value, string name)
{
if (string.IsNullOrWhiteSpace(value))
throw new ArgumentException($"{name} is empty");
return value;
}
}
Теперь проверку можно использовать в любом месте:
void CreateUser(string email)
{
email = Guard.NotEmpty(email, nameof(email));
Console.WriteLine($"User created: {email}");
}
Метод
NotEmpty сразу делает две вещи: проверяет значение и возвращает его обратно, если всё нормально.Такой подход особенно удобен, когда в проекте много входных параметров, DTO, команд или сервисных методов. Вместо копирования одинаковых
if ты собираешь проверки в одном месте.Можно сделать вариант ещё удобнее — через extension method:
public static class GuardExtensions
{
public static string NotEmpty(this string value, string name)
{
if (string.IsNullOrWhiteSpace(value))
throw new ArgumentException($"{name} is empty");
return value;
}
}
И тогда код становится короче:
void CreateUser(string email)
{
email = email.NotEmpty(nameof(email));
Console.WriteLine($"User created: {email}");
}
Это не сложный паттерн и не отдельная библиотека, а маленький приём, который помогает убрать шум из методов и сделать проверки единообразными.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5🔥3👍2
С её помощью можно гарантировать уникальность объектов в приложениях и распределённых системах, создавать и восстанавливать идентификаторы из строкового вида, сравнивать и упорядочивать их, а также проверять на отсутствие значения.Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥10🤝7❤2
Например,
Where() фильтрует коллекции, Select() преобразует данные, а GroupBy() помогает быстро группировать элементы по ключу.На картинке — основные LINQ-методы, разбитые по категориям: фильтрация, сортировка, агрегация, группировка, работа с последовательностями и другое.
Сохрани, чтобы не потерять!
Please open Telegram to view this post
VIEW IN TELEGRAM
❤19🔥14👍4😁4
Взял заказ. Собрал бота. Агентство получило 15 000 рублей.
Пока ты ждёшь лучшую вакансию в своём городе — Владислав Пурвиньш закрывает заказы на чат-ботов силами учеников. (Заказов сейчас висит в поиске 10 786 запросов). Каждый получает от 15 000 рублей за заказ.
Которые даже не шарят в коде. Просто научились одному инструменту. И бизнесы платят им 200-250 000 рублей в месяц.
Схема простая: берёшь реальный заказ из базы → собираешь бота по шаблону → наставник проверяет → сдаёшь и забираешь деньги.
Старт 70-80 000 рублей. С опытом от 200 000 рублей в месяц.
Запусти бота, там пошаговый план как в 2026 году зарабатывать как нефтяник, только с ноута.
👉 @other_digital_bot
Обучение проходит официально — Владислав Пурвиньш имеет образовательную лицензию.
Пока ты ждёшь лучшую вакансию в своём городе — Владислав Пурвиньш закрывает заказы на чат-ботов силами учеников. (Заказов сейчас висит в поиске 10 786 запросов). Каждый получает от 15 000 рублей за заказ.
Которые даже не шарят в коде. Просто научились одному инструменту. И бизнесы платят им 200-250 000 рублей в месяц.
Схема простая: берёшь реальный заказ из базы → собираешь бота по шаблону → наставник проверяет → сдаёшь и забираешь деньги.
Старт 70-80 000 рублей. С опытом от 200 000 рублей в месяц.
Запусти бота, там пошаговый план как в 2026 году зарабатывать как нефтяник, только с ноута.
👉 @other_digital_bot
Обучение проходит официально — Владислав Пурвиньш имеет образовательную лицензию.
👎8