Ru
ГлавнаяКаналыIT → Библиотека шарписта | C#, F#, .NET, ASP.NET

Библиотека шарписта | C#, F#, .NET, ASP.NET 🕘 история названий (1)

@csharpproglib · IT
21 700подписчиков сейчас
Подписаться в Telegram

Публикации всего: 68

Постов на странице: 10 30 50 Страница 1 из 7
👨‍💻 string в C# — не просто текст string — это ссылочный тип с особой поддержкой рантайма. Внутри он хранит непрерывный блок UTF-16 кодовых единиц. Отсюда первый сюрприз:
string s = "😊";
Console.WriteLine(s.Length); // 2, не 1
Length считает не символы, а UTF-16 кодовые единицы. Эмодзи и многие Unicode-символы занимают две единицы — суррогатную пару. 📍 Навигация: ВакансииЗадачиСобесы 🐸 Библиотека шарписта #sharp_view
❤ 4 Перейти к публикации →
⚙️ nameof теперь понимает несвязанные обобщения Удобство и гибкость метапрограммирования — теперь nameof работает для обобщений без аргументов. Благодаря новой поддержке можно получить имена обобщенных типов без указания параметров:
Console.WriteLine(nameof(List<>));  // Выведет "List"
📍 Навигация: ВакансииЗадачиСобесы 🐸Библиотека шарписта #sharp_view
🔥 11 Перейти к публикации →
🗂 Работа и пет-проекты с одного ПК Работаете днём в корпоративном репо, вечером в личном на GitHub. Один ПК, но email и ключи подписи разные. Ручная смена настроек Git каждый раз бесит и приводит к косякам с коммитами. Условные includeIf решают всё Добавьте в ~/.gitconfig пару строк. Git сам подхватит нужный конфиг по пути к папке или remote URL. Для рабочих папок загрузит корпоративный email:
[includeIf "gitdir:~/work/"] path = .gitconfig-corp
Личные репозитории получат ваш домашний email автоматически:
[includeIf "hasconfig:remote.*.url:https://github.com/вашеимя/**"] path = .gitconfig-personal
Забудьте про git config --global user.email каждый раз. 📍 Навигация: ВакансииЗадачиСобесы 🐸Библиотека шарписта #sharp_view
👍 11 🤩 6 🌚 2 · всего 20 Перейти к публикации →
💥 Azure Functions: Linux Consumption уходит, на смену приходит Flex Microsoft постепенно закрывает старый Linux Consumption Plan для Azure Functions. Его поддержка завершится 30 сентября 2028 года, а новые функции и версии языков для него уже не развиваются. Для новых serverless-приложений Microsoft рекомендует Flex Consumption. 🔘 Что меняется для .NET-разработчиков: — Flex работает с .NET 8, 9 и 10 в isolated-модели; — функции масштабируются независимо друг от друга; — можно настраивать память инстанса; — появилась интеграция с VNet; — есть Always Ready-инстансы для снижения cold start; — деплой идёт через blob storage, а не старый zip-deploy. 📍 Переключить существующий Linux Consumption App на Flex «на месте» нельзя. Нужно создать новое Function App в Flex, перенести конфигурацию и задеплоить код. Для миграции Microsoft уже предлагает отдельный CLI:
az functionapp flex-migration start
Он создаёт Flex-приложение на основе существующего Linux Consumption App. 🔗 Источник 📍 Навигация: ВакансииЗадачиСобесы 🐸Библиотека шарписта #async_news
👍 3 Перейти к публикации →
⚡️ C# 15 убирает флаг из вложенных циклов Раньше для выхода сразу из нескольких foreach часто приходилось заводить переменную:
bool found = false;

foreach (var warehouse in warehouses)
{
    foreach (var bin in warehouse.Bins)
    {
        if (bin.Sku == requestedSku)
        {
            found = true;
            break;
        }
    }

    if (found)
        break;
}
🤩 В C# 15 можно обозначить внешний цикл и выйти из него напрямую:
scan: foreach (var warehouse in warehouses)
{
    foreach (var bin in warehouse.Bins)
    {
        if (bin.Sku == requestedSku)
            break scan;
    }
}
Никаких found, дополнительного if и лишнего состояния. C# 15 сейчас доступен в .NET 11 Preview 7. 📍 Навигация: ВакансииЗадачиСобесы 🐸Библиотека шарписта #sharp_view
🔥 28 ❤ 4 🥱 4 · всего 37 Перейти к публикации →
🗺 Группировка меток в картах MAUI Если на карте десятки или сотни меток, они сливаются в непроходимую кашу. В .NET MAUI 11 Preview 3 появилась кластеризация меток из коробки на Android и iOS/Mac Catalyst. 🤩 Как включить Одно свойство:
<maps:Map IsClusteringEnabled="True" />
Ближайшие метки автоматически группируются в кластер с числом внутри. При увеличении масштаба кластер раскрывается до отдельных пинов. 🤩 Разные группы кластеров Если нужно, чтобы кофейни кластеризовались отдельно от парков, используем ClusteringIdentifier на Pin:
map.Pins.Add(new Pin
{
    Label = "Pike Place Coffee",
    Location = new Location(47.6097, -122.3331),
    ClusteringIdentifier = "coffee"
});

map.Pins.Add(new Pin
{
    Label = "Occidental Square",
    Location = new Location(47.6064, -122.3325),
    ClusteringIdentifier = "parks"
});
Пины с одинаковым идентификатором группируются вместе. С разными — образуют независимые кластеры, даже если географически рядом. Пины без идентификатора попадают в общую группу по умолчанию. 🤩 Обработка нажатия на кластер При тапе на кластер срабатывает событие ClusterClicked:
map.ClusterClicked += async (sender, e) =>
{
    string names = string.Join("\n", e.Pins.Select(p => p.Label));
    await DisplayAlert(
        $"Кластер ({e.Pins.Count} меток)",
        names,
        "OK");

    // Отменить стандартное приближение к кластеру:
    // e.Handled = true;
};
🤩 В ClusterClickedEventArgs три поля: • Pins — список пинов в кластере • Location — географический центр • Handled — если true, стандартное поведение (зум к кластеру) отменяется. 🤩 Платформенные детали На Android кластеризация работает через собственный алгоритм на основе сетки, пересчитывается при смене масштаба. Сторонние зависимости не нужны. На iOS и Mac Catalyst используется нативный MKClusterAnnotation из MapKit — анимации и поведение платформенные. Пример с кластеризацией уже есть в репозитории, страница Clustering в проекте MapDemo. ➡️ Блог разработчиков 📍 Навигация: ВакансииЗадачиСобесы 🐸 Библиотека шарписта #il_люминатор
❤ 5 Перейти к публикации →
😎 Три строки C# — и ваш AI-агент уже готов к хостингу в Azure Microsoft показала интеграцию .NET с Foundry Hosted Agents: существующий агент на Microsoft Agent Framework можно превратить в hosted agent практически без изменения логики. 🤩 Достаточно добавить пакет:
dotnet add package Microsoft.Agents.AI.Foundry.Hosting --prerelease
🤩 И три строки:
var builder = AgentHost.CreateBuilder(args);

builder.Services.AddFoundryResponses(agent);

builder.RegisterProtocol(
    "responses",
    endpoints => endpoints.MapFoundryResponses());
🤩 Дальше:
azd provision
azd deploy
Foundry берёт на себя инфраструктуру, масштабирование, состояние сессий, identity, endpoint и observability. При этом сам AIAgent практически не меняется — вы просто добавляете вокруг него hosting-слой. 🔗 Источник: From dotnet run to Foundry Hosted Agent in 3 lines of C# 📍 Навигация: ВакансииЗадачиСобесы 🐸Библиотека шарписта #async_news
🤩 6 🥱 2 Перейти к публикации →
🤩 EF Core: нормальный способ засевать базу В EF Core 9 появились UseSeeding() и UseAsyncSeeding(), а в актуальном EF Core 10 это уже рекомендуемый Microsoft способ для обычного заполнения базы начальными данными.
optionsBuilder
    .UseSeeding((context, _) =>
    {
        if (!context.Set<Role>().Any())
        {
            context.Set<Role>().AddRange(
                new Role { Name = "Admin" },
                new Role { Name = "User" });

            context.SaveChanges();
        }
    });
Плюс в том, что seed выполняется вместе с Migrate и dotnet ef database update, а EF защищает его механизмом блокировки миграций. 🤩 А HasData теперь лучше использовать для статических и детерминированных данных — например, фиксированного справочника. Для данных, зависящих от состояния БД, внешних API или требующих вычислений, Microsoft рекомендует UseSeeding. Если используете async-вариант, реализуйте и UseSeeding, и UseAsyncSeeding — EF tooling пока опирается на синхронный метод. 🔗 Источник 📍 Навигация: ВакансииЗадачиСобесы 🐸Библиотека шарписта #sharp_view
❤ 8 🔥 1 Перейти к публикации →
📍 Навигация: ВакансииЗадачиСобесы 🐸 Библиотека шарписта #garbage_collector
😁 20 Перейти к публикации →
👨‍💻 Ложная иммутабельность Часто новички в функциональном программировании думают, что сделали иммутабельный код. Берут список, вызывают ToList() или Select() и радуются новому списку. Но в C# это ловушка. Проблема в ссылочных типах. var copy = original.ToList() создаёт новый List, но все элементы внутри — те же самые объекты. Меняете свойство через copy, и оригинал тоже меняется. Правило трёх: 🤩 Records с init-only свойствами для value-like поведения 🤩 ImmutableList<T> из System.Collections.Immutable — настоящие неизменяемые коллекции 🤩 Struct только для маленьких типов 📍 Навигация: ВакансииЗадачиСобесы 🐸Библиотека шарписта #sharp_view
👍 7 Перейти к публикации →
1 2 3 6 7

История названий канала

14.08.2026 название Библиотека шарписта Библиотека шарписта | C#, F#, .NET, ASP.NET
Дата — момент, когда изменение заметил наш обход.

Другие каналы категории