В основе рефакторинга лежит последовательность небольших эквивалентных (то есть сохраняющих поведение) преобразований. Поскольку каждое преобразование маленькое, программисту легче проследить за его правильностью, и в то же время вся последовательность может привести к существенной перестройке программы и улучшению её согласованности и чёткости.
Одно изменение (рефакторинг) мало что дает. Но последовательное применение различных техник рефакторинга приводит к значительным изменениям в коде.
Нет лучшего способа научиться рефакторингу, чем практика.
Представляем вам упражнения по рефакторингу и 5 потрясающих техник рефакторинга кода с примерами.
📌 Читать
@csharp_ci
Please open Telegram to view this post
VIEW IN TELEGRAM
Вот 10 лучших статей еженедельника The .NET за этот год.
1. Архитектура вертикального среза - https://www.milanjovanovic.tech/blog/vertical-slice-architecture.
2. Использование нескольких EF Core DbContexts в одном приложении - https://www.milanjovanovic.tech/blog/using-multiple-ef-core-dbcontext-in-single-application
3. Правильный способ использования HttpClient в .NET - https://www.milanjovanovic.tech/blog/the-right-way-to-use-httpclient-in-dotnet
4. Как подойти к созданию чистой структуры папок в архитектуре - https://www.milanjovanovic.tech/blog/clean-architecture-folder-structure
5. От монолита к микросервисам -https://www.milanjovanovic.tech/blog/monolith-to-microservices-how-a-modular-monolith-helps
6. Реализация API-шлюза для микросервисов с помощью YARP - https://www.milanjovanovic.tech/blog/implementing-an-api-gateway-for-microservices-with-yarp
7. Health Checks In ASP .NET Core For Monitoring Your Applications - https://www.milanjovanovic.tech/blog/health-checks-in-asp-net-core
8. Запуск фоновых задач в ASP .NET Core - https://www.milanjovanovic.tech/blog/running-background-tasks-in-asp-net-core
9. Функциональная обработка ошибок в .NET с помощью шаблона результатов - https://www.milanjovanovic.tech/blog/functional-error-handling-in-dotnet-with-the-result-pattern
10. Паттерн CQRS с помощью MediatR - https://www.milanjovanovic.tech/blog/cqrs-pattern-with-mediatr
@csharp_ci
Please open Telegram to view this post
VIEW IN TELEGRAM
Вот примеры лучших практик при разработке приложений :
- Логирования запросов в Serilog
- Использование системы конфигов
- Добавление
CorrelationId
в логи- Регистрация всех важных событий
- Использование
Seq
при разработкиЕсли вы хотите узнать, как получить максимальную отдачу от Serilog, ознакомьтесь с этой статьей.
@csharp_ci
Please open Telegram to view this post
VIEW IN TELEGRAM
⚡️ В модульном монолите можно построить взаимодействие модулей двумя способами:
1) Вызовы методов (синхронные)
2) Обмен сообщениями (асинхронный)
Но какой из них выбрать?
📌 Читать статью
@csharp_ci
1) Вызовы методов (синхронные)
2) Обмен сообщениями (асинхронный)
Но какой из них выбрать?
📌 Читать статью
@csharp_ci
В этой статье перечислены некоторые из основных актуальных изменений в документации.
📌 Читать
@csharp_ci
Please open Telegram to view this post
VIEW IN TELEGRAM
Декоратор (англ. Decorator) — структурный шаблон проектирования, предназначенный для динамического подключения дополнительного поведения к объекту.
Паттерн декоратор предоставляет гибкую альтернативу практике создания подклассов с целью расширения функциональности.
Для его реализации вы можете использовать инъекции зависимостей
ASP .NET Core.
📌 Вот полная реализация
@csharp_ci
Please open Telegram to view this post
VIEW IN TELEGRAM
Не стоит начинать новый проект с микросервисов, даже если вы уверены, что ваше приложение будет достаточно большим, чтобы это было целесообразно.
Основная причина этого - сложность систем на основе микросервисов.
За микросервисы приходится платить:
- Сложность координации работы команды
- Потосянная борьба с отказами
- Автоматизация развертывания
- Управление множеством сервисов
Но я хочу обратить ваше внимание на кое-что еще.
Есть способ объединить:
- физическую архитектуру монолитов
- логическую архитектуру микросервисов.
И получить преимущества обоих.
Это называется модульный монолит.
Модульный монолит — это подход к проектированию приложений, который позволяет, с одной стороны, отложить во времени операционную сложность использования микросервисов, а с другой — избежать превращения монолитной системы в большой комок грязи.
📌 Почитать про модульные монолиты
📌Дорожная карта разработчиков .NET/C# в 2024 году для начинающих
У вас когда-нибудь была возможность построить такую архитектуру ?
@csharp_ci
Основная причина этого - сложность систем на основе микросервисов.
За микросервисы приходится платить:
- Сложность координации работы команды
- Потосянная борьба с отказами
- Автоматизация развертывания
- Управление множеством сервисов
Но я хочу обратить ваше внимание на кое-что еще.
Есть способ объединить:
- физическую архитектуру монолитов
- логическую архитектуру микросервисов.
И получить преимущества обоих.
Это называется модульный монолит.
Модульный монолит — это подход к проектированию приложений, который позволяет, с одной стороны, отложить во времени операционную сложность использования микросервисов, а с другой — избежать превращения монолитной системы в большой комок грязи.
📌 Почитать про модульные монолиты
📌Дорожная карта разработчиков .NET/C# в 2024 году для начинающих
У вас когда-нибудь была возможность построить такую архитектуру ?
@csharp_ci
Задействуйте все свои навыки создайте самую быструю реализацию для решения этой задачи!
📌 Реализация известного Java челенджа на .NET
🔎 Github
🔎Пример решения
@csharp_ci
Please open Telegram to view this post
VIEW IN TELEGRAM
#ПятничныйКвиз
В скобках операторы приведения. опретаоры +- унарные.
т.е. получается,
берем -2 кастуем к long
к -2 применяем унарный оператор + и кастуем к int получаем -2
к -2 применяем унарный оператор - получаем 2 и кастуем к char
к 2 применяем унарный оператор + получаем 2 и кастуем к byte
@csharp_ci
т.е. получается,
берем -2 кастуем к long
к -2 применяем унарный оператор + и кастуем к int получаем -2
к -2 применяем унарный оператор - получаем 2 и кастуем к char
к 2 применяем унарный оператор + получаем 2 и кастуем к byte
@csharp_ci
🔥 Дайджест полезных материалов из мира C# за неделю
Почитать:
— Изучаем C# в 2024 году
— Университет MIT: бесплатные онлайн-курсы для программистов и студентов.
— Включаем Nullable reference type в Unity за несколько минут
— Как Uber вычисляет расчетное время прибытия при полумиллионе запросов в секунду
— Метод быстрого марша (Fast Marching Method)
— Как на самом деле Async/Await работают в C#. Часть 2 Артефакты от EAP шаблона, SynchronizationContext
— Сто паттернов для разработки корпоративных программ. Часть первая
— GigaChat API для .NET Core
— Собираем автономную игру на C# в 2 килобайтах
— Чистая архитектура на примере
— Chain Of Responsibility Pattern In C# – Simplified How-To Guide
— Concurrent Collections in C#
— Game Dev Digest — Issue #218 - Patterns, Abstractions, Complete Tutorials and more
— How I Built a NuGet Package
— How to Edit and Convert PDF, PNG, JPEG, and TIFF Files in Blazor Apps
— Understanding the Fundamentals of Database Programming Languages
— Exploring Function Behavior in C#
— Demystifying OOP in C#: Your Guide to Building Robust and Flexible Applications
— Beginner's guide to Unit Testing with NUnit.
— Solid Principle : Liskov Substitution Principle
Посмотреть:
🌐 Introduction to Machine Learning in C#. Classification using ML.NET (⏱ 31:03)
🌐 Await Async Might Change Completely in .NET 9 (⏱ 09:55)
🌐 "Stop Using Singletons in .NET!" | Code Cop #009 (⏱ 13:52)
Хорошего дня!
@csharp_ci
Почитать:
— Изучаем C# в 2024 году
— Университет MIT: бесплатные онлайн-курсы для программистов и студентов.
— Включаем Nullable reference type в Unity за несколько минут
— Как Uber вычисляет расчетное время прибытия при полумиллионе запросов в секунду
— Метод быстрого марша (Fast Marching Method)
— Как на самом деле Async/Await работают в C#. Часть 2 Артефакты от EAP шаблона, SynchronizationContext
— Сто паттернов для разработки корпоративных программ. Часть первая
— GigaChat API для .NET Core
— Собираем автономную игру на C# в 2 килобайтах
— Чистая архитектура на примере
— Chain Of Responsibility Pattern In C# – Simplified How-To Guide
— Concurrent Collections in C#
— Game Dev Digest — Issue #218 - Patterns, Abstractions, Complete Tutorials and more
— How I Built a NuGet Package
— How to Edit and Convert PDF, PNG, JPEG, and TIFF Files in Blazor Apps
— Understanding the Fundamentals of Database Programming Languages
— Exploring Function Behavior in C#
— Demystifying OOP in C#: Your Guide to Building Robust and Flexible Applications
— Beginner's guide to Unit Testing with NUnit.
— Solid Principle : Liskov Substitution Principle
Посмотреть:
🌐 Introduction to Machine Learning in C#. Classification using ML.NET (⏱ 31:03)
🌐 Await Async Might Change Completely in .NET 9 (⏱ 09:55)
🌐 "Stop Using Singletons in .NET!" | Code Cop #009 (⏱ 13:52)
Хорошего дня!
@csharp_ci
Проект предоставляет API высокого уровня для вывода моделей LLaMA и развертывания их на локальном устройстве с помощью
C#/.NET.
Проект работает под Windows, Linux и Mac без необходимости компилировать llama.cpp самостоятельно.
Отличный инструмент, чтобы развернуть ваш собственный ИИ на C#, подобный ChatGpt.
Даже если у вас нет мало памяти GPU, вы все равно можете использовать модели LLaMA! 🤗
▪Github
@csharp_ci
Please open Telegram to view this post
VIEW IN TELEGRAM
1- SQL для анализа данных от Udacity
Продолжительность: Примерно 4 недели
Уровень навыков: Начинающий
Ссылка - https://shiksha.com/online-courses/sql-for-data-analysis-course-udacl3
2- Введение в SQL от Kaggle
Продолжительность: Приблизительно 3 часа
Уровень мастерства: Начинающий
Ссылка - https://kaggle.com/learn/intro-to-sql
3- Продвинутый SQL от Kaggle
Продолжительность: Приблизительно 4 часа
Уровень мастерства: Промежуточный
Ссылка - https://kaggle.com/learn/advanced-sql
4- Введение в базы данных и SQL-запросы от Udemy
Продолжительность: Приблизительно 2 часа 17 минут
Уровень мастерства: Начинающий
Ссылка - https://udemy.com/course/introduction-to-databases-and-sql-querying/
5- Intro to Relational Databases byUdacity
Продолжительность : 4 недели
Уровень квалификации: Средний ученик
Ссылка - https://udacity.com/course/intro-to-relational-databases-ud197
6- Введение в SQL (DataCamp)
Продолжительность: 4,5 часа
Уровень квалификации: Начинающий
Ссылка -
https://datacamp.com/courses/introduction-to-sql
@csharp_ci
Please open Telegram to view this post
VIEW IN TELEGRAM
Что выведет на экран это код?
Anonymous Quiz
26%
Static Constructor
15%
Default Constructor
14%
Default Constructor Static Constructor
31%
Static Constructor Default Constructor
14%
Ничего не будет выведено
Когда популярность сервера
Midjourney от Discord
резко возросла, он натолкнулся на : ограничение в 1 миллион участников. Это история о том, как небольшая команда инженеров Discord превратила эту проблему в выдающееся достижение.Задача: Представьте себе виртуальное пространство, настолько популярное, что оно трещит по швам. Будучи одним из самых быстрорастущих серверов Discord за всю историю,
Midjourney
столкнулся именно с таким сценарием, поскольку количество участников росло геометрически. Discord платформавремени, работающая на
Erlang/Elixir,
затрещала по швам под огромным давлением. С каждым новым участником сложность и нагрузка росли в геометрической прогрессии.Решения:
Чтобы свести к минимуму перегрузку, инженеры внедрили "
пассивные
" соединения, гарантирующие, что неактивные пользователи не будут создавать лишней нагрузки.Переработка системы реле позволила более эффективно распределять работу за счет более избирательной обработки пользовательских данных.
Параллельная обработка: Используя ETS Erlang, команда разработчиков обеспечила параллельную обработку для таких тяжелых операций, как оповещение всех пользователей что значительно снизило нагрузку на систему.
ETS - инструмент для хранения объектов Elixir и Erlang в памяти. Он способен хранить огромные объемы данных и предоставляет доступ за фиксированное время.
Не все было гладко. Некоторые многообещающие идеи, такие как разгрузка Manifold, дали обратный эффект, увеличив нагрузку на сервера.
↪️ Читать подробнее
@csharp_ci
Please open Telegram to view this post
VIEW IN TELEGRAM
Присоединяйтесь к #Csharp #CloudSkillsChallenge, чтобы пройти обучение по курируемому контенту #MicrosoftLearn, получить практический опыт и развить новые навыки.
Практикйтеь в C# и приблизьтесь к получению сертификата.
https://learn.microsoft.com/ru-ru/training/challenges?id=76615901-392c-413e-b7a2-0a015f52f44e&WT.mc_id=cloudskillschallenge_76615901-392c-413e-b7a2-0a015f52f44e
@csharp_ci
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥 100+ ресурсов для того, чтобы стать хорошим инженером-программистом.
Список полезных книг, гайдов, блогов и не тольео!
Темы - от разработки программного обеспечения, проектирования систем, инженерии данных, лидерства, управления командой и вплоть до гайдов по построению бизнеса.
▪ Github
@csharp_ci
Список полезных книг, гайдов, блогов и не тольео!
Темы - от разработки программного обеспечения, проектирования систем, инженерии данных, лидерства, управления командой и вплоть до гайдов по построению бизнеса.
▪ Github
@csharp_ci