🛠️ 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
This media is not supported in your browser
VIEW IN TELEGRAM
😎 Тем временем до .NET Conf 2024 осталось меньше месяца. Программа очень насыщенная, поэтому добавляйте в календарь, чтобы не пропустить 📆
👉 Ознакомиться с программой
👉 Ознакомиться с программой
👾🎮 Инди-студия StarlightLabsCo закрылась, а разработчик и её основатель Харрис Ротаермель опубликовал исходный код своих проектов.
Студия специализировалась на разработке игр с применением моделей машинного обучения для NPC и генерации сценариев.
Ну а теперь все желающие могут улучшать эти проекты или разрабатывать на их основе новые. Команда PVS-Studio решила не оставаться в стороне и разобрала основные ошибки в кодовой базе. Под катом — краткий обзор👇
🔗 Читать
Студия специализировалась на разработке игр с применением моделей машинного обучения для NPC и генерации сценариев.
Ну а теперь все желающие могут улучшать эти проекты или разрабатывать на их основе новые. Команда PVS-Studio решила не оставаться в стороне и разобрала основные ошибки в кодовой базе. Под катом — краткий обзор👇
🔗 Читать
🤯 Ситуация:
Вам поступает задача, вы на глаз оцениваете ее в две недели и получаете одобрение по срокам. Сначала все идет хорошо, пилите проект и ничто не предвещает беды.
Со временем задача усложняется, потому что данные приходят с задержками и вразнобой. Вы не делитесь с руководителем своими трудностями, потому что тогда это можно посчитать за некомпетентность.
А когда приходит время сдачи работы, выясняется, что большинство работы сделано неправильно.
💬 Как думаете, как стоило поступить исполнителю?
Вам поступает задача, вы на глаз оцениваете ее в две недели и получаете одобрение по срокам. Сначала все идет хорошо, пилите проект и ничто не предвещает беды.
Со временем задача усложняется, потому что данные приходят с задержками и вразнобой. Вы не делитесь с руководителем своими трудностями, потому что тогда это можно посчитать за некомпетентность.
А когда приходит время сдачи работы, выясняется, что большинство работы сделано неправильно.
💬 Как думаете, как стоило поступить исполнителю?
🔥 Работа с паттерном result: серия статей для C#-разработчика от Эндрю Лока
🔸 Первая часть посвящена замене использования исключений для управления потоком выполнения на паттерн result. Это позволяет избежать ряда проблем, но часто добавляет лишний шаблонный код.
🔸 Вторая часть показывает, как с помощью синтаксиса LINQ можно уменьшить этот шаблонный код. В результате методы становятся проще для чтения, точно описывают возвращаемые значения без исключений и корректно обрабатывают ошибки на промежуточных этапах.
🔸 Первая часть посвящена замене использования исключений для управления потоком выполнения на паттерн result. Это позволяет избежать ряда проблем, но часто добавляет лишний шаблонный код.
🔸 Вторая часть показывает, как с помощью синтаксиса LINQ можно уменьшить этот шаблонный код. В результате методы становятся проще для чтения, точно описывают возвращаемые значения без исключений и корректно обрабатывают ошибки на промежуточных этапах.