Метод FirstOrDefault в LINQ может стать источником путаницы. Он возвращает первый элемент последовательности или значение по умолчанию для типа, если элементов нет. Для ссылочных типов и Nullable<T> это null, а для значимых типов (например, int) — это их дефолтное значение (0, false и т.д.).
✏️ Например, вызов FirstOrDefault для пустого списка List<int> вернёт 0, что может быть неожиданно, если 0 имеет смысловое значение в вашем коде.
var numbers = new List<int> { };
var result = numbers.FirstOrDefault();
Console.WriteLine(result); // Вывод: 0
❗️Чтобы избежать ошибок, рекомендуется явно проверять коллекцию на пустоту перед вызовом метода или использовать DefaultIfEmpty, чтобы задать своё значение по умолчанию. Например:
var result = numbers.DefaultIfEmpty(null).FirstOrDefault();
Это гарантирует, что даже для пустой коллекции результат будет null, а не дефолтное значение типа. Такой подход делает код понятным и избавляет от скрытых проблем с обработкой "пустых" результатов.
#tip
Please open Telegram to view this post
VIEW IN TELEGRAM
👍69🥱8⚡3
🔢 Числовая сортировка строк в .NET
Спустя 10 лет дискуссий сообщество .NET наконец-то получит поддержку числовой сортировки строк. Теперь строки с числами, например "file2" и "file10", сортируются логично с учётом чисел. Это стало возможным благодаря новому флагу CompareOptions.NumericOrdering, добавленному в PR#109861. Вопрос впервые подняли ещё в 2015 году в issue#13979, и с тех пор разработчики искали безопасный и универсальный способ его решения.
🎉 Эта долгожданная функция будет доступна в будущих версиях .NET, улучшая работу со строками в файлах, версиях и других данных.
#новость
🐸 Библиотека шарписта
Спустя 10 лет дискуссий сообщество .NET наконец-то получит поддержку числовой сортировки строк. Теперь строки с числами, например "file2" и "file10", сортируются логично с учётом чисел. Это стало возможным благодаря новому флагу CompareOptions.NumericOrdering, добавленному в PR#109861. Вопрос впервые подняли ещё в 2015 году в issue#13979, и с тех пор разработчики искали безопасный и универсальный способ его решения.
#новость
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥41👍5❤1👏1😁1
❓Что такое gRPC?
gRPC — это фреймворк удаленных вызовов процедур, который использует HTTP/2 для передачи данных между приложениями. Он выделяется высокой производительностью благодаря бинарному формату Protocol Buffers.
🧑💻Реализация API
В статье из C#Corner пошагово описан процесс реализации API в .NET 8:
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12🥱3❤1
⚙️ Мини-гайд по реализации MFA в .NET
Многофакторная аутентификация (MFA) — это важный инструмент для повышения безопасности приложений. Она требует подтверждения личности пользователя через два или более независимых фактора, таких как пароль и одноразовый код из приложения-аутентификатора (например, Google Authenticator).
Как это работает:
➡️ Для каждого пользователя создается уникальный секретный ключ. Этот ключ используется для генерации одноразовых паролей (TOTP).
➡️ Секретный ключ кодируется в формате QR-кода. Пользователь сканирует этот код своим приложением-аутентификатором, чтобы настроить MFA.
➡️ После настройки приложение генерирует коды, которые действуют в течение ограниченного времени.
➡️ При входе в приложение пользователь вводит код из аутентификатора. Сервер проверяет его, сравнивая с тем, что должно быть сгенерировано для данного пользователя.
Основные этапы реализации в .NET:
1️⃣ Настройте библиотеку для работы с TOTP и генерации QR-кодов.
2️⃣ Реализуйте процесс генерации секретного ключа и сохранения в базе данных.
3️⃣ Организуйте валидацию кода на сервере при каждом входе.
📎 Пример реализации с кодом
🐸 Библиотека шарписта
Многофакторная аутентификация (MFA) — это важный инструмент для повышения безопасности приложений. Она требует подтверждения личности пользователя через два или более независимых фактора, таких как пароль и одноразовый код из приложения-аутентификатора (например, Google Authenticator).
Как это работает:
Основные этапы реализации в .NET:
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14
Please open Telegram to view this post
VIEW IN TELEGRAM
😁49🥰10👍5
💡 .NET MAUI и Blazor Hybrid предоставляют возможность использовать единую кодовую базу для создания приложений, работающих на мобильных устройствах, настольных системах и в вебе. Это решение для тех, кто хочет оптимизировать процесс разработки.
🎯 Чем это удобно?
• Переиспользование Razor-компонентов между вебом, мобильными и настольными приложениями.
• Единый стиль работы для разработчиков, знакомых с экосистемой .NET
Если вы хотите понять, как это работает на практике, рекомендуем ознакомиться с одной из статей, где подробно описывается процесс создания кроссплатформенного приложения на основе .NET MAUI и Blazor Hybrid.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4👾2🥱1
Предлагаем послушать авторский айти ремикс о нашем любимом C#! Без наездов на джавистов не обошлось.
🎧 Слушать
Please open Telegram to view this post
VIEW IN TELEGRAM
1👏10👍4🌚1
🌵🕵️♂️ Git-квест: 10 испытаний для повелителя репозиториев
Привет, шарписты! Вы пишете код, который собирается в проекты, покоряющие мир, но знаете ли вы, как не запушить .env в мастер? Этот тест — шанс доказать, что вы не только мастер LINQ, но и ветвлений в Git
✏️ Пройти тест
Привет, шарписты! Вы пишете код, который собирается в проекты, покоряющие мир, но знаете ли вы, как не запушить .env в мастер? Этот тест — шанс доказать, что вы не только мастер LINQ, но и ветвлений в Git
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14😁9👏1🥱1
Please open Telegram to view this post
VIEW IN TELEGRAM
😁12🥱2👍1
Недавно прошла трансляция «.NET Data Community Standup» , на которой эксперты обсудили ключевые подходы и инструменты для оптимизации работы с данными в .NET.
🔉 Что обсудили?
• Рассказали, как эффективно управлять контекстами данных в .NET.
• Обсуждали оптимизацию ресурсов, улучшение производительности приложений и типичные случаи использования пуллинга.
• Объяснили, как использовать необработанные SQL-запросы в Entity Framework.
• Разобрали, когда FromSql может быть полезен, а когда его лучше избегать.
• Показали, как предварительная компиляция запросов снижает накладные расходы.
• Поделились примерами, где скомпилированные запросы позволяют ускорить повторное выполнение запросов.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤12👍2
С Новым годом и Годом Змеи! 🐍 Пусть этот год принесет вам успех, рост и меньше усилий для достижения больших целей. Мы в Proglib Academy пришли с хорошими новостями в начале года.
🌟 Обновления курсов!
Мы работаем над тем, чтобы ваше обучение было проще и эффективнее. Вот что мы уже улучшили:
📈 Data Science: улучшили блок «Геометрическая прогрессия и векторная алгебра» — ключевой этап курса, который идет сразу после теории множеств.
Он закладывает фундамент для работы с данными: от анализа роста и убывания величин (геометрическая прогрессия) до понимания многомерных пространств и операций с векторами. Знания которых пригодятся в машинном обучения и аналитики.
🐍 Python: обновили курс с учетом последней версии Python 3.9.5, добавив актуальные материалы и улучшив структуру. Чтобы вы могли лучше закрепить пройденный материал, мы добавили новые интересные задачи и практические примеры.
Учебный процесс стал еще удобнее и эффективнее, а вы сможете быстрее освоить современные инструменты и техники программирования
Общие обновления:
- Перезаписали демо-курсы и презентации. Чтобы вы точно одурели с этой прикормки.
- Сократили время проверки домашних заданий, ответы теперь приходят быстрее.
- Видео теперь без перекрытий, презентации стали четче, а задания логичнее.
Но главное — мы растем для вас и с вами. Ваша обратная связь помогает нам становиться лучше. Делитесь идеями, и вместе мы создадим лучший образовательный продукт для вас!
💡 С 27.01.25 цены изменятся на 10%.
Пример: Математика для DS (Базовый): 20,990 → 23,090 ₽. Это позволяет нам делать курсы еще круче.
Давайте сделаем 2025 год годом вашего профессионального успеха! 🚀
Выбрать курс
🌟 Обновления курсов!
Мы работаем над тем, чтобы ваше обучение было проще и эффективнее. Вот что мы уже улучшили:
📈 Data Science: улучшили блок «Геометрическая прогрессия и векторная алгебра» — ключевой этап курса, который идет сразу после теории множеств.
Он закладывает фундамент для работы с данными: от анализа роста и убывания величин (геометрическая прогрессия) до понимания многомерных пространств и операций с векторами. Знания которых пригодятся в машинном обучения и аналитики.
🐍 Python: обновили курс с учетом последней версии Python 3.9.5, добавив актуальные материалы и улучшив структуру. Чтобы вы могли лучше закрепить пройденный материал, мы добавили новые интересные задачи и практические примеры.
Учебный процесс стал еще удобнее и эффективнее, а вы сможете быстрее освоить современные инструменты и техники программирования
Общие обновления:
- Перезаписали демо-курсы и презентации. Чтобы вы точно одурели с этой прикормки.
- Сократили время проверки домашних заданий, ответы теперь приходят быстрее.
- Видео теперь без перекрытий, презентации стали четче, а задания логичнее.
Но главное — мы растем для вас и с вами. Ваша обратная связь помогает нам становиться лучше. Делитесь идеями, и вместе мы создадим лучший образовательный продукт для вас!
💡 С 27.01.25 цены изменятся на 10%.
Пример: Математика для DS (Базовый): 20,990 → 23,090 ₽. Это позволяет нам делать курсы еще круче.
Давайте сделаем 2025 год годом вашего профессионального успеха! 🚀
Выбрать курс
❤2👍1👾1
⚡️ Автоматическая регистрация зависимостей в C#
Scrutor — это библиотека для упрощения регистрации зависимостей в контейнере инверсии управления (IoC) Microsoft.Extensions.DependencyInjection. Она позволяет автоматически сканировать сборки и регистрировать классы по заданным правилам, избавляя от необходимости вручную прописывать каждую зависимость.
💻 Пример использования
С помощью Scrutor можно зарегистрировать все классы в сборке, реализующие интерфейсы, в несколько строк:
💡 Основные возможности
• Автоматическая регистрация классов.
• Фильтрация классов по правилам (например, по имени или пространству имён).
• Настройка времени жизни (Transient, Scoped, Singleton).
• Регистрация классов с пользовательскими интерфейсами или без них.
📎 GitHub библиотеки
🐸 Библиотека шарписта
Scrutor — это библиотека для упрощения регистрации зависимостей в контейнере инверсии управления (IoC) Microsoft.Extensions.DependencyInjection. Она позволяет автоматически сканировать сборки и регистрировать классы по заданным правилам, избавляя от необходимости вручную прописывать каждую зависимость.
💻 Пример использования
С помощью Scrutor можно зарегистрировать все классы в сборке, реализующие интерфейсы, в несколько строк:
services.Scan(scan => scan
.FromAssemblyOf<Startup>() // Сканирование текущей сборки
.AddClasses() // Добавление всех классов
.AsImplementedInterfaces() // Регистрация их как интерфейсов
.WithScopedLifetime()); // Установка времени жизни
• Автоматическая регистрация классов.
• Фильтрация классов по правилам (например, по имени или пространству имён).
• Настройка времени жизни (Transient, Scoped, Singleton).
• Регистрация классов с пользовательскими интерфейсами или без них.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16🥱12
Есть идеи для пет-проектов? А может уже что-то делаете? Поделитесь своими задумками с сообществом! 👇 Ведь это субботний #интерактив!
Не стесняйтесь делиться своими идеями и прогрессом в их реализации. Мы уверены, что среди вас много талантливых разработчиков, которые могут создать что-то уникальное и интересное.
Please open Telegram to view this post
VIEW IN TELEGRAM
🥰4👍1
🔄 Meadow v2: что изменилось
Команда Wilderness Labs выпустила долгожданную Meadow v2 — крупное обновление платформы для разработки IoT-устройств на базе .NET! 🚀 Если вы занимаетесь созданием умных устройств или встраиваемых систем, этот релиз точно заслуживает вашего внимания. Давайте разберем, что нового:
➡️ Meadow v2 получил серьезные улучшения в работе операционной системы, что повышает стабильность и производительность устройств.
➡️ Добавлены новые API для работы с периферией, сенсорами и другими компонентами, что упрощает разработку сложных IoT-решений.
➡️ Теперь Meadow лучше работает с различными аппаратными компонентами, что расширяет возможности для создания уникальных устройств.
➡️ Множество багов и проблем, обнаруженных в предыдущих версиях, были устранены, что делает платформу более надежной.
➡️ Wilderness Labs постарались улучшить документацию, чтобы разработчикам было проще начать работу с платформой.
📎 Полный список изменений доступен на официальной странице релиза
🐸 Библиотека шарписта #новость
Команда Wilderness Labs выпустила долгожданную Meadow v2 — крупное обновление платформы для разработки IoT-устройств на базе .NET! 🚀 Если вы занимаетесь созданием умных устройств или встраиваемых систем, этот релиз точно заслуживает вашего внимания. Давайте разберем, что нового:
Please open Telegram to view this post
VIEW IN TELEGRAM
Если вы работаете с F#, то наверняка слышали о пайпах (pipes). Это инструмент языка, который помогает писать код в стиле "конвейера", делая код читаемым и выразительным. Давайте разберем, как они работают и зачем их использовать.
❓Что такое пайпы?
Пайпы — это операторы, которые передают результат одной функции в качестве входного аргумента другой. В F# есть два оператора:
Пример:
let add x y = x + y
let multiplyBy2 x = x * 2
// Без пайпа
let result1 = multiplyBy2 (add 3 4) // 3 + 4 = 7, затем 7 * 2 = 14
// С пайпом
let result2 = add 3 4 |> multiplyBy2 // То же самое, но более читаемо
Пример:
let result = multiplyBy2 <| add 3 4 // То же, что и multiplyBy2 (add 3 4)
3. Зачем использовать пайпы?
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14😁4🥰3💯1
Мы собираем данные о том, какие методы биохакинга действительно помогают разрабам улучшить качество жизни и повысить продуктивность. Поделитесь своим опытом — это поможет другим сделать осознанный выбор в мире биохакинга.
Please open Telegram to view this post
VIEW IN TELEGRAM
🥱2🌚1👾1
Какие методы отслеживания здоровья вы используете?
Anonymous Poll
32%
🔄 Фитнес-трекер/умные часы
11%
📱 Приложения для трекинга здоровья
9%
📊 Регулярные анализы крови
6%
🌡 Измерение температуры тела
30%
⚖️ Только вес на весах
44%
🤷♂️ Не отслеживаю показатели
🌚1
Какие методы улучшения сна вы используете?
Anonymous Poll
16%
😴 Блокировка синего света вечером
17%
🌙 Строгий режим сна
13%
🌡 Оптимальная температура в спальне
9%
💊 Мелатонин
6%
🍵 Травяные чаи для сна
6%
📱 Трекинг фаз сна
58%
🤷♂️ Никакие
🌚1
Какие нетрадиционные методы оптимизации здоровья вы пробовали?
Anonymous Poll
10%
🧠 Ноотропы
8%
🥗 Интервальное голодание
6%
🦠 Пробиотики/ферментированные продукты
2%
🌿 Микродозинг
1%
🤖 Биохакерские гаджеты
80%
❌ Не пробовал(а) ничего из перечисленного
3%
📈 Другое (уточните в комментариях)
🌚2
Сколько времени вы уделяете биохакингу ежедневно?
Anonymous Poll
6%
⏰ Менее 30 минут
2%
⏱️ 30-60 минут
1%
⌚️ 1-2 часа
1%
📅 Более 2 часов
91%
🤷♂️ Не уделяю времени специально
🌚1