uz
Feedback
C# (C Sharp) programming

C# (C Sharp) programming

Kanalga Telegram’da o‘tish

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

Ko'proq ko'rsatish

📈 Telegram kanali C# (C Sharp) programming analitikasi

C# (C Sharp) programming (@csharp_ci) Rus til segmentidagi kanali faol ishtirokchi. Hozirda hamjamiyat 18 305 obunachidan iborat bo'lib, Texnologiyalar & Aralashmalar toifasida 7 337-o'rinni va Rossiya mintaqasida 36 917-o'rinni egallagan.

📊 Auditoriya ko‘rsatkichlari va dinamika

невідомо sanasidan buyon loyiha tez o‘sib, 18 305 obunachiga ega bo‘ldi.

11 Iyun, 2026 dagi oxirgi ma’lumotlarga ko‘ra kanal barqaror faollikka ega. Oxirgi 30 kunda obunachilar soni -27 ga, so‘nggi 24 soatda esa 6 ga o‘zgardi va umumiy qamrov yuqori darajada qolmoqda.

  • Tasdiqlash holati: Tasdiqlanmagan
  • Jalb etish (ER): Auditoriya o‘rtacha 16.94% darajada jalb etiladi. Nashrdan keyingi dastlabki 24 soatda kontent odatda umumiy obunachilar sonining 8.35% ini tashkil etuvchi reaksiyalarni to‘playdi.
  • Post qamrovi: Har bir post o‘rtacha 3 100 marta ko‘riladi; birinchi sutkada odatda 1 528 ta ko‘rish yig‘iladi.
  • Reaksiyalar va o‘zaro ta’sir: Auditoriya faol: har bir postga o‘rtacha 0 ta reaksiya keladi.
  • Tematik yo‘nalishlar: Kontent .net, api, логика, архитектура, string kabi asosiy mavzularga jamlangan.

📝 Tavsif va kontent siyosati

Muallif resursni shaxsiy fikrni ifoda etish maydoni sifatida ta’riflaydi:
По всем вопросам- @notxxx1 Реестр РКН: https://clck.ru/3Fk3kb #VRHSZ

Yuqori yangilanish chastotasi (oxirgi ma’lumot 12 Iyun, 2026 da olingan) sababli kanal doimo dolzarb va katta qamrovli bo‘lib qoladi. Analitika auditoriya kontent bilan faol hamkorlik qilishini, uni Texnologiyalar & Aralashmalar toifasidagi muhim ta’sir nuqtasiga aylantirishini ko‘rsatadi.

18 305
Obunachilar
+624 soatlar
-27 kunlar
-2730 kunlar
Postlar arxiv
❌ 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 и поведения компилятора при анализе путей выполнения кода.