AutoMapper — это мощная библиотека для .NET, упрощающая преобразование объектов одного типа в другой, что особенно полезно при работе с Web API. В статье автор подробно описывает процесс интеграции AutoMapper в проект .NET Web API, выделяя следующие ключевые шаги:
1️⃣ Установка AutoMapper: Через NuGet устанавливаются пакеты AutoMapper и AutoMapper.Extensions.Microsoft.DependencyInjection, обеспечивающие интеграцию с ASP.NET Core.
2️⃣ Создание моделей и DTO: Определяются основные модели данных и соответствующие им объекты передачи данных (DTO), что способствует четкому разделению между слоями приложения.
3️⃣ Настройка профиля AutoMapper: Создается класс профиля, наследующий Profile, где конфигурируются маппинги между моделями и DTO, что позволяет централизованно управлять правилами преобразования.
4️⃣ Регистрация AutoMapper в приложении: В методе ConfigureServices добавляется регистрация AutoMapper, обеспечивая его доступность через механизм внедрения зависимостей.
5️⃣ Использование AutoMapper в контроллерах: В контроллерах через внедрение зависимости IMapper выполняется преобразование между моделями и DTO, упрощая обработку данных и повышая читаемость кода.
Следуя этим шагам, вы можете значительно упростить процесс маппинга объектов в своих приложениях, повысив эффективность разработки и поддерживаемость кода!
Следуя этим шагам, вы можете значительно упростить процесс маппинга объектов в своих приложениях, повысив эффективность разработки и поддерживаемость кода!
Please open Telegram to view this post
VIEW IN TELEGRAM
🥱28👍10😢6🌚2❤1
Новый год — время для новых начинаний!
Пока все строят планы на будущее, подумайте, что поможет вам двигаться вперёд в карьере. Мы знаем, что навыки в IT открывают огромные возможности — и мы готовы помочь вам начать!
🔹 Почему IT?
- Большинство компаний активно ищут специалистов.
- Вы можете работать из любой точки мира — с гибким графиком и интересными задачами.
- А ещё IT — это высокий доход и стремительный карьерный рост.
Возможно, именно сейчас тот момент, когда стоит инвестировать в себя и развить востребованные навыки. У нас есть конструктор курсов, с помощью которого вы сможете составить свой идеальный план обучения — под свои цели и интересы.
📚 Как это работает?
- Несколько программ по цене одной — выбирайте всё, что вам нужно.
- Бессрочный доступ — учитесь в своём ритме и когда удобно.
- Это выгодно — вы получаете навыки, которые помогут вам расти профессионально и зарабатывать больше.
А для тех, кто решит сделать шаг в будущее до конца года, у нас есть кое-что особенное… 🎁 Узнайте больше
Как выбрать свой путь?
Мы предлагаем несколько уникальных комбинаций курсов, которые помогут вам стать настоящим экспертом:
🔵 Математика для Data Science + Алгоритмы и структуры данных — для тех, кто хочет готовиться к собеседованиям в топовые компании.
🔵 Алгоритмы + ML — чтобы не просто решать задачи, а понимать, как работают современные технологии.
🔵 Frontend + ML — создавайте приложения и учитесь работать с нейросетями.
🔵 И другие комбинации для разных целей.
Новогодний подарок, который будет работать на вас весь год — это отличная идея! 🎁 Начните сейчас
Развивайтесь в IT — и будущее уже будет в ваших руках!
Пока все строят планы на будущее, подумайте, что поможет вам двигаться вперёд в карьере. Мы знаем, что навыки в IT открывают огромные возможности — и мы готовы помочь вам начать!
🔹 Почему IT?
- Большинство компаний активно ищут специалистов.
- Вы можете работать из любой точки мира — с гибким графиком и интересными задачами.
- А ещё IT — это высокий доход и стремительный карьерный рост.
Возможно, именно сейчас тот момент, когда стоит инвестировать в себя и развить востребованные навыки. У нас есть конструктор курсов, с помощью которого вы сможете составить свой идеальный план обучения — под свои цели и интересы.
📚 Как это работает?
- Несколько программ по цене одной — выбирайте всё, что вам нужно.
- Бессрочный доступ — учитесь в своём ритме и когда удобно.
- Это выгодно — вы получаете навыки, которые помогут вам расти профессионально и зарабатывать больше.
А для тех, кто решит сделать шаг в будущее до конца года, у нас есть кое-что особенное… 🎁 Узнайте больше
Как выбрать свой путь?
Мы предлагаем несколько уникальных комбинаций курсов, которые помогут вам стать настоящим экспертом:
🔵 Математика для Data Science + Алгоритмы и структуры данных — для тех, кто хочет готовиться к собеседованиям в топовые компании.
🔵 Алгоритмы + ML — чтобы не просто решать задачи, а понимать, как работают современные технологии.
🔵 Frontend + ML — создавайте приложения и учитесь работать с нейросетями.
🔵 И другие комбинации для разных целей.
Новогодний подарок, который будет работать на вас весь год — это отличная идея! 🎁 Начните сейчас
Развивайтесь в IT — и будущее уже будет в ваших руках!
❤1👍1
🎨✨ Паттерн "Декоратор" — динамическое улучшение вашего кода!
🔍 Что это?
Decorator — это структурный паттерн, который позволяет динамически добавлять объекту новую функциональность. Вместо создания бесконечных подклассов, вы оборачиваете объект в "декораторы".
🛠 Как это работает?
1️⃣ Есть базовый компонент с определенным интерфейсом.
2️⃣ Декоратор реализует этот же интерфейс, добавляя новые возможности.
3️⃣ Оборачивая объект в декораторы, вы комбинируете функции так, как вам нужно!
✏️ Пример:
Представьте текстовый редактор:
Базовый объект — текст.
Один декоратор добавляет подсветку синтаксиса.
Другой — проверку орфографии.
🤔 Когда использовать?
➖ Когда нужно добавить функционал без изменения кода объекта.
➖ Если у вас слишком много подклассов.
➖ Когда нужна гибкость в конфигурации объекта.
🔍 Что это?
Decorator — это структурный паттерн, который позволяет динамически добавлять объекту новую функциональность. Вместо создания бесконечных подклассов, вы оборачиваете объект в "декораторы".
🛠 Как это работает?
Представьте текстовый редактор:
Базовый объект — текст.
Один декоратор добавляет подсветку синтаксиса.
Другой — проверку орфографии.
IText plainText = new PlainText("Hello, world!");
IText highlightedText = new SyntaxHighlighter(plainText);
IText spellCheckedText = new SpellChecker(highlightedText);
Console.WriteLine(spellCheckedText.GetContent());
// [Spell Checked] [Syntax Highlighted] Hello, world!
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8
🔥 Деконструкция в C#: Упрощаем работу с данными!
🎯 Что это такое?
Деконструкция — это процесс, который позволяет «распаковывать» объекты или кортежи в отдельные переменные. Вместо того чтобы обращаться к свойствам объекта через точки, вы можете сразу извлечь нужные значения, что делает код чище и проще.
🛠 Деконструкция полезна, если:
Вы работаете с кортежами.
Вам нужно удобно разбирать собственные классы и структуры.
Вы хотите упростить сложные условия и логику в switch или LINQ-запросах.
📌 Почему это полезно?
1️⃣ Упрощение чтения кода: меньше обращений к свойствам объекта или методам.
2️⃣ Лаконичность: меньше лишнего кода и больше концентрации на логике.
3️⃣ Гибкость: можно кастомизировать деконструкцию под свои типы данных, добавляя поддержку через метод Deconstruct.
Пример:
🎯 Что это такое?
Деконструкция — это процесс, который позволяет «распаковывать» объекты или кортежи в отдельные переменные. Вместо того чтобы обращаться к свойствам объекта через точки, вы можете сразу извлечь нужные значения, что делает код чище и проще.
🛠 Деконструкция полезна, если:
Вы работаете с кортежами.
Вам нужно удобно разбирать собственные классы и структуры.
Вы хотите упростить сложные условия и логику в switch или LINQ-запросах.
📌 Почему это полезно?
Пример:
public class Person
{
public string Name { get; }
public int Age { get; }
public Person(string name, int age)
{
Name = name;
Age = age;
}
public void Deconstruct(out string name, out int age)
{
name = Name;
age = Age;
}
}
// Использование:
var person = new Person("Bob", 30);
var (name, age) = person;
Console.WriteLine($"Name: {name}, Age: {age}");
Please open Telegram to view this post
VIEW IN TELEGRAM
👍29🔥5❤1
🎯 Как модернизировать свои навыки C# разработчика?
В мире разработки технологии постоянно меняются, и чтобы оставаться востребованным, важно регулярно обновлять свои знания и навыки. В своём видео Тим Кори делится 4 способами улучшить навыки C# и 5 современными технологиями, которые стоит изучить каждому разработчику.
Что обсудили в видео? 🧑💻
4 способа улучшить навыки C#:
1️⃣ Узнавайте о новых функциях в .NET: новые версии появляются ежегодно — не упускайте возможности изучать их.
2️⃣ Учитесь оценивать производительность вашего кода, чтобы не только "работало", но и "работало эффективно".
3️⃣ Освойте минимальные API, чтобы создавать более чистые и производительные RESTful-сервисы.
4️⃣ Попробуйте Blazor для создания современных веб-приложений.
5 современных технологий для изучения:
1️⃣ DevOps: автоматизация процессов (CI/CD, GitHub Actions).
2️⃣ Современный SQL: оптимизация запросов для лучшей производительности.
3️⃣ Контейнеризация (Docker): упрощение разработки и тестирования.
4️⃣ HTML5 и CSS3: работа с современными веб-стандартами.
5️⃣ Azure: освоение облачных технологий, оптимизация затрат и масштабирование.
В мире разработки технологии постоянно меняются, и чтобы оставаться востребованным, важно регулярно обновлять свои знания и навыки. В своём видео Тим Кори делится 4 способами улучшить навыки C# и 5 современными технологиями, которые стоит изучить каждому разработчику.
Что обсудили в видео? 🧑💻
4 способа улучшить навыки C#:
5 современных технологий для изучения:
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🥱2
Почему null – это проблема?
Null в программировании изначально задумывался как универсальное значение, указывающее на отсутствие данных. Однако он стал одной из самых спорных концепций, которую со временем начали считать ошибкой на миллиард долларов. Почему?
❌ Неопределенность: наличие null требует постоянных проверок, иначе риск получить NullPointerException неизбежен.
❌ Усложнение кода: многочисленные проверки на null загрязняют код, делают его трудно читаемым и увеличивают вероятность ошибок.
❌ Хрупкость логики: неявное использование null часто приводит к неожиданным последствиям, особенно если null допускается в важных объектах или результатах функций.
❌ Проблемы совместимости: библиотеки и API с неконсистентной обработкой null добавляют еще больше путаницы.
Как избавиться от null? В статье автор делится двумя эффективными способами:
⚙️ Паттерн Null Object:
Вместо использования null создавайте дефолтные объекты с осмысленным поведением. Это избавляет от необходимости проверять, существует ли объект, и упрощает работу с ним. Например, вместо null у списка может быть пустой объект, который возвращает 0 для длины и ведет себя как настоящий список.
⚙️ Типы результатов:
Используйте обертки, такие как Result или Option, которые явно указывают на успех или неудачу операции. Например:
Такой подход заставляет разработчика обрабатывать оба сценария (успех или ошибка), снижая риск пропуска важных ситуаций.
Преимущества этих подходов:
➕ Код становится понятнее: каждое значение и операция предсказуемы.
➕ Меньше ошибок: нет неопределенности, связанной с null.
➕ Легче поддерживать: избавляясь от проверок на null, вы пишете чище и читаемее.
Null в программировании изначально задумывался как универсальное значение, указывающее на отсутствие данных. Однако он стал одной из самых спорных концепций, которую со временем начали считать ошибкой на миллиард долларов. Почему?
Как избавиться от null? В статье автор делится двумя эффективными способами:
Вместо использования null создавайте дефолтные объекты с осмысленным поведением. Это избавляет от необходимости проверять, существует ли объект, и упрощает работу с ним. Например, вместо null у списка может быть пустой объект, который возвращает 0 для длины и ведет себя как настоящий список.
Используйте обертки, такие как Result или Option, которые явно указывают на успех или неудачу операции. Например:
fun findUser(id: Int): Result<User, Error>
Такой подход заставляет разработчика обрабатывать оба сценария (успех или ошибка), снижая риск пропуска важных ситуаций.
Преимущества этих подходов:
Please open Telegram to view this post
VIEW IN TELEGRAM
👍20🥱6❤2🤔2
🛠 Неявно типизированные переменные в C#: зачем и как?
Введение ключевого слова var в C# начиная с версии 3.0 стало важным шагом для повышения удобства разработки. Оно позволяет компилятору автоматически определять тип переменной на основе присваиваемого значения. Но что это дает и как использовать правильно?
🤨 Проблемы явной типизации
Избыточность: указывать типы вручную иногда громоздко, особенно при работе с длинными типами, такими как Dictionary<int, List<string>>.
Сложность восприятия: избыточный код может отвлекать от сути логики, особенно в простых ситуациях.
Необходимость явного объявления: сложности возникают при работе с анонимными типами, где явное указание типа вообще невозможно.
❓ Что предлагает var?
Ключевое слово var позволяет объявить переменную, не указывая ее тип явно. Тип выводится компилятором на основе значения, присваиваемого переменной.
➕ Преимущества var
Лаконичность: код становится короче и проще, особенно при сложных типах.
Читаемость: в контексте, где тип очевиден, var улучшает восприятие кода.
Гибкость: работает с любыми типами, включая анонимные и динамические.
❗️ Рекомендации и ограничения
Не злоупотребляйте: если тип неочевиден, лучше указывать его явно, чтобы не снижать читаемость.
Инициализация обязательна: переменная с var должна быть сразу инициализирована.
Только для локальных переменных: var нельзя использовать для полей класса.
Введение ключевого слова var в C# начиная с версии 3.0 стало важным шагом для повышения удобства разработки. Оно позволяет компилятору автоматически определять тип переменной на основе присваиваемого значения. Но что это дает и как использовать правильно?
Избыточность: указывать типы вручную иногда громоздко, особенно при работе с длинными типами, такими как Dictionary<int, List<string>>.
Сложность восприятия: избыточный код может отвлекать от сути логики, особенно в простых ситуациях.
Необходимость явного объявления: сложности возникают при работе с анонимными типами, где явное указание типа вообще невозможно.
Ключевое слово var позволяет объявить переменную, не указывая ее тип явно. Тип выводится компилятором на основе значения, присваиваемого переменной.
var число = 42; // Компилятор определяет тип как int
var текст = "Привет, мир!"; // Тип: string
var список = new List<string>(); // Тип: List<string>
Лаконичность: код становится короче и проще, особенно при сложных типах.
Читаемость: в контексте, где тип очевиден, var улучшает восприятие кода.
Гибкость: работает с любыми типами, включая анонимные и динамические.
Не злоупотребляйте: если тип неочевиден, лучше указывать его явно, чтобы не снижать читаемость.
Инициализация обязательна: переменная с var должна быть сразу инициализирована.
Только для локальных переменных: var нельзя использовать для полей класса.
Please open Telegram to view this post
VIEW IN TELEGRAM
🥱16🤩3
Мир .NET продолжает развиваться, и 2024 год стал одним из самых насыщенных событий и обновлений в экосистеме. Официальный блог .NET подвёл итоги года, выделив наиболее значимые публикации и достижения. Вот основные темы, которые изменили ландшафт разработки на .NET.
Выпуск .NET 9 стал важным этапом, представив:
Команда .NET уделила огромное внимание производительности, внедрив более 1 000 изменений. Среди ключевых улучшений:
.NET сделал большой шаг навстречу искусственному интеллекту:
Новая версия языка C# предлагает:
В кроссплатформенной разработке тоже не обошлось без изменений:
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
Параллельная обработка данных стала ключевым аспектом современных приложений. Одним из простых способов реализации параллельности в C# является метод Parallel.For. Он позволяет запускать итерации цикла одновременно на нескольких ядрах процессора. Но всегда ли это лучший выбор? Давайте разберёмся.
Преимущества Parallel.For:
Когда Parallel.For не подходит:
Task Parallel Library (TPL) для асинхронных операций.
PLINQ (Parallel LINQ) для работы с коллекциями.
BackgroundWorker для фоновых задач.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15🥱12
Сертификат на обучение от Proglib Academy! Это крутой подарок для тех, кто интересуется IT, хочет освоить новую профессию
Почему наши курсы — хороший презент:
Сертификат оформляется за пару минут, и даже не нужно ломать голову над упаковкой.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🥱4
🛠 Продвинутый логинг в C# с использованием прокси
Если вам нужен мощный и элегантный способ добавления логирования в ваш проект на C#, то стоит обратить внимание на использование прокси. Такой подход описан в статье, и он открывает массу возможностей для гибкого логирования.
🤔 Что такое прокси?
Прокси — это объект, который находится между клиентом и целевым объектом. Они позволяют "перехватывать" вызовы методов, добавляя дополнительные действия. Например, логирование входных параметров, времени выполнения или результатов.
Использование прокси помогает:
💡 Отделить логику логирования от бизнес-логики.
💡 Минимизировать изменения в существующем коде.
💡 Упростить внедрение других кросс-функциональных задач, например, мониторинга.
Пример:
📌 Почему это круто?
Масштабируемость: логика легко адаптируется для больших приложений.
Отсутствие повторений кода: вы описываете перехват только один раз, а все классы наследуют эту логику.
Гибкость и наглядность: логирование можно добавлять, отключать или менять без изменения основной логики.
Если вам нужен мощный и элегантный способ добавления логирования в ваш проект на C#, то стоит обратить внимание на использование прокси. Такой подход описан в статье, и он открывает массу возможностей для гибкого логирования.
🤔 Что такое прокси?
Прокси — это объект, который находится между клиентом и целевым объектом. Они позволяют "перехватывать" вызовы методов, добавляя дополнительные действия. Например, логирование входных параметров, времени выполнения или результатов.
Использование прокси помогает:
Пример:
public void Intercept(IInvocation invocation)
{
Console.WriteLine($"[Log] Calling: {invocation.Method.Name}");
Console.WriteLine($"[Log] Arguments: {string.Join(", ", invocation.Arguments)}");
invocation.Proceed(); // Выполнение оригинального метода
Console.WriteLine($"[Log] Completed: {invocation.Method.Name}");
Console.WriteLine($"[Log] Result: {invocation.ReturnValue}");
}
Масштабируемость: логика легко адаптируется для больших приложений.
Отсутствие повторений кода: вы описываете перехват только один раз, а все классы наследуют эту логику.
Гибкость и наглядность: логирование можно добавлять, отключать или менять без изменения основной логики.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15🤔3🔥2🥱2❤1
🦑👨💻 Программист в «Игре в кальмара»: каковы твои шансы выжить?
Думаешь, что легко переживаешь дедлайны и код-ревью? 😏 А готов ли ты к реальному испытанию?
Пройди тест и узнай, какие у тебя шансы выжить в «Игре в кальмара» — самом беспощадном шоу на выживание! 🦑
🎯 Пройти тест
Думаешь, что легко переживаешь дедлайны и код-ревью? 😏 А готов ли ты к реальному испытанию?
Пройди тест и узнай, какие у тебя шансы выжить в «Игре в кальмара» — самом беспощадном шоу на выживание! 🦑
🎯 Пройти тест
👍5😁3👾1
🛠 Кастомный middleware в .NET Core: Расширяем функциональность приложения
Middleware — это ключевая часть обработки запросов в .NET Core. Создание своего middleware позволяет разработчикам адаптировать поведение приложения под конкретные задачи, такие как логирование, обработка ошибок или проверка безопасности.
🤔 Что такое middleware?
Middleware — это программные компоненты, которые обрабатывают запросы и ответы на пути их прохождения через HTTP-пайплайн. Каждый компонент может:
➖ Обрабатывать входящий запрос.
➖ Модифицировать ответ перед отправкой клиенту.
➖ Выполнять промежуточные задачи, например логирование или валидацию.
📌 Когда нужно создавать собственный middleware?
Обработка ошибок: например, возвращать структурированные JSON-ответы вместо стандартных сообщений.
Логирование: отслеживать запросы, ответы или время выполнения.
Кросс-функциональные задачи: например, добавление заголовков или проверки безопасности.
Оптимизация производительности: внедрение кэширования или минимизации нагрузки.
📎 Захотели сделать свой middleware? Статья вам поможет в этом!
Middleware — это ключевая часть обработки запросов в .NET Core. Создание своего middleware позволяет разработчикам адаптировать поведение приложения под конкретные задачи, такие как логирование, обработка ошибок или проверка безопасности.
🤔 Что такое middleware?
Middleware — это программные компоненты, которые обрабатывают запросы и ответы на пути их прохождения через HTTP-пайплайн. Каждый компонент может:
Обработка ошибок: например, возвращать структурированные JSON-ответы вместо стандартных сообщений.
Логирование: отслеживать запросы, ответы или время выполнения.
Кросс-функциональные задачи: например, добавление заголовков или проверки безопасности.
Оптимизация производительности: внедрение кэширования или минимизации нагрузки.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13🥱3
🔢 Проверка чисел Армстронга в C#: разные подходы и решения
Число Армстронга — это число, равное сумме своих цифр, возведенных в степень, равную количеству цифр. Например, 153 — это число Армстронга, потому что
(1 в степени 3) + (5 в степени 3) + (3 в степени 3) = 153.
💡 Числа Армстронга — отличный пример для изучения работы с алгоритмами, циклами и математическими операциями в C#. Это полезно для новичков, которые хотят углубиться в программирование, и для практического изучения таких технологий, как LINQ.
📌 Основные методы:
1️⃣ Цикл while:
Базовый подход, который итерирует по каждой цифре числа и суммирует ее степень.
2️⃣ Рекурсия:
Используется для разбиения задачи на более мелкие части.
3️⃣ LINQ:
Компактный и читабельный способ проверки.
Число Армстронга — это число, равное сумме своих цифр, возведенных в степень, равную количеству цифр. Например, 153 — это число Армстронга, потому что
(1 в степени 3) + (5 в степени 3) + (3 в степени 3) = 153.
Базовый подход, который итерирует по каждой цифре числа и суммирует ее степень.
int number = 153; // Пример
int result = 0, temp = number, digits = number.ToString().Length;
while (temp > 0) {
int remainder = temp % 10;
result += (int)Math.Pow(remainder, digits);
temp /= 10;
}
Console.WriteLine(result == number ? "Число Армстронга" : "Не число Армстронга");
Используется для разбиения задачи на более мелкие части.
static int SumOfPowers(int number, int digits) {
if (number == 0) return 0;
int digit = number % 10;
return (int)Math.Pow(digit, digits) + SumOfPowers(number / 10, digits);
}
Компактный и читабельный способ проверки.
int number = 153;
int digits = number.ToString().Length;
bool isArmstrong = number.ToString()
.Select(c => (int)Math.Pow(char.GetNumericValue(c), digits))
.Sum() == number;
Console.WriteLine(isArmstrong ? "Число Армстронга" : "Не число Армстронга");
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16🤩1🥱1
📎🎯 Создание современной документации API в ASP.NET Core с Scalar
Документация API — важная часть любого проекта. В статье рассказывается, как использовать Scalar для создания удобной и стильной документации для ASP.NET Core API.
❓Что такое Scalar?
Scalar — это альтернатива стандартному Swagger UI, предлагающая современный дизайн, улучшенную навигацию и поддержку аутентификации.
Как интегрировать Scalar?
⚙️ Установить пакет:
Через NuGet добавить Scalar.AspNetCore в проект.
⚙️ Настроить Scalar:
В Program.cs добавить маршрут для Scalar.
Настроить отображение документации с параметрами: заголовок, тема и т. д.
⚙️ Добавить безопасность:
Указать схему Bearer-токенов для аутентификации.
Настроить требования безопасности в AddSwaggerGen.
⚙️ Обновить стартовую страницу:
В LaunchSettings.json задать scalar/v1 в качестве стартового URL.
📎 За подробностями загляните в статью!
Документация API — важная часть любого проекта. В статье рассказывается, как использовать Scalar для создания удобной и стильной документации для ASP.NET Core API.
❓Что такое Scalar?
Scalar — это альтернатива стандартному Swagger UI, предлагающая современный дизайн, улучшенную навигацию и поддержку аутентификации.
Как интегрировать Scalar?
⚙️ Установить пакет:
Через NuGet добавить Scalar.AspNetCore в проект.
⚙️ Настроить Scalar:
В Program.cs добавить маршрут для Scalar.
Настроить отображение документации с параметрами: заголовок, тема и т. д.
⚙️ Добавить безопасность:
Указать схему Bearer-токенов для аутентификации.
Настроить требования безопасности в AddSwaggerGen.
⚙️ Обновить стартовую страницу:
В LaunchSettings.json задать scalar/v1 в качестве стартового URL.
📎 За подробностями загляните в статью!
👍15
Большие языковые модели (LLMs) чаще всего ассоциируются с облачными решениями, такими как OpenAI или Azure. Но что, если вам нужно запустить модель локально? Это может быть полезно для обеспечения конфиденциальности данных, экономии средств или работы в офлайн-среде. Именно здесь на помощь приходят Ollama и Semantic Kernel. Давайте разберём, как это работает.
Ollama — это инструмент, позволяющий запускать большие языковые модели локально, на вашем компьютере. Он минимизирует зависимость от облачных сервисов, обеспечивает защиту данных и позволяет вам полностью контролировать вычислительные ресурсы.
Semantic Kernel — это SDK от Microsoft, созданное для интеграции возможностей ИИ в приложения на .NET. Оно поддерживает работу с различными провайдерами LLMs, включая локальные серверы, такие как Ollama.
Как всё это работает?
Преимущества локального запуска
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🔥4
Фоновые службы — это важный компонент для выполнения задач, работающих параллельно с основным приложением. В .NET 8 интерфейс IHostedService предоставляет простой и гибкий способ управления такими службами. Вот как это работает.
Что делает IHostedService?
IHostedService используется для создания служб, которые запускаются при старте приложения и завершаются при его остановке. Он предоставляет два метода:
Как работает служба на основе времени?
Основная идея — это выполнение определённой задачи через регулярные промежутки времени, например:
Для реализации этого обычно используется таймер. Таймер запускается в методе StartAsync и выполняет задачу через указанные интервалы времени. Когда приложение останавливается, таймер отключается в методе StopAsync, чтобы избежать утечек памяти или нежелательной активности.
Для более подробной реализации с кодом и пошаговыми инструкциями рекомендуем ознакомиться со статьёй.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14🥱3🔥2
💻 Эффективное проектирование программных систем
Правильная архитектура программного обеспечения помогает создавать устойчивые и масштабируемые приложения, которые легко дорабатывать и поддерживать.
Наш интенсив «Архитектуры и шаблоны проектирования» научит вас строить программные системы без боли и стресса. Вы на практике освоите основные паттерны проектирования и прокачайте свои навыки архитектора программного обеспечения.
🎄Начните свой 2025 со скидкой 35% на все курсы. Это лучшее вложении уходящего года – https://proglib.io/w/cc21e069
Правильная архитектура программного обеспечения помогает создавать устойчивые и масштабируемые приложения, которые легко дорабатывать и поддерживать.
Наш интенсив «Архитектуры и шаблоны проектирования» научит вас строить программные системы без боли и стресса. Вы на практике освоите основные паттерны проектирования и прокачайте свои навыки архитектора программного обеспечения.
🎄Начните свой 2025 со скидкой 35% на все курсы. Это лучшее вложении уходящего года – https://proglib.io/w/cc21e069
👍2😁2❤1🥰1
📘 SkunkHTML: Генератор статичных сайтов
SkunkHTML — это инструмент, который позволяет легко и быстро создавать статичные веб-сайты из файлов Markdown, автоматизируя процесс генерации и развертывания. Он разработан на F#, что делает его не только функциональным, но и интересным примером использования этого языка.
🛠️ Как это работает?
1. Форкните репозиторий: SkunkHTML на GitHub.
2. Добавьте контент: создайте свои файлы Markdown в соответствующей папке.
3. Настройте GitHub Pages: включите автоматическое развертывание через GitHub Actions.
4. Наслаждайтесь готовым сайтом!
📎 Попробуйте сами!
#новость
SkunkHTML — это инструмент, который позволяет легко и быстро создавать статичные веб-сайты из файлов Markdown, автоматизируя процесс генерации и развертывания. Он разработан на F#, что делает его не только функциональным, но и интересным примером использования этого языка.
🛠️ Как это работает?
1. Форкните репозиторий: SkunkHTML на GitHub.
2. Добавьте контент: создайте свои файлы Markdown в соответствующей папке.
3. Настройте GitHub Pages: включите автоматическое развертывание через GitHub Actions.
4. Наслаждайтесь готовым сайтом!
📎 Попробуйте сами!
#новость
🤔3🎉2👍1
☁️ Размышления про абстракции
Недавняя статья поднимает важную тему — не каждая абстракция в программировании приносит пользу. Автор критикует «ложные абстракции» — те, что лишь добавляют уровни сложности, не скрывая внутреннюю сложность системы.
Основные мысли:
💭 Хорошая абстракция упрощает работу, скрывая сложные детали;
💭 Плохая абстракция лишь увеличивает количество слоев и усложняет понимание системы;
💭 Абстракции стоят дорого: они могут снижать производительность и усложнять сопровождение;
💭 Со временем даже хорошие абстракции могут начать «протекать», требуя знания внутренних механизмов.
✅ Прежде чем добавлять новый уровень, задайте себе вопрос: действительно ли это абстракция или просто очередной слой косвенности? Хорошая абстракция должна приносить реальную ценность, а не просто усложнять код.
Недавняя статья поднимает важную тему — не каждая абстракция в программировании приносит пользу. Автор критикует «ложные абстракции» — те, что лишь добавляют уровни сложности, не скрывая внутреннюю сложность системы.
Основные мысли:
💭 Хорошая абстракция упрощает работу, скрывая сложные детали;
💭 Плохая абстракция лишь увеличивает количество слоев и усложняет понимание системы;
💭 Абстракции стоят дорого: они могут снижать производительность и усложнять сопровождение;
💭 Со временем даже хорошие абстракции могут начать «протекать», требуя знания внутренних механизмов.
✅ Прежде чем добавлять новый уровень, задайте себе вопрос: действительно ли это абстракция или просто очередной слой косвенности? Хорошая абстракция должна приносить реальную ценность, а не просто усложнять код.
👍7🤔3