Обновить
103.88

.NET *

Хаб со знаниями про .NET

Сначала показывать
Порог рейтинга
Уровень сложности

Гибридное кэширование в ASP.NET Core

Уровень сложностиСредний
Время на прочтение7 мин
Количество просмотров6K

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

Хочу разобраться

Увеличение растровых изображений – какой максимальной схожести с оригиналом мы можем добиться и как? А можно побыстрее?

Уровень сложностиСредний
Время на прочтение25 мин
Количество просмотров4.5K

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

Апскейл на пределе: вперёд!

Многопользовательская архитектура в ASP.NET: Опыт разработки

Уровень сложностиСредний
Время на прочтение6 мин
Количество просмотров4.5K

Несколько месяцев назад я начал разрабатывать бэкэнд проекта на ASP.NET API. Проект представлял собой сервис для бронирования отелей (Airbnb послужил основным референсом). Опыта работы с ASP.NET у меня было немного: многому пришлось обучаться в процессе, а решение некоторых проблем занимало часы, а то и дни.

В этой статье я поделюсь полезными наработками и постараюсь ответить на вопросы, которые мне самому было сложно найти в Интернете

Читать далее

Типология Test Doubles

Уровень сложностиСредний
Время на прочтение10 мин
Количество просмотров2.7K

Тестовые дублёры (англ. Test Doubles) — это объекты или модули, используемые в автоматизированных тестах в качестве замены некоторых частей тестируемой системы (англ. SUT, System Under Test).

В этой статье мы обсудим пять типов тестовых дублёров: Dummy, Stub, Spy, Mock, Fake.

Читать далее

MassTransit и очередь в базе данных

Уровень сложностиСредний
Время на прочтение6 мин
Количество просмотров2.9K

MassTransit одна из самых популярных библиотек для построения асинхронного взаимодействия между сервисами в среде dotnet. Она активно развивается уже долгие годы, до сих пор остается под открытой лицензией и каждую версию добавляет новые фичи. Я построил уже не одно решение на ней и могу сказать, что по поддержке, качеству кодовой базы и “взрослости”, это один из лучших примеров в нашем dotnet сообществе.

Недавно в новой версии MassTransit вышла относительно свежая фича, SQL Transport, которая позволяет использовать базу данных вместо традиционных брокеров сообщений, при этом оставляя доступными тонну фичей работающих на традиционных брокерах. Ретраи, ределивери, роутинг, все продолжает работать. Такая обратная совместимость в теории позволяет легко заменять несложные конфигурации RabbitMQ на SQL Transport и обратно.

Я попробовал эту фичу, посмотрел на нее с разных сторон и сегодня хочу поделиться своими впечатлениями.

Читать далее

Деплоймент нескольких ASP.Net Core-приложений на VPS сервере и настройка доступа к ним по доменному имени 3-го уровня

Уровень сложностиПростой
Время на прочтение3 мин
Количество просмотров3.3K

Деплоймент нескольких ASP.Net Core-приложений на VPS сервере с Ubuntu и настройка доступа к ним по доменному имени 3-го уровня.

Читать далее

Рыбка-советник для chess.com и lichess.org

Уровень сложностиСредний
Время на прочтение6 мин
Количество просмотров6.9K

Очень люблю играть в шахматы. Давно играю десятиминутки на chess.com. Но мой предел — в районе рейтинга 1500. И все потому, что много «зеваю». Вот если ли бы рядом был советчик, уберегающий от глупых зевков... А что, если прикрутить шахматный движок, чтобы он подсказывал в трудной позиции? Это нечестная игра, но с ботами любого рейтинга в качестве обучения — не возбраняется. То есть нужно поставить движок, как-то прочитать шахматную позицию из браузера, передать ее движку, получить ответ за разумное время.

Давайте разбираться

Метод Contains коллекций в Entity Framework для SQL Server

Уровень сложностиСредний
Время на прочтение7 мин
Количество просмотров3.2K

Долгое время в метод Contains(), который используется в Entity Framework для фильтрации данных по списку значений, не вносили изменения. До выхода Entity Framework 8 коллекция с этим методом внутри оператора запросов where LINQ транслировалась в значения в виде констант внутри оператора IN для SQL. Если количество элементов равно одному, то преобразование происходило в выражение с оператором ‘=’ на стороне MS SQL Server. Аналогично транслируется и метод расширения Where() LINQ.

Использование в EF8 функции OPENJSON устраняет часть проблем с кэшем планов запросов для SQL Server, но не применимо к старым версиям (compatibility level) баз данных. Да и оптимальность генерируемого ею кода в некоторых случаях вызывает сомнения.

В недавно вышедшем Entity Framework 9 добавили больше настроек для возможности транслирования метода Contains() коллекций как с помощью OPENJSON, так и «по-старому» — в виде констант.

Читать далее

Новое в Pure.DI к концу 2024 года

Уровень сложностиСредний
Время на прочтение11 мин
Количество просмотров1.1K

Pure.DI — это не фреймворк или библиотека, а генератор исходного кода C# для создания композиций объектов в парадигме чистого DI. Последняя статья о Pure.DI выходила в апреле 2024 года. С тех пор прошло больше чем пол года, за это время основные усилия были сосредоточены на исправлении ошибок, увеличении производительности генерации кода и на удобстве использования. Давайте пройдемся по новым возможностям.

К новым возможностям

Как обновить библиотеку и утонуть в задаче. Обновление Roslyn и PVS-Studio 7.34

Время на прочтение7 мин
Количество просмотров1.2K

Ежегодно Microsoft выпускает новую версию .NET. Это большое событие, к которому мы выпускаем версию PVS-Studio с поддержкой нововведений. Сегодня речь пойдёт про боль PVS-Studio при обновлении Roslyn — неотъемлемой части .NET.

Читать далее

Топ-10 ошибок, найденных в C# проектах за 2024 год

Уровень сложностиСредний
Время на прочтение10 мин
Количество просмотров8.4K

В течение 2024 года команда PVS-Studio активно делилась статьями о проверке открытых C# проектов. Мы решили продолжить традицию и отобрали для вас 10 самых интересных ошибок, обнаруженных за этот период. Приятного чтения!

Читать далее

Новые диагностические правила в PVS-Studio 7.34

Уровень сложностиПростой
Время на прочтение10 мин
Количество просмотров1.3K

С релизом PVS-Studio 7.34 в анализаторе появились новые диагностические правила: taint для Java, множество Unity-диагностик для C#, углубление в OWASP и многое другое! Расскажем о них в этой статье.

Читать далее

Разработка специализированного графика для отображения ЭКГ с использованием Canvas на платформе .NET for Android

Уровень сложностиСредний
Время на прочтение9 мин
Количество просмотров1.4K

В современной медицине точное отображение электрокардиограммы (ЭКГ) играет ключевую роль в диагностике и мониторинге сердечно-сосудистых заболеваний. Разработка специализированного графика для визуализации ЭКГ в реальном времени на мобильных устройствах требует не только глубокого понимания медицинских стандартов, но и тщательного выбора технологий для реализации. В статье мы рассмотрим процесс создания такого графика с использованием технологии Canvas, обсудим возникшие проблемы и найденные решения.

Читать далее

Ближайшие события

Совместить DDD и MVVM: Разработка приложения-трекера расходов по правилу 50-30-20 на .NET MAUI

Уровень сложностиСредний
Время на прочтение16 мин
Количество просмотров3.4K

Всем привет! Сегодня я бы хотел рассказать вам про свое приложение Profitocracy, которое помогает мне следить за личными расходами, а также автоматически планировать бюджет на месяц.

Данный проект является open source, так что, если вам интересно сразу перейти к коду, то вы можете ознакомиться с его исходниками на GitHub.

Читать далее

Учить и учиться: мой путь от джуна до тимлида

Уровень сложностиПростой
Время на прочтение10 мин
Количество просмотров2K

Какие задачи решает лидер команды, какими навыками необходимо обладать и как развиваться в карьере? Если вы метите на позицию тимлида, но не знаете, как к ней подступиться, то эта статья — для вас.

Привет, Хабр! Меня зовут Радик Нургалиев, я руководитель команды .NET-разработчиков IBS. В этой статье расскажу про свой карьерный рост от начинающего программиста до руководителя в компаниях разного масштаба. Понятно, что у каждой ИТ-компании свои представления о прекрасном и свои схемы карьерных треков сотрудников, а значит, не может быть некой единой для всех разработчиков инструкции «Как стать тимлидом за Х лет». Я поделюсь личным опытом. Надеюсь, кому-нибудь он поможет повторить мою траекторию: начинающий программист → разработчик со стажем 1–3 года → опытный разработчик → куратор команды → тимлид.

Сразу оговорюсь, что я не использую условные понятия типа «Middle» или «Senior», потому что в каждой компании под ними понимают свой набор компетенций.

Читать далее

Путь кода VS путь языковых моделей

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров1.5K

Сейчас разработка многих компонентов в продукте может быть выполнена двумя путями: путем кода или же языковых моделей. Давайте сравним эти подходы на примере простой задачи — автоматизации проверки оформления задачи на канбан-доске. И посмотрим, где какие плюсы и минусы.

Читать далее

WebMarkupMin: Обновления в ASP.NET Core-расширениях, вызванные выходом .NET 9 и не только

Уровень сложностиСредний
Время на прочтение11 мин
Количество просмотров2.8K

Уже стало традицией, что выход очередной версии .NET становится поводом для выпуска новой версии WebMarkupMin. Обычно подобные выпуски WebMarkupMin сопровождаются обновлением расширений для ASP.NET Core и этот раз не стал исключением. Многие ожидали, что с появлением .NET 9 появится новый модуль WebMarkupMin.AspNetCore9, но этого не произошло. В этой статье я расскажу о причинах такого решения. Кроме того, в этот раз в ASP.NET Core-расширениях довольно много изменений, а поскольку для большинства разработчиков основным источником информации об этих расширениях является уже немного устаревшая статья Эндрю Лока «HTML minification using WebMarkupMin in ASP.NET Core», то я постараюсь разъяснить некоторые неочевидные моменты.

Читать далее

Как я СКАДу писал. Часть девятая

Уровень сложностиПростой
Время на прочтение9 мин
Количество просмотров6.2K

Доброго времени суток всем!

Вот и настал очередной этап рассказать о моем проекте и куда в итоге он меня привел. Предыдущие мио публикации по данной теме можно найти в моем профиле. С момента последней публикации прошло 7 лет, за это время произошло очень много всего, как вокруг моей разработки, так и того, чему она стала инициатором. После выпуска 2-й версии системы в 2017-м году, она достаточно успешно показала себя в нескольких крупных внедрениях. Объем поддержки и разработки системы ощутимо вырос и стал достаточно много требовать моего личного времени. Кроме того – меня пригласил один крупный холдинг создать им некую отраслевую скада—систему, поэтому времени на свое хобби, в рамках которого так и продолжал развиваться мой проект, стало не очень много. Поэтому в 2020-м году я объявил в кругах АСУТП, что буду не против дать проекту возможность встать на коммерческие рельсы. Неспешно пошли предложения, и также не спешно шел процесс их обсуждений и анализа продукта заинтересованными сторонами. В конечном итоге, на меня вышла группа ИТ-компаний, которые очень заинтересовались продуктом и возможностью диверсифицировать с его помощью бизнес еще и на рынок АСУТП. Так в июле 2022-го года родилась компания-вендор, в основу которой вошла интеллектуальная база проекта с исходным кодом 2-й версии моей разработки. Я вошел в состав ее учредителей и сейчас занимаю должность технического директора компании. За полтора года была сформирована отличная команда: разработчиков, инженеров и менеджеров. Первоочередной задачей, которая была поставлена перед нами – было создание новой версии скады, которая бы удовлетворяла текущим тенденциям и ситуациям, которые происходили в это самое время. А события, как вы понимаете, в этот период сыпались как из рога изобилия, и с каждым из них мы всей командой все больше понимали, что именно сейчас мы делаем то, что нужно нашему рынку автоматизации и это то, что нужно уже сейчас. Насколько у нас это получилось – теперь можно будет оценить, ведь буквально в начале февраля этого года мы выпустили официальный первый релиз нашего нового продукта: SCADA+ 3.0! И выпущен он уже компанией-вендором, которая теперь специализируется на его разработке, поддержке и сопровождении.

Читать далее

Как забрать фотки с флешки, если Android их не отдаёт

Уровень сложностиПростой
Время на прочтение12 мин
Количество просмотров4.6K

Как-то так получилось, что я никогда не воспринимал Android-телефон как объект, содержимым которого можно управлять из обычного .fsx. Все данные туда и обратно я таскал исключительно ручками при помощи USB и проводника. Дальше на стороне компа их мог раскидывать скрипт, но в зону телефона я не лез. Максимум, мог написать мобильное приложение для систематических операций с загрузкой на сервер и обратно. Однако недавно нужда заставила меня проникнуть из скрипта в обе области сразу, и это оказалось настолько проще, чем я предполагал, что теперь я испытываю злость и сожаление (как будто проморгал выигрышную комбинацию и додавливал противника лишние 4 хода).

Дисклеймер: До этого всё, что я публиковал на Хабре, касалось тем, которые мне известны очень хорошо. Ну или как минимум, затрагиваемое пространство всегда было заметно меньше известного. В этот раз ситуация обратная. Я случайно набрёл на интересную нишу и поверхностно изучил её. Так как я благополучно решил все свои задачи, то вряд ли буду раскапывать тему дальше. Но раз уж мне удалось неявно закрыть несколько запылившихся ишуев на Гитхабе, то мне показалось полезным просуммировать в тексте собранные знания, а также некоторые исторические наработки. Считайте, что я на секунду появился в дверях вашей комнаты, сказал нечто вроде «Посоны, там-то и там-то есть что-то интересное» и свалил.

Читать далее

Пулы объектов в C#: примеры, устройство и производительность

Уровень сложностиСредний
Время на прочтение6 мин
Количество просмотров11K

Пул объектов (Object Pool) — это паттерн, который позволяет повторно использовать объекты вместо создания новых. Это может быть полезно в ситуациях, когда инициализация объектов затратна. Паттерн широко применяется в разработке игр и приложениях, где важно минимизировать использование памяти. В этой статье мы рассмотрим, как этот шаблон реализован в C#, и как он может улучшить производительность.

Читать далее

Вклад авторов