C# functional extensions - удачный пакет с затаскиванием функциональных штук в C# - монады Maybe/Optional/Chain/Tap/Result/Match. В пет-проектах - почти всегда использую. Плюс к чистоте и читабельности кода. #dotnet
Два плагина для Rider😍, которые показывают в IDE цикломатическую и когнитивную сложность методов и классов, метрики которых считаются по вот этому документу (G. Ann Campbell, одной из контрибуторов SonarQube)
Красивый и удобный сервис для создания интерактивных временных диаграмм (timelines) #tools
Manage your terraform like a container (en) - достаточно простая статья про #terraform и #aws с примерами и картинками
FluentValidation - удобный пакет для валидации моделей, который позволяет
💙 вынести валидацию в отдельные классы
💙 сделать chaining-валидацию
💙 получить готовый список ошибок в модели (для возврата на фронт)
💙 поддерживает DI
💙 при желании (штатно этого нет) - сделать небольшую middleware и воткнуть в pipeline ASP.NET Core для автоматической валидации всех входящих моделей с фронта и возврата например http 400, если модель не соответствует правилам.
➕ К чистоте и читабельности кода #dotnet
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
Как работает TLS на русском языке (многостраничная статья). Минимум картинок, максимум дампов и примеров пакетов #education
Building a Scalable Event-Driven Search Architecture With Postgres’ Full-Text Search - статья по созданию полнотекстового поиска на Postgres - с блэкджеком микросервисами, очередями и картинками. #books #education
Fody - аналог PostSharp в каком-то роде, позволяет в post build залезть в IL ассемблей и сделать что-нибудь очень произвольное (примеры разной дичи):
💙 в релизном билде оторвать override ToString у всех классов
💙 инжектнуть измерение времени выполнения во все методы с указанным атрибутом и выдавать это в Trace
💙 воткнуть проверку на null всех nullable string параметров в начало всех методов
💙 добавить ConfigureAwait(false) во все async методы
💙 воткнуть сообщение в Trace во все [Obsolete] методы
Вобщем плагинов там штатно полно и несложно написать свой, который будет делатьразную дичь всё что угодно с вашей ассемблей после билда. #dotnet
Вобщем плагинов там штатно полно и несложно написать свой, который будет делать
Please open Telegram to view this post
VIEW IN TELEGRAM
Длинная статья по анализу трафика в #kubernetes в разных конфигурациях
Декларативная валидация на rule-based подходе - хорошая и подробная статья на русском языке про эту тему #typenoscript #js
bespoyasov.ru
Декларативная валидация данных с помощью функционального программирования и rule-based подхода
Как сделать задачу клиентской валидации проще и писать поддерживаемый и расширяемый код.
❤1
Несколько примеров best practices с github по архитектуре приложений. С технологиями, которые мы любим (почти):
NET Core
Entity Framework Core
Angular
MediatR
AutoMapper
FluentValidation
NUnit, FluentAssertions, Moq & Respawn
💙 CleanArchitecture
💙 CleanArchitecture (другого автора)
💙 EquinoxProject
💙 Dotnet-Template-Onion
💙 NetCore-Clean-Architecture
💙 CleanAspNetCoreWebApi
💙 CQRS-Clean-Eventual-Consistency
💙 Clean-Architecture-ASP.NET-Core
#dotnet
NET Core
Entity Framework Core
Angular
MediatR
AutoMapper
FluentValidation
NUnit, FluentAssertions, Moq & Respawn
#dotnet
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Интересный онлайн-сервис-анализер asm-кода, который выдаёт низкоуровневую инфу (такты, промахи предсказания, ...). Есть разные микроархитектуры процессоров. Технически например можно взять из того же SharpLab код после JIT, скопипастить сюда и посмотреть повнимательней на планируемый перф. #tools
FluentAssertions - ещё одна штука из с fluent-синтаксисом, который позволяет человекопонятным языком валидировать данные и бросать исключения в случае несоответствия. Подходит как в юнит-тестирование (тот же MSUnit нищеват на assert'ы), так и в компании с FluentValidation к примеру для читабельной валидации. В т.ч. для сложных штук (коллекций к примеру) - есть методы, которые позволяют в одну строку сравнивать коллекции с хитрыми условиями - с маппингом, вложенными коллекциями, конвертацией и т.д. #dotnet
👍2
Building ASP.NET Core and EF Core multi-tenant apps - цикл из 6 статей по построению multi-tenant приложения. В отличие от множества других статей - здесь рассматриваются несколько разных вариантов, с достоинствами/недостатками и ограничениями, которые присущи каждому способу.
Global Filters in Entity Framework - вторая статья (не имеющая отношения к первой, но имеющая отношение к multi-tenancy) - применение глобальных фильтров в EF для разграничения доступа к данным в контексте EF
#dotnet #ef
Global Filters in Entity Framework - вторая статья (не имеющая отношения к первой, но имеющая отношение к multi-tenancy) - применение глобальных фильтров в EF для разграничения доступа к данным в контексте EF
#dotnet #ef
Use Expression Trees to Build Dynamic Queries - очень часто возникает необходимость фильтровать данные по запросу с фронта по разным полям. Типичный пример - интернет-магазин с фильтрами по полям/критериям/категориям товара. В статье рассматривается вариант использования Expression<T> для построения динамических LINQ-запросов, которые можно маппить из DTO-модели. #dotnet #ef
awesome-dotnet-core - большая коллекция ссылок на разные фреймворки на самые разные задачи (справедливости ради - не все из них норм, к сожалению) #dotnet
This media is not supported in your browser
VIEW IN TELEGRAM
C# 10 interpolated string handlers: scanf-like parsing! - не совсем штатное использование interpolated strings. sscanf на минималках 😊
gist на github #dotnet
gist на github #dotnet
😁1
Build your own X (github) - сотня "How to" как сделать сервис/бота/... - от парсеров/краулеров до крипты. На разных платформах и языках #dotnet #js #ts
👍4
Public-Apis (github) - проект, в котором собран список публичных в основном бесплатных (но есть и платные) API с очень разными данными. #api
GitHub
GitHub - public-apis/public-apis: A collective list of free APIs
A collective list of free APIs. Contribute to public-apis/public-apis development by creating an account on GitHub.
BannedApiAnalyzers - если надо предотвратить использование какого-либо API в solution wide масштабах - можно использовать этот анализер и написать в текстовый файл ему перечень классов, методов, свойств и полей которые использовать нельзя (будет ошибка компиляции). #dotnet