⚒ Разработка веб-API CRUD с помощью Data API Builder и EF Core Power Tools
Data API Builder позволяет создавать веб-API CRUD на основе файла конфигурации json, с подержкой REST и GraphQL. Этот кроссплатформенный инструмент также включает CLI для создания довольно сложного файла конфигурации.
Но даже создание команд в командной строке для предоставления доступа к существующей базе данных в качестве веб-API может быть сложным и чреватым ошибками.
Благодаря возможностям EF Core Power Tools по реверсу баз данных вы можете за считанные секунды создать эти операторы командной строки и запустить API с помощью команды
Что вам необходимо?
1️⃣ Существующая база данных Azure SQL, SQL Server, Postgres или MySQL, которую вы хотите использовать в качестве CRUD-API.
2️⃣ Проект Visual Studio 2022 для хранения файлов конфигурации в системе контроля версий.
3️⃣ Установленная последняя версия EF Core Power Tools.
👉 Читать гайд
Data API Builder позволяет создавать веб-API CRUD на основе файла конфигурации json, с подержкой REST и GraphQL. Этот кроссплатформенный инструмент также включает CLI для создания довольно сложного файла конфигурации.
Но даже создание команд в командной строке для предоставления доступа к существующей базе данных в качестве веб-API может быть сложным и чреватым ошибками.
Благодаря возможностям EF Core Power Tools по реверсу баз данных вы можете за считанные секунды создать эти операторы командной строки и запустить API с помощью команды
dab start.Что вам необходимо?
1️⃣ Существующая база данных Azure SQL, SQL Server, Postgres или MySQL, которую вы хотите использовать в качестве CRUD-API.
2️⃣ Проект Visual Studio 2022 для хранения файлов конфигурации в системе контроля версий.
3️⃣ Установленная последняя версия EF Core Power Tools.
👉 Читать гайд
🔥 Класс BinaryFormatter удален из .NET 9
У вас есть два варианта решения данной проблемы:
✔️ Мигрируйте с BinaryFormatter на другие решения. В руководстве по миграции перечислены несколько кейсов.
✔️ Продолжайте использовать BinaryFormatter в .NET 9, но в данном случае вам придется полагаться на неподдерживаемый NuGet-пакет System.Runtime.Serialization.Formatters.
👉 Подробнее
У вас есть два варианта решения данной проблемы:
✔️ Мигрируйте с BinaryFormatter на другие решения. В руководстве по миграции перечислены несколько кейсов.
✔️ Продолжайте использовать BinaryFormatter в .NET 9, но в данном случае вам придется полагаться на неподдерживаемый NuGet-пакет System.Runtime.Serialization.Formatters.
👉 Подробнее
Docs
BinaryFormatter migration guide - .NET
This guide covers the deprecation and removal of BinaryFormatter from .NET and recommends migration paths.
🛠️ TUnit — современный, гибкий и быстрый фреймворк для тестирования проектов .NET 8+ с поддержкой приложений Native AOT и Trimmed Single File.
Фреймворк построен на базе
👉 GitHub
Фреймворк построен на базе
Microsoft.Testing.Platform, в отличие от старой платформы VSTest. Поскольку инфраструктура за кулисами новая и другая, вам может потребоваться включить некоторые настройки.👉 GitHub
👩💻 Работа с tar-файлами в .NET 8
Еще в 2022 году .NET 7 получил поддержку для работы с tar файлами в базовой библиотеке классов.
Эндрю Лок как обычно во всем разобрался и описал, как выполнять некоторые базовые операции с tar-файлами, как он обычно использую CLI-утилиту tar и как вместо этого использовать встроенную в .NET поддержку.
👉 Читать
Еще в 2022 году .NET 7 получил поддержку для работы с tar файлами в базовой библиотеке классов.
Эндрю Лок как обычно во всем разобрался и описал, как выполнять некоторые базовые операции с tar-файлами, как он обычно использую CLI-утилиту tar и как вместо этого использовать встроенную в .NET поддержку.
using System.Formats.Tar;
using System.IO.Compression;
string sourceDir = "./my-files";
string outputFile = "./myarchive.tar.gz";
using FileStream fs = new(outputFile, FileMode.CreateNew, FileAccess.Write);
using GZipStream gz = new(fs, CompressionMode.Compress, leaveOpen: true);
TarFile.CreateFromDirectory(sourceDir, gz, includeBaseDirectory: false);
👉 Читать
🤯 Что вам помогает работать, когда устаете? Когда в отпуск ну вообще никак, а сил уже нет.
💬 Может быть, чтение отвлеченной литературы, спорт, дневной сон, прогулки, встречи с друзьями, что-то ещё?
#интерактив
💬 Может быть, чтение отвлеченной литературы, спорт, дневной сон, прогулки, встречи с друзьями, что-то ещё?
#интерактив
🪶 Как следовать принципу DRY при настройке Apache APISIX
DRY — один из самых известных принципов разработки ПО: он помогает избежать ненужного повторения фрагментов кода, которые выполняют одни и те же действия. DRY также стоит применять при настройке конфигурации сложных систем, поскольку этот принцип:
☑️ Делает конфигурацию более компактной и легкой для понимания.
☑️ Упрощает поддержку — когда нужно внести изменения, вы делаете это только в одном месте.
☑️ Повышает читаемость — конфигурация становится более структурированной и логичной, что облегчает ее понимание.
☑️ Улучшает масштабируемость — при усложнении конфигурации принципы DRY помогают сохранять ее управляемой и расширяемой.
☑️ Сокращает время на настройку — используя переиспользуемые компоненты, можно быстрее создавать новые конфигурации или модифицировать существующие.
В качестве примера в статье рассматриваем, как применять DRY при настройке конфигурации API-шлюза Apache APISIX.
🔗 Читать статью
🔗 Зеркало
DRY — один из самых известных принципов разработки ПО: он помогает избежать ненужного повторения фрагментов кода, которые выполняют одни и те же действия. DRY также стоит применять при настройке конфигурации сложных систем, поскольку этот принцип:
☑️ Делает конфигурацию более компактной и легкой для понимания.
☑️ Упрощает поддержку — когда нужно внести изменения, вы делаете это только в одном месте.
☑️ Повышает читаемость — конфигурация становится более структурированной и логичной, что облегчает ее понимание.
☑️ Улучшает масштабируемость — при усложнении конфигурации принципы DRY помогают сохранять ее управляемой и расширяемой.
☑️ Сокращает время на настройку — используя переиспользуемые компоненты, можно быстрее создавать новые конфигурации или модифицировать существующие.
В качестве примера в статье рассматриваем, как применять DRY при настройке конфигурации API-шлюза Apache APISIX.
🔗 Читать статью
🔗 Зеркало
⚙️ Разработка масштабируемого векторного расширения в .NET
Kunal Pathak, разработчик в JIT-команде .NET Runtime, рассказывает о внедрении поддержки Scalable Vector Extension (SVE) на процессорах Arm в .NET.
SVE — это технология, позволяющая обрабатывать данные в параллельных потоках с гибкой длиной векторов, что значительно повышает производительность приложений, таких как машинное обучение и научные вычисления.
Команда Microsoft интегрировала поддержку SVE в .NET как экспериментальную функцию, позволяя разработчикам писать высокопроизводительный код, который использует современные архитектуры. Особое внимание уделено вызовам векторов и предикатов в API .NET, что упрощает адаптацию к различным аппаратным конфигурациям.
👉 Подробнеее
Kunal Pathak, разработчик в JIT-команде .NET Runtime, рассказывает о внедрении поддержки Scalable Vector Extension (SVE) на процессорах Arm в .NET.
SVE — это технология, позволяющая обрабатывать данные в параллельных потоках с гибкой длиной векторов, что значительно повышает производительность приложений, таких как машинное обучение и научные вычисления.
Команда Microsoft интегрировала поддержку SVE в .NET как экспериментальную функцию, позволяя разработчикам писать высокопроизводительный код, который использует современные архитектуры. Особое внимание уделено вызовам векторов и предикатов в API .NET, что упрощает адаптацию к различным аппаратным конфигурациям.
👉 Подробнеее
⚒️ Fluent Assertions — .NET-библиотека, которая предназначена для более читабельного и удобного написания тестов. Она предоставляет методы для проверки ожидаемых значений в тестах с использованием синтаксиса, который делает код тестов более выразительным и понятным.
👉 GitHub & Сайт
var recipe = new RecipeBuilder()
.With(new IngredientBuilder().For("Milk").WithQuantity(200, Unit.Milliliters))
.Build();
Action action = () => recipe.AddIngredient("Milk", 100, Unit.Spoon);
action
.Should().Throw<RuleViolationException>()
.WithMessage("*change the unit of an existing ingredient*")
.And.Violations.Should().Contain(BusinessRule.CannotChangeIngredientQuantity);
👉 GitHub & Сайт
💬 А вы используете
В C# символ
Строка формата может содержать до трёх секций, разделённых точкой с запятой. Это позволяет настраивать отображение чисел в зависимости от их значения ☝️
; section separator в C#?В C# символ
; в строках форматирования чисел служит разделителем секций, каждая из которых применяется в зависимости от знака числа (положительное, отрицательное или ноль). Строка формата может содержать до трёх секций, разделённых точкой с запятой. Это позволяет настраивать отображение чисел в зависимости от их значения ☝️
🤔 Основы математики в Machine Learning / Deep Learning
🗓 16 октября мы разберем ряд Тейлора, собственные векторы и другие ключевые понятия в ML – https://proglib.io/w/f98345b3
Спикер: Иван Потапов – Staff Machine Learning Engineer at ShareChat. Руководит командой, отвечающей за качество рекомендаций, и имеет 8-летний опыт в сфере машинного обучения.
😮 Что будем обсуждать:
– Теорию вероятностей: случайные величины, математическое ожидание и дисперсию.
– Линейную алгебру: векторы, матрицы, собственные векторы и собственные значения.
– Математический анализ: производные и разложение функций в ряд Тейлора.
👨💻 А еще после каждого блока вас ждет практика в применении полученных знаний.
🎯 Почему это важно?
Понимание математических основ помогает глубже разобраться в работающих под капотом алгоритмах ML/DL и эффективно применять их на практике.
Присоединяйтесь к нам и совершенствуйте свои навыки в машинном обучении!
📌 Регистрация по ссылке: https://proglib.io/w/f98345b3
🗓 16 октября мы разберем ряд Тейлора, собственные векторы и другие ключевые понятия в ML – https://proglib.io/w/f98345b3
Спикер: Иван Потапов – Staff Machine Learning Engineer at ShareChat. Руководит командой, отвечающей за качество рекомендаций, и имеет 8-летний опыт в сфере машинного обучения.
😮 Что будем обсуждать:
– Теорию вероятностей: случайные величины, математическое ожидание и дисперсию.
– Линейную алгебру: векторы, матрицы, собственные векторы и собственные значения.
– Математический анализ: производные и разложение функций в ряд Тейлора.
👨💻 А еще после каждого блока вас ждет практика в применении полученных знаний.
🎯 Почему это важно?
Понимание математических основ помогает глубже разобраться в работающих под капотом алгоритмах ML/DL и эффективно применять их на практике.
Присоединяйтесь к нам и совершенствуйте свои навыки в машинном обучении!
📌 Регистрация по ссылке: https://proglib.io/w/f98345b3
🔒🔥 В .NET 9 появится новый тип
Отличный вариант для выделенного типа
#dotnet #tip by Steven Giesel
Lock()Отличный вариант для выделенного типа
lock, поскольку это дает нам способ более четко выразить намерение нашего кода. #dotnet #tip by Steven Giesel
🔥 Продвинутый C#: серия статей для начинающих
▪️ Intro
▪️ Delegates
▪️ Multicast Delegates
▪️ Anonymous Functions, and Lambdas
▪️ Understanding Action and Func
▪️ Events
▪️ Subscribing to Events
▪️ Passing Data into Event Handlers
▪️ Unsubscribing from Events
▪️ Operator Overloading
▪️ Extension Methods
▪️ Extension Methods Demo
▪️ Creating Reusable Extension Methods
▪️ Intro
▪️ Delegates
▪️ Multicast Delegates
▪️ Anonymous Functions, and Lambdas
▪️ Understanding Action and Func
▪️ Events
▪️ Subscribing to Events
▪️ Passing Data into Event Handlers
▪️ Unsubscribing from Events
▪️ Operator Overloading
▪️ Extension Methods
▪️ Extension Methods Demo
▪️ Creating Reusable Extension Methods