Библиотека шарписта | C#, F#, .NET, ASP.NET
22.9K subscribers
2.26K photos
36 videos
85 files
4.43K links
Все самое полезное для C#-разработчика в одном канале.

По рекламе: @proglib_adv

Учиться у нас: https://proglib.io/w/b60af5a4

Для обратной связи: @proglibrary_feeedback_bot

РКН: https://gosuslugi.ru/snet/67a5c81cdc130259d5b7fead
Download Telegram
👩‍💻 Атрибут StringSyntax в действии

Атрибут StringSyntax (.NET 7+) позволяет нам сообщить Visual Studio, с каким типом строки (например, регулярное выражение, формат datetime, JSON и т. д.) мы работаем, чтобы получить корректный IntelliSense и подсветку синтаксиса.

#dotnet #tip #visualstudio by Dave Callan
Please open Telegram to view this post
VIEW IN TELEGRAM
39👍281
🧰 MemoryCache, DistributedCache и HybridCache: краткий обзор от Steven Giesel новых вич, появившихся в .NET 9 Preview 4

📌 MemoryCache — структура данных для кеширования объектов в памяти.

• Простой пример:

public async Task<IActionResult> GetBlogPost(int id)
{
var cacheKey = $"BlogPost_{id}";
if (!_memoryCache.TryGetValue(cacheKey, out BlogPost blogPost))
{
blogPost = await _blogRepository.GetBlogPostByIdAsync(id);
_memoryCache.Set(cacheKey, blogPost);
}
return Ok(blogPost);
}


• Пример упрощенного использования MemoryCache:

public async Task<IActionResult> GetBlogPost(int id)
{
var cacheKey = $"BlogPost_{id}";
var blogPost = await _memoryCache.GetOrCreateAsync(cacheKey, async entry =>
{
return await _blogRepository.GetBlogPostByIdAsync(id);
});
return Ok(blogPost);
}


📌 IDistributedCache используется для кеширования между несколькими сервисами и/или для сохранения данных на длительный срок (переживание перезагрузок сервера).

• Пример регистрации Redis в качестве провайдера кеша:

builder.Services.AddStackExchangeRedisCache(options => { ... });


• Пример регистрации SQL Server в качестве провайдера кеша:

builder.Services.AddDistributedSqlServerCache(options =>
{
options.ConnectionString = builder.Configuration.GetConnectionString("DistCache_ConnectionString");
options.SchemaName = "dbo";
options.TableName = "TestCache";
});


• Пример использования IDistributedCache:

public class SomeService(IDistributedCache cache)
{
public async Task<SomeInformation> GetSomeInformationAsync(string name, int id, CancellationToken token = default)
{
var key = $"someinfo:{name}:{id}";
var bytes = await cache.GetAsync(key, token);
SomeInformation info;
if (bytes is null)
{
info = await SomeExpensiveOperationAsync(name, id, token);
bytes = SomeSerializer.Serialize(info);
await cache.SetAsync(key, bytes, token);
}
else
{
info = SomeSerializer.Deserialize<SomeInformation>(bytes);
}
return info;
}

private async Task<SomeInformation> SomeExpensiveOperationAsync(string name, int id, CancellationToken token = default)
{
// ... Реализация
}
}


📌 HybridCache совмещает функции MemoryCache и DistributedCache. Простой пример использования:

public class SomeService(HybridCache cache)
{
public async Task<SomeInformation> GetSomeInformationAsync(string name, int id, CancellationToken token = default)
{
return await cache.GetOrCreateAsync(
$"someinfo:{name}:{id}",
async cancel => await SomeExpensiveOperationAsync(name, id, cancel),
token: token
);
}
}


HybridCache поддерживает явное удаление по ключу, настройку сериализации и позволяет избежать некоторых проблем IDistributedCache.
👍182🤔1
☝️Схема типичного стартапа ☝️

💬 Есть здесь те, кто работает в стартапе? Что скажете?

#холивар
😁40👍81
❤️ Активация с первого взгляда: как влюбить пользователя в продукт

Хотите научиться превращать случайных посетителей в преданных фанатов? Рассказываем, как повысить активацию пользователей, отличить ее от aha-момента и использовать эти знания для кратного роста количества активных пользователей.

🔗 Читать статью
🔗 Зеркало
👍2
🎙Свежий выпуск подкаста RadioDotNet про лучший UI Framework, структуру Solutions, нужные Channels и многое другое

YouTube | Apple Подкасты | Google Подкасты | Яндекс Музыка

#подкасты
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7
Ответьте на 3 вопроса, чтобы получить вводные занятия к курсу «Алгоритмы и структуры данных»

🔥Получите вводные занятия, ответив на 3 вопроса – https://proglib.io/w/82684bb8

На вводной части вас ждут:

1. Лекция «Производительность алгоритмов» от руководителя разработки Яндекс.Самокатов

2. Лекция «Итеративные сортировки и линейные сортировки» от аспирант департамента искусственного интеллекта ВШЭ

3. Практические задания после лекций

4. Ссылки на дополнительные материалы для самостоятельного изучения

⚡️Переходите и начинайте учиться уже сегодня – https://proglib.io/w/82684bb8
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2😢1
🔗 Разработка сокращателя URL-адресов на .NET: мини-гайд от Milan Jovanović

Автор делится опытом проектирования простой системы сокращения ссылок и пишет её с нуля.

👉 Читать & смотреть гайд
Please open Telegram to view this post
VIEW IN TELEGRAM
😁9👍7🔥2
This media is not supported in your browser
VIEW IN TELEGRAM
🧰 Кстати, C# REPL поддерживает IntelliSense, установку NuGet-пакетов, а также ссылки на локальные проекты и сборки .NET. Отличный инструмент для экспериментов и изучения C# на Windows, Mac OS, and Linux.


dotnet tool install -g csharprepl
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥20👍6🌚1
💻🚀🏰 Как мы создали ИИ-стартап на хакатоне выходного дня в Германии

Инженер ПО рассказал нам о своих выходных на хакатоне в Кельне, где с командой пытался создать AI-стартап всего за два дня. Участники прошли путь от подачи идей в пятницу вечером до демонстрации работающего приложения к воскресенью.

В качестве бонуса автор привёл список основных пунктов, которые необходимо выполнить для создания стартапа.

🔗 Читать статью
🔗 Зеркало
🥱91👍1👾1
💬 Мысли Эндрю Лока о primary constructors: 3 и 5

В предыдущей статье автор представил введение в primary constructors в C# 12. В новом материале вас ждет более глубокое погружение в тему с описанием основных достоинств и недостатков (по его мнению):

☑️ Основные подходы к использованию primary constructors
☑️ Лучшие юзкейсы primary constructors

▫️Базовая инициализация полей
▫️Инициализация в тестовом коде
▫️Dependency injection в MVC-контроллерах

☑️ Проблемные моменты, или «что не нравится»

▫️Duplicate capture
▫️Неявные поля не могут быть readonly
▫️Неявные поля изменяют макет структуры
▫️Путаница с соглашениями об именах
▫️Путаница с record
Please open Telegram to view this post
VIEW IN TELEGRAM
👍19
💡Поддержка open telemetry в .NET становится все лучше и лучше с каждым выпуском. В .NET 8 вы можете настроить как логирование, так и метрики в конфигурации.

#dotnet
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥17👍121
👨‍🎓️ 33 лучших вуза России для будущих программистов 2024-2025

Составили список из 33-х вузов, где вы научитесь думать как программист и получите фундаментальные знания в области математики, информатики, компьютерных наук и так далее. Для удобства вузы отсортированы по среднему проходному баллу ЕГЭ: от наибольшего к наименьшему.

🔗 Читать статью
🔗 Зеркало
🥱93🤔2😁1👾1
Кстати, у EF есть возможность повторить попытку в случае сбоя соединения, и ее полезно включить для большей устойчивости.

#efcore #tip
👍51🥱6
💬 Разрабы, какую музыку вы предпочитаете слушать во время работы?

👍 — энергичная и мотивирующая музыка (рок, поп, электронная)
🔥 — спокойная и расслабляющая музыка (классическая, джаз, саундтреки)
❤️ — предпочитаю работать в тишине

#холивар
👍11792🔥70
🤔 Что делать в среду вечером C#-разрабу? Например, можно написать IoT .NET-приложение для Sipeed Lichee RV и запустить на RISC-V

До недавнего времени разрабатывать IoT приложения на C# можно было только для компьютеров, построенных на архитектуре ARM или x86.

В начале этого года был представлен неофициальный .NET 8.0 SDK, который уже сейчас вы сможете запустить на RISC-V процессоре под ОС Debian/Ubuntu.

В качестве платформы запуска автор взял одноплатный компьютер Sipeed Lichee RV на RISC-V процессоре Allwinner D1 (ядро Alibaba/T-Head Xuantie C906 RISC-V).

🟣 Часть 1: установка .NET 8.0 SDK на Sipeed Lichee RV
🟣 Часть 2: запуск приложения для работы с контактами GPIO и датчиком BME280 для замера температуры, влажности и давления
Please open Telegram to view this post
VIEW IN TELEGRAM
12😁5👍3🔥2