Библиотека шарписта | 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
Качественный материал о switch-выражениях с использованием сопоставления с образцом: https://proglib.io/w/2c20b823
YARP — высокопроизводительный обратный прокси-сервер. Может служить механизмом балансировки нагрузки приложений / перезаписи правил, построенном как промежуточное программное обеспечение ASP.NET Core.

Ключевым отличием YARP является то, что его можно быстро и легко настраивать в соответствии с конкретными потребностями каждого сценария развертывания.

Preview 1
GitHub
​​Хочешь освоить интересную и современную профессию? Попробуй себя в геймдизайне! Научись создавать игровые миры с собственными законами и правилами, разрабатывать концепты своих идей и эффектно их презентовать.

Как это сделать, поговорим на бесплатном онлайн-интенсиве.
Регистрируйся по ссылке: ▶️ https://clc.to/G7J7oA.

⚡️ Познакомишься с ключевыми составляющими геймдизайна.
⚡️ На практике освоишь приёмы и основные механики.
⚡️ Научишься описывать свои идеи в реальные игровые концепты.
⚡️ Примешь участие в обсуждении живых примеров из игровой индустрии.
⚡️ Разработаешь собственный игровой сценарий.

Спикеры интенсива:
💣 Николай Дыбовский, руководитель студии Ice-Pick Lodge. 20 лет опыта в геймдизайне. Создатель игр «Мор», «Тургор», «Мор 2».
💣 Дмитрий Веснин, преподаватель курса по геймдизайну в Институте бизнеса и дизайна и курса по сторителлингу в интерактивных медиа в НИУ ВШЭ, куратор раздела «Игры и будущее» на 2×2.

Участников интенсива ждут подарки — 5 доступов к игре «Мор» (Pathologic 2) от компании Ice-Pick Lodge!
Addison_wesley_Microsoft_Technology_Krzysztof_Cwalina,_Jeremy_Barton.epub
37 MB
Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .Net Libraries (3 ed., 2020)

Автор(ы): Krzysztof Cwalina, Jeremy Barton, Brad Abrams

Третье издание было полностью пересмотрено, чтобы отразить изменения в дизайне API, внесенные компанией Microsoft, поэтому данная книга представляет собой своего рода руководство по новым концепциям .NET и C#, включая основные достижения в асинхронном программировании, облегченный доступ к памяти и распределение общих компонентов.

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

Книга является незаменимым ресурсом для всех, кто создает многократно используемые платформы, библиотеки или компоненты на основе .NET любого масштаба.
Действительно, программа не скомпилируется, потому что модификатор static в объявлении константы не допускается (так как уже неявно являются статическими). Константы предназначены для описания таких значений, которые не должны изменяться в программе.

Признаки, которыми характеризуются константы: константа должна быть проинициализирована при определении; после определения значение константы не может быть изменено.
На картинке показан принцип работы .NET async/await. Автор пошел дальше и описал опасность async/await в статье и изобразил на такой же понятной картинке: https://proglib.io/w/e2cb1c78
Обратите внимание на то, что метод Sum() ожидает поступления двух параметров типа int. На самом деле ему передаются две переменных типа short. Хотя это может показаться несоответствием типов, программа скомпилируется, выполнится без ошибок и вернёт в результате значение 25.

Причина, по которой компилятор будет считать данный код синтаксически корректным, связана с тем, что потеря данных здесь невозможна. Поскольку максимальное значение (32767), которое может содержать тип short, вполне вписывается в рамки диапазона типа int (максимальное значение которого составляет 2147483647), компилятор будет неявным образом расширять каждую переменную типа short до типа int. Формально термин «расширение» применяется для обозначения неявного восходящего приведения (upward cast), которое не приводит к потере данных.
Вы знаете, что Blazor WebAssembly 3.2.0 включает встроенную поддержку клиентских веб-сокетов (если не знали, то вот описание). Раньше, если вы хотели использовать веб-сокеты, вы должны были либо написать свою собственную оболочку, либо использовать большую библиотеку, такую ​​как SignalR, которая сделала обертку за вас. Однако вы не сможете использовать обычный класс System.Net.WebSockets.ClientWebSocket, встроенный в .NET.

Реализация ClientWebSocket в конечном итоге просто оборачивает JS-взаимодействие для вас, что значительно упрощает ваш код и удаляет сторонние библиотеки из вашего проекта.

По ссылке вы увидите пример класса, который использует ClientWebSocket в клиенте чата Blazor, где все аккуратно упаковано в новую функцию IAsyncEnumerable C # 8: https://proglib.io/w/9c0889e8
IoT, AI, and Blockchain for .NET.epub
12.9 MB
IoT, AI, and Blockchain for .NET
Building a Next-Generation Application from the Ground Up
(2018)

Автор(ы): Nishith Pathak, Anurag Bhandari

С помощью книги вы узнаете, как возможности искусственного интеллекта (AI) и машинного обучения (ML) могут быть расширены с помощью Интернета вещей (IoT) и защищены с помощью Blockchain.

В книге рассматриваются современные и простые в использовании API-интерфейсы и сервисы от Microsoft, в том числе Azure IoT, API-интерфейсы Cognitive Services, Blockchain как услуга (BaaS) и Machine Learning Studio.

Работая с книгой, вы получите практический опыт создания решения для умного медицинского учреждения, использующего все эти технологии. Размещенное в Azure и подключенное к сети с помощью IoT Azure, решение включает в себя централизованный мониторинг пациентов, где блокчейн используется для создания системы безопасности и управления запасами на основе доверия, а машинное обучение применяется для создания прогнозных решений для проактивного улучшения качества жизни.
Текстовая расшифровка и видеозапись доклада Егора Гришечко с конференции DotNext 2019 Moscow, который будет интересен и полезен разработчикам микросервисных систем, а также бэкенд-разработчикам, интересующимся метриками и мониторингом.

https://proglib.io/w/182895ab
Оператор или ключевое слово checked используется для явного включения проверки переполнения при выполнении арифметических операций и преобразований с данными целого типа.

Если требуется указать, что выражение будет проверяться на переполнение, следует использовать ключевое слово checked, а если требуется проигнорировать переполнение — ключевое слово unchecked. В последнем случае результат усекается, чтобы не выйти за пределы диапазона представления чисел для целевого типа выражения.

У ключевого слова checked имеются две общие формы: в первой проверяется конкретное выражение (операторная), а во второй проверяется блок операторов (блочная). Пример использования ключевого слова checked:

checked (выражение)
checked {
// проверяемые операторы
}


где выражение обозначает проверяемое выражение. Если вычисление проверяемого выражения приводит к переполнению, то генерируется исключение OverflowException.

Ключевое слово unchecked также имеет две общие формы: в первой переполнение игнорируется при вычислении конкретного выражения (операторная), а во второй оно игнорируется при выполнении блока операторов (блочная). Пример:

unchecked (выражение)
unchecked {
// операторы, для которых переполнение игнорируется
}


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