Библиотека шарписта | 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
aspnet-core.pdf
142.1 KB
#холивар

Вы посоветовали бы данную дорожную карту для начинающих разработчиков .NET, которые осваивают ASP.NET Core? Или для тех, кто переходит с другого стека на .NET/ASP.NET Core? Если да, есть ли какие-то аспекты, которые можно убрать/добавить?
👍14
Весь август бесплатный IT-интенсив: алгоритмы и структуры данных

😱Мы пригласили несколько крупных разработчиков из Yandex, Sharechat и даже Meta*.

👉 Регистрируйтесь – https://proglib.io/w/62ce6c0e

Программа вебинаров на август:

🗓 уже прошел, отправим вам запись «NP-трудные задачи: почему их плохо решают».
🎙Спикер: Дмитрий Коротенко, ML specialist at Yandex.

🗓 22 августа, «Графы: алгоритмы и структуры данных на Python».
🎙Спикер: Иван Потапов, Staff machine learning engineer at Sharechat.

🗓 29 августа, «Собеседование на разработчика: разбор задач и ошибок».
🎙Спикер: Алексей Бочкарев, Engineering Manager at Meta*

👉Узнать подробнее и зарегистрироваться можно по ссылке: https://proglib.io/w/62ce6c0e

*Компания Meta признана в РФ экстремистской и запрещена
👍1
Трюки с производительностью от Daniel Marbach, которые он узнал в ходе участия в опенсорсных проектах .NET

Если вы хотите узнать, как оптимизировать свой код с точки зрения производительности, Daniel Marbach на NDC Oslo 2023 представляет полный набор кейсов, которые можно применить к вашему проекту. Все пруфы ищите в репозитории.

📺 Смотреть
👍6
#dotnet #csharp #codemaze #матчасть

📌 Подборка за две недели на Code Maze:

🔸Генераторы исходного кода в C#: основы и способы использования этой мощной функции для обеспечения динамической генерации кода во время компиляции, автоматизации повторяющихся задач и повышения производительности разработки.
🔸Value и Reference типы в C# — подробное руководство: кратко о сути и том, как ведет себя каждый тип при создании экземпляра, сравнении или присваивании.
🔸Методы сортировки List в C#: обзор различных методов сортировки на простых примерах.
🔸Расширение IdentityUser с помощью кастомных свойств в ASP.NET: простой способ расширить или полностью изменить классы, используемые Identity.
🔸Атрибут ModuleInitializer в C#: освежить в памяти, если пропустили одну из фич C# 9.
🔸Как настроить логирование файлов с помощью Serilog: как использовать Serilog, если вы хотите ограничивать размер и другие параметры файлов логов.
🔸Рефакторинг связанности кода в C#: как ее найти и исправить.
🔸Primary конструкторы для классов и структур: обзор новой фичи C# 12 и .NET 8, которая на текущий момент находится в стадии предварительной версии.
🔸Различия между оператором равенства (==) и методом Equals в C#: быстрый обзор на различных сценариях.
🔸Как программно определить версию .NET: может пригодиться для ведения журнала, отладки и других целей.
🔸Различия между Const и Readonly в C#: освежаем в памяти, если забыли.
👍12🔥51
Описание работы с несколькими репозиториями в рамках одного решения .NET

В статье описаны кейс из реальной практики: необходимо разработать сервис, состоящий из фронтенд/бэкенд приложений и NuGet-пакета для размещения общего кода. Каждый компонент .NET нужно было создать, протестировать и развернуть с помощью независимых пайплайнов CI/CD.

Оценив плюсы и минусы такого подхода в сравнении с конкретными требованиями проекта, команда остановилась на использовании нескольких репозиториев; каждый со своим собственным решением .NET и пайплайном деплоя. Один из репозиториев содержал общие модели данных и функциональные возможности в виде NuGet-пакета, на который можно ссылаться в других репозиториях.

Читайте подробнее, если хотите узнать достоинства/недостатки полученного решения и технические детали.
👍54
Наблюдения и размышления при написании юнит‑тестов с помощью ChatGPT: как использовать ChatGPT для генерации тестовых сценариев, формулировки вопросов о правильности кода и создания заглушек.

Читать
👍4
Взгляд на Sisk, альтернативный HTTP-сервер .NET

Sisk — легковесный C# веб-фреймворк с отрытым исходным кодом для быстрой и надежной разработки, который позволяет вам полностью контролировать то, что вы хотите делать.

Основное отличие от ASP.NET Core заключается в том, что Sisk можно настроить и запустить, написав всего несколько строк кода, избегая ненужных конфигураций и требуя минимальной настройки для работы вашего сервера.

Кроме того, для разработки не требуются дополнительные пакеты .NET SDK, ведь базового пакета .NET 6 достаточно, чтобы начать разработку с помощью Sisk. Вот небольшой обзор от Khalid Abuhakmeh с примерами👇

🔗 Читать
🥱6👍5
#dotnet #csharp #tip by Milan Jovanović

Switch expressions в действии: на заметку C#-разработчику.
👍39🥱27
Мок-библиотеки, такие как Moq, NSubstitute — популярный выбор, когда дело доходит до модульного тестирования. Они позволяют создавать поддельные объекты, которые можно использовать для замены зависимостей тестируемого класса.

Но в свете последних новостей вокруг Moq, неплохо было бы разобраться с созданием собственных поддельных объектов без использования сторонних библиотек. У Steven Giesel есть примеры и трезвый взгляд на достоинства/недостатки такого подхода👇

🔗 Читать
👍62
This media is not supported in your browser
VIEW IN TELEGRAM
🔊Демонстрационный аудиоплеер, под капотом у которого реализация Blazor wrapper для Web Audio API

Web Audio API стандартизирует методы обработки и синтеза аудио в веб-приложениях. Основной парадигмой является audio routing graph, где несколько объектов AudioNode соединены вместе, чтобы определить общий рендеринг аудио.

🔗 GitHub
👍183
🔍Насколько легко «войти в айти»?

IT — перспективная отрасль с высокими зарплатами и огромной конкуренцией. Собираем ваши истории: расскажите, как вам удалось сменить профессию (или сразу найти себя), какие шаги вы для этого предприняли и с какими сложностями пришлось столкнуться.

👉Пройдите наш 10-минутный опрос по ссылке.
3👍1
Базовая реализация работы с MassTransit: опыт команды Bimeister

MassTransit — open source фреймворк для .NET, который упрощает создание приложений и сервисов, использующих слабосвязанную асинхронную связь на основе сообщений для повышения доступности, надежности и масштабируемости.

Инструмент представляет собой шину сообщений, которая является абстракцией над большинством популярных брокеров сообщений (Azure Service Bus, RabbitMQ, Kafka), что позволяет разработчикам не тратить много времени на конкретную реализацию, а сосредоточиться на задачах функциональности.

🔗 Читать
👍84🔥2
#чтопроисходит

📌SpbDotNet #90

🌐 Михаил Руковишников | Фича-флаги. Практический пример реализации
🌐 Николай Пьяников | Pure.DI

📌DotNext 2022 Autumn: Architecture

🌐 Денис Цветцих | Rich Model и Anemic Model: враги или друзья
🌐 Андрей Парамонов, Антон Оникийчук | MediatR не нужен
🌐 Дмитрий Нестерук | Интересные подходы в реализации паттернов проектирования
🌐 Дмитрий Таболич | Думай как архитектор: майндшифт инженера
🌐 Андрей Цветцих | Zero-downtime deployment и базы данных

📌DotNext 2022 Autumn: Best practices

🌐 Александр Кузнецов | Введение в Microsoft SignalR
🌐 Игорь Шаталкин | Загадочный EF Core, или Как написать свое расширение
🌐 Алексей Авдеев (PVS-Studio) | Уязвимость регулярных выражений: теория и практика ReDoS-атак
🌐 Евгений Пешков | Алгоритмы троттлинга запросов
🌐 Игорь Лабутин | Что нового в .NET 7 и C# 11
🌐 Роман Неволин | Пишем приложения, которые не ломаются в продакшене
🌐 Гурий Самарин | Тестируем код, взаимодействующий с базой данных
🌐 Олег Сафонов | Пишем код, когда пишем код: source generator'ы
🌐 Анатолий Жмур | Пиши, как тиктокер, а не как дед. Новые конструкции языка C# в бою
🌐 Вагиф Абилов | Распределенный трейсинг OpenTelemetry вместо логирования всего подряд
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥134🤩3
☝️📺 Какой сетап у вас дома/на работе (можно выбрать два варианта)?
Anonymous Poll
36%
1
13%
2
50%
3
6%
4
8%
5
2%
6
3%
Другой (напишу в комментарии)
5👍3
Начать работу с подходом Entity Framework Database First с помощью CLI достаточно просто, но еще проще использовать расширение Visual Studio EF Core Power Tools.

1️⃣ Создаем простую БД
2️⃣ Используем модуль Reverse engineer в EF Core Power Tools
3️⃣ Включаем ведение логов в окне Debug
4️⃣ Выполняем простой запрос
9👍1
Ищем копирайтера

Нам нужен человек, который:
— Любит IT и русский язык.
— Понимает разницу между бэкендом и фронтендом, OWASP и MISRA, функциональным программированием и ООП, микроконтроллером и миникомпьютером, UX и UI.
— Имеет опыт работы от 1 года.
— Будет плюсом, если вы программируете на каком-нибудь языке на уровне стажера/джуна.

Что нужно делать:
— Готовить подборки, ТОПы книг, ютуб- и телеграм-каналов по языкам программирования.
— Делать расшифровки топовых Ютуб-роликов по теме программирования и оформлять их в виде статей.
— Готовить новостные заметки.
— Актуализировать старые статьи.
— Брать интервью у экспертов. Мы поможем с поиском экспертов.
— Иногда писать небольшие рекламные посты в телеграм.
— Писать статьи с кодом, переводить статьи (по желанию, оплачивается отдельно).

Можно использовать нейронки?
— Да, главное, чтобы материал получился интересный.

Условия:
— Белая зарплата: 50 000 руб.
— Возможность работать удаленно.

👉Присылайте свои резюме: hello@proglib.io
4
🤔Бесполезно, но весело: вы можете получить адрес управляемого объекта или создать ссылку, не используя небезопасный код, злоупотребляя дескрипторами GC.
👍22🤔54🤩4🥱1
Top_10_Performance_Optimization_Tips_for_C#_Developers_by_Alex_Maher.pdf
787.5 KB
🔥10 советов по оптимизации производительности для C#-разработчиков

Приводим их в оригинале, чтобы не упустить мысль автора:

1. Avoid Boxing and Unboxing
2. Use StringBuilder for String Concatenation
3. Leverage C#’s Lazy Initialization
4. Optimize Loops
5. Use Async/Await for I/O Operations
6. Avoid Exceptions in Normal Program Flow
7. Prefer ValueTypes Over ReferenceTypes
8. Cache Results of Expensive Computations
9. Be Mindful of Capturing in Lambdas
10. Use the ‘in’ Keyword for Read-Only Reference Parameters

🔗 Читать (pdf-файл для тех, у кого Medium не открывается)
👍14🤔3🌚1