Обновить
103.8

C# *

Объектно-ориентированный язык программирования

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

Обзор библиотеки FluentValidation. Часть 7.2. Встроенные валидаторы

Уровень сложностиПростой
Время на прочтение22 мин
Охват и читатели1.8K

В этой части рассмотрим следующие валидаторы:

Length — длина строки в указанном диапазоне либо точная.

MaximumLength — максимальная длина строки.

MinimumLength — минимальная длина строки.

LessThan — меньше чем значение, тип которого реализует интерфейс IComparable.

LessThanOrEqualTo — меньше или равно чем значение, тип которого реализует интерфейс IComparable.

Пройти валидацию

«Быстрое свидание» с LINQ

Уровень сложностиПростой
Время на прочтение19 мин
Охват и читатели9.7K

Краткое описание методов LINQ простым языком, без терминов "проекция", "предикат", "делегат" и проч.

Читать далее

Сравнение технологий для написания оконных приложений

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

Как-то раз в одном чате прозвучала идея сравнить разные технологии для написания оконных приложений. В частности, под Windows. Используя средства языка C#. То есть, конечно, можно это сделать и с помощью C++, Python, Rust, JS и других языков, но мы же шарписты, нам интереснее именно то, что мы можем сами использовать, не меняя язык программирования.

Итак, оконные приложения на C#.

Читать далее

Как я оптимизировал свою первую игру на Unity, и написал ее заново

Время на прочтение4 мин
Охват и читатели2.8K

Доброго времени суток, дорогие читатели, большое спасибо за слова поддержки и полезные советы, который вы оставили в первой части Истории создания моей первой игры.

Читать далее

Asp.Net приложение и многое другое вместе с ним (1 часть)

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

Asp.Net + nginx + kafka + docker + docker-compose + postgersql. Или как из обычного шаблона прийти к такому гибриду.

Читать далее

Flax Engine. Знакомство с игровым движком и анализ его исходного кода

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

"Как будто у Unreal и Unity родился ребёнок" — такое трогательное описание дали этому движку в GameDev-сообществе. Эта фраза не только мило звучит, но и точно передаёт его суть, ведь движок действительно задумывался как нечто среднее между Unity Engine и Unreal Engine.

Читать далее

Нам надоела нестабильность Microsoft Exchange, и мы перевели компанию на новый бэк календарей

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

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

Читать далее

Я на дереве сижу, препроцессинг провожу

Уровень сложностиСредний
Время на прочтение5 мин
Охват и читатели1.5K

Согласно описанию,


Tree-sitter — это инструмент для генерации синтаксических анализаторов и библиотека инкрементного синтаксического анализа. Он может создавать конкретное синтаксическое дерево для исходного файла и эффективно обновлять синтаксическое дерево по мере редактирования исходного файла.

Но как Tree-sitter справляется с языками, в которых необходима стадия препроцессинга?

Читать дальше →

Как мы перешли на конфигурацию Microsoft.Extensions.Configuration (IOptions) и стало хорошо

Уровень сложностиПростой
Время на прочтение18 мин
Охват и читатели5.1K

Привет, меня зовут Андрей Рягузов, в 2ГИС я разрабатываю внутренние продукты для актуализации справочных данных на .NET.

Несколько лет назад для работы с настройками мы в команде пользовались самописным методом. Пока приложения были простыми, нас всё устраивало, однако при масштабировании начали вылезать неприятности. Так мы начали искать альтернативу.

Расскажу, почему изначально решились на нестандартный метод, с какими трудностями столкнулись и что решили улучшить, какие варианты рассматривали и какие преимущества получили от «коробочных» инструментов.

Читать далее

Основы обработки асинхронных событий с помощью Rx в C#

Уровень сложностиПростой
Время на прочтение4 мин
Охват и читатели1.9K

Привет, Хабр!

Reactive Extensions, известные также как Rx.NET, представляют собой библиотеку для .NET, предназначенную для композиции асинхронных и событийно-ориентированных программ с помощью наблюдаемых последовательностей и операторов запросов в стиле LINQ.

Основная фича Rx заключается в управлении асинхронными данными так, как если бы они были синхронными коллекциями.

В этой статье мы рассмотрми, как работать с Rx в C#.

Читать далее

.NET Digest #2

Время на прочтение4 мин
Охват и читатели3.8K

Добро пожаловать на второй выпуск нашего дайджеста, посвящённого новостям и событиям в мире .NET! Первый выпуск вам понравился, так что C# команда PVS-Studio снова собрала для вас самые интересные и полезные материалы. Поехали!

Читать далее

Оптимизация производительности в Unity: советы и лучшие практики

Уровень сложностиСредний
Время на прочтение12 мин
Охват и читатели4.4K

В данной статье мы рассмотрим ключевые методы оптимизации производительности в Unity. Вы узнаете, как повысить FPS вашей игры, улучшить управление памятью и сократить время загрузки. Мы также обсудим, как эффективно использовать профайлер Unity для анализа производительности. Статья предназначена для начинающих разработчиков, и каждый метод будет иллюстрирован примерами кода. После прочтения этой статьи вы сможете существенно улучшить производительность своего игрового проекта.

Читать далее

Между строк: Анимации в UI Toolkit

Уровень сложностиСредний
Время на прочтение5 мин
Охват и читатели966

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

В этой статье мы исследуем тайны создания анимации вершин в UI Toolkit и узнаем, как придать вашим интерфейсам новую жизнь.

Перейти к делу

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

Сглаживание битовых изображений

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

Эта статья является логическим продолжением предыдущей статьи, описывающей метод кодирования пиктограмм для кнопок и панелей инструментов в виде строк, а также их декодирования обратно в изображения.

Битовые картинки имеют только два цвета - цвет фона, обычно, прозрачный, он задаётся в алгоритме декодера, и основной видимый цвет, который, как правило, передаётся в функцию декодера. Битовые изображения легко рисовать в редакторе, но главный недостаток - отсутствие плавности и смягчающих градиентов на изгибах линий, дуг, окружностей, из-за чего изображения могут смотреться немного грубо и угловато, становится видна их пиксельная структура.

Один метод - избегать изогнутых линий и контуров в пиктограммах при их создании в редакторе. Другой, более интересный вариант - применить процедурное сглаживание изображений, также известное как antialiasing. Далее в качестве примера приводится один из простых вариантов сглаживания, применяемый мной в разных проектах.

Читать далее

ThreadPool – инъекция потоков

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

В этой статье мы начнем с небольшого погружения в код ThreadPool’a, а закончим интересным кейсом применения матанализа в одной из самых важных частей многопоточности в дотнете.

С большой силой ThreadPool'а приходит большая ответственность! И поэтому наша ответственность – понимать устройство этого мощного инcтрумента, чтобы понимать его ограничения. А два главных способа понять: чтение кода и, конечно, эксперименты с многопоточностью...

Читать далее

BitImageTool — пиктограммы для кнопок и панелек приложений, закодированные в ASCII

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

Статья о том, как легко делать графические кнопки для панелей инструментов, не таская за приложением гору бинарных ресурсов с картинками. Этот метод платформонезависимый и может быть использован в различных языках и средах, позволяющих работать с графикой и растровыми изображениями. Ниже приводятся примеры для C# (WinForms / WPF), JavaScript, Python.

При разработке приложений и утилит мне неоднократно приходилось сталкиваться с проблемой создания множества пиктограмм для панелей инструментов и кнопок. Маленькое графическое изображение гораздо удобнее, чем громоздкий текст на кнопке, который лишь неоправданно раздувает её размер. Проблема в том, что разрабатывая небольшую утилиту, часто нет желания возиться с рисованием полноцветных изображений, а потом таскать их по папкам проекта, добавлять в ресурсы, искать их в ресурсах, чтобы обновить или заменить.

Тогда возникла идея - рисовать одноцветные изображения, кодировать их в строку и хранить прямо в свойствах объекта (например - кнопки). Самый простой вид кодировки - когда шесть точек изображения превращаются в шестибитный код, соответствующий некоторому символу из ASCII таблицы с заданным базовым смещением...

Читать далее

Пожалуй, самый простой способ спасти ваше .NET-приложение, или Prometheus (и не только) спешит на помощь

Уровень сложностиСредний
Время на прочтение32 мин
Охват и читатели12K
Существует множество возможных проблем приложений, которые удается заметить лишь с опозданием. Особенно когда релиз уже состоялся… К счастью, существует пара ключевых инструментов, которые выручают почти в любой ситуации, — и вряд ли найдется что-то проще.



Меня зовут Александр Пугач, я — Senior .NET Developer в проекте Data Warehouse «Лаборатории Касперского» (да-да, вы могли не знать, но у нас в компании широко используются .NET и «шарпы»).

В этой статье я расскажу, как работать с метриками в .NET на примере OpenTelemetry и Prometheus — систем, которые помогают отслеживать проблемы в работе приложений и быстро на них реагировать, обеспечивая стабильную и отказоустойчивую работу сервисов.

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

Читать дальше →

Создание игр на Unity: с чего начать?

Уровень сложностиПростой
Время на прочтение14 мин
Охват и читатели33K

Создание игр на Unity: с чего начать?

Эта статья познакомит вас с основами разработки игр на Unity. Вы узнаете, как установить и настроить Unity, создать свой первый проект и реализовать простую игру. Мы рассмотрим основы работы с объектами, скриптами и физикой. В статье будет много наглядных примеров кода и пошаговых инструкций, что сделает процесс обучения простым и увлекательным. Эта статья идеально подходит для начинающих разработчиков, которые только начинают свой путь в мире Unity.

Читать подробнее

Повышенная точность установки указателя мыши в играх

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

Статья про настройку «Повышенная точность установки указателя» в панели управления Windows, почему она мешает в играх, но может быть удобной для работы с окнами и приложениями, и как программно автоматизировать её переключение с помощью короткого кода на C#.

Для динамичных игр особенно важна точность управления мышью, вернее равномерность и предсказуемость передвижения прицела, чтобы наведение на цель могло быть отработано рефлекторно. Для этого некоторые пользователи отключают настройку «Повышенная точность установки указателя» (Enhance Pointer Precision в англоязычной версии системы), доступную в панели управления Windows...

Читать далее

Слабоумие и отвага: Разработка игры Disciples 2 на Avalonia и WPF

Уровень сложностиСредний
Время на прочтение13 мин
Охват и читатели8.6K

Здравствуй, Хабр!

Поступая в университет на программиста, я мечтал стать разработчиком игр. Но жизненный путь привёл меня в десктоп на WPF (о чём я, на самом деле, не жалею). А в пет-проекте объединились опыт десктоп-разработчика и стремление писать игры. Так родился пингвинослон Disciples II на Avalonia и WPF.

В статьей пойдёт речь о получившемся "движке", об оригинальных ресурсах игры и том, как я их адаптировал под проект.

Итак, Бетрезен умирает.

Читать далее

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