Библиотека шарписта | C#, F#, .NET, ASP.NET
22.9K subscribers
2.26K photos
36 videos
85 files
4.43K links
Все самое полезное для C#-разработчика в одном канале.

По рекламе: @proglib_adv

Учиться у нас: https://proglib.io/w/b60af5a4

Для обратной связи: @proglibrary_feeedback_bot

РКН: https://gosuslugi.ru/snet/67a5c81cdc130259d5b7fead
Download Telegram
🧑‍🏫 Azure Solutions Architect Expert Certification Course (AZ 305)

🤘Десятичасовой курс по подготовке к сертификации Azure Solutions Architect Expert от freeCodeCamp. С помощью курса вы научитесь проектировать облачные и гибридные решения, которые работают в Azure.

📺 Смотреть
Please open Telegram to view this post
VIEW IN TELEGRAM
👏9👍4🔥3
💡Обработка глобальных ошибок в ASP.NET Core 8: по мотивам статьи Milan Jovanovic

Стандартный способ реализации обработки исключений в ASP.NET Core — использование middleware. Middleware позволяет добавлять логику до или после выполнения HTTP-запросов. Для реализации обработки исключений достаточно добавить оператор try-catch в middleware и возвращать ошибку HTTP-ответа.

ASP.NET Core 8 добавляет новую абстракцию IExceptionHandler для управления исключениями. Этот интерфейс имеет только один метод TryHandleAsync, который пытается обработать указанное исключение в рамках ASP.NET Core pipeline. Если исключение можно обработать, метод должен возвращать true, если нет — false. Это позволяет реализовывать кастомную логику обработки исключений для различных сценариев.

⚙️Для добавления реализации IExceptionHandler в пайплайн запросов ASP.NET Core необходимо сделать две вещи:

1. Зарегистрировать сервис IExceptionHandler с помощью DI.
2. Зарегистрировать ExceptionHandlerMiddleware в пайплайне запросов.

builder.Services.AddExceptionHandler<GlobalExceptionHandler>();
builder.Services.AddProblemDetails();


app.UseExceptionHandler();


Можно добавить несколько реализаций IExceptionHandler, и они будут вызываться в порядке регистрации. Это может быть полезно, например, при использовании исключений для управления потоком.

#dotnet #aspnet #tip by Milan Jovanovic
Please open Telegram to view this post
VIEW IN TELEGRAM
👍25🥰3👏2🤔21
🤔 String Interning: использовать или нет?

Очередные бенчмарки из реального проекта от Сергея Теплякова.

👉 Читать
Please open Telegram to view this post
VIEW IN TELEGRAM
13👏4🔥3🥰2
🎙 Подкаст DotNet & More: блокчейн на .NET на проде и не только

В прошлом выпуске ведущие говорили: «На .NET можно все». А как там дела с блокчейном?

🕘 Таймкоды:

00:00:00 Вступление
00:03:00 Что такое blockchain?
00:21:40 При чем тут .Net?
00:25:00 Чем отличается blockchain проект от обычных проектов?
00:31:00 Про stable coin?
00:41:40 Что такое smart contract?
00:46:30 Строим свой DotNetRu Coin на .Net
01:19:20 DotNetRu Coin: как убедить людей пользоваться нашей сетью
01:26:15 Архитектра криптобиржи
01:36:30 Что такое криптокошелек

⏯️ YouTube | Apple Подкасты | Google Подкасты | Яндекс Музыка

#подкасты
Please open Telegram to view this post
VIEW IN TELEGRAM
👏9👍5😁51🌚1
⚡️Подборка за неделю с Code Maze:

🔸 Как использовать Request Timeouts Middleware в ASP.NET Core: гайд по настройке тайм-аутов в .NET 8
🔸Как определить операционную систему в .NET Core: юзкейсы + практика
🔸Как прочитать тело запроса в веб-API ASP.NET Core: обзор различных подходов, их преимуществ и недостатков
🔸Local Functions в C#: лучшие практики использования и сравнение с лямбда-выражениями
🔸Insert & Return Identity с помощью Dapper: примеры работы с SCOPE_IDENTITY и OUTPUT INSERTED
🔸Паттерн «Гексагональная архитектура» на C#: структура, преимущества, недостатки и реализация на C#
🔸Как переключаться между версиями .NET SDK: гайд на случай, если вам понадобится переключить версию SDK

📌 Мини-серия статей по ML.NET

🔸ML.NET — введение в машинное обучение с помощью C#
🔸Что такое Model Builder и как его использовать в ML.NET
🔸Использование ML.NET CLI для автоматизации обучения модели
🔸Как использовать Automated Machine Learning API с ML.NET

#dotnet #dotnet8 #csharp #codemaze #матчасть
👍82🤔1
Самые полезные каналы для программистов в одной подборке!

Сохраняйте себе, чтобы не потерять 💾

🔥Для всех

Библиотека программиста — новости, статьи, досуг, фундаментальные темы
Книги для программистов
IT-мемы
Proglib Academy — тут мы рассказываем про обучение и курсы

#️⃣C#

Библиотека шарписта
Библиотека задач по C# — код, квизы и тесты
Библиотека собеса по C# — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Вакансии по C#, .NET, Unity Вакансии по PHP, Symfony, Laravel

☁️DevOps

Библиотека devops’а
Вакансии по DevOps & SRE
Библиотека задач по DevOps — код, квизы и тесты
Библиотека собеса по DevOps — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования

🐘PHP

Библиотека пхпшника
Вакансии по PHP, Symfony, Laravel
Библиотека PHP для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по PHP — код, квизы и тесты

🐍Python

Библиотека питониста
Вакансии по питону, Django, Flask
Библиотека Python для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Python — код, квизы и тесты

Java

Библиотека джависта — полезные статьи по Java, новости и обучающие материалы
Библиотека Java для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Java — код, квизы и тесты
Вакансии для java-разработчиков

👾Data Science

Библиотека Data Science — полезные статьи, новости и обучающие материалы
Библиотека Data Science для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Data Science — код, квизы и тесты
Вакансии по Data Science, анализу данных, аналитике, искусственному интеллекту

🦫Go

Библиотека Go разработчика — полезные статьи, новости и обучающие материалы по Go
Библиотека Go для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Go — код, квизы и тесты
Вакансии по Go

🧠C++

Библиотека C/C++ разработчика — полезные статьи, новости и обучающие материалы по C++
Библиотека C++ для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по C++ — код, квизы и тесты
Вакансии по C++

💻Другие профильные каналы

Библиотека фронтендера
Библиотека мобильного разработчика
Библиотека хакера
Библиотека тестировщика

💼Каналы с вакансиями

Вакансии по фронтенду, джаваскрипт, React, Angular, Vue
Вакансии для мобильных разработчиков
Вакансии по QA тестированию
InfoSec Jobs — вакансии по информационной безопасности

📁Чтобы добавить папку с нашими каналами, нажмите 👉сюда👈

🤖Также у нас есть боты:
Бот с IT-вакансиями
Бот с мероприятиями в сфере IT

Мы в других соцсетях:
🔸VK
🔸YouTube
🔸Дзен
🔸Facebook *
🔸Instagram *

* Организация Meta запрещена на территории РФ
👍104
🔐 Эволюция логирования в .NET 8: от [LogProperties] до защиты чувствительных данных

🤩 В последнее время в мире разработки на C# произошли значительные изменения, особенно в области логирования и обработки данных. Серия статей Эндрю Лока описывает комплексный подход к работе с логами в .NET 8.

Первая статья знакомит с атрибутом [LogProperties], который упрощает логирование дополнительного состояния в сообщениях логов. Это нововведение в .NET 8 позволяет легко включать все свойства объекта в лог, что делает процесс более интуитивным и удобным.

Вторая расширяет эту тему, представляя атрибуты [TagProvider] и ILogEnricher. Они позволяют обогащать логи дополнительной информацией, делая их более информативными и полезными для анализа и отладки. Это особенно важно в современных распределенных системах, где эффективное логирование играет ключевую роль в обеспечении надежности и отказоустойчивости.

Третья переносит нас в область безопасности и конфиденциальности, представляя пакет Microsoft.Extensions.Compliance.Redaction. Этот пакет предлагает эффективные средства для защиты чувствительных данных в логах.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥13👍10😁1
💡Как повысить производительность с помощью разделения запросов EF Core: по мотивам статьи Milan Jovanovic

Если у вас есть проблемы с производительностью LINQ-запросов, обратите внимание на новую фичу EF Core 5.0 под названием Query Splitting.

📌 Вызываем метод AsSplitQuery:

dbContext
.Orders
.Include(order => order.LineItems)
.ThenInclude(lineItem => lineItem.Dimensions)
.AsSplitQuery()
.First(order => order.Id == orderId);


В этом случае EF Core сгенерирует следующие SQL-запросы:

SELECT o.*
FROM Orders o
WHERE o.Id = @orderId;

SELECT li.*
FROM LineItems li
JOIN Orders o ON li.OrderId = o.Id
WHERE o.Id = @orderId;

SELECT d.*
FROM LineItemDimensions d
JOIN LineItems li ON d.LineItemId = li.Id
JOIN Orders o ON li.OrderId = o.Id
WHERE o.Id = @orderId;


Для каждого оператора Include у нас есть отдельный SQL-запрос. Преимущество в том, что мы не дублируем данные при извлечении из БД.

📌 Включаем разделение запросов для всех запросов:

services.AddDbContext<ApplicationDbContext>(options =>
options.UseSqlServer(
"CONNECTION_STRING",
o => o.UseQuerySplittingBehavior(
QuerySplittingBehavior.SplitQuery)));


Все создаваемые EF Core запросы будут разделенными. Чтобы вернуться к одному запросу, нужно вызвать метод AsSingleQuery:

dbContext
.Orders
.Include(o => o.LineItems)
.ThenInclude(li => li.Dimensions)
.AsSingleQuery()
.First(o => o.Id == orderId);


💡Важно знать

🔸Не существует гарантии согласованности для нескольких SQL-запросов. Вы можете столкнуться с проблемой, если одновременно с запросом происходит параллельное обновление.

🔸Чтобы смягчить это, вы можете обернуть запросы внутри транзакции, но это приведет только к проблемам с производительностью в других местах.

🔸Каждый запрос требует сетевого обращения. Если задержки при обращении к БД высоки, это может снизить производительность.

#dotnet #aspnet #tip by Milan Jovanovic
Please open Telegram to view this post
VIEW IN TELEGRAM
👍26🤔31
🧠Чему вы бы хотели научиться?

Расскажите нам о ваших пожеланиях: какие навыки вы хотели бы прокачать в ближайшее время или какую профессию хотели бы приобрести?

За прохождение опроса вы получите промокод на скидку 15% на все наши курсы до конца 2024 года.

👉Опрос по ссылке👈
🥱2👍1👏1😁1
🤷‍♂️ Никогда такого не было, и вот опять…

Опрос Российской ассоциации электронных коммуникаций говорит о снижении доходов IT-специалистов, тогда как те же аналитики hh.ru отмечают рост медианной зарплаты.

💬 А как поживают ваши доходы?

🥱 — упали, но незначительно
🙏 — упали сильно
🤩 — выросли
🤩88🥱47🙏24🤔13👍3
🤩 Изучайте .NET 8 с помощью новых видеоуроков для начинающих

Ранее мы публиковали серию новых плейлистов с видеоуроками, но здесь каждый из них кратко описан, чтобы вы могли подобрать для себя подходящий.

Вас ждут девять новых серий для начинающих по C#, .NET, генеративному ИИ, NuGet, Visual Studio, VS Code + C# Dev Kit, Blazor Hybrid, .NET IoT и обновлению .NET-приложений.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍123👏1