Пока нет отзывов. Будьте первым, кто поделится своим опытом!
Последние посты
C# Portal | Программирование
11 мая 2026 г., 07:29
📷 Photo
Что такое Queue?
Queue — это коллекция в C# с принципом FIFO (первым пришёл — первым ушёл).
То есть первый добавленный элемент будет извлечён первым.
Когда использовать?
> Планирование задач
> Очереди на печать
> Обработка сообщений
> Поиск в ширину (BFS) в графах
Пример прикрепил, с вас лайк ❤️
👉
1,830
16
0
C# Portal | Программирование
11 мая 2026 г., 07:29
Ubuntu 26.04 https://ift.tt/PfDItyM с . NET 10 из коробки: новые контейнерные образы -resolute, готовность к Linux 7.0, постквантовая криптография и чистая поддержка cgroup v2.
Native AOT работает быстро: компактные бинарники + ~3 мс запуска. . NET 8/9 доступны через PPA с бэкпортами.
👉
1,710
19
0
C# Portal | Программирование
11 мая 2026 г., 07:29
📷 Photo
Самый простой способ генерировать PDF-отчёты
Первый выбор — конвертация HTML → PDF.
В большинстве коммерческих проектов используется IronPDF.
Нужен бесплатный вариант:
- Puppeteer Sharp
- headless-версия Chrome
Но ключевая идея важнее конкретного инструмента.
Если есть HTML-шаблон, появляется полный контроль над форматированием.
Можно использовать современный CSS для стилизации HTML-разметки.
Общая схема реализации:
1. MVC-представления и Razor-синтаксис
2. Рендер динамического HTML-контента
3. Передача HTML в PDF-рендерер
Такой подход использовался в нескольких проектах с хорошими результатами.
Нужен пример реализации гибкой PDF-генерации?
Гайд: https://milanjovanovic.tech/blog/flexible-pdf-reporting-in-net-using-razor-views
👉
2,050
C# Portal | Программирование
11 мая 2026 г., 07:29
📷 Photo
Совет по LINQ:
Вызывай ToList() после фильтрации, а не до.
Почему?
> В первом случае всё загружается в память до фильтрации
> Во втором — фильтрация происходит на источнике, что лучше для БД или больших коллекций
> Особенно важно при работе с EF Core или API, использующих IQueryable
🎉🎉
👉
1,810
21
C# Portal | Программирование
11 мая 2026 г., 07:29
📎 File
Хочешь уверенно работать с Azure как бэкенд-разработчик на . NET?
Кристи потратил 20+ часов, чтобы собрать «Алфавит Azure для тебя:
• Разобраться в 26 ключевых сервисах и концепциях Azure (без воды)
• Понимать, что делает каждый сервис, когда его использовать и зачем он нужен
• Стартовать путь разработки в Azure
Я его скачал и делюсь с вами! ❤️❤️
👉
1,990
6
C# Portal | Программирование
11 мая 2026 г., 07:29
📷 Photo
CQS и CQRS — это одно и то же?
Не совсем.
CQS (разделение команд и запросов) — это принцип:
команды изменяют состояние, ничего не возвращают
запросы возвращают данные, не изменяют состояние
он применяется на уровне методов и относится к намерению, а не к жёстким правилам.
CQRS строится на этой идее уже на архитектурном уровне. Он разделяет модели чтения и записи ради масштабируемости, ясности и гибкости.
Хочешь посмотреть, как реализовать CQRS на практике?
Вот как: https://milanjovanovic.tech/blog/cqrs-pattern-the-way-it-should-have-been-from-the-start
Большинство приложений уже делают это, даже без прямого упоминания CQRS.
👉
2,290
C# Portal | Программирование
11 мая 2026 г., 07:29
📎 File
𝟭𝟱𝟬 вопросов для подготовки к . NET-интервью
ASP . NET Core, EF Core, C# вопросы
👉
2,170
15
0
C# Portal | Программирование
11 мая 2026 г., 07:29
📷 Photo
Идемпотентность — одна из тех вещей, о которых не думаешь, пока один и тот же запрос не выполняется дважды.
Запрос может упасть, превысить таймаут или быть повторён клиентом. С точки зрения клиента это выглядит нормально. На стороне сервера в этот момент одно и то же действие может выполниться повторно. Если речь про создание заказа или проведение платежа, повторное выполнение приводит к неконсистентному состоянию.
Для этого используется идемпотентность.
Операция считается идемпотентной, если многократное выполнение даёт тот же результат, что и однократное. При одном или нескольких одинаковых запросах итоговое состояние системы не должно меняться.
Один из стандартных способов реализации — идемпотентный ключ. Клиент отправляет уникальный ключ вместе с запросом. Сервер сохраняет этот ключ и результат выполнения. При первом запросе он обрабатывает логику. При повторном запросе с тем же ключом обработка не запускается заново, возвращается сохранённый результат.
Это важно из-за повторов запросов, которые возникают регулярно. Сеть нестабильна, сервисы отвечают с задержками, клиенты автоматически делают ретраи.
Повторы останавливать не нужно. Нужно исключить повторное выполнение одной и той же операции.
👉
C# Portal | Программирование
11 мая 2026 г., 07:29
📷 Photo
Глоббинг в C#
Несколько дней назад я сделал резервную копию документов в OneDrive и не заметил, что после завершения все файлы фактически были перенесены туда.
Далее я откатил резервную копию (20 ГБ), и во многих случаях процесс создал дубликаты.
Знание глоббинга позволило написать код для удаления дубликатов (5000+ файлов) и обхода отдельных папок.
Рекомендую уделить время изучению глоббинга.
Код: https://github.com/karenpayneoregon/learning-topics/tree/master/GlobbingApp1
👉
1,980
6
C# Portal | Программирование
11 мая 2026 г., 07:29
📷 Photo
Node.js аддоны… на C#? Да.
Native AOT позволяет собирать нативные shared-библиотеки, которые подключаются напрямую через N-API — без node-gyp, без установки Python, без C++-обвязок.
Получается чистая межъязыковая связка через:
* UnmanagedCallersOnly
* LibraryImport
* Span
* zero-alloc UTF-8 маршалинг
Идея — минимальный оверхед между Node.js и нативным кодом при сохранении управляемого кода на C#.
Блог: https://ift.tt/2mz8B1E
👉
1,880
5
C# Portal | Программирование
24 апр. 2026 г., 11:20
📷 Photo
Наш слон: собрал полноценный движок инференса LLM на C#/. NET 10. С нуля. 🐘
Не обёртка — нативная загрузка GGUF, токенизатор BPE, механизм внимания, KV-кэш, SIMD-векторизованные CPU-ядра, CUDA-бэкенд для GPU, API, совместимый с OpenAI.
Один разработчик, ~2 месяца, с использованием ИИ (без вайбкодинга). Первый превью-релиз уже доступен.
Подробнее: https://kokosa.dev/blog/2026/dotllm/ и https://dotllm.dev/
👉
1,870
21
C# Portal | Программирование
24 апр. 2026 г., 11:20
📷 Photo
C#-приложения с файловой моделью и поддержкой нескольких файлов — кому-то нужно? Появится в . NET 10.0.300 и будущих превью . NET 11
https://t.me/dotnet
https://github.com/DamianEdwards/runfile/compare/main...include-directive
👉
1,760
3
C# Portal | Программирование
24 апр. 2026 г., 11:20
📷 Photo
Большинство . NET-разработчиков в 2026 всё ещё копируют строки подключения между файлами appsettings.json.
В прошлом месяце у меня было 4 сервиса в одном решении. У каждого — своя строка подключения к PostgreSQL. Логирование настроено по-разному. Проверки состояния были только в двух.
Потом строка подключения изменилась. Я обновил 3 проекта. Про четвёртый забыл. Потратил 45 минут на отладку, пытаясь понять, почему один сервис падает с ошибками подключения, а остальные работают нормально.
В этот момент я перенёс всё на . NET Aspire.
➡️Строки подключения? Определяются один раз в AppHost. Подставляются во все сервисы автоматически.
➡️Логирование? Настраивается один раз в ServiceDefaults. Применяется ко всем сервисам.
➡️Проверки состояния? Встроены. WaitFor() управляет порядком запуска.
➡️Наблюдаемость? Трейсы, метрики и структурированные логи через OpenTelemetry. Без дополнительной стоимости.
«Но Aspire только для Azure». Нет. Я деплою в AWS. Aspire управляет локальной разработкой. Облачная платформа отвечает за продакшн. Это разные зоны ответственности.
«Но это добавляет сложность». Сложнее, чем поддерживать 5 разных конфигураций логирования для 5 сервисов? Сложнее, чем ловить рассинхронизацию строк подключения ночью?
Настоящая сложность — это связующий код, который вы пишете сейчас. Aspire его убирает.
Моё правило: 2+ сервиса с общей инфраструктурой — использовать Aspire. Меньше — можно обойтись без него.
👉
C# Portal | Программирование
24 апр. 2026 г., 11:20
📷 Photo
Agent Framework 1.0 https://buff.ly/bnzDQc3 — стабильные интерфейсы, мультиагентные воркфлоу, MCP, хостинг через Foundry, декларативные агенты на YAML и графовый движок для полноценной оркестрации.
Если вы делаете агентов на . NET или Python, этот релиз стоит сохранить в закладки.
👉
2,100
4
C# Portal | Программирование
24 апр. 2026 г., 11:20
🎥 Video
Cleanpilot — современная альтернатива CCleaner, написанная на C# / WinUI 3, полностью работающая на основе winapp2.ini
Публичная превью-версия уже доступна : https://github.com/builtbybel/Cleanpilot/
👉
2,070
10
C# Portal | Программирование
24 апр. 2026 г., 11:20
📷 Photo
Забирай мой подход для упрощения управления потоками:
(начиная с . NET 9)
Вместо классического System. Threading. Monitor в . NET 9 появился новый тип — System. Threading. Lock.
Вместе с ним появился метод Lock. EnterScope(), который создаёт эксклюзивную область и автоматически освобождает блокировку после выхода из блока кода.
Этот тип даёт более удобную синхронизацию потоков через свой API.
Оператор lock в C# умеет распознавать, когда целью блокировки выступает объект Lock.
В таком случае он использует новый API, а не классический механизм.
Смотри код ниже.
Что думаешь про это нововведение?
👉
2,140
C# Portal | Программирование
24 апр. 2026 г., 11:20
📷 Photo
DataAnnotations против FluentValidation
1️⃣DataAnnotations тоже позволяют валидировать данные с проверкой в базе через кастомный атрибут + IUserRepository.
2️⃣Но когда правило разрастается, FluentValidation обычно оказывается чище, слабее связан с остальным кодом и проще покрывается тестами.
#dotnet #csharp
👉
2,100
7
C# Portal | Программирование
24 апр. 2026 г., 11:20
Хватит жонглировать разрозненными инструментами для JSON. 🧱
JSON-everything — это высокопроизводительный, соответствующий стандартам набор инструментов для Schema, Patch, Path и других задач — всё в рамках одной экосистемы . NET. Открытый исходный код, ориентирован на современные сценарии разработки.
https://hubs.li/Q04bsKZy0
👉
2,060
5
0
C# Portal | Программирование
24 апр. 2026 г., 11:20
Мы Создали Слой Кэша. PostgreSQL Показал, что Зря.
Пользователь открывает страницу свего тарифного плана, а видит старый. Он обновляет страницу, и всё исправляется. Наш показатель попадания в кэш 98%, а мы всё равно выглядели некомпетентными. В тот момент мы перестали рассматривать кэширование как функцию повышения производительности и стали рассматривать его как проблему истинности. Потому что система перестала быть медленной, зато она стала ненадёжной.
https://medium.com/@maahisoft20/we-built-a-cache-layer-postgresql-made-it-embarrassing-9762f055f21f 🤙
👉
2,260
9
0
C# Portal | Программирование
24 апр. 2026 г., 11:20
📷 Photo
Aspire 13.2 тихо завёз суперсилу: теперь твой терминал может читать документацию за тебя.
aspire docs list → всё
aspire docs search redis → результаты с ранжированием по релевантности
aspire docs get → полная страница, без браузера
https://buff.ly/RFUftBI
👉
2,190
6
C# Portal | Программирование
1 апр. 2026 г., 12:00
📷 Photo
Отличные ресурсы по системному дизайну
http://github.com/ashishps1/awesome-system-design-resources
Что внутри:
1. Базовые концепции — теорема CAP, консистентное хеширование, масштабируемость, доступность
2. Основы сетей — DNS, балансировка нагрузки, модель OSI, WebSockets
3. Глубокое погружение в базы данных — шардирование, репликация, SQL vs NoSQL
4. Разборы реальных систем — Twitter, Netflix, Uber, Google Drive
5. Включены диаграммы и примеры реализации кода
👉
1,970
4
C# Portal | Программирование
1 апр. 2026 г., 12:00
📷 Photo
Большинство . NET-разработчиков реализуют кэширование сложным способом.
Они пишут шаблонный (boilerplate) код в каждом методе сервиса — проверяют кэш, делают запрос к базе, сохраняют результат, обрабатывают время жизни.
Есть способ лучше, который почти не требует изменений в коде.
Он называется Output Cache middleware в http://ASP.NET/ Core.
И работает он совершенно иначе, чем IMemoryCache или IDistributedCache.
Ключевое отличие:
-IMemoryCache и IDistributedCache кэшируют объекты внутри кода приложения
- Output Cache перехватывает HTTP-ответ на уровне middleware, сохраняет его целиком и отдает повторно
При наличии кэша не вызываются ни обработчик endpoint’а, ни запрос к базе, ни бизнес-логика.
Что делает Output Cache мощным:
- Добавление кэширования одним атрибутом — без boilerplate-кода в сервисах
- Встроенный cache lock предотвращает проблему «thundering herd»
- Именованные политики задают поведение кэша централизованно
- Инвалидация по тегам позволяет сбрасывать группы связанных записей одним вызовом
- Опции VaryBy позволяют кэшировать отдельные ответы по заголовкам, query string, route-параметрам или кастомной логике
Но вот где большинство разработчиков ошибается:
Кэшируют ответы авторизованных API без разделения по пользователям
→ Данные пользователя A могут быть отданы пользователю B
→ Это реальная уязвимость безопасности
https://antondevtips.com/blog/aspnetcore-output-cache-how-to-speed-up-your-api-with-in-memory-cache-and-redis
👉
C# Portal | Программирование
1 апр. 2026 г., 12:00
📷 Photo
Ищешь альтернативу Postman?
Apidog — это all-in-one инструмент для работы с API.
✓ Проектируй и управляй спецификациями API
✓ Мокай и тестируй endpoints в одном месте
✓ Генерируй документацию автоматически
✓ Тестируй интеграции с ИИ, такие как ChatGPT
Доступен в веб-версии и приложении с бесплатным тарифом:
→ http://midu.link/apidog
👉
2,100
8
C# Portal | Программирование
1 апр. 2026 г., 12:00
📷 Photo
Что такое breaking change для API?
Вот несколько примеров:
- Удаление или переименование API или параметров API
- Изменение поведения существующих API
- Изменение кодов ошибок API
Breaking change означает, что вам нужно версионировать API — иначе вы рискуете сломать существующих клиентов.
👉
1,830
7
C# Portal | Программирование
1 апр. 2026 г., 12:00
📷 Photo
Инжект настроек в . NET
У тебя есть 3 основных интерфейса на выбор. Но если выбрать не тот — приложение может просто игнорировать изменения конфигурации.
Вот простое объяснение:
1️⃣ IOptions
• Считывается один раз при старте приложения
• Кэшируется на весь жизненный цикл
• Подходит для статичных настроек, которые не меняются
2️⃣ IOptionsSnapshot
• Пересчитывается на каждый запрос
• Подхватывает изменения в appsettings.json без перезапуска
• Идеален для web API (Scoped lifetime)
3️⃣ IOptionsMonitor
• Обновляется в реальном времени
• Триггерит событие при изменении настроек
• Подходит для фоновых сервисов (Singleton lifetime)
Правило большого пальца (Rule of Thumb):
Используй IOptions для статической конфигурации.
Переходи на IOptionsSnapshot в веб-приложениях.
Используй IOptionsMonitor, когда нужны уведомления об изменениях в background-задачах.
👉
2,180
C# Portal | Программирование
1 апр. 2026 г., 12:00
📷 Photo
Мой любимый способ конфигурировать Serilog — через настройки приложения.
Можно настраивать уровни логирования, внешние sinks, enrichers и многое другое.
Это также значит, что конфигурацию Serilog можно менять без изменений в коде.
👉
2,060
7
C# Portal | Программирование
1 апр. 2026 г., 12:00
📷 Photo
16 полезных сайтов, которые сделают тебя лучшим разработчиком:
1. http://roadmap.sh/ — дорожные карты для изучения dev-ролей
2. http://explainshell.com/ — объясняет каждый флаг в bash-командах
3. http://regex101.com/ — тестирование и отладка регулярных выражений с live-обратной связью
4. http://jsoncrack.com/ — превращает сырой JSON в визуальную диаграмму
5. http://bundlephobia.com/ — показывает размер npm-пакета до установки
6. http://transform.tools/ — мгновенно конвертирует между форматами для разработки
7. http://webhook.site/ — live URL для логирования webhook-запросов
8. http://devhints.io/ — шпаргалки по языкам и инструментам
9. http://httpie.io/app — браузерный HTTP-клиент для работы с API
10. http://caniuse.com/ — проверка поддержки CSS и JS в браузерах
11. http://squoosh.app/ — сжатие изображений прямо в браузере
12. http://carbon.now.sh/ — превращает код в аккуратные скриншоты
13. http://overapi.com/ — одностраничные шпаргалки по разным темам
14. http://shortcuts.design/ — горячие клавиши для популярных dev-инструментов
15. http://tinywow.com/ — бесплатный конвертер файлов
16. http://getfluently.app/ — прокачка разговорного английского с помощью AI
👉
C# Portal | Программирование
1 апр. 2026 г., 12:00
📷 Photo
CA1507: Используйте nameof вместо строкового литерала
У кого включено это правило анализа кода?
👉
2,110
18
C# Portal | Программирование
1 апр. 2026 г., 12:00
📷 Photo
Вот хороший пример использования перехватчиков (interceptors) в EF: отслеживание того, когда ваши сущности были созданы или изменены.
Вы можете использовать ChangeTracker, чтобы проверить состояние сущности и установить соответствующие поля.
Если вы всегда используете этот DbContext в рамках HTTP-запроса, вы даже можете передавать UserId.
2,230
6
C# Portal | Программирование
1 апр. 2026 г., 12:00
Обработка «сырого» исключения базы данных при нарушении уникального ограничения приводит к появлению некрасивого DbUpdateException с вложенным provider-specific исключением, которое приходится по-разному парсить для SQL Server, PostgreSQL и SQLite.
Библиотека EntityFramework. Exceptions решает эту проблему.
https://github.com/Giorgi/EntityFramework.Exceptions
👉