
C# *
Объектно-ориентированный язык программирования
Иммутабельность в C#

В разработке программного обеспечения иммутабельным (immutable — неизменяемым) называется объект, который после своего создания не может быть изменен. Зачем вам может понадобиться такой объект? Чтобы ответить на этот вопрос, давайте проведем анализ проблем, которые могут возникнуть в результате мутации (изменения) объектов. Вернемся к основам того, что делает каждое приложение: создает, извлекает, обновляет и удаляет данные (CRUD-операции). Ядро любого приложения манипулирует объектами. Ответ на вопрос о том, работает ли приложение в соответствии со своей спецификацией, в первую очередь определяется правильностью обработки данных. Вам необходимо быть уверенными, что код работает правильно, каждый раз, когда он затрагивает какой-либо объект.
Но что, если бы существовали объекты, которые не могли бы изменяться? Исходя из вышеизложенного, очевидно, что если объект не может измениться, то либо не будет кода, пытающегося изменить его, либо, если такой код все-таки написан, он не будет работать.
Если ваше приложение является многопоточным, иммутабельность должна быть фундаментальной частью вашей архитектуры, поскольку неизменяемые объекты по своей природе являются потокобезопасными и невосприимчивыми к состояниям гонки. Если ваше приложение использует data transport objects (DTO — объекты передачи данных), вам также следует серьезно подойти к иммутабельности ваших объектов. Предметом дискуссий остается лишь то, как наиболее эффективно реализовать и работать с иммутабельными объектами, поскольку C# не предлагает встроенной поддержки таких объектов. Эта статья предлагает ответ на этот вопрос.
Интерфейсы в C#: зачем они нужны?

Интерфейсы — одна из самых важных фич в C# для реализации объектно-ориентированного программирования в целом. Однако, основываясь на моем опыте чтения онлайн-статей об интерфейсах (включая и книги по программированию), я могу с уверенностью сказать, что в большинстве случаев в этих статьях подробно раскрывается вопрос, как использовать интерфейсы, но очень скупо — зачем.
Поэтому сегодня я хочу поделиться с вами своим опытом. А именно — чем интерфейс так полезен в повседневной разработке.
Архитектура платформы для проектирования интерактивного видеоконтента

Интерактивный видеоконтент позволяет своим зрителям взаимодействовать с контентом и влиять на дальнейшее его повествование. Это уникальное направление видеоконтента, которое активно развивается в последнее время в различных сферах.
В данной статье мы хотим поделиться опытом создания платформы для проектирования интерактивного видеоконтента.
Use-case
Для формализации функциональных требований применяются диаграммы использования (use-case). Диаграмму вариантов использования есть смысл строить во время изучения технического задания, она состоит из графической диаграммы, описывающей действующие лица и прецеденты (варианты использования - сервисы, которые наша система предоставляет акторам), а также спецификации, представляющего собой текстовое описание конкретных последовательностей действий (потока событий), которые выполняет пользователь при работе с системой.
Прецеденты нашего пользователя:
Пример микросервисной архитектуры с Saga на MassTransit
Привет, Хабр! В общем работаю я значит Архитектором Программных Решений. Мы тут монолиты на микросервисы переводим поэтому я решил для наших разработчиков написать пример проекта с сагой и за одно может оно и вам понадобиться поэтому выложил сюда. Статья будет дополняться по мере поступления вопросов от вас и от наших разработчиков
Утилизация «мусорщиком» сессий с истекшим сроком годности

Соглашаясь с мнением, что stateful-сервер ограничен в масштабируемости, всё же считаю, что инструмент должен соответствовать задаче. Для высоконагруженной системы с миллионами запросов в секунду важна распределённость, но за неё мы платим необязательностью предоставления актуальных данных в конкретный момент. Ни того ни другого нельзя сказать о системе, в которой при самых оптимистичных предположениях будет работать сотня операторов.
Так что предположим, что запрос на полноценные сессии всё же имеется. И эти сессии надо как-то утилизировать после окончания их срока жизни. Навскидку можно предложить следующие решения.
Запуск параллельной задачи при очередном запросе с клиента.
Запуск специального потока.
Использование таймера.
Всё же осмелюсь предложить ещё одну идею.
Обновление: благодарю @Politura - комментарий о MemoryCache
оказался очень полезным! Проверил и решил так и сделать.
Поиск случайной точки на PolygonCollider2D Unity

В этой статья я расскажу, как найти случайную точку на многоугольнике с очень странной формы без циклов!
RabbitMQ в ASP.NET Core. Быстрый старт

RabbitMQ – это брокер сообщений, служба, отвечающая за обмен сообщениями между разными программными сервисами.
RabbitMQ держит сообщения в очереди (Queue), которая является именованным буфером, хранящим адресованные ему сообщения.
Программа, посылающая сообщения в очередь RabbitMQ, называется поставщиком (Producer).
Программа, принимающая сообщения, называется подписчиком (Consumer). Такие программы подписываются на события поступления сообщения в очередь, и всегда находятся в ожидании новых сообщений.
Множество поставщиков могут отправлять сообщения в очередь, и множество подписчиков могут считывать сообщения из очереди.
Проверка контрагентов. Парсинг fedresurs
В этой статье хочу познакомить читателя с таким ресурсом, как «Единый федеральный реестр сведений о фактах деятельности юридических лиц» (fedresurs.ru), рассказать о его применимости и показать возможность прошерстить ресурс не руками по большому количеству клиентов, а с использованием C# (в вашем случае можете использовать любой другой язык, который вам нравится, подходы, думаю, не изменятся) и море проксей, ну разумеется будем парсить. Возможно, тем кто этим займется, пригодятся статья, идеи или, чем черт не шутит, куски кода, а тем, кто просто проводит проверку контрагентов сможет либо понять, что можно взять с сайта либо придумает, что можно еще проверить.
Периодически возникает потребность в получении данных для анализа клиентов/заемщиков/контрагентов и эти данные мы можем получить из этого сайта. Что же нам предлагается?!
Возникновение обременений (залог, лизинг и т.д.) – посмотреть, например, на возможность заключения фиктивных договоров лизинга или на уже заложенное имущество и т.д.
Различные сообщения по клиенту, например, сообщения о банкротстве и уже с ними – проверка, все ли сообщает клиент и может пора пошевелиться в сторону него и предпринять какие-либо меры.
Торги и т.д.
Интегрированный чат в Live Share для Visual Studio 2022

В нашей популярной фиче Live Share, доступной уже несколько лет в Visual Studio, не было чата... до сегодняшнего дня! Теперь, если есть такая необходимость, вы можете в live-режиме обсуждать с коллегами в чате работу над кодом. И для этого больше не обязательно созваниваться.
Что такое AddScoped и его отличие от AddTransient в .NET и ASP.NET

Всего есть 3 типа жизни (ServiceLifetime) экземпляра:
Singleton - одиночка, создается один раз и используется во время использования всего процесса, метод .AddSingleton<T>()
.
Transient - временный, создается каждый раз при запросе его из провайдера, метод .AddTransient<T>()
.
Scoped - ограниченный, новый экземпляр создается в определённой области видимости (scope) в интерфейсе IServiceScope
. Добавляется методом .AddScoped<T>()
.
Ссылка на картинку: https://stackoverflow.com/a/64776798
AltUnity Tester для автоматизации Unity проектов

AltUnity Tester - это инструмент автоматизации тестирования на основе пользовательского интерфейса с открытым исходным кодом, который помогает находить объекты в вашей игре Unity и взаимодействовать с ними с помощью тестов, написанных на C #, Python или Java.
Мониторинг и наблюдаемость в облачных приложениях ASP.NET Core

Распределенные приложения сложны и влекут за собой свой собственный караван трудностей с отладкой и исправлением проблем в продакшене. Хотя микросервисная архитектура и дает возможность справляться силами меньшей команды, которая работает автономно и фокусируется на разных областях бизнеса, из-за своего распределенного характера она подкидывает нам новые проблемы. Например, в случае возникновения проблемы во время бизнес-транзакции, запрос необходимо отслеживать от начала и до конца, что может охватывать несколько служб и инфраструктур. Некоторые из трудностей таковы:
Ближайшие события
Обновления .NET за июль 2021 – 5.0.8 и 3.1.17

Мы выпустили июльские обновления .NET. Эти обновления содержат улучшения надежности и другие исправления. Изучайте примечания к выпускам для получения подробной информации об обновленных продуктах.
Вы можете скачать версии 5.0.8 , 3.1.17 для Windows, macOS, и Linux, для x86, x64, Arm32, и Arm64.
Как обновить все сцены в Unity за один клик? Автоматизируем рутину

Надоело тратить часы за обновлением уровней в Unity? Давайте автоматизируем это!
В этой статье мы напишем простой и понятный инструмент, благодаря которому вы сможете делать всё, что вам угодно, за считанные клики: сериализовать поля, менять иерархию на сценах, настраивать Fuse/IClone/DAZ и других персонажей, добавлять новые префабы, менять интерфейс и многое другое!
Тир. Стрельба рейкастами на Unity 3D

В этом проекте рассмотрим процесс работы:
• с рейкастами и векторами;
• с методами других пользовательских классов;
• с AudioSource и с Rigidbody через код;
• три основных составляющих выстрела, психологически действующих на игрока (звук, свет и свечение, анимация и след от выстрела);
• инстанцирование префабов.
Cоздание переиспользуемых Linq фильтров (построителей предикатов для Where), которые можно применять для разных типов
Способ создания переиспользуемых Linq фильтров (построителе предикатов для условия Where), которые можно применять для разных типов объектов. Поля объектов для фильтрации указываются с помощью MemberExpression.
Способ подходит для Entity Framework, включая Async операции.
Tangible user interface: распознавание объектов при работе с multi-touch системой
Делимся опытом работы с Tangible User Interface и рассказываем, как распознавать маркеры по точечным паттернам. Вы узнаете, как с помощью дисплея и инфракрасной рамки сделать эффектную визуализацию, а также какие подводные камни могут встретиться при работе с TUIO.
Заметка от партнера IT-центра МАИ и организатора магистерской программы “VR/AR & AI” — компании PHYGITALISM.
Полное руководство по повышению безопасности вашего Asp.Net Core веб-приложения и API

С каждым обновлением .Net Core Microsoft доказывает тот факт, что .Net Core является самым мощным, универсальным и полным фреймворком, доступным для разработки мощных десктопных, мобильных, облачных и веб-приложений. В отличие от десктопного или мобильного приложения, веб-приложение работает по общедоступному адресу, что является одной из причин, по которым безопасность веб-приложения имеет огромную важность. Хотя Asp.Net Core разработан с учетом лучших практик безопасности, тем не менее, все же существуют некоторые уязвимости, за которыми мы должны следить до и после релиза нашего Asp.Net Core приложения.
В этой статье мы рассмотрим несколько пробелов в безопасности Asp.Net Core веб-приложений и их возможные решения. Давайте начнем с перечисления некоторых важных моментов для обеспечения безопасности нашего .Net Core приложения.
Обновления .NET Core за июль 2020 года — 2.1.20 и 3.1.6

Вклад авторов
sidristij 1681.2SergVasiliev 1163.0olegchir 1001.8n0mo 667.0sahsAGU 656.0marshinov 654.6tguev 652.6kekekeks 623.4DreamWalker 566.0