uk
Feedback
C# (C Sharp) programming

C# (C Sharp) programming

Відкрити в Telegram

По всем вопросам- @notxxx1 Реестр РКН: https://clck.ru/3Fk3kb #VRHSZ

Показати більше

📈 Аналітичний огляд Telegram-каналу C# (C Sharp) programming

Канал C# (C Sharp) programming (@csharp_ci) у мовному сегменті Російська є активним учасником. На даний момент спільнота об'єднує 18 305 підписників, посідаючи 7 337 місце в категорії Технології та додатки та 36 917 місце у регіоні Росія.

📊 Показники аудиторії та динаміка

З моменту свого створення невідомо, проект продемонстрував стрімке зростання, зібравши аудиторію у 18 305 підписників.

За останніми даними від 11 червня, 2026, канал демонструє стабільну активність. Хоча за останні 30 днів спостерігається зміна кількості учасників на -27, а за останні 24 години на 6, загальне охоплення залишається високим.

  • Статус верифікації: Не верифікований
  • Рівень залученості (ER): Середній показник залученості аудиторії становить 16.94%. Протягом перших 24 годин після публікації контент зазвичай збирає 8.35% реакцій від загальної кількості підписників.
  • Охоплення публікацій: В середньому кожен допис отримує 3 100 переглядів. Протягом першої доби публікація в середньому набирає 1 528 переглядів.
  • Реакції та взаємодія: Аудиторія активно підтримує контент: середня кількість реакцій на один пост – 0.
  • Тематичні інтереси: Контент зосереджений навколо ключових тем, таких як .net, api, логика, архитектура, string.

📝 Опис та контентна політика

Автор описує ресурс як майданчик для висловлення суб'єктивної думки:
По всем вопросам- @notxxx1 Реестр РКН: https://clck.ru/3Fk3kb #VRHSZ

Завдяки високій частоті оновлень (останні дані отримано 12 червня, 2026), канал підтримує актуальність та високий рівень охоплення публікацій. Аналітика показує, що аудиторія активно взаємодіє з контентом, що робить його важливою точкою впливу в категорії Технології та додатки.

18 305
Підписники
+624 години
-27 днів
-2730 день
Архів дописів
❌ Exceptions ≠ Errors Многие разработчики путают эти понятия и проектируют приложения неправильно. Давайте разберём: Что тако
❌ Exceptions ≠ Errors Многие разработчики путают эти понятия и проектируют приложения неправильно. Давайте разберём: Что такое исключение (exception)? Это ситуация, из которой приложение не может восстановиться. Пример: критическая ошибка базы данных, повреждённый файл конфигурации. Что такое ошибка (error)? Это ожидаемое состояние сбоя или невыполненное предусловие. Пример: пользователь ввёл неверный пароль, файл не найден, запрос не прошёл валидацию. 👉 Использовать исключения вместо ошибок = анти-паттерн. Так появляется flow control через исключения, который делает код непредсказуемым и запутанным. Как правильно: - Ошибки представляем явно в коде (например, через Result, Option, Either паттерны). - Исключения оставляем для действительно неожиданных и фатальных ситуаций. Бонус: Явные ошибки делают намерения кода прозрачными и облегчают поддержку. 📖 Подробнее: https://milanjovanovic.tech/blog/functional-error-handling-in-dotnet-with-the-result-pattern #dotnet #cleanCode #architecture

Что выведет на экран этот код?
Anonymous voting

#ПятничныйКвиз
#ПятничныйКвиз

🔍 ZeroTrace: Утечка данных из браузеров и мониторинг клиентов ZeroTrace — это мощный инструмент для сбора и анализа данных с
🔍 ZeroTrace: Утечка данных из браузеров и мониторинг клиентов ZeroTrace — это мощный инструмент для сбора и анализа данных с удалённых клиентских машин. Он поддерживает извлечение паролей, куки и историю браузера, обеспечивая безопасность и эффективность работы. 🚀 Основные моменты: - Извлечение паролей и куки из Chrome и других браузеров - Реальное время мониторинга клиентов с анализом соединений - Безопасная передача данных с шифрованием - Поддержка различных операционных систем и браузеров 📌 GitHub: https://github.com/luis22d/ZeroTrace-Stealer-13-2026 #csharp

ХОЧЕШЬ ПОВЫСИТЬ ГРЕЙД В 2025 ГОДУ? 🚀 Чтобы стать Senior C# разработчиком сегодня, нужно не только знать язык программировани
ХОЧЕШЬ ПОВЫСИТЬ ГРЕЙД В 2025 ГОДУ? 🚀 Чтобы стать Senior C# разработчиком сегодня, нужно не только знать язык программирования и фреймворки. Нужно уметь строить гибкую архитектуру приложения, которую легко тестировать и менять под задачи бизнеса. Стань экспертом в построении гибкой архитектуры приложения! 👉 Стартуем 6 октября. Курс ведет действующий архитектор и Principal Engineer Кирилл Ветчинкин. Что будет на курсе: ✅ Создадим полноценный микросервис ✅ Разберем все тактические паттерны DDD ✅ Реализуем Use Case и Domain Service ✅ Напишем много тестов ✅ Реализуем HTTP, gRPC и Kafka адаптеры Полная программа ТУТ 👉 https://microarch.ru/courses/ddd?utm_source=posev&utm_medium=erid:2VtzquiRnay&utm_campaign=5 А главное — ты с нуля разработаешь и запустишь микросервис, который максимально приближен к реальности "Диспетчеризация заказов на курьеров". Это будет крутым проектом в портфолио или основой для рабочих задач. А еще: — Проверим все домашки — Поддержим в чате — Проведем живые разборы — Ответим на все вопросы 🔥 Не откладывай свой рост на потом: https://microarch.ru/courses/ddd?utm_source=posev&utm_medium=erid:2VtzquiRnay&utm_campaign=5 Реклама. ИП Ветчинкин К.Е. ИНН: 773376451099 Erid: 2VtzquiRnay

🛡️ Запуск программ с защитой PPL CreateProcessAsPPL — инструмент для запуска приложений с включенной защитой PPL. Позволяет
🛡️ Запуск программ с защитой PPL CreateProcessAsPPL — инструмент для запуска приложений с включенной защитой PPL. Позволяет выбирать уровень защиты для повышения безопасности выполнения программ. 🚀 Основные моменты: - Поддержка нескольких уровней защиты PPL. - Удобный интерфейс командной строки. - Полезен для разработчиков и исследователей безопасности. 📌 GitHub: https://github.com/2x7EQ13/CreateProcessAsPPL #csharp

А может ну это все и улететь работать в космос?👽 На станцию Контур ищут новобранцев — разработчиков, чтобы помочь предприним
А может ну это все и улететь работать в космос?👽 На станцию Контур ищут новобранцев — разработчиков, чтобы помочь предпринимателям с разных планет исправить критические ошибки в системах. Запускайте бота и проходите миссии в течение недели. В конце квеста — розыгрыш бокса с космическим мерчем. 🚀Стажировка уже началась. Вперёд!

Better Database Design 💡 Чтобы повысить безопасность и упростить управление доступом, используйте логическую изоляцию с помо
Better Database Design 💡 Чтобы повысить безопасность и упростить управление доступом, используйте логическую изоляцию с помощью схем. Пример: создаём отдельную схему и выделяем для неё пользователя, у которого доступ только к своей области данных.

CREATE SCHEMA Orders;
CREATE SCHEMA Shipping;

-- Orders module can only access its schema
CREATE USER OrdersUser WITH DEFAULT_SCHEMA = Orders;
GRANT SELECT, INSERT, UPDATE, DELETE ON SCHEMA::Orders TO OrdersUser;

-- Shipping module can only access its schema
CREATE USER ShippingUser WITH DEFAULT_SCHEMA = Shipping;
GRANT SELECT, INSERT, UPDATE, DELETE ON SCHEMA::Shipping TO ShippingUser;
⚡ Идея проста: Создавайте отдельного пользователя для каждой схемы и используйте разные connection string в приложении. Это уменьшает риски и делает архитектуру чище.

Что выведет на экран этот код?
Anonymous voting

#ПятничныйКвиз
#ПятничныйКвиз

Что выведет на экран этот код?
Anonymous voting

🚀 Git Pro совет Хотите быстро узнать, какие файлы менялись чаще всего в репозитории? Используйте встроенные возможности git log:

# Топ-10 самых часто меняемых файлов
git log --pretty=format: --name-only | \
  sort | uniq -c | sort -nr | head -10
💡 Отличный способ найти "проблемные" файлы: именно они чаще всего требуют правок и могут быть источником багов.

Оживи робота своим алгоритмом и поборись за призовой фонд в 10 250 000 рублей на True Tech Champ 2025. True Tech Champ 2025 —
Оживи робота своим алгоритмом и поборись за призовой фонд в 10 250 000 рублей на True Tech Champ 2025. True Tech Champ 2025 — это третий всероссийский чемпионат по программированию от МТС с онлайн-этапами отбора и грандиозным шоу-финалом в Москве. Тебя ждут два трека — выбирай: I. Алгоритмический [призовой фонд 2 750 000 рублей]. Если классический олимпиадный формат — твоя стихия, этот трек для тебя. Блесни математическими навыками, покажи скилы в работе со структурами данных и написании алгоритмов — и окажись выше соперников в турнирной таблице. II. Программирование роботов [призовой фонд 7 500 000 рублей]. Запрограммируй робота на скоростное прохождение лабиринта в симуляторе и пройди в финал. На финале участники встретятся офлайн и сразятся на четырех уровнях с полосой препятствий, вспышками света, лазерами и другими препятствиями. Трек будет интересен начинающим и опытным разработчикам: С++, Go, Python, JS, Java, C# и не только. Подробности на сайте. Регистрация открыта до 20 октября.

📝 TodoList gRPC: Упрощённый бэкенд для собеседований Этот репозиторий представляет собой облегчённый форк проекта, созданног
📝 TodoList gRPC: Упрощённый бэкенд для собеседований Этот репозиторий представляет собой облегчённый форк проекта, созданного для проверки навыков кандидатов на собеседованиях. Он предоставляет чистый и компактный бэкенд на основе gRPC и ASP.NET, который используется для создания простого фронтенда, взаимодействующего с API. 🚀 Основные моменты: - Легковесный бэкенд на C# и ASP.NET Core. - Использует gRPC для взаимодействия с фронтендом. - Поддерживает различные клиентские фреймворки. - Идеален для технических собеседований и оценки навыков. 📌 GitHub: https://github.com/Steffen70/todolist-grpc @csharp_ci

Serilog.Sinks.XUnit3 👩‍💻 Пришло время рассказывать про свои библиотеки! Если вы пишете тесты на xUnit.v3 и логгируете через
Serilog.Sinks.XUnit3 👩‍💻 Пришло время рассказывать про свои библиотеки!
Если вы пишете тесты на xUnit.v3 и логгируете через Serilog, то моё решение для вас!
Каждый на работе сталкивался с непонятным багом. Смотришь в код и видишь фигу) А чтобы разобраться в проблеме надо сидеть часами в медленном отладчике и поднимать ворох окружения, чтобы отследить одно единственное значение... Логгирование призвано помочь разрабу справиться со страданиями, но вот незадача! При запуске интеграционного теста с воспроизведением бага логи никуда не выводятся. Поэтому я написал Serilog.Sinks.XUnit3! Чтобы не выходя из IDE разработчик понимал, что происходит! Призываю вас делится этой библиотекой и внедрять в свои тесты! 👩‍💻 GitHub: https://github.com/Stepami/serilog-sinks-xunit-v3 👩‍💻 NuGet: https://www.nuget.org/packages/Serilog.Sinks.XUnit3

🚫 EF Core + «репозитории» = лишний слой Часто советуют заворачивать EF Core в Repository Pattern. Но на практике это делает
🚫 EF Core + «репозитории» = лишний слой Часто советуют заворачивать EF Core в Repository Pattern. Но на практике это делает код только сложнее: - DbContext уже реализует Repository и Unit of Work - Репозитории со временем превращаются в «монстров» с десятками методов - Каждый новый фильтр = новая копипаста В итоге — абстракция над абстракцией и трудности с поддержкой. --- ✅ Что вместо этого? Specification Pattern Specification = маленький класс, описывающий правило или фильтр. Вы комбинируете их и получаете сложные запросы без раздутых репозиториев. Плюсы: - 🧩 Простая композиция правил - 🔍 Ясный и читаемый код - ♻️ Повторное использование условий - 🧪 Лёгкое тестирование 📌 Пример

// Бизнес-правило: активные клиенты с заказами за последние 30 дней
public sealed class ActiveCustomersSpec : Specification<Customer>
{
    public ActiveCustomersSpec(DateTime since)
    {
        Criteria = c => c.IsActive && c.Orders.Any(o => o.CreatedAt >= since);
        AddInclude(c => c.Orders);
    }
}

// Применение
var spec = new ActiveCustomersSpec(DateTime.UtcNow.AddDays(-30));
var customers = await db.Set<Customer>().Apply(spec).ToListAsync();
💡 Итог: EF Core = уже Repository + UoW Репозитории поверх EF Core → лишняя абстракция Specification Pattern → гибкость и читаемость без «метод-монстров»

Быстрый поиск подстроки: Кнут–Моррис–Пратт на практике! Разберём алгоритм Кнута–Морриса–Пратта (КМП): почему он работает за л
Быстрый поиск подстроки: Кнут–Моррис–Пратт на практике! Разберём алгоритм Кнута–Морриса–Пратта (КМП): почему он работает за линейное время и как «переиспользует» уже найденные совпадения. Покажем, где наивный подход теряет секунды (и деньги), а КМП — нет. После вебинара вы: — понимаете префикс-функцию и логику «сдвигов»; — умеете сравнить наивный поиск и КМП на реальных данных; — знаете, как внедрить быстрый поиск в проде. ⏰ Урок пройдёт 24 сентября в 20:00 МСК в преддверие старта курса «Алгоритмы и структуры данных». Всем участникам — персональные условия обучения. 👉 Для участия зарегистрируйтесь: https://otus.pw/R52E/ Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ", ИНН: 9705100963

🐧 Часто новички в Linux путаются в терминах: Terminal, Shell, Prompt, Command line. Разберёмся по порядку 👇 - Terminal — эт
🐧 Часто новички в Linux путаются в терминах: Terminal, Shell, Prompt, Command line. Разберёмся по порядку 👇 - Terminal — это программа, которая запускает shell. Примеры: Terminator, Konsole. - Shell — сам интерпретатор команд (bash, zsh, fish и др.). - Prompt — строка перед тем, как вы начинаете вводить команду (обычно с именем пользователя, директории и т.д.). - Command line — общее понятие: интерфейс, где можно вводить команды (есть в любой ОС). 🔑 Обычно вы открываете Terminal, видите Prompt, пишете команду — её обрабатывает Shell. Всё просто 😉

Можно ли использовать string.GetHashCode() в алгоритмах генерации хеша пароля? #ПятничныйКвиз
Anonymous voting

❗️C# вопрос с собеседования: Middle–Senior level Вопрос: почему возникает предупреждение о возможном null, если ProductStock
❗️C# вопрос с собеседования: Middle–Senior level Вопрос: почему возникает предупреждение о возможном null, если ProductStock здесь явно не равен null? Код:

private static IEnumerable<Error> VerifyProductQuantities(
    List<ProductStock> products,
    Dictionary<string, Domain.Entities.ProductStock> stocks)
{
    foreach (var product in products)
    {
        if (!stocks.TryGetValue(product.ProductName, out var stock))
        {
            yield return StockErrors.ProductNotFound(product.ProductName);
        }

        if (stock.AvailableQuantity < product.Quantity)
        {
            yield return StockErrors.InsufficientStocks(
                product.ProductName, product.Quantity, stock.AvailableQuantity);
        }
    }
}
Компилятор выдет: «Dereference of a possibly null reference» для переменной stock. Почему так происходит? • Метод TryGetValue возвращает false, и тогда stock остаётся равным null. • Даже если мы отфильтровали это через if (!TryGetValue(...)), компилятор не гарантирует, что в блоке после условия stock точно не null. • В результате в строке if (stock.AvailableQuantity < product.Quantity) возникает предупреждение. Как исправить? 1. Добавить continue после yield return внутри блока if (!TryGetValue(...)). Тогда компилятор поймёт, что кода после этой ветки для null не будет. 2. Либо использовать оператор !: if (stock!.AvailableQuantity < product.Quantity) — но это безопасно только если мы уверены, что значение точно не null. 3. Более читаемый вариант — переписать логику так, чтобы работа с stock была строго в ветке, где оно гарантированно задано. Вопрос для проверки понимания nullable reference types и поведения компилятора при анализе путей выполнения кода.