Библиотека шарписта | 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
Вероятно, одна из наиболее впечатляющих особенностей C# 8.0 - Nullable Reference Types (NRT), которые служат для борьбы с Null Reference Exception (NRE)

Знакомимся подробнее с данной возможностью в статье.
Сервис Samples предоставляет примеры кода от Microsoft в одном месте

Здесь вы найдете лучшие практики написания кода от Microsoft, количество которых приближается к 1000. Присоединяйтесь.
Тестирование приложений актуально при разработке любого приложения, оно избавляет от непреднамеренных ошибок и может сэкономить множество ресурсов в будущем

Разбираемся с методами тестирования в .Net Core.
В связи с тем, что наша аудитория довольно разнообразна по уровню подготовки, стоит периодически вспоминать некоторые основы, которые для новичков станут чем-то новым, а для опытных будут хорошим напоминанием важных моментов. Так вот, сегодня продолжим тему работы с базами данных и остановимся на работе с Sql Server при разработке на C#.

Далее советуем рассмотреть статью, в которой описаны основы SQL Server Connection Pooling в ADO.NET - механизм, при котором в нашем распоряжении имеется некоторый набор («пул») соединений к базе данных. Когда новый пользователь запрашивает доступ к базе данных, ему выдаётся уже открытое соединение из этого пула. Если все открытые соединения уже заняты, создаётся новое. Как только пользователь освобождает одно из уже существующих соединений, оно становится доступно для других пользователей. Если соединение долго не используется, оно закрывается.
В преддверии Нового года хочется подвести некоторые итоги 2019 года, связанные с платформой .Net в целом и с языком C# в частности. В статье описано исследование рынка языков программирования и back-end фреймворков за 2019 год в сравнении с 2018 годом, представлены тренды .Net Core вакансий, и в общем рассказано, что ждет .Net платформу не только в следующем году, а до 2023 года (прогнозные данные). Релиз .Net 5 планируется уже на ноябрь 2020 года, на секундочку.
Вы знакомы с таким понятием, как система управления содержимым (CMS)? CMS представляет из себя ПО, используемое для обеспечения и организации совместного процесса создания, редактирования и управления содержимым (контентом).

Одной из самых популярных CMS является Wordpress, которая написана на языке PHP. Использование CMS в работе обусловлено тем, что вам не требуется писать веб-приложение (в частности, сайт) с нуля, а у вас уже есть какой-то каркас, который вы редактируете или пишите к нему модули. Сегодня мы познакомимся с наиболее популярными ASP.NET Core CMS с открытым исходным кодом.
Очень гибкий и расширяемый API веб-поиска (в качестве движка используется AngleSharp - .NET библиотека, которая парсит HTML, SVG, MathML и XML), с помощью которого вы можете:
- разработать свою собственную специализированную программу или библиотеку;
- разработать новый сервис для сообщества;
- показать результаты, связанные с пользовательским вводом в веб-приложении;
- накопить данные и сохранить их в базе данных для анализа;
- собрать данные и обработать их с помощью такого направления искусственного интеллекта, как обработка естественного языка (Natural Language Processing) или аналогичных технологий.
Судя по реакции на пост с подкастом, то вы одобряете такой формат подачи материала. Сегодня послушаем новогодний подкаст, который затрагивает основополагающие темы, связанные с .Net и языком C#, например: рейтинги ЯП, зарплаты .Net разработчиков, сложность и будущее C#8 и многое другое.
На основе материалов статьи мы сегодня разберемся с популярным паттерном «Спецификация» в .Net, который предоставляет возможность описывать требования к бизнес-объектам, и затем использовать их (и их композиции) для фильтрации, не дублируя запросы.
Несмотря на то, что мы уже рассматривали этапы создания .Net Core приложения с использование Docker, стоит вспомнить некоторые моменты (создание проекта с помощью CLI, конфигурация приложения, оборачивание в Docker) со стороны другого автора.

Затем давайте углубимся в практику и разберем основы работы с MongoDB в .NET Core приложении с использованием Docker.
Кроссплатформенная библиотека WebWindow - пример применения web-технологий для создания кроссплатформенных десктопных приложений на .NET Core

- Статья с описанием в блоге
- WebWindow на nuget.org
Предположим, что у нас множество потоков пытаются выполнить запись в переменную, а поток отчета должен читать ее значение в синхронизированном режиме. В таком случае на помощь приходит метод Interlocked.CompareExchange, позволяющий сравнить два значения и если они равны - заменить на требуемое, при этом, он делает это атомарно и возвращает значение, которое было сохранено ранее в этом месте.

Официальная документация
Уязвимости в процессе десериализации в последнее время не теряют свою актуальность, в том числе в .Net приложениях. Важно знать всем, поэтому сегодня знакомимся с настоящим и будущим данной уязвимости с помощью доклада Михаила Щербакова и в конце видео разбираемся с best practices в разработке приложений для избежания ошибок использования сериализаторов, а также рассматриваем подходы снижения рисков эксплуатации таких уязвимостей.

https://youtu.be/xOuaGzFGPG8
👍1
В эпоху микросервисов в любой момент может понадобиться создание собственных шаблонов приложений, служб, средств, библиотек классов, или использование уже доступных шаблонов. И .Net нам может в этом помочь: «dotnet new» и погнали 😎

- Список доступных шаблонов
- Мануал по созданию пользовательского шаблона
- Wiki по шаблонам
Что будет выведено на экран?

List<Action> actions = new List<Action>(); for(var count=0; count<10; count++) { actions.Add(() => Console.WriteLine(count)); } foreach(var action in actions) { action(); }
Anonymous Poll
34%
1) 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
43%
2) 10, 10, 10, 10, 10, 10, 10, 10, 10, 10
19%
3) Сгенерируется исключение
4%
4) 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0