🔐 Базовая аутентификация в ASP.NET Core Web API
Защита вашего API — задача №1 в современном мире. Один из самых простых способов это сделать — реализовать базовую аутентификацию. Давайте разберёмся, как это сделать в ASP.NET Core, не перегружая код сложными механизмами.
💡 Что такое аутентификация?
Представьте, что клиент (например, Postman, браузер или ваше мобильное приложение) отправляет запрос к вашему API. Вместе с этим запросом он передаёт свои логин и пароль в заголовке Authorization, закодированные в Base64. Сервер проверяет их и решает, пускать клиента дальше или нет.
Пример заголовка:
(Это просто логин username и пароль password, закодированные в Base64).
🛠 Как это работает?
1️⃣ Сервер видит запрос без заголовка авторизации и отвечает: 401 Unauthorized.
2️⃣ Клиент отправляет повторный запрос с закодированными учётными данными.
3️⃣ Сервер проверяет их и либо даёт доступ, либо отказывает.
✨ Как реализовать в ASP.NET Core?
1️⃣ Создайте проект ASP.NET Core Web API.
2️⃣ Посмотрите статью
3️⃣ Реализуйте!
Защита вашего API — задача №1 в современном мире. Один из самых простых способов это сделать — реализовать базовую аутентификацию. Давайте разберёмся, как это сделать в ASP.NET Core, не перегружая код сложными механизмами.
Представьте, что клиент (например, Postman, браузер или ваше мобильное приложение) отправляет запрос к вашему API. Вместе с этим запросом он передаёт свои логин и пароль в заголовке Authorization, закодированные в Base64. Сервер проверяет их и решает, пускать клиента дальше или нет.
Пример заголовка:
Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=
(Это просто логин username и пароль password, закодированные в Base64).
🛠 Как это работает?
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11🥱7❤2😢1
Forwarded from Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter
👔💼 Как ответить на собеседовании, почему вы уволились с прошлого места работы: 9 вариантов ответа
А также примеры того, как говорить точно не надо 🌚
👉Читать
А также примеры того, как говорить точно не надо 🌚
👉Читать
👍2
В современном веб-разработке одной из ключевых задач является обеспечение взаимодействия сервера и клиента в режиме реального времени. Среди технологий, которые позволяют достичь этой цели, выделяется Server-Sent Events (SSE). SSE — это стандартный способ однонаправленной передачи данных от сервера к клиенту через постоянное соединение. В отличие от WebSockets, SSE проще в настройке и использовании, так как работает поверх HTTP и подходит для задач, где требуется обновление данных только от сервера к клиенту.
SSE — это технология, позволяющая серверу отправлять данные на клиент через постоянное соединение. Клиент, подключаясь к серверу, получает поток событий, которые могут обновляться в реальном времени.
Преимущества SSE:
Основные сценарии использования:
Как реализовать SSE в ASP.NET?
Чтобы включить SSE в ваше приложение ASP.NET, нужно продумать три основные составляющие:
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11🤔8❤1💯1👾1
Самые полезные каналы для программистов в одной подборке!
Сохраняйте себе, чтобы не потерять 💾
🔥Для всех
Библиотека программиста — новости, статьи, досуг, фундаментальные темы
Книги для программистов
IT-мемы
Proglib Academy — тут мы рассказываем про обучение и курсы
Азбука айтишника — здесь мы познаем азы из мира программирования
🤖Про нейросети
Библиотека робототехники и беспилотников | Роботы, ИИ, интернет вещей
Библиотека нейрозвука | Транскрибация, синтез речи, ИИ-музыка
Библиотека нейротекста | ChatGPT, Gemini, Bing
Библиотека нейровидео | Sora AI, Runway ML, дипфейки
Библиотека нейрокартинок | Midjourney, DALL-E, Stable Diffusion
#️⃣C#
Книги для шарпистов | C#, .NET, F#
Библиотека шарписта — полезные статьи, новости и обучающие материалы по C#
Библиотека задач по C# — код, квизы и тесты
Библиотека собеса по C# — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Вакансии по C#, .NET, Unity Вакансии по PHP, Symfony, Laravel
☁️DevOps
Библиотека devops’а — полезные статьи, новости и обучающие материалы по DevOps
Вакансии по DevOps & SRE
Библиотека задач по DevOps — код, квизы и тесты
Библиотека собеса по DevOps — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
🐘PHP
Библиотека пхпшника — полезные статьи, новости и обучающие материалы по PHP
Вакансии по PHP, Symfony, Laravel
Библиотека PHP для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по PHP — код, квизы и тесты
🐍Python
Библиотека питониста — полезные статьи, новости и обучающие материалы по Python
Вакансии по питону, Django, Flask
Библиотека Python для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Python — код, квизы и тесты
☕Java
Книги для джавистов | Java
Библиотека джависта — полезные статьи по Java, новости и обучающие материалы
Библиотека Java для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Java — код, квизы и тесты
Вакансии для java-разработчиков
👾Data Science
Книги для дата сайентистов | Data Science
Библиотека Data Science — полезные статьи, новости и обучающие материалы по Data Science
Библиотека Data Science для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Data Science — код, квизы и тесты
Вакансии по Data Science, анализу данных, аналитике, искусственному интеллекту
🦫Go
Книги для Go разработчиков
Библиотека Go разработчика — полезные статьи, новости и обучающие материалы по Go
Библиотека Go для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Go — код, квизы и тесты
Вакансии по Go
🧠C++
Книги для C/C++ разработчиков
Библиотека C/C++ разработчика — полезные статьи, новости и обучающие материалы по C++
Библиотека C++ для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по C++ — код, квизы и тесты
Вакансии по C++
💻Другие каналы
Библиотека фронтендера
Библиотека мобильного разработчика
Библиотека хакера
Библиотека тестировщика
Вакансии по фронтенду, джаваскрипт, React, Angular, Vue
Вакансии для мобильных разработчиков
Вакансии по QA тестированию
InfoSec Jobs — вакансии по информационной безопасности
Библиотека разработчика игр | Gamedev, Unity, Unreal Engine
📁Чтобы добавить папку с нашими каналами, нажмите 👉сюда👈
Также у нас есть боты:
Бот с IT-вакансиями
Бот с мероприятиями в сфере IT
Мы в других соцсетях:
🔸VK
🔸YouTube
🔸Дзен
🔸Facebook *
🔸Instagram *
* Организация Meta запрещена на территории РФ
Сохраняйте себе, чтобы не потерять 💾
🔥Для всех
Библиотека программиста — новости, статьи, досуг, фундаментальные темы
Книги для программистов
IT-мемы
Proglib Academy — тут мы рассказываем про обучение и курсы
Азбука айтишника — здесь мы познаем азы из мира программирования
🤖Про нейросети
Библиотека робототехники и беспилотников | Роботы, ИИ, интернет вещей
Библиотека нейрозвука | Транскрибация, синтез речи, ИИ-музыка
Библиотека нейротекста | ChatGPT, Gemini, Bing
Библиотека нейровидео | Sora AI, Runway ML, дипфейки
Библиотека нейрокартинок | Midjourney, DALL-E, Stable Diffusion
#️⃣C#
Книги для шарпистов | C#, .NET, F#
Библиотека шарписта — полезные статьи, новости и обучающие материалы по C#
Библиотека задач по C# — код, квизы и тесты
Библиотека собеса по C# — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Вакансии по C#, .NET, Unity Вакансии по PHP, Symfony, Laravel
☁️DevOps
Библиотека devops’а — полезные статьи, новости и обучающие материалы по DevOps
Вакансии по DevOps & SRE
Библиотека задач по DevOps — код, квизы и тесты
Библиотека собеса по DevOps — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
🐘PHP
Библиотека пхпшника — полезные статьи, новости и обучающие материалы по PHP
Вакансии по PHP, Symfony, Laravel
Библиотека PHP для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по PHP — код, квизы и тесты
🐍Python
Библиотека питониста — полезные статьи, новости и обучающие материалы по Python
Вакансии по питону, Django, Flask
Библиотека Python для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Python — код, квизы и тесты
☕Java
Книги для джавистов | Java
Библиотека джависта — полезные статьи по Java, новости и обучающие материалы
Библиотека Java для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Java — код, квизы и тесты
Вакансии для java-разработчиков
👾Data Science
Книги для дата сайентистов | Data Science
Библиотека Data Science — полезные статьи, новости и обучающие материалы по Data Science
Библиотека Data Science для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Data Science — код, квизы и тесты
Вакансии по Data Science, анализу данных, аналитике, искусственному интеллекту
🦫Go
Книги для Go разработчиков
Библиотека Go разработчика — полезные статьи, новости и обучающие материалы по Go
Библиотека Go для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Go — код, квизы и тесты
Вакансии по Go
🧠C++
Книги для C/C++ разработчиков
Библиотека C/C++ разработчика — полезные статьи, новости и обучающие материалы по C++
Библиотека C++ для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по C++ — код, квизы и тесты
Вакансии по C++
💻Другие каналы
Библиотека фронтендера
Библиотека мобильного разработчика
Библиотека хакера
Библиотека тестировщика
Вакансии по фронтенду, джаваскрипт, React, Angular, Vue
Вакансии для мобильных разработчиков
Вакансии по QA тестированию
InfoSec Jobs — вакансии по информационной безопасности
Библиотека разработчика игр | Gamedev, Unity, Unreal Engine
📁Чтобы добавить папку с нашими каналами, нажмите 👉сюда👈
Также у нас есть боты:
Бот с IT-вакансиями
Бот с мероприятиями в сфере IT
Мы в других соцсетях:
🔸VK
🔸YouTube
🔸Дзен
🔸Facebook *
🔸Instagram *
* Организация Meta запрещена на территории РФ
Паттерн «Состояние» — это поведенческий паттерн проектирования, который позволяет объекту изменять своё поведение в зависимости от текущего состояния. Он помогает избежать большого количества условных операторов и делает код более читаемым, гибким и модульным.
Основные компоненты паттерна
Please open Telegram to view this post
VIEW IN TELEGRAM
👏11👍5
Fluent API — это стиль проектирования интерфейсов, который позволяет вызывать методы цепочкой, улучшая читаемость и удобство работы с кодом. В C# этот подход особенно популярен в таких библиотеках, как Entity Framework, FluentValidation и других.
Пример Fluent API
Представим, что мы хотим создать систему для построения SQL-запросов. Сначала сравним два подхода:
QueryBuilder queryBuilder = new QueryBuilder();
queryBuilder.Select("name", "age");
queryBuilder.Where("age > 18");
queryBuilder.OrderBy("name");
string query = queryBuilder.Build();;
string query = new QueryBuilder()
.Select("name", "age")
.Where("age > 18")
.OrderBy("name")
.Build();
Код с Fluent API выглядит как цепочка операций, что делает его более читаемым и похожим на естественный язык.
Преимущества Fluent API
Недостатки Fluent API
Please open Telegram to view this post
VIEW IN TELEGRAM
🥱11👍8👏4🤔2
Мы ищем участников для интервью на тему «Обучение навыкам в IT»!
Кто нам нужен?
Что вас ждет?
Участие в интервью по Zoom, которое займет не больше 45 минут.
Уникальный шанс пообщаться с нашим CEO!
Как откликнуться?
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3👍2🤔2
Как часто вы задумывались о том, какие размеры имеют окна на вашем экране? Для разработчиков, гейм-дизайнеров и дизайнеров интерфейсов это порой становится важным вопросом. Здесь на помощь приходит LiveWinSize — лёгкая утилита, которая делает измерение окон точным и быстрым.
Реальные размеры: помимо пикселей, вы можете видеть размеры в сантиметрах или дюймах.
Лёгкость: приложение весит всего 1,75 МБ.
Простота: минимальный интерфейс, всё, что нужно — запуск и информация о размере окна уже перед вами.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5
🧑💻 Статьи для IT: как объяснять и распространять значимые идеи
Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.
Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.
Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.
👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.
Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.
Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.
👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
🎉2👍1
🚀Как ускорить LINQ: полезные трюки
1️⃣ Избегайте повторной обработки коллекций
Повторный вызов методов LINQ, таких как Where, приводит к повторному перебору коллекции.
✅ Решение: кэшируйте результаты, если они используются несколько раз:
2️⃣ Используйте ForEach вместо Select, если результат не нужен
Использование Select для выполнения действий без необходимости возвращать коллекцию увеличивает накладные расходы.
✅ Решение: используйте ForEach для простого выполнения действий:
3️⃣ Избегайте использования Count для проверки на пустоту
Count перебирает всю коллекцию, что замедляет выполнение.
✅ Решение: используйте Any() вместо Count():
4️⃣ Параллельное выполнение (PLINQ)
Обработка больших коллекций может быть медленной.
✅ Решение: используйте PLINQ для параллельного выполнения:
5️⃣ Проекционная оптимизация (Select)
Извлечение всех данных, когда требуется только несколько полей.
✅ Решение: Используйте Select для выборки только необходимых данных:
6️⃣ Фильтрация перед проекцией
Проекция больших объёмов данных перед фильтрацией замедляет запрос.
✅ Решение: сначала фильтруйте, затем проецируйте:
🐸 Библиотека шарписта
#tip
Повторный вызов методов LINQ, таких как Where, приводит к повторному перебору коллекции.
var filtered = myCollection.Where(x => x.Age > 30).ToList(); // Выполняется один раз
var count = filtered.Count;
var average = filtered.Average(x => x.Salary);
Использование Select для выполнения действий без необходимости возвращать коллекцию увеличивает накладные расходы.
myCollection.ForEach(x => Console.WriteLine(x.Name));
Count перебирает всю коллекцию, что замедляет выполнение.
if (myCollection.Any()) // Быстрее, чем myCollection.Count > 0
Обработка больших коллекций может быть медленной.
var result = myCollection.AsParallel()
.Where(x => x.IsActive)
.ToList();
Извлечение всех данных, когда требуется только несколько полей.
var names = myCollection.Select(x => x.Name).ToList();
Проекция больших объёмов данных перед фильтрацией замедляет запрос.
var result = myCollection.Where(x => x.Age > 30)
.Select(x => x.Name)
.ToList();
#tip
Please open Telegram to view this post
VIEW IN TELEGRAM
👍26🥱19🎉3❤2⚡1
Microsoft выпустила обновление .NET 9.0.1, которое в первую очередь сфокусировано на устранении уязвимостей.
Вот ключевые моменты:
#новость
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13🤔2🎉1
Если вы ищете способ создавать распределённые, высокопроизводительные и отказоустойчивые приложения на платформе .NET, то Akka.NET — это инструмент, который стоит вашего внимания!
Что такое Akka.NET?
Akka.NET — это фреймворк, основанный на модели акторов (Actor Model). Он позволяет разработчикам легко работать с конкурентностью, параллелизмом и асинхронностью, избегая головной боли от многопоточности. Каждый «актор»" — это небольшая изолированная сущность, которая взаимодействует с другими через обмен сообщениями.
Почему Akka.NET?
🔄 Отказоустойчивость: приложение не упадёт из-за сбоя — акторы можно перезапустить или перенести.
📡 Распределённость: стройте приложения, которые работают на нескольких серверах или в облаке.
⚡️ Масштабируемость: akka.NET легко справляется с нагрузкой, увеличиваясь вместе с вашими задачами.
🛠 Интеграция с .NET: используйте привычный C# и экосистему .NET для построения сложных систем.
Чат-приложения: реальное время, тысячи пользователей.
Игровые серверы: управление игроками и состоянием мира.
Финансовые системы: обработка тысяч транзакций в секунду.
IoT: обработка данных от огромного числа устройств.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13👏4❤1
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥20
C# давно стал ключевым инструментом для создания корпоративных приложений, сложных API и облачных решений. В мире .NET задачи на LeetCode могут показаться странной тренировкой: вместо проектирования архитектуры вы решаете головоломки. Но так ли они бесполезны? Или в этом есть скрытая выгода?
Давайте разберемся, как алгоритмы и структуры данных соотносятся с реальной разработкой на C#.
❓Почему LeetCode может быть полезным инструментом для C#-разработчиков?
Практически каждая задача на LeetCode заставляет вас работать с массивами, списками и словарями – ключевыми инструментами C#. С помощью этих задач вы научитесь писать лаконичный и оптимальный код, использующий силу LINQ.
Решение задач на платформах вроде LeetCode требует строгого подхода: минимизации сложности, оптимизации потребления памяти и написания понятного кода.
Собеседования на позиции C#-разработчика в крупных компаниях, таких как Microsoft или Amazon, часто включают задачи на алгоритмы и структуры данных.
➖ Слишком далеко от реальных задач
В реальном мире вы скорее будете настраивать ASP.NET, работать с базами данных через Entity Framework или строить архитектуру приложений, а не искать кратчайший путь в графе.
➖ Недостаток контекста экосистемы .NET
Практика на LeetCode практически не затрагивает таких аспектов, как разработка облачных решений на Azure, работа с Blazor или настройка CI/CD.
➖ Риск упущенных возможностей
Вместо того чтобы часами разбираться с задачей на динамическое программирование, вы могли бы потратить это время на изучение новых возможностей языка, таких как record-типы, async/await или паттерн-матчинг.
Please open Telegram to view this post
VIEW IN TELEGRAM
💯11🥱9👍5❤1
В C# потоки управляются через класс Thread из пространства имен System.Threading. Поток проходит несколько этапов на протяжении своего жизненного цикла. Давайте разберём эти этапы.
Поток создан, но ещё не запущен. Он находится в этом состоянии сразу после инициализации объекта Thread, но до вызова метода Start().
Thread thread = new Thread(MyMethod);
// Поток создан, но не запущен
Поток начинает выполнение после вызова Start(). В этом состоянии поток выполняет код, переданный в качестве делегата.
thread.Start();
// Поток запущен и выполняется
Поток приостанавливается, ожидая выполнения какого-либо условия или ресурса. Это может быть вызвано методами:
Thread.Sleep() — поток "засыпает" на заданное время.
Monitor.Wait() или lock — поток ожидает захвата монитора.
Thread.Join() — поток ожидает завершения другого потока.
Thread.Sleep(1000);
// Поток приостановлен на 1 секунду
Поток заблокирован, пытаясь получить доступ к ресурсу, уже занятому другим потоком. Например, ожидание захвата блокировки через lock.
Поток завершает выполнение. Это состояние наступает, когда метод, выполняемый в потоке, завершает работу или вызывается метод Abort() (устарел и не рекомендуется использовать). Поток в этом состоянии больше нельзя запустить снова.
thread.Join();
// Основной поток ожидает завершения
Дополнительные состояния
Поток может быть фоновым, если свойство IsBackground установлено в true. Фоновые потоки завершаются автоматически, когда завершается основной поток приложения.
thread.IsBackground = true;
// Устанавливаем поток как фоновый
Метод Suspend() приостанавливал выполнение потока, но был удалён из новых версий .NET из-за возможных проблем с безопасностью.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍36❤2🌚2😢1