Как стать автором
Обновить
93.69
Рейтинг

C# *

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

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

Насколько хорошо защищены ваши пароли? Проверка проекта Bitwarden

Блог компании PVS-Studio .NET *C# *

Bitwarden – менеджер паролей с открытым исходным кодом. Это программное обеспечение помогает генерировать уникальные пароли и управлять ими. Получится ли у анализатора PVS-Studio отыскать ошибки в таком проекте?

Читать далее
Всего голосов 22: ↑21 и ↓1 +20
Просмотры 4.9K
Комментарии 12

Новости

Давай дружить. OpenId Connect и Yarp

Разработка веб-сайтов *.NET *ASP *C# *
Из песочницы

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

Читать далее
Всего голосов 1: ↑1 и ↓0 +1
Просмотры 960
Комментарии 1
Представьте, что вы оказались в шахте: перед вами каменный монолит, в котором что-то поблёскивает — куски золота, не иначе. Блеск заманчивый, но вокруг грубый камень. В разработке часто возникает похожая ситуация: полезный юзерам код со всех сторон окружён камнем в виде инфраструктуры, конвертеров данных и легаси. На помощь приходит микросервисная архитектура: огромную глыбу можно раздробить на кусочки, в каждом из которых камня поменьше, а полезного кода — побольше. ПСБ предлагает разработчикам .NET и Java поддаться золотой лихорадке: посмотрим, кто лучше добывает полезный код из монолита. Присоединяйтесь к своей команде и работайте на общую победу: в зачёт идёт каждый правильный ответ.
Нужно больше золота
Всего голосов 25: ↑20 и ↓5 +15
Просмотры 6.7K
Комментарии 9

Всё что нужно знать про ECS

Проектирование и рефакторинг *Разработка игр *C# *Unity *
Из песочницы

Привет, Хабр! В этой статье я расскажу всё, что знаю про Entity-Component-System и попытаюсь развеять различные предубеждения об этом подходе. Здесь вы найдете много слов о преимуществах и недостатках ECS, об особенностях этого подхода, о том как с ним подружиться, о потенциальных граблях, о полезных практиках, а также в отдельном разделе коротко посмотрим на ECS фреймворки для Unity/C#.

Окунуться в мир ECS
Всего голосов 30: ↑29 и ↓1 +28
Просмотры 5.4K
Комментарии 10

Unity. Ленивый ECS

Разработка игр *C# *Unity *
Из песочницы

Привет, Хабр! Это статья о том как наша небольшая команда реализовывала свой ECS в рамках Unity проекта. Если вас заинтересовало как строилась архитектура, откуда брались те или иные решения, и какой она у нас получилась, или если вам просто интересно, как оно всё выглядит там, под капотом, вы можете посмотреть всё нажав на кнопку "Читать далее".

Читать далее
Всего голосов 8: ↑6 и ↓2 +4
Просмотры 2.5K
Комментарии 6

Зачем разработчикам игр на Unity использовать статический анализ?

Блог компании PVS-Studio .NET *Разработка игр *C# *Unity *

С годами стоимость создания игр стала больше, вырос их масштаб, а следовательно, и их кодовая база. Разработчикам становится всё сложнее уследить за ошибками. А забагованная игра влечёт финансовые и репутационные убытки. Как же с этим может помочь статический анализ?

Читать далее
Всего голосов 6: ↑6 и ↓0 +6
Просмотры 1.2K
Комментарии 3

Эффективная генерация сортируемых GUID для первичных ключей БД на клиенте

Программирование *.NET *Microsoft SQL Server *C# *Хранилища данных *

Использовать Guid.NewGuid() в качестве первичного ключа в базе данных — плохая с точки зрения производительности идея. Это связано с тем, что в SQL Server, MySQL и некоторых других БД для первичных ключей создаются кластерные индексы, которые определяют, как строки будут храниться на диске. GUID — это по сути случайное значение, поэтому новая строка может попасть в начало, середину или конец таблицы. Серверу БД в этом случае придётся перемещать другие строки, что приведёт к фрагментации данных, а их извлечение может занять больше времени, если вам нужно извлечь несколько добавленных последовательно записей (например, когда вы добавляете набор связанных сущностей, которые потом будут извлекаться вместе — БД понадобится прочитать данные из разрозненных страниц вместо последовательного чтения набора данных).

Поэтому, чаще всего, лучше пользоваться сгенерированными БД первичными ключами. В SQL Server, например, есть функция NEWSEQUENTIALID(), которая генерирует последовательные GUIDы. Зачем может понадобиться генерировать ключи именно на клиенте и как это правильно сделать?

Читать далее
Всего голосов 20: ↑20 и ↓0 +20
Просмотры 5.3K
Комментарии 34

Пример микросервисной архитектуры с Saga на MassTransit

Анализ и проектирование систем *.NET *C# *Распределённые системы *Микросервисы *

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

Читать далее
Всего голосов 14: ↑8 и ↓6 +2
Просмотры 3.4K
Комментарии 8

NBomber как альтернатива JMeter для .NET разработчика

Высокая производительность *.NET *C# *Тестирование веб-сервисов *

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

В этой статье мы рассмотрим NBomber как легкую для освоения альтернативу JMeter, а также постараемся ответить на вопрос "Почему я должен проводить нагрузочное тестирование именно с NBomber ?".

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

Читать далее
Всего голосов 10: ↑10 и ↓0 +10
Просмотры 2.8K
Комментарии 10

О применении RazorPages в консольных и десктопных приложениях

.NET *ASP *C# *

Иногда хочется автоматически создавать текстовые файлы, подставляя в шаблоны значения каких-то полей. Например, это могут быть исходники классов-хелперов на основе какого-то интерфейса, какие-то отчеты в XML, которые хотя и можно сгенерировать полностью программно, но на практике это может быть достаточно трудный для сопровождения код. Наверное, те, кто сталкивался с такой потребностью, смогут дополнить этот список. Приведу для примера задачу с хелперами.

Читать далее
Всего голосов 2: ↑2 и ↓0 +2
Просмотры 2.2K
Комментарии 12

Unity3d: вызов метода без словаря

Разработка игр *C# *Unity *Тестирование игр *Демосцена
Из песочницы

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

Читать далее
Всего голосов 11: ↑1 и ↓10 -9
Просмотры 1.7K
Комментарии 10

Как мы теряли игроков из-за того, что они платили за игру

Разработка игр *Отладка *C# *Unity *
Перевод
image

Представьте, каково это — найти серьёзный баг в продакшене сразу после выпуска игры. Представьте, что этот баг вредит только платным пользователям. Представьте, что игра зависает сразу после того, как игроки завершают внутриигровую покупку. Представьте, что когда игрок перезапускает игру, она зависает при запуске. Представьте, что игроку так и не удаётся запустить игру и приходится её удалять. Представьте, что ваше приложение в этот момент находится в рекомендованных Apple Store. Эта статья — рассказ о таком баге, худшем из всех, что я видел за тридцать лет программирования. Это история о том, как мы его выявили и совместно с разработчиками Unity работали над его устранением.
Читать дальше →
Всего голосов 65: ↑61 и ↓4 +57
Просмотры 36K
Комментарии 11

Удаленное управление БЗК камерой Z6 посредством SDK

Анализ и проектирование систем *Creative Commons *C# *Фототехника DIY или Сделай сам
Из песочницы

Добрый день Хабрчане!

В этом посте я хочу поделиться с вами своим скромным опытом в написании софта для удаленного управления БЗК Никон Z6. Точнее правильнее будет сказать не «написании», а скорее «допиливании», однако более подробно об этом я напишу ниже. Ну а сначала я расскажу немного о себе и о том, что именно - натолкнуло меня на такую, на первый взгляд, бредовую идею.

Итак, меня зовут Вадим, мне сорок с хвостиком, и я то, что называется Jack of all trades. Однако в первую очередь – я коммерческий фотограф, специализирующийся на технической, индустриальной и предметной фотографии. Чуть больше двадцати лет назад, когда вопрос определения специальности и выбора соответствующего ВУЗа, встал, так  сказать, ребром – я понял что сфера IT и написание кода руками – явно не удовлетворяют мои творческие амбиции. Поэтому я решил остановить свой выбор на творческой профессии, и, несмотря на протесты родителей, поступил в академию искусств на факультет фотографии. В ретроспективе я не берусь утверждать, что мой выбор профессии – был наиболее удачным с финансовой точки зрения. Однако - я изо дня в день занимаюсь тем, что приносит мне огромное удовольствие и чувство глубокого морального удовлетворения. На сегодняшний день я признанный и востребованный специалист в вопросах сложных технических съемок и интеграции различного рода фотооборудования в различных отраслях. Ах да, вдобавок к этому - я жуткий зануда, и технократ. Наверное, именно эти черты моего характера, и привели меня к мысли о написании своей софтинки…

Читать далее
Всего голосов 19: ↑18 и ↓1 +17
Просмотры 2.6K
Комментарии 6

Есть ли жизнь без тестов?

Разработка веб-сайтов *Программирование *Совершенный код *.NET *C# *
Это история про то, как нам удалось написать довольно сложную business-critical систему, и добиться, чтобы она была стабильной даже без юнит-тестов (WAT?!).
Читать дальше →
Всего голосов 37: ↑33 и ↓4 +29
Просмотры 9.7K
Комментарии 58

Упрощение сложной фильтрации в LINQ с помощью шаблона «Спецификация» и библиотеки XSpecification

Программирование *.NET *Проектирование и рефакторинг *C# *
Из песочницы

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

Исходники традиционно на https://github.com/xumix/XSpecification, пакеты на Nuget.

Теперь к деталям: данная либа будет полезна, в первую очередь, для тех, кого есть большое количество бизнес-логики при фильтрации или множество параметров фильтрации. Как пример бэкенд для грида типа такого https://reactdatagrid.io/demo или фильтра типа такого https://i.imgur.com/Jw5UAFz.png.

Читать далее
Всего голосов 7: ↑6 и ↓1 +5
Просмотры 3.7K
Комментарии 8

Эволюция PVS-Studio: анализ потока данных для связанных переменных

Блог компании PVS-Studio Программирование *C# *

Связанные переменные – одна из главных проблем статического анализа. Данная статья посвящена разбору этой темы и рассказу о том, как разработчики PVS-Studio сражаются с ложными срабатываниями, появившимися из-за различных связей.

Читать далее
Всего голосов 14: ↑14 и ↓0 +14
Просмотры 1.1K
Комментарии 0

22 новых фичи C# — каким будет C# 11+

Программирование *.NET *C# *

1. Полуавтоматические свойства и ключевое словоfield.
2. Модификатор уровня доступа file.
3. Первичные конструкторы для классов и структур.
4. Паттерн-матчинг для списков.
5. Атрибуты для Main в программах с top level statement.
6. Сырые строки без экранирования внутри строки для удобства работы с json, xml, html и регулярными выражениями.
7. Строковые литералы для UTF-8.
8. Паттерн-матчинг для Span<char>.
9. Перенос строк в выражениях интерполяции.
10. Возможность перегрузки операторов с проверкой на переполнение
11. Оператор побитового сдвига вправо без знака >>>.
12. Доступ к параметрам методов nameof.
13.nameof для членов экземпляров.
14. Ключевое слово required для обязательно инициализируемых свойств и полей.
15. Автоматическая инициализация свойств структур значением по-умолчанию.
16. generic-атрибуты.
17. локальные переменные и параметры только для чтения.
18. Кэширование делегатов при использовании method group для статических методов.
19. Поля с значением хранящимся по ссылке.
20.params Span<T>/params ReadOnlySpan<T>/params IEnumerable<T> в объявлении методов чтобы избежать лишних неявных созданий массива в куче и копирований коллекций.
21. Удаление оператора проверки параметров на null !!.
22. Предупреждения для имен типов полностью в нижнем регистре.

Внутри — разбор каждой фичи и сценарии применения.

Читать далее
Всего голосов 41: ↑41 и ↓0 +41
Просмотры 13K
Комментарии 22

Инверсия зависимости и System.Data.Common.DbDataReader

.NET *ASP *C# *

Если мы не используем EF (такое случается), то нам нужно как-то устроить загрузку объектов из базы данных. Вариант: берём DataSet, делаем ему SomeDataAdapter.fill(...), а из него берём данные для строительства нужных объектов. При этом класс, который умеет заполнять DataSet, не знает, для объектов какого класса он это делает. Абстракция, низкая связанность, всё хорошо.

Однако, мы ждём, пока заполнится DataSet, только после этого можем начать

Читать далее
Всего голосов 1: ↑0 и ↓1 -1
Просмотры 1.1K
Комментарии 6

GraphQL и почти все-все-все. Часть 1:)

Блог компании Auriga Разработка веб-сайтов *Программирование *.NET *C# *


Введение:


Все чаще слышу об использовании GraphQL, но так как последнее время все рабочее время уходило на Xamarin + GRPC + ASP.NET Core, технология казалась для меня загадочно манящей и очень не известной, потому решил опробовать ее на нескольких языках, чтобы увидеть какие плюсы и минусы в разных подходах. Начать решил с родного и любимого C# + Hot Chocolate, но планирую так же попробовать Typescript + Prisma, Kotlin + graphql-kotlin, и возможно что-то другое.
Поехали
Всего голосов 5: ↑5 и ↓0 +5
Просмотры 3.8K
Комментарии 1

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

Работа