Bitwarden – менеджер паролей с открытым исходным кодом. Это программное обеспечение помогает генерировать уникальные пароли и управлять ими. Получится ли у анализатора PVS-Studio отыскать ошибки в таком проекте?
C# *
Объектно-ориентированный язык программирования
Новости
Давай дружить. OpenId Connect и Yarp
Сегодня в этой статье я хочу поделиться личным опытом работы и решением конкретного кейса. Как подружить сервер авторизации на протоколе OpenId Connect и веб-приложения, накрытых обратным прокси-сервером YARP.
Всё что нужно знать про ECS
Привет, Хабр! В этой статье я расскажу всё, что знаю про Entity-Component-System и попытаюсь развеять различные предубеждения об этом подходе. Здесь вы найдете много слов о преимуществах и недостатках ECS, об особенностях этого подхода, о том как с ним подружиться, о потенциальных граблях, о полезных практиках, а также в отдельном разделе коротко посмотрим на ECS фреймворки для Unity/C#.
Unity. Ленивый ECS
Привет, Хабр! Это статья о том как наша небольшая команда реализовывала свой ECS в рамках Unity проекта. Если вас заинтересовало как строилась архитектура, откуда брались те или иные решения, и какой она у нас получилась, или если вам просто интересно, как оно всё выглядит там, под капотом, вы можете посмотреть всё нажав на кнопку "Читать далее".
Зачем разработчикам игр на Unity использовать статический анализ?
С годами стоимость создания игр стала больше, вырос их масштаб, а следовательно, и их кодовая база. Разработчикам становится всё сложнее уследить за ошибками. А забагованная игра влечёт финансовые и репутационные убытки. Как же с этим может помочь статический анализ?
Эффективная генерация сортируемых GUID для первичных ключей БД на клиенте
Использовать Guid.NewGuid()
в качестве первичного ключа в базе данных — плохая с точки зрения производительности идея. Это связано с тем, что в SQL Server, MySQL и некоторых других БД для первичных ключей создаются кластерные индексы, которые определяют, как строки будут храниться на диске. GUID — это по сути случайное значение, поэтому новая строка может попасть в начало, середину или конец таблицы. Серверу БД в этом случае придётся перемещать другие строки, что приведёт к фрагментации данных, а их извлечение может занять больше времени, если вам нужно извлечь несколько добавленных последовательно записей (например, когда вы добавляете набор связанных сущностей, которые потом будут извлекаться вместе — БД понадобится прочитать данные из разрозненных страниц вместо последовательного чтения набора данных).
Поэтому, чаще всего, лучше пользоваться сгенерированными БД первичными ключами. В SQL Server, например, есть функция NEWSEQUENTIALID()
, которая генерирует последовательные GUIDы. Зачем может понадобиться генерировать ключи именно на клиенте и как это правильно сделать?
Пример микросервисной архитектуры с Saga на MassTransit
Привет, Хабр! В общем работаю я значит Архитектором Программных Решений. Мы тут монолиты на микросервисы переводим поэтому я решил для наших разработчиков написать пример проекта с сагой и за одно может оно и вам понадобиться поэтому выложил сюда. Статья будет дополняться по мере поступления вопросов от вас и от наших разработчиков
NBomber как альтернатива JMeter для .NET разработчика
Как и многие разработчики, впервые столкнувшиеся с нагрузочным тестированием, я начал с JMeter. Для ознакомления и простых сценариев JMeter полностью меня устраивал, но с усложнением задач и потребностью в большем контроле я начал задумываться о поиске более удобной альтернативы. Особенно хотелось чтобы инструмент легко адаптировался или уже был адаптирован под экосистему .NET.
В этой статье мы рассмотрим NBomber как легкую для освоения альтернативу JMeter, а также постараемся ответить на вопрос "Почему я должен проводить нагрузочное тестирование именно с NBomber ?".
Эта статья предназначена для .NET разработчиков, которые хотят пополнить свой инструментарий удобным инструментом для нагрузочного тестирования, а также тем кто рассматривает альтернативы JMeter для экосистемы .NET.
О применении RazorPages в консольных и десктопных приложениях
Иногда хочется автоматически создавать текстовые файлы, подставляя в шаблоны значения каких-то полей. Например, это могут быть исходники классов-хелперов на основе какого-то интерфейса, какие-то отчеты в XML, которые хотя и можно сгенерировать полностью программно, но на практике это может быть достаточно трудный для сопровождения код. Наверное, те, кто сталкивался с такой потребностью, смогут дополнить этот список. Приведу для примера задачу с хелперами.
Unity3d: вызов метода без словаря
Создание консоли в Unity, которой не нужен словарь методов для их вызова и которая поможет вам отлавливать ошибки в вашем приложении или игре, а также воспроизводить их. Консоль способна вызвать как методы с обычными типами данных в параметрах, так и их List-ы и массивы. Исходник проекта прилагается.
По существу о C# 10.0: как нам упростили жизнь — Часть 2
Первую часть статьи читайте здесь.
Как мы теряли игроков из-за того, что они платили за игру
Представьте, каково это — найти серьёзный баг в продакшене сразу после выпуска игры. Представьте, что этот баг вредит только платным пользователям. Представьте, что игра зависает сразу после того, как игроки завершают внутриигровую покупку. Представьте, что когда игрок перезапускает игру, она зависает при запуске. Представьте, что игроку так и не удаётся запустить игру и приходится её удалять. Представьте, что ваше приложение в этот момент находится в рекомендованных Apple Store. Эта статья — рассказ о таком баге, худшем из всех, что я видел за тридцать лет программирования. Это история о том, как мы его выявили и совместно с разработчиками Unity работали над его устранением.
Удаленное управление БЗК камерой Z6 посредством SDK
Добрый день Хабрчане!
В этом посте я хочу поделиться с вами своим скромным опытом в написании софта для удаленного управления БЗК Никон Z6. Точнее правильнее будет сказать не «написании», а скорее «допиливании», однако более подробно об этом я напишу ниже. Ну а сначала я расскажу немного о себе и о том, что именно - натолкнуло меня на такую, на первый взгляд, бредовую идею.
Итак, меня зовут Вадим, мне сорок с хвостиком, и я то, что называется Jack of all trades. Однако в первую очередь – я коммерческий фотограф, специализирующийся на технической, индустриальной и предметной фотографии. Чуть больше двадцати лет назад, когда вопрос определения специальности и выбора соответствующего ВУЗа, встал, так сказать, ребром – я понял что сфера IT и написание кода руками – явно не удовлетворяют мои творческие амбиции. Поэтому я решил остановить свой выбор на творческой профессии, и, несмотря на протесты родителей, поступил в академию искусств на факультет фотографии. В ретроспективе я не берусь утверждать, что мой выбор профессии – был наиболее удачным с финансовой точки зрения. Однако - я изо дня в день занимаюсь тем, что приносит мне огромное удовольствие и чувство глубокого морального удовлетворения. На сегодняшний день я признанный и востребованный специалист в вопросах сложных технических съемок и интеграции различного рода фотооборудования в различных отраслях. Ах да, вдобавок к этому - я жуткий зануда, и технократ. Наверное, именно эти черты моего характера, и привели меня к мысли о написании своей софтинки…
Есть ли жизнь без тестов?
Упрощение сложной фильтрации в LINQ с помощью шаблона «Спецификация» и библиотеки XSpecification
Реализация и преимущества данного шаблона уже были описаны в нескольких статьях, но т.к. у меня в проекте уже была своя реализация, которая, на мой взгляд, удобнее и позволяет убрать кучу повторяющегося кода, то я решил поделиться своим вариантом (который, возможно, не совсем чистая Спецификация).
Исходники традиционно на https://github.com/xumix/XSpecification, пакеты на Nuget.
Теперь к деталям: данная либа будет полезна, в первую очередь, для тех, кого есть большое количество бизнес-логики при фильтрации или множество параметров фильтрации. Как пример бэкенд для грида типа такого https://reactdatagrid.io/demo или фильтра типа такого https://i.imgur.com/Jw5UAFz.png.
Эволюция PVS-Studio: анализ потока данных для связанных переменных
Связанные переменные – одна из главных проблем статического анализа. Данная статья посвящена разбору этой темы и рассказу о том, как разработчики PVS-Studio сражаются с ложными срабатываниями, появившимися из-за различных связей.
22 новых фичи C# — каким будет C# 11+
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. Предупреждения для имен типов полностью в нижнем регистре.
Внутри — разбор каждой фичи и сценарии применения.
Инверсия зависимости и System.Data.Common.DbDataReader
Если мы не используем EF (такое случается), то нам нужно как-то устроить загрузку объектов из базы данных. Вариант: берём DataSet
, делаем ему SomeDataAdapter.fill(...)
, а из него берём данные для строительства нужных объектов. При этом класс, который умеет заполнять DataSet
, не знает, для объектов какого класса он это делает. Абстракция, низкая связанность, всё хорошо.
Однако, мы ждём, пока заполнится DataSet
, только после этого можем начать
GraphQL и почти все-все-все. Часть 1:)
Введение:
Все чаще слышу об использовании GraphQL, но так как последнее время все рабочее время уходило на Xamarin + GRPC + ASP.NET Core, технология казалась для меня загадочно манящей и очень не известной, потому решил опробовать ее на нескольких языках, чтобы увидеть какие плюсы и минусы в разных подходах. Начать решил с родного и любимого C# + Hot Chocolate, но планирую так же попробовать Typescript + Prisma, Kotlin + graphql-kotlin, и возможно что-то другое.
Вклад авторов
-
sidristij 1681.2 -
foto_shooter 1027.0 -
olegchir 1001.8 -
n0mo 667.0 -
sahsAGU 656.0 -
marshinov 654.6 -
timyrik20 652.6 -
kekekeks 623.4 -
DreamWalker 566.0 -
PsyHaSTe 547.4