.NET дайджест #44: абсолютно осінній

Є музика, яка іноді дуже точно влучає у якусь життєву ситуацію. У пісні «Time» гурту Pink Floyd є такі рядки:

Tired of lying in the sunshine, staying home to watch the rain
And you are young, and life is long, and there is time to kill today
And then one day you find ten years have got behind you
No one told you when to run, you missed the starting gun
And you run and you run to catch up with the sun but it’s sinking
Racing around to come up behind you again
Sun is the same, in a relative way, but you’re older

Ці слова як ніколи доречно прийшли на думку, коли я взявся за підготовку нового дайджесту. Пройшов уже рік з моменту виходу попереднього, а я й не встиг озирнутися. Втім, хороший дайджест — як добре вино, має настоятися.

Якщо вам раптом цікаво, чому я так надовго зник з інформаційного простору DOU, можу сказати, що частково це було через роботу над книгою, деякі розділи якої вже зараз можна прочитати.

Про що я пишу? Звісно, про те, чим займаюся — про технології, про ІТ, про управління проєктами. Ділюся випадками з особистого досвіду і порадами, які охоче дав би собі самому, якби міг повернутися на десять-п’ятнадцять років назад.

Звісно, науковці ще не винайшли машину часу, але, враховуючи останні досягнення науки й техніки (наприклад, що Нобелівську премію з фізики вже вручають фахівцям у галузі нейронних мереж), думаю, це лише питання часу. Тож обов’язково прибережу кілька примірників, щоб відправити їх собі десь у 2009 рік!

Повертаючись до наших днів, хочу відзначити, що у світі .NET відбулося чимало хороших і цікавих подій. Вийшла у реліз і вже активно використовується багатьма нова LTS-версія — .NET 8, яка дозволяє створювати більш швидкі та легкі застосунки завдяки покращеній компіляції AOT та оптимізаціям JIT. Що особливо важливо для хмарних і мікросервісних рішень.

Blazor перетворився на єдиний вебфреймворк, який поєднує можливості рендерингу на стороні сервера та клієнта, а .NET MAUI остаточно замінив Xamarin.

Не можна оминути той факт, що Microsoft, як і інші IT-компанії, активно впроваджує штучний інтелект у всі свої продукти. Copilot з’явився в браузері Edge, офісному пакеті, Windows і навіть на порталі Azure, а команда ML.NET вже активно працює над четвертою версією.

Примітно, що тепер дуже складно розмежувати анонси, пов’язані зі штучним інтелектом і хмарними технологіями — під час підготовки матеріалів для цього дайджесту я часто губився, коли доводилося обирати, віднести анонс до розділу про AI чи до розділу про Azure.

Хмарні технології та інструменти штучного інтелекту зараз настільки тісно пов’язані, що розділити їх іноді просто неможливо. Схоже, нас чекає епоха, де межа між цими технологіями просто зникне.

А поки запрошую вас ознайомитися з найбільш цікавими анонсами та статтями!

.NET

Офіційні анонси та новини від Microsoft

  • Другий реліз-кандидат .NET 9 тепер доступний для тестування!
  • Повний запис конференції .NET Conf. Зосередьтеся на штучному інтелекті.
  • Microsoft офіційно передала до WineHQ проєкт Mono, який дозволяв використовувати .NET на macOS і Linux. Це сталося більш ніж через п’ять років після останнього великого релізу Mono.
  • Microsoft оголосила про видалення BinaryFormatter з .NET 9.
  • Детальний огляд сотень покращень продуктивності в новому випуску .NET 9!
  • Настав час оновити свої проєкти Windows Forms, щоб зробити їх швидшими та безпечнішими.
  • Помічник з оновлення .NET тепер дозволяє розробникам оновлювати проєкти для використання NuGet Central Package Management (CPM), що спрощує керування залежностями.
  • Команда .NET розповіла про процес інтеграції GitHub Copilot у Visual Studio з найперших кроків у 2021 році. Сьогодні Copilot забезпечує покращене доповнення коду на основі семантичного аналізу, генерації повідомлень та діагностики помилок, що допомагає розробникам працювати продуктивніше.
  • Величезна колекція контенту .NET Aspire від Microsoft Learn. Обов’язково додайте в закладки!
  • Марк Дауні, головний менеджер програм Microsoft, розповідає — як запускати та налагоджувати програми .NET на пристроях Arm64 за допомогою Visual Studio 2022.

Відео

Це відео показує, як спростити тестування локальних API на мобільних пристроях за допомогою тунелів розробника у Visual Studio 2022.

Відео про те, як використовувати MongoDB з EF Core в C#.

У цьому відео Пітер Семкін, один з розробників F#, ділиться досвідом своєї команди у підтримці та розвитку мови.

Стівен Тоуб і Скотт Хансельман говорять про створення та оптимізацію вашого власного ArrayPool і про те, як це може покращити продуктивність і управління пам’яттю у ваших додатках.

У цьому відео автор порівнює F# і Python і висвітлює деякі причини, чому ви можете обрати F# для свого наступного проєкту або корпоративної програми.

Корисно почитати

WebStorm і Rider тепер безплатні для некомерційного використання — JetBrains оголосила про безплатний доступ до своїх IDE WebStorm і Rider!

Чому код F# такий надійний і надійний? Стаття про те, чому код на F# є високонадійним і стабільним, і які особливості мови роблять це можливим.

ПОТРІБНА ПОРАДА: робота з двома розробниками, що все ще використовують C# 1.0 — На Reddit розробник поділився досвідом роботи з двома колегами, які досі працюють зі стандартами C# 1.0 і майже нічого не знають про сучасні методи розробки — навіть базових речей на кшталт SQL-ін’єкцій. І не використовують сучасні інструменти, такі як LINQ та дженерики. Чи були у вас подібні ситуації?

Запустіть велику мовну модель, як-от ChatGPT, локально за допомогою C# — у цій статті ви дізнаєтеся, як можна використовувати LLamaSharp для локального запуску великих мовних моделей.

Створення клієнта GraphQL в .NET за допомогою JetBrains Rider і StrawberryShake — багато команд використовують GraphQL для своїх API завдяки його потужній мові запитів і гнучкості. На відміну від традиційних REST API, GraphQL дозволяє отримати необхідні дані за одним запитом.

П’ять способів додати кешування до вашої ASP.NET-програми — ASP.NET Core пропонує кілька підходів до покращення продуктивності програми за допомогою кешування. У цій статті порівнюються деякі з них.

Функціональне програмування на .NET — найкраще з обох світів — на NDC Oslo 2024 Ісаак Абрахам розповів про те, як позбутися страхів перед функціональним програмуванням. Він розбирає прості практики, які роблять код чистішим і зрозумілішим, досліджує еволюцію C# і представляє F# та переваги, які він надає розробникам.

Реалізація алгоритму Blocked Floyd-Warshall для розв’язання задачі найкоротшого шляху всіх пар на C# — автор розглядає реалізацію алгоритму Флойда-Воршелла. Це алгоритм знаходження найкоротших шляхів у зваженому графі з додатними або негативними вагами ребер.

Як реалізувати мультиоренду в ASP.NET Core за допомогою EF Core — автор обговорює, як реалізувати архітектуру, яка дозволяє одному екземпляру програмного застосунку обслуговувати кілька клієнтів. Цей підхід зазвичай використовується в програмах «програмне забезпечення як послуга» (SaaS), коли кілька організацій або користувачів використовують одну й ту саму інфраструктуру застосунків, зберігаючи при цьому свої дані в безпеці.

Опис музичного домену за допомогою F# — у статті йдеться про створення програми, яка генерує музику, дотримуючись заздалегідь визначеного набору правил. Програмне забезпечення надає певний ступінь випадковості, щоб щоразу створювати унікальні мелодії, зберігаючи при цьому приємну звукову естетику.

.NET (C#) проти Fiber (Go): продуктивність (затримка — пропускна здатність — насиченість — доступність) — порівняння продуктивності C#/.NET і Go знову викликає гарячі дебати. У коментарях до цього відео можна знайти досить цікаві коментарі та ідеї.

Архітектура вертикальних зрізів: найкращі способи структурування вашого проєкту — у цій статті ви дізнаєтеся про архітектуру вертикальних зрізів, досвід автора та його рекомендації щодо того, як найкраще структурувати ваш код.

F# у тисячу разів виразніший, ніж JavaScript — цікавий експеримент провів Томаш Петричек, який вирішив перетворити свій код F# на JavaScript. Результати перевершили всі його очікування!

TUnit: сучасний, швидкий та гнучкий фреймворк для тестування .NET — ви знаєте про xUnit і, напевно, використовували NUnit. Але тепер настав час для TUnit! Чи зможе новий проєкт зайняти гідне місце в екосистемі .NET?

Дослідження керування пам’яттю: уявлення розробника .NET про Golang — автор досліджує особливості керування пам’яттю в .NET порівняно з Go.

Azure

  • Microsoft оголосила про зміну вартості сертифікаційних іспитів з 1 листопада 2024 року.
  • Microsoft і NVIDIA об’єднують зусилля, щоб спростити розробку застосунків на основі штучного інтелекту за допомогою платформ Azure AI та NVIDIA AI.
  • LinkedIn оголосив про перехід з операційної системи CentOS на Azure Linux.
  • Служба хмарних баз даних Oracle тепер доступна в шести регіонах Microsoft Azure, з планами розширення ще на п’ятнадцять регіонів!
  • Технічний директор Microsoft Azure Марк Руссинович заявив, що дата-центри хмарного гіганта в США наближаються до межі потужності електромереж. За його словами, подальше зростання та стійкість потребуватимуть кардинального переосмислення енергетичної інфраструктури та поглиблення співпраці з енергетичними компаніями.
  • Microsoft оголосила про доступність нових процесорів Cobalt 100 на основі архітектури ARM. Чіпи, побудовані за 5-нм технологією TSMC, оснащені 128 ядрами й призначені для різних типів віртуальних машин.
  • Також Microsoft оголосила про новий проєкт з відкритим вихідним кодом, який полегшує виявлення та реагування на зміни в складних системах та хмарній інфраструктурі.
  • Завдяки сервісам Azure AI кожен відвідувач новозеландського кінотеатру HyperCinema може отримати унікальний шанс відчути себе зіркою футболу!

Перегляньте запис заходу Azure Developers — .NET Aspire Day 2024, щоб дізнатися, як отримати максимальну віддачу від служб Azure у поєднанні з .NET Aspire.

AI

  • У цій статті обговорюється нова функція в Azure Quantum Development Kit, яка дає змогу поєднувати класичні та квантові обчислення в одному проєкті. Це робить розробку квантових алгоритмів простішою та зручнішою.
  • Microsoft представила нові моделі Hugging Face на базі платформи Azure AI.
  • Дослідники з Microsoft представили диференціальний трансформатор — інноваційну архітектуру, яка обіцяє змінити спосіб обробки та аналізу даних.
  • Microsoft додає доступні моделі штучного інтелекту до каталогу моделей Azure AI!
  • Вдосконалюйте свій штучний інтелект за допомогою нової моделі Phi від Azure, оптимізованого RAG і користувацьких генеративних моделей штучного інтелекту — все це тепер доступне для використання в Azure.
  • Ця стаття доступно пояснює, чому квантові обчислення важливі навіть для тих, хто ніколи не працював з квантовими комп’ютерами.
  • Як вища освіта переосмислює досвід студентів за допомогою Azure OpenAI Service — читайте у цій статті.
  • Перегляньте запис доповідей з Microsoft Research Forum — конференції, на якій виступають експерти та вчені.

Післямова

Сподіваюсь, що ви знайшли щось корисне для себе у цьому випуску. А щоб не пропустити нічого цікавого до виходу наступного, раджу слідкувати за новинами про .NET та Azure у нашому Telegram-каналі!

Підписуйтеся на Telegram-канал «DOU #tech», щоб не пропустити нові технічні статті

👍ПодобаєтьсяСподобалось7
До обраногоВ обраному0
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

> ви знаєте про xUnit і, напевно, використовували NUnit.
Жаль що я не знаю про це. Хотілося б почитати максимально простий приклад їх використання

Встановлення NUnit
Відкрийте ваш проєкт у Visual Studio.
Відкрийте Package Manager Console і виконайте команду для встановлення NUnit:
csharp
  Install-Package NUnit
Потім встановіть адаптер для NUnit, щоб Visual Studio могла запускати тести:
csharp
  Install-Package NUnit3TestAdapter
Створення простого тесту з NUnit
Припустимо, у вас є простий клас із методом, який потрібно протестувати. Ось приклад:

 public class Calculator { public int Add(int a, int b) { return a + b; } } 
Далі створимо клас тестів для цього Calculator:

 using NUnit.Framework; [TestFixture] public class CalculatorTests { [Test] public void Add_WhenCalled_ReturnsSumOfArguments() { // Arrange var calculator = new Calculator(); scss Copy code     // Act     int result = calculator.Add(2, 3);     // Assert     Assert.AreEqual(5, result); } } 

Пояснення коду:
[TestFixture]: Позначає клас як клас з тестами.
[Test]: Позначає метод як тест.
Assert: Використовується для перевірки результатів. У цьому випадку Assert.AreEqual перевіряє, чи дорівнює результат очікуваному значенню.
Запуск тестів у Visual Studio
Відкрийте вкладку Test Explorer (це можна зробити через меню Test → Test Explorer).
Ви побачите ваш тест у списку. Натисніть «Run All», щоб запустити всі тести.
Якщо тест пройшов успішно, ви побачите зелену позначку.

Мабуть для складної функціональності, де зачіпається багато змінних, яка міняє багато змінних і яка залежить від багатьох змінних це не буде працювати . Все таки це цікавий підхід, я його обов’язково спробую
> scss Copy code
Ойой

Підписатись на коментарі