Redirect в ASP.NET перенаправляет пользователя на другой URL с кодом 302 Found. Это временное перемещение, когда браузер каждый раз проверяет исходный адрес.
Основные примеры использования:
// 1. Абсолютный путь
return Redirect("https://example.com");
// 2. Относительный путь
return Redirect("/admin/dashboard");
// 3. Действие контроллера
return RedirectToAction("Edit", "User", new { id = model.Id });
// 4. URL с параметрами
return Redirect($"/products?category={categoryId}");
Redirect подходит для временных переходов. Для постоянных ссылок переходите на RedirectPermanent.
📍 Навигация: Вакансии • Задачи • Собесы
#sharp_view
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6
Год завершается, самое время подвести итоги. 2025 принёс нам .NET 10 — юбилейный LTS-релиз.
Релиз состоялся 11 ноября 2025 года. Сами Microsoft называет его самым производительным, современным и безопасным выпуском платформы.
• Улучшения JIT-компилятора: инлайнинг, девиртуализация методов, оптимизация генерации кода для struct-аргументов.
• Поддержка AVX10.2 для Intel и Arm64 SVE для продвинутой векторизации.
• Улучшения NativeAOT: меньше размер, быстрее запуск.
• Стековая аллокация для маленьких массивов фиксированного размера.
• Встроенная поддержка AI через новый Microsoft Agent Framework
• Постквантовая криптография: добавлена поддержка алгоритмов ML-KEM (FIPS 203), ML-DSA (FIPS 204) и SLH-DSA (FIPS 205).
C# 14 обновили большим количеством фич: ключевое слово field, блоки расширений, partial-конструкторы и события, оператор null-conditional assignment, перегрузку составных операторов присваивания, модификаторы параметров в лямбдах без указания типа.
У нас был цикл постов про обновления F#. От подавления предупреждений до авто-свойств.
• Полная поддержка типа данных vector и функции VECTOR_DISTANCE() для Azure SQL Database и SQL Server 2025
• EF Core 10 добавляет first-class поддержку операторов LeftJoin и RightJoin
• Теперь можно назначать имена фильтрам и управлять ими по отдельности
• Декларативное сохранение состояния через атрибут
[PersistentState] • Circuit state persistence — пользователи могут возобновить сессию после дисконнекта.
• blazor.web.js теперь сжимается: размер уменьшился на 76% — со 183 KB до ~43 KB.
• Встроенная страница NotFound.razor в шаблонах.
• Полная поддержка OpenAPI 3.1 и YAML-формата для API-документации.
• XAML компилируется во время сборки, а не парсится в runtime
• Новый шаблон проекта для интеграции MAUI с .NET Aspire
• Экспериментальная возможность использовать CoreCLR вместо Mono
.NET Aspire
• Команды aspire new, aspire run, aspire config и preview-команды aspire publish/deploy
• Можно определить Aspire AppHost без традиционного project file
• Типизированные клиентские библиотеки для GitHub Models, Azure AI Foundry и OpenAI
• Более 5000 исправленных багов и 300 реализованных фич.
• Запуск приложений до 30% быстрее по сравнению с VS 2022
• IDE отвязана от build tools — можно обновлять IDE без влияния на toolchain
• Полная поддержка .NET 10 и C# 14
Год получился насыщенным. Все события можно найти по хэштегу #async_news.
📍 Навигация: Вакансии • Задачи • Собесы
#async_news
Please open Telegram to view this post
VIEW IN TELEGRAM
1👏11❤2
📍 Навигация: Вакансии • Задачи • Собесы
#garbage_collector
Please open Telegram to view this post
VIEW IN TELEGRAM
AI-агенты: почему LangChain и ReAct — это must-have для шарписта 🛠️
Интеграция ИИ в корпоративный софт больше не ограничивается вызовом API. Нужно строить сложные системы с памятью и автономной логикой.
На курсе мы разберём передовой стек разработки мультиагентных систем.
Ключевые темы:
— реализация логики «Reasoning + Acting» для полной автономности;
— использование
— применение протокола
— построение масштабируемого
Создайте систему из нескольких агентов, которая возьмёт на себя сложную аналитику и поддержку клиентов.
Старт курса 🚀
Интеграция ИИ в корпоративный софт больше не ограничивается вызовом API. Нужно строить сложные системы с памятью и автономной логикой.
На курсе мы разберём передовой стек разработки мультиагентных систем.
Ключевые темы:
— реализация логики «Reasoning + Acting» для полной автономности;
— использование
n8n как мощного визуального оркестратора процессов;— применение протокола
MCP от Anthropic для надёжной связи;— построение масштабируемого
RAG для работы с Big Data.Создайте систему из нескольких агентов, которая возьмёт на себя сложную аналитику и поддержку клиентов.
Старт курса 🚀
RedirectPermanent работает в контроллерах MVC и Core. Метод отправляет статус 301 Moved Permanently, браузеры кэшируют такой редирект и сразу переходят на новый адрес без повторных запросов к старому.
В контроллере это выглядит просто:
public IActionResult OldPage()
{
return RedirectPermanent("/new-page");
}
Здесь запрос на /old-page уйдет на /new-page с кодом 301. Поисковики обновят индекс и перестанут индексировать старый адрес.
Разница с обычным
Redirect в статусе ответа. Redirect (302) говорит «временно перемещено», браузер каждый раз проверяет старый URL. RedirectPermanent (301) фиксирует «навсегда», что экономит трафик и улучшает SEO.📍 Навигация: Вакансии • Задачи • Собесы
#sharp_view
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤2🥰2🤔1
Пока вы думаете, что «не хватает времени» или «сложные обстоятельства» — Стас перенёс две нейрохирургические операции, собирает себя по кусочкам, при этом проходит курс по C++, пилит проекты для портфолио и откликается на вакансии.
📍 Навигация: Вакансии • Задачи • Собесы
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8💯6
📂 Files для Windows 11 получил интеграцию с PowerToys
Files это популярный сторонний файловый менеджер для Windows 11. В новости пишут, что он получил интеграцию с одной из самых удобных утилит PowerToys, которая делает быстрый предпросмотр файлов.
Речь про Peek. Вы выделяете файл и жмёте Ctrl плюс Space, и файл открывается в лёгком окне предпросмотра. Это работает как быстрый просмотр, без запуска отдельного приложения.
➡️ Источник
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека шарписта
#async_news
Files это популярный сторонний файловый менеджер для Windows 11. В новости пишут, что он получил интеграцию с одной из самых удобных утилит PowerToys, которая делает быстрый предпросмотр файлов.
Речь про Peek. Вы выделяете файл и жмёте Ctrl плюс Space, и файл открывается в лёгком окне предпросмотра. Это работает как быстрый просмотр, без запуска отдельного приложения.
📍 Навигация: Вакансии • Задачи • Собесы
#async_news
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4👾1
Часто новички в функциональном программировании думают, что сделали иммутабельный код. Берут список, вызывают
ToList() или Select() и радуются новому списку. Но в C# это ловушка.Проблема в ссылочных типах.
var copy = original.ToList() создаёт новый List, но все элементы внутри — те же самые объекты. Меняете свойство через copy, и оригинал тоже меняется. Правило трёх
• Records с init-only свойствами для value-like поведения
• ImmutableList<T> из System.Collections.Immutable — настоящие неизменяемые коллекции
• Struct только для маленьких типов
📍 Навигация: Вакансии • Задачи • Собесы
#sharp_view
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥14😁1🥱1
Открытые геттеры и сеттеры кажутся удобными, но позволяют внешнему коду разрушить внутреннюю логику объекта. Можно предоставлять методы, которые гарантируют соблюдение правил.
Например, в заказе количество позиций не должно быть отрицательным. Но с сеттером любой вызовет
orderItem.setQuantity(-1000). Объект становится некорректным, а баги проявятся позже.Создайте метод, который принимает ID товара и новое значение. Внутри проверьте, что число положительное, обновите поле и пересчитайте сумму.
Пример:
public void ChangeQuantity(string itemId, int newQuantity) {
if (newQuantity < 0) throw new ArgumentException("Количество не может быть отрицательным");
var item = items.FirstOrDefault(i => i.Id == itemId);
if (item != null) {
item.Quantity = newQuantity;
RecalculateTotal();
}
} Так внешний код не может нарушить правила. Можно ограничить сеттер проверкой, но множество проверок может сломать принцип единой ответственности.
📍 Навигация: Вакансии • Задачи • Собесы
#il_люминатор
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
🤔 Не знаете, в чём встречать Новый год? Не беда!
Tproger как раз собрал стек новогодних нарядов, чтобы вы сияли ярче, чем любая гирлянда. Скорее заходите в виртуальную примерочную и выбирайте скин! 💃
Реклама. ИП Михайлишина Гузель Фаниловна.
ИНН 165042823905. Erid 2VtzqukJLdp
Tproger как раз собрал стек новогодних нарядов, чтобы вы сияли ярче, чем любая гирлянда. Скорее заходите в виртуальную примерочную и выбирайте скин! 💃
Реклама. ИП Михайлишина Гузель Фаниловна.
ИНН 165042823905. Erid 2VtzqukJLdp
😁3
📅 Даты и время в .NET без сюрпризов
В .NET есть разные типы под разные задачи, и из этого обычно и растут ошибки. DateTime это просто дата и время, но без явного смещения. DateTimeOffset хранит дату, время и смещение от UTC, поэтому однозначно задает момент времени.
Для часовых поясов используйте
Еще два полезных типа.
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека шарписта
#sharp_view
В .NET есть разные типы под разные задачи, и из этого обычно и растут ошибки. DateTime это просто дата и время, но без явного смещения. DateTimeOffset хранит дату, время и смещение от UTC, поэтому однозначно задает момент времени.
Для часовых поясов используйте
TimeZoneInfo, Microsoft прямо пишет, что для новой разработки лучше TimeZoneInfo вместо старого TimeZone.var nowUtc = DateTimeOffset.UtcNow;
var moscow = TimeZoneInfo.FindSystemTimeZoneById("Europe/Moscow");
var nowMoscow = TimeZoneInfo.ConvertTime(nowUtc, moscow);
Console.WriteLine(nowUtc);
Console.WriteLine(nowMoscow);
TimeZoneInfo умеет переводить время между часовыми поясами, а DateTimeOffset делает момент переносимым между машинами и окружениями.Еще два полезных типа.
DateOnly для календарной даты без времени, например отпуск или дата рождения. TimeOnly для времени без даты, например расписание.var vacation = new DateOnly(2026, 1, 10);
var standup = new TimeOnly(10, 30);
Console.WriteLine(vacation);
Console.WriteLine(standup);
DateOnly и TimeOnly заменяют костыли с DateTime и TimeSpan, когда вам не нужен момент времени.📍 Навигация: Вакансии • Задачи • Собесы
#sharp_view
Please open Telegram to view this post
VIEW IN TELEGRAM
👍17❤1
Есть два типа людей: те, кто ставит ёлку в начале декабря и наслаждается атмосферой целый месяц, и те, кто украшает её 31-го под бой курантов.
💬 Скидывайте фото своих ёлок в комменты 👇
📍 Навигация: Вакансии • Задачи • Собесы
#entry_point
Please open Telegram to view this post
VIEW IN TELEGRAM
🎄 С Новым годом, шарписты!
🐸 Библиотека шарписта
var year = new Year(2026);
year.Wishes = new[] { "чистый код", "нулевой техдолг", "стабильный прод" };
while (year.InProgress)
{
await you.Ship(Features.Amazing);
await you.Avoid(Bugs.Critical);
you.Happiness++;
}
Please open Telegram to view this post
VIEW IN TELEGRAM
28❤🔥46🎉11
🎆 Праздники — время лучшего контента 2025
Новый год наступил, но мы не уходим на каникулы. Все праздники публикуем топовые посты года — те, что вы сохраняли в закладки и пересылали коллегам.
➡️ Ежедневные порции лучшего по хэштегу #лучшее_из_библиотеки_2025
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека шарписта
Новый год наступил, но мы не уходим на каникулы. Все праздники публикуем топовые посты года — те, что вы сохраняли в закладки и пересылали коллегам.
📍 Навигация: Вакансии • Задачи • Собесы
Please open Telegram to view this post
VIEW IN TELEGRAM
Мы уже поднимали тему выбора IDE. Сейчас повторим, потому что смена IDE часто совпадает с переходом на новый проект или новый стек.
👍 За Visual Studio
Остальное в комменты 👇
💬 Что у вас сейчас в роли основной IDE и что бесит больше всего в выбранном варианте?
📍 Навигация: Вакансии • Задачи • Собесы
#лучшее_из_библиотеки_2025
Please open Telegram to view this post
VIEW IN TELEGRAM
👍239🔥222❤5👾2
#️⃣ Async Task в Unity против корутин
Мы уже делились этим разбором в марте, и сейчас самое время напомнить. В статье хорошо объясняют, что корутины это не настоящая параллельность, они просто размазывают выполнение по кадрам и все равно живут в основном потоке.
Поэтому если внутри корутины сделать блокирующую работу, игра встанет.
➡️ Освежить статью в памяти
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека шарписта
#лучшее_из_библиотеки_2025
Мы уже делились этим разбором в марте, и сейчас самое время напомнить. В статье хорошо объясняют, что корутины это не настоящая параллельность, они просто размазывают выполнение по кадрам и все равно живут в основном потоке.
Поэтому если внутри корутины сделать блокирующую работу, игра встанет.
📍 Навигация: Вакансии • Задачи • Собесы
#лучшее_из_библиотеки_2025
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9
Тогда мы уже рассказывали про
IAsyncEnumerable и await foreach. Сейчас повторяем, потому что это одна из тех фич, которую многие видели, но мало кто применяет осознанно.Асинхронные потоки
IAsyncEnumerable позволяют эффективно обрабатывать последовательности данных, поступающих с задержками. В целом это положительно влияет на пользовательский опыт и скорость работы приложения1. Базовый синтаксис:
using System;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
static async IAsyncEnumerable<int> GenerateSequenceAsync(int count, [EnumeratorCancellation] CancellationToken token = default)
{
for (int i = 0; i < count; i++)
{
// Симулируем асинхронную задержку
await Task.Delay(100, token);
yield return i;
}
}
static async Task ConsumeAsync()
{
await foreach (var item in GenerateSequenceAsync(5))
{
Console.WriteLine($"Получено значение: {item}");
}
}
• Ключевое слово
async перед IAsyncEnumerable<T>.•
yield return внутри асинхронного метода.•
await foreach для потребления.2. Обработка отмены и ошибок:
using var cts = new CancellationTokenSource(TimeSpan.FromSeconds(1));
try
{
await foreach (var item in GenerateSequenceAsync(10, cts.Token).WithCancellation(cts.Token))
{
Console.WriteLine(item);
}
}
catch (OperationCanceledException)
{
Console.WriteLine("Операция была отменена.");
}
• Передаём
CancellationToken через атрибут [EnumeratorCancellation].• Используем метод расширения
.WithCancellation(token) для явной поддержки отмены в await foreach.3. Советы по применению
• Всегда учитывайте семантику отмены: пробрасывайте
CancellationToken до источника потока.• Избегайте долгих синхронных операций внутри цикла генерации — это сведёт на нет преимущества асинхронности.
• При больших объёмах данных комбинируйте с буферизацией через
Channel<T> для сглаживания пиковой нагрузки.📍 Навигация: Вакансии • Задачи • Собесы
#лучшее_из_библиотеки_2025
Please open Telegram to view this post
VIEW IN TELEGRAM
❤7👍1
Мы делились этой статьей, и сейчас напомним. Главная мысль простая, лаги часто приходят не из за рендера, а из за памяти и резких скачков GC.
📍 Навигация: Вакансии • Задачи • Собесы
#лучшее_из_библиотеки_2025
Please open Telegram to view this post
VIEW IN TELEGRAM
2025-й стал годом «скучной стабильности» в айти. Компании не росли — выживали: резали бюджеты, оптимизировали команды, затягивали найм.
2383 отклика на 1 вакансию.
−20% позиций за год.
30-50% сокращений в e-commerce.
📍 Навигация: Вакансии • Задачи • Собесы
Please open Telegram to view this post
VIEW IN TELEGRAM
😢23🤔1🤩1