🚀💾⚡ Protocol Buffers: самая эффективная бинарная альтернатива текстовому формату
Protobuf — механизм бинарной сериализации данных, разработанный компанией Google. Протокол не зависит от языка и платформы, и обеспечивает более компактную и быструю сериализацию по сравнению с традиционными текстовыми форматами.
Особенно интересно, как решается проблема совместимости версий. Обо всем этом подробнее читайте в нашей статье👇
🔗 Читать статью
🔗 Зеркало
Protobuf — механизм бинарной сериализации данных, разработанный компанией Google. Протокол не зависит от языка и платформы, и обеспечивает более компактную и быструю сериализацию по сравнению с традиционными текстовыми форматами.
Особенно интересно, как решается проблема совместимости версий. Обо всем этом подробнее читайте в нашей статье👇
🔗 Читать статью
🔗 Зеркало
🔥 Кстати, Эндрю Лок добавил экспериментальную поддержку
Поддержка
👉 Подробнее
interceptors в пакет NetEscapades.EnumGeneratorsNetEscapades.EnumGenerators создает методы расширения для enums, позволяя быстро выполнять операции, аналогичные рефлексии. Поддержка
interceptors позволяет заменять вызовы ToString() и HasFlag(). Это требует .NET SDK версии 8.0.400 или выше. Interceptors можно включить, установив EnableEnumGeneratorInterceptor в файле проекта.dotnet add package NetEscapades.EnumGenerators --version 1.0.0-beta11
👉 Подробнее
🔀 Асинхронность — не баг, а фича: 4 паттерна, которые спасут ваш распределённый сервис
Представь, что ты отправляешь сообщение в мессенджере, а оно доходит с задержкой в минуту. Бесит? А теперь представь, что у тебя сервис с миллионами пользователей, и каждое их действие должно мгновенно отражаться везде. Звучит как кошмар? Спокойно, есть четыре проверенных способа решить эту головоломку, и они реально работают.
👉 Читать статью
Представь, что ты отправляешь сообщение в мессенджере, а оно доходит с задержкой в минуту. Бесит? А теперь представь, что у тебя сервис с миллионами пользователей, и каждое их действие должно мгновенно отражаться везде. Звучит как кошмар? Спокойно, есть четыре проверенных способа решить эту головоломку, и они реально работают.
👉 Читать статью
🕹️ Что нового в Unity 6? Обзор нововведений и ошибок в опенсорсных исходниках от команды PVS-Studio
Наконец, состоялся релиз Unity 6! Разработчики называют эту версию самой стабильной за всё время существования движка. Что ж, пришло время в этом убедиться:
◼️Что нового в Unity 6?
▫️Интеграция ИИ
▫️Расширение инструментария для создания многопользовательских проектов
▫️Оптимизация нагрузки на CPU
▫️Оптимизация нагрузки на GPU
▫️Улучшение качества рендеринга среды и многое другое
◼️Разбор новых ошибок в исходниках движка
Наконец, состоялся релиз Unity 6! Разработчики называют эту версию самой стабильной за всё время существования движка. Что ж, пришло время в этом убедиться:
◼️Что нового в Unity 6?
▫️Интеграция ИИ
▫️Расширение инструментария для создания многопользовательских проектов
▫️Оптимизация нагрузки на CPU
▫️Оптимизация нагрузки на GPU
▫️Улучшение качества рендеринга среды и многое другое
◼️Разбор новых ошибок в исходниках движка
Привет, друзья! 👋
Мы готовим статью о секретах мастерства в программировании и хотим узнать ваше мнение! 💻
Мы готовим статью о секретах мастерства в программировании и хотим узнать ваше мнение! 💻
⚒️ Microsoft.Extensions.VectorData.Abstractions — новая библиотека, которая предоставляет .NET-экосистеме абстракции для интеграции векторных хранилищ в приложения и библиотеки .NET.
🤔 Почему векторные хранилища?
Векторные базы данных важны для поиска и генерации ответов с помощью ИИ. Подобно тому, как реляционные и документоориентированные базы данных оптимизированы для работы со структурированными и частично структурированными данными, векторные базы данных созданы для эффективного хранения, индексирования и управления данными, представленными в виде векторов.
В результате алгоритмы индексирования, используемые векторными базами данных, оптимизированы для эффективного извлечения данных, которые могут быть использованы в ваших приложениях.
👉 Анонс предварительной версии библиотеки
🤔 Почему векторные хранилища?
Векторные базы данных важны для поиска и генерации ответов с помощью ИИ. Подобно тому, как реляционные и документоориентированные базы данных оптимизированы для работы со структурированными и частично структурированными данными, векторные базы данных созданы для эффективного хранения, индексирования и управления данными, представленными в виде векторов.
В результате алгоритмы индексирования, используемые векторными базами данных, оптимизированы для эффективного извлечения данных, которые могут быть использованы в ваших приложениях.
👉 Анонс предварительной версии библиотеки
📈 Исследование рынка .NET разработки: анализ текущих тенденций и прогнозы
.NET остается одной из ведущих платформ для разработки корпоративных приложений, особенно в России, где она используется как в крупных корпорациях, так и в малом бизнесе.
🤔 Но как на самом деле чувствует себя сообщество разработчиков?
Для того чтобы понять это, команда fuse8 опросила 300 российских .NET разработчиков и руководителей разработки. Читайте подробнее, что из этого получилось👇
🔗 Читать
.NET остается одной из ведущих платформ для разработки корпоративных приложений, особенно в России, где она используется как в крупных корпорациях, так и в малом бизнесе.
🤔 Но как на самом деле чувствует себя сообщество разработчиков?
Для того чтобы понять это, команда fuse8 опросила 300 российских .NET разработчиков и руководителей разработки. Читайте подробнее, что из этого получилось👇
🔗 Читать
🔐 🔑 OAuth 2: как работает современная авторизация
Помнишь кнопку «Войти через Google»? Та самая кнопка, которая избавляет от необходимости запоминать очередной пароль. Сегодня разберем, как работает эта магия изнутри, почему гиганты вроде Spotify и Medium используют такой способ входа, и как внедрить его в свое приложение. Спойлер: это проще, чем кажется, и гораздо безопаснее традиционной формы регистрации.
Читать статью
Помнишь кнопку «Войти через Google»? Та самая кнопка, которая избавляет от необходимости запоминать очередной пароль. Сегодня разберем, как работает эта магия изнутри, почему гиганты вроде Spotify и Medium используют такой способ входа, и как внедрить его в свое приложение. Спойлер: это проще, чем кажется, и гораздо безопаснее традиционной формы регистрации.
Читать статью
🎙 Сравнения Rust и C#, Minimal API и Controllers, Problem и Details: 103-й выпуск подкаста RadioDotNet
⏳ Таймкоды:
[00:01:50] — Provide opt-in to experimental APIs
[00:11:50] — Comparison of Rust's borrow checker to C#
[00:36:35] — Problem Details for ASP.NET Core APIs
[00:54:30] — Comparing performance between Minimal API and classic Controllers
[01:05:30] — API Error Messages for a Good Developer Experience
[01:19:15] — Книга «ASP.NET Core в действии 3» в правильном переводе
[01:22:55] — Кратко о разном
⏯️ YouTube | Другие площадки
#подкасты
⏳ Таймкоды:
[00:01:50] — Provide opt-in to experimental APIs
[00:11:50] — Comparison of Rust's borrow checker to C#
[00:36:35] — Problem Details for ASP.NET Core APIs
[00:54:30] — Comparing performance between Minimal API and classic Controllers
[01:05:30] — API Error Messages for a Good Developer Experience
[01:19:15] — Книга «ASP.NET Core в действии 3» в правильном переводе
[01:22:55] — Кратко о разном
⏯️ YouTube | Другие площадки
#подкасты
⚖️🛠️ EfCore.SchemaCompare — библиотека для сравнения модели базы данных EF Core со схемой базы данных
Если вы меняете схему базы данных вне системы миграций EF Core, например, с помощью SQL-скриптов, то эта библиотека может быстро сообщить, синхронизированы ли текущая схема базы данных и модель базы данных в EF Core.
👉 GitHub
Если вы меняете схему базы данных вне системы миграций EF Core, например, с помощью SQL-скриптов, то эта библиотека может быстро сообщить, синхронизированы ли текущая схема базы данных и модель базы данных в EF Core.
👉 GitHub
🔥 Cамые интересные улучшения в библиотеках, Runtime и SDK, представленные в .NET 9: статья Артёма Ровенского из PVS-Studio
◾️C# 13
◾️Производительность
◾️LINQ
▪️Новый тип OrderedDictionary
▪️Новый тип ReadOnlySet
▪️Новый тип Tensor
allows ref struct в библиотеках
▪️[GeneratedRegex] для свойств
◾️SDK
▪️Terminal Logger включён по умолчанию
▪️Параллельный запуск тестов
▪️NuGet Audit
▪️BuildCheck
▪️Workload history
◾️Runtime
▪️Feature switch
▪️Динамическая адаптация к размерам приложений (DATAS)
▪️Улучшение JIT
▪️Улучшения Register Allocator
👉 Читать
◾️C# 13
◾️Производительность
◾️LINQ
▪️Новый тип OrderedDictionary
▪️Новый тип ReadOnlySet
▪️Новый тип Tensor
allows ref struct в библиотеках
▪️[GeneratedRegex] для свойств
◾️SDK
▪️Terminal Logger включён по умолчанию
▪️Параллельный запуск тестов
▪️NuGet Audit
▪️BuildCheck
▪️Workload history
◾️Runtime
▪️Feature switch
▪️Динамическая адаптация к размерам приложений (DATAS)
▪️Улучшение JIT
▪️Улучшения Register Allocator
👉 Читать
🔥 Traversals: как из
Представьте, что у вас есть коллекция идентификаторов и метод, возвращающий асинхронный результат:
Если вы вызовете этот метод для всех элементов коллекции, вы получите
В качестве решения можно использовать Traversals. Они полезны, когда нужно менять порядок вложенных структур данных, что облегчает работу с асинхронными вычислениями и сложными вложенными типами. В .NET это особенно актуально при работе с Task.
👉 Подробнее
IEnumerable<Task<Foo>> сделать Task<IEnumerable<Foo>>Представьте, что у вас есть коллекция идентификаторов и метод, возвращающий асинхронный результат:
public static Task<Foo> Read(int id);
Если вы вызовете этот метод для всех элементов коллекции, вы получите
IEnumerable<Task<Foo>>. Однако работать с таким типом неудобно. Желаемый результат — это Task<IEnumerable<Foo>>. В качестве решения можно использовать Traversals. Они полезны, когда нужно менять порядок вложенных структур данных, что облегчает работу с асинхронными вычислениями и сложными вложенными типами. В .NET это особенно актуально при работе с Task.
👉 Подробнее