23284
Все самое полезное для C#-разработчика в одном канале. По рекламе: @proglib_adv Учиться у нас: https://proglib.io/w/b60af5a4 Для обратной связи: @proglibrary_feeedback_bot РКН: https://gosuslugi.ru/snet/67a5c81cdc130259d5b7fead
🌳 Основы деревьев выражений в .NET
Деревья выражений — одна из сложных тем в C#/.NET, которую необходимо понять. Они представляют код в виде древовидной структуры данных, где каждый узел является выражением (например, вызов метода, бинарная операция или константа). Они позволяют динамически создавать, исследовать и выполнять код во время выполнения.
Деревья выражений особенно полезны для создания динамического кода, анализа кода во время выполнения и для таких фреймворков, как LINQ to SQL и Entity Framework, для преобразования кода C# в SQL-запросы или других операций.
👉 Читать гайд
☝️ ADO .NET 🆚 Entity Framework 🆚 Dapper: показатели TechEmpower Fortunes 2023
А еще недавно разрыв между EF и Dapper составлял около 55%. Огромный толчок был сделан для сокращения данной цифры. Если кому-то интересно, вот тикет, охватывающий эту работу.
Привет, друзья! 👋
Мы готовим статью о распространенных ошибках в карьере программиста и хотели бы услышать ваше мнение! Поделитесь своими мыслями и опытом, и самые полезные советы мы включим в нашу статью.
Вот несколько вопросов для вас:
🤔 С какими ошибками в своей карьере программиста вы сталкивались? Как вы их преодолели?
📚 Какие советы вы бы дали начинающим разработчикам, чтобы избежать распространенных ловушек в программировании?
🖥️ Что, по вашему мнению, важно учитывать при планировании своей карьеры в IT, чтобы минимизировать сожаления в будущем?
Спасибо за ваше участие! 🚀
🎙101-й выпуск подкаста RadioDotNet про FrozenDictionary в деталях, Aspire для тестов, локальную БЯМ и многое другое
⏳ Таймкоды:
[00:02:50] — Getting started with testing and .NET Aspire
[00:13:40] — Заглядываем под капот FrozenDictionary
[00:37:00] — Run a Large Language Model (LLM) Locally With C#
[00:52:50] — Differences Between Onion and Clean Architecture
[01:02:10] — Avoid using enums in the domain layer
[01:14:48] — Подслушано
[01:16:00] — Кратко о разном
⏯ YouTube | Другие площадки
#подкасты
🤔 Как можно аннотировать основной конструктор атрибутом?
Ранее, если у записи/класса/структуры было несколько конструкторов, возникала проблема с десериализацией, так как необходимо было указать атрибут JsonConstructor в основном конструкторе.
Начиная с C# 12, можно использовать method attribute target для указания конструктора☝️
#dotnet #csharp #tip by Oleg Kyrylchuk
🤖 В июне команда .NET запустила первую бета-версию библиотеки OpenAI, что позволило разработчикам интегрировать продвинутые ИИ-модели в свои приложения. Несколько дней назад представлен релиз официальной библиотеки OpenAI для .NET. Этот выпуск гарантирует плавную и надежную интеграцию для разработчиков, работающих с OpenAI и Azure OpenAI в своих .NET- приложениях.
Основные фичи:
✔️ Упрощение интеграции новых моделей OpenAI в .NET-приложения (GPT-4o, GPT-4o mini, o1-preview и o1-mini).
✔️ Полная поддержка REST API OpenAI: включает Assistants v2 и Chat Completions для гибкого взаимодействия.
✔️ Расширяемость: библиотека спроектирована с учетом возможностей расширения, что позволяет сообществу создавать дополнительные библиотеки.
✔️ Синхронные и асинхронные API: предоставляют разработчикам гибкость в использовании синхронных или асинхронных моделей.
✔️ Доступ к streaming completions через IAsyncEnumerable<T>, что открывает новые динамичные модели взаимодействия.
✔️ Совместимость с .NET Standard 2.0: библиотека написана на C# и поддерживает все версии .NET, реализующие .NET Standard 2.0.
📖 Обзор книги «Грокаем алгоритмы», Адитья Бхаргава
Направление: #proglib_algorithms
Уровень: #proglib_junior
Автор применяет уникальный визуальный подход, с помощью которого объясняет базовые концепции, такие как сортировка, рекурсия, алгоритм Дейкстры, и многие другие. Благодаря большому количеству иллюстраций и практическим примерам, книга превращается в практическое руководство, особенно полезное для тех, кто только начинает своё знакомство с алгоритмами. Все примеры адаптированы под Python 3, что делает их актуальными для современных разработчиков.
💬 Что говорят люди:
Читатели восхищаются доступностью книги и тем, насколько легко автор объясняет сложные темы. Визуальный стиль делает её отличным стартом для изучения алгоритмов, хотя для опытных разработчиков книга может не предложить глубоких и сложных тем.
➕ Плюсы:
- Иллюстрации всё решают — если вам сложно понять текстовое объяснение, то более 400 наглядных схем точно помогут понять сложные алгоритмы.
- Понятно даже без математики — никакой сложной терминологии и математических уравнений. Бхаргава берёт сложные темы и объясняет их простым языком, делая алгоритмы доступными даже тем, кто не любит математику.
- Практичность на первом месте — каждый алгоритм сопровождается кодом на Python 3, что помогает сразу применять изученное в реальных задачах.
➖ Минусы:
- Для профи маловато огонька — опытные разработчики могут почувствовать нехватку более продвинутых и глубоких тем.
- Алгоритмы, которых не хватает — некоторые читатели отмечают, что в книге хотелось бы видеть больше сложных и интересных алгоритмов.
🖊 Об авторе:
Адитья Бхаргава — опытный инженер-программист с большим стажем работы в ведущих IT-компаниях. Он известен своим умением объяснять сложные технические темы простым и понятным языком, что делает его книги популярными среди программистов любого уровня.
Скидка 25% по промокоду: proglib
Купить книгу
😮 SQL: от Тетриса до ИИ — неожиданные возможности языка баз данных
Долгое время SQL использовали лишь для запросов и изменения записей в базах данных — для полноценного программирования в привычном смысле слова он не подходил. Однако добавление рекурсивных общих табличных выражений (CTE) сделало SQL полным по Тьюрингу. Рекурсивные CTE состоят из двух частей:
• Нерекурсивная часть (базовый случай) — создает начальные данные.
• Рекурсивная часть — может выполняться много раз, каждый раз используя результат предыдущего шага.
Благодаря CTE на SQL можно при желании реализовать любой алгоритм. Энтузиасты уже сделали:
• Визуализацию множества Мандельброта с помощью ASCII-графики.
• pallada-92/sql-3d-engine">3D-движок для рисования объемных фигур.
• GPT на 500 строках SQL-кода. Подробная статья о реализации этого проекта опубликована здесь.
• Трассировку лучей (это метод создания реалистичных изображений).
На прошлой неделе коллекция крутых SQL-проектов пополнилась еще одной интересной разработкой — версией «Тетриса».
Эта реализация демонстрирует несколько нестандартных SQL-техник, о которых стоит знать, даже если вы используете SQL только по прямому назначению:
• игровой цикл;
• вывод игры;
• пользовательский ввод;
• решение проблемы изоляции данных;
• предотвращение кэширования.
Для управления состоянием игры и обработки игровых событий используются подзапросы и агрегатные функции.
🔗 Подробнее читайте в статье
🔗 Зеркало
🥳 Новый формат .NET-решения .slnx теперь доступен в последней превью-версии Rider
Этот формат находится в режиме превью в Visual Studio, а теперь еще и в Rider. Кажется, с новым форматом улучшена читаемость и возможность слияния (mergeability). Выше — пример различий по сравнению с существующим форматом для простого решения.
#dotnet #csharp #tip by Dave Callan
🛠️ TUnit — современный, гибкий и быстрый фреймворк для тестирования проектов .NET 8+ с поддержкой приложений Native AOT и Trimmed Single File.
Фреймворк построен на базе Microsoft.Testing.Platform, в отличие от старой платформы VSTest. Поскольку инфраструктура за кулисами новая и другая, вам может потребоваться включить некоторые настройки.
👉 GitHub
🥜🔨 Динамическое программирование: как щелкать задачки, как орешки
Готов узнать, как решать задачки, от которых плавятся мозги?
⚒ Разработка веб-API CRUD с помощью Data API Builder и 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.
👉 Читать гайд
Привет, друзья! 👋
Мы хотим обсудить важную тему — токсичность в среде разработчиков и значимость поддержки и наставничества. Нам интересно узнать ваше мнение и опыт! Поделитесь своими мыслями, и самые полезные советы мы включим в нашу статью. Вот несколько вопросов для вас:
🤔 Приходилось ли вам сталкиваться с токсичными коллегами на работе? Как вы справлялись с этой ситуацией?
🌟 Какие качества вы считаете важными для хорошего наставника в IT-сфере?
💡 Какие советы вы бы дали тем, кто хочет создать более поддерживающую и позитивную рабочую атмосферу?
Спасибо за ваше участие! Ваши ответы помогут сделать рабочую среду лучше для всех. 🚀
👩💻 Совместное использование настроек сборки в нескольких .NET-проектах: на заметку C#-разработчику
#dotnet #csharp #tip by Dave Callan
🧑💻 Статьи для IT: как объяснять и распространять значимые идеи
Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.
Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.
Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.
👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
Опрос «Как вы учитесь с помощью телефона: поделитесь своим опытом!»
Дорогие подписчики, мы на миссии улучшений, и вы — наш ключ! 🔑
🧑💻 Статьи для IT: как объяснять и распространять значимые идеи
Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.
Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.
Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.
👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
Синхронизация двух мастер-баз кажется сложной задачей? Векторные часы предлагают простое решение. Этот подход обеспечивает согласованность данных в распределенных системах, повышая надежность и эффективность вашей IT-инфраструктуры.
👉 Статья
🐧 Тредпульное заклятие Dotnet-демонов на Linux
Все слышали о том, что иногда .NET на Linux потребляет больше ресурсов, чем на Windows. Порой эта разница практически незаметна. Но случается и такое, что одно и то же приложение потребляет на Linux в 2–3 раза больше CPU, чем на Windows.
Автор делится опытом, с которым столкнулся при миграции сервиса на Linux. Вы узнаете основные различия в примитивах синхронизации различных операционных систем и их влияние на приложение.
👉 Читать
🍇 Подборка лучших статей «Библиотеки программиста» за сентябрь: сохраняй в заметки, чтобы не пропустить #самыйсок
🔟🏩 ТОП-10 перспективных студий разработки: лучшие компании для вашего карьерного роста
🏗 3 основных шаблона событийно-ориентированной архитектуры
⚡️🔫 Секретное оружие бэкендера: 6 инструментов, о которых вы не знали
🥜🔨 Динамическое программирование: как щелкать задачки, как орешки
🎁 256-й день года: 15 подарков, которые оценит каждый программист
🛠 API-документация без головной боли: ТОП-11 инструментов
🤔FluentValidation: прекратите проверять правила при первой ошибке
По умолчанию он проверяет все правила и объединяет сообщения об ошибках. Более эффективно устанавливать CascadeMode либо на уровне класса, либо на уровне цепочки правил, особенно при использовании MustAsync и асинхронных операций.
#dotnet #csharp #tip by Saeed Esmaeelinejad
⚙️ Подпишись на нашу еженедельную email-рассылку, чтобы быть в курсе последних открытий и тенденций в мире бэкенда.
В еженедельных письмах ты найдешь:
● Языки программирования и фреймворки для бэкенда
● Архитектура и проектирование серверных приложений
● Базы данных и управление данными
● Безопасность и защита данных
● Облачные технологии и DevOps
● API и интеграции
● Тестирование и отладка
● Инструменты и утилиты для бэкенд-разработчиков
● Лучшие практики и паттерны проектирования
👉Подписаться👈
👩💻 Работа с tar-файлами в .NET 8
Еще в 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);
💻🔍💼 Кризис IT-рынка: как джуны и кадровый голод меняют правила игры
В условиях нехватки опытных специалистов и наплыва джунов, IT-компании вынуждены искать нестандартные подходы к найму. Рассмотрим основные тренды и стратегии адаптации рынка.
Читать статью
#почитать
🛤👾 Приключения с F# и Godot
Godot — игровой движок, который имеет нативную поддержку .NET. К сожалению, эта поддержка до такой степени заточена под C#, что F# она выходит боком. Автор делится опытом решения возникших проблем при работе с F# + Godot:
🟠An incursion under C#. Протаскиваем F# в Godot
🟠Шестидесятилетний заключённый и лабораторная крыса. F# на Godot. Часть 1. Встреча с фреймворком
🔥 Класс BinaryFormatter удален из .NET 9
У вас есть два варианта решения данной проблемы:
✔️ Мигрируйте с BinaryFormatter на другие решения. В руководстве по миграции перечислены несколько кейсов.
✔️ Продолжайте использовать BinaryFormatter в .NET 9, но в данном случае вам придется полагаться на неподдерживаемый NuGet-пакет System.Runtime.Serialization.Formatters.
👉 Подробнее
⚡️🔫 Секретное оружие бэкендера: 6 инструментов, о которых вы не знали
В новой статье рассказываем о шести малоизвестных, но невероятно мощных инструментах, которые превратят вас в настоящего супергероя бэкенд-разработки.
👉 Читать по этой ссылке
👩💻👩💻 CSnakes — инструмент для встраивания кода и библиотек на Python в ваше .NET-приложение (без необходимости в REST, HTTP или микросервисах). Упростите свои проекты в сфере data science.
👉 Подробнее
🔟🏩 ТОП-10 перспективных студий разработки: лучшие компании для вашего карьерного роста
Работа в аутсорсе — это как американские горки: пока одни видят в ней хаос и нестабильность, другие — возможность получить уникальный опыт и попробовать себя в разных ролях.
Однако устраиваться хоть в какую-нибудь студию, каких сейчас много — не лучшее решение, поскольку на старте бывают проблемы с финансированием и ни о какой стабильности не может быть и речи.
🔗 Читать статью
🔗 Зеркало
🎙Юбилейный выпуск подкаста RadioDotNet про неумолимый Performance, WebAssembly на Aspire, API под присмотром и многое другое
⏳ Таймкоды:
[00:03:00] — .NET 9 Release Candidate 1 is now available
[00:12:40] — WebAssembly Orchestrating with .NET Aspire
[00:20:25] — Performance Improvements in .NET 9
[00:49:10] — Preventing breaking changes in public APIs with PublicApiGenerator
[01:08:20] — Visual Studio 2022 17.12 Preview 2
[01:19:40] — Tales from the .NET Migration Trenches (Part 4)
[01:29:40] — Кратко о разном
⏯ YouTube | Другие площадки
#подкасты