![](https://webcf.waybackmachine.org/web/20220515135746im_/https://habrastorage.org/getpro/habr/upload_files/098/42b/bae/09842bbae970de34e1014b5e0b979686.png)
Bitwarden – менеджер паролей с открытым исходным кодом. Это программное обеспечение помогает генерировать уникальные пароли и управлять ими. Получится ли у анализатора PVS-Studio отыскать ошибки в таком проекте?
Объектно-ориентированный язык программирования
Bitwarden – менеджер паролей с открытым исходным кодом. Это программное обеспечение помогает генерировать уникальные пароли и управлять ими. Получится ли у анализатора PVS-Studio отыскать ошибки в таком проекте?
Сегодня в этой статье я хочу поделиться личным опытом работы и решением конкретного кейса. Как подружить сервер авторизации на протоколе OpenId Connect и веб-приложения, накрытых обратным прокси-сервером YARP.
Привет, Хабр! В этой статье я расскажу всё, что знаю про Entity-Component-System и попытаюсь развеять различные предубеждения об этом подходе. Здесь вы найдете много слов о преимуществах и недостатках ECS, об особенностях этого подхода, о том как с ним подружиться, о потенциальных граблях, о полезных практиках, а также в отдельном разделе коротко посмотрим на ECS фреймворки для Unity/C#.
Привет, Хабр! Это статья о том как наша небольшая команда реализовывала свой ECS в рамках Unity проекта. Если вас заинтересовало как строилась архитектура, откуда брались те или иные решения, и какой она у нас получилась, или если вам просто интересно, как оно всё выглядит там, под капотом, вы можете посмотреть всё нажав на кнопку "Читать далее".
С годами стоимость создания игр стала больше, вырос их масштаб, а следовательно, и их кодовая база. Разработчикам становится всё сложнее уследить за ошибками. А забагованная игра влечёт финансовые и репутационные убытки. Как же с этим может помочь статический анализ?
Использовать Guid.NewGuid()
в качестве первичного ключа в базе данных — плохая с точки зрения производительности идея. Это связано с тем, что в SQL Server, MySQL и некоторых других БД для первичных ключей создаются кластерные индексы, которые определяют, как строки будут храниться на диске. GUID — это по сути случайное значение, поэтому новая строка может попасть в начало, середину или конец таблицы. Серверу БД в этом случае придётся перемещать другие строки, что приведёт к фрагментации данных, а их извлечение может занять больше времени, если вам нужно извлечь несколько добавленных последовательно записей (например, когда вы добавляете набор связанных сущностей, которые потом будут извлекаться вместе — БД понадобится прочитать данные из разрозненных страниц вместо последовательного чтения набора данных).
Поэтому, чаще всего, лучше пользоваться сгенерированными БД первичными ключами. В SQL Server, например, есть функция NEWSEQUENTIALID()
, которая генерирует последовательные GUIDы. Зачем может понадобиться генерировать ключи именно на клиенте и как это правильно сделать?
Привет, Хабр! В общем работаю я значит Архитектором Программных Решений. Мы тут монолиты на микросервисы переводим поэтому я решил для наших разработчиков написать пример проекта с сагой и за одно может оно и вам понадобиться поэтому выложил сюда. Статья будет дополняться по мере поступления вопросов от вас и от наших разработчиков
Как и многие разработчики, впервые столкнувшиеся с нагрузочным тестированием, я начал с JMeter. Для ознакомления и простых сценариев JMeter полностью меня устраивал, но с усложнением задач и потребностью в большем контроле я начал задумываться о поиске более удобной альтернативы. Особенно хотелось чтобы инструмент легко адаптировался или уже был адаптирован под экосистему .NET.
В этой статье мы рассмотрим NBomber как легкую для освоения альтернативу JMeter, а также постараемся ответить на вопрос "Почему я должен проводить нагрузочное тестирование именно с NBomber ?".
Эта статья предназначена для .NET разработчиков, которые хотят пополнить свой инструментарий удобным инструментом для нагрузочного тестирования, а также тем кто рассматривает альтернативы JMeter для экосистемы .NET.
Иногда хочется автоматически создавать текстовые файлы, подставляя в шаблоны значения каких-то полей. Например, это могут быть исходники классов-хелперов на основе какого-то интерфейса, какие-то отчеты в XML, которые хотя и можно сгенерировать полностью программно, но на практике это может быть достаточно трудный для сопровождения код. Наверное, те, кто сталкивался с такой потребностью, смогут дополнить этот список. Приведу для примера задачу с хелперами.
Создание консоли в Unity, которой не нужен словарь методов для их вызова и которая поможет вам отлавливать ошибки в вашем приложении или игре, а также воспроизводить их. Консоль способна вызвать как методы с обычными типами данных в параметрах, так и их List-ы и массивы. Исходник проекта прилагается.
Добрый день Хабрчане!
В этом посте я хочу поделиться с вами своим скромным опытом в написании софта для удаленного управления БЗК Никон Z6. Точнее правильнее будет сказать не «написании», а скорее «допиливании», однако более подробно об этом я напишу ниже. Ну а сначала я расскажу немного о себе и о том, что именно - натолкнуло меня на такую, на первый взгляд, бредовую идею.
Итак, меня зовут Вадим, мне сорок с хвостиком, и я то, что называется Jack of all trades. Однако в первую очередь – я коммерческий фотограф, специализирующийся на технической, индустриальной и предметной фотографии. Чуть больше двадцати лет назад, когда вопрос определения специальности и выбора соответствующего ВУЗа, встал, так сказать, ребром – я понял что сфера IT и написание кода руками – явно не удовлетворяют мои творческие амбиции. Поэтому я решил остановить свой выбор на творческой профессии, и, несмотря на протесты родителей, поступил в академию искусств на факультет фотографии. В ретроспективе я не берусь утверждать, что мой выбор профессии – был наиболее удачным с финансовой точки зрения. Однако - я изо дня в день занимаюсь тем, что приносит мне огромное удовольствие и чувство глубокого морального удовлетворения. На сегодняшний день я признанный и востребованный специалист в вопросах сложных технических съемок и интеграции различного рода фотооборудования в различных отраслях. Ах да, вдобавок к этому - я жуткий зануда, и технократ. Наверное, именно эти черты моего характера, и привели меня к мысли о написании своей софтинки…
Реализация и преимущества данного шаблона уже были описаны в нескольких статьях, но т.к. у меня в проекте уже была своя реализация, которая, на мой взгляд, удобнее и позволяет убрать кучу повторяющегося кода, то я решил поделиться своим вариантом (который, возможно, не совсем чистая Спецификация).
Исходники традиционно на https://github.com/xumix/XSpecification, пакеты на Nuget.
Теперь к деталям: данная либа будет полезна, в первую очередь, для тех, кого есть большое количество бизнес-логики при фильтрации или множество параметров фильтрации. Как пример бэкенд для грида типа такого https://reactdatagrid.io/demo или фильтра типа такого https://i.imgur.com/Jw5UAFz.png.
Связанные переменные – одна из главных проблем статического анализа. Данная статья посвящена разбору этой темы и рассказу о том, как разработчики PVS-Studio сражаются с ложными срабатываниями, появившимися из-за различных связей.
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. Предупреждения для имен типов полностью в нижнем регистре.
Внутри — разбор каждой фичи и сценарии применения.
Если мы не используем EF (такое случается), то нам нужно как-то устроить загрузку объектов из базы данных. Вариант: берём DataSet
, делаем ему SomeDataAdapter.fill(...)
, а из него берём данные для строительства нужных объектов. При этом класс, который умеет заполнять DataSet
, не знает, для объектов какого класса он это делает. Абстракция, низкая связанность, всё хорошо.
Однако, мы ждём, пока заполнится DataSet
, только после этого можем начать