This media is not supported in your browser
VIEW IN TELEGRAM
Это AI-инструмент для прототипирования UI/UX. Достаточно описать идею сайта или приложения, и нейросеть автоматически создаст структуру интерфейса. Также можно загрузить набросок или скриншот — AI преобразует его в редактируемый макет. Подходит для быстрого создания прототипов и лендингов без длительной работы в дизайнерских редакторах.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13❤7🔥7👎1
Collection expressions в C# 12: собираем коллекции без AddRange и Concat!
Часто нужно взять базовую коллекцию и добавить пару значений в начало или конец. Обычно для этого появляются AddRange, временные списки и много шума в коде.
Раньше приходилось собирать вручную:
Смысл простой, а кода слишком много: служебные вызовы мешают увидеть, какие элементы в итоге получаются.
В C# 12 появились collection expressions — можно “собрать” коллекцию прямо по месту:
Здесь
🔥 В итоге коллекции читаются как данные, а не как набор операций по сборке.
➡️ C# Ready | #практика
Часто нужно взять базовую коллекцию и добавить пару значений в начало или конец. Обычно для этого появляются AddRange, временные списки и много шума в коде.
Раньше приходилось собирать вручную:
var baseIds = new[] { 1, 2, 3 };
var ids = new List<int>();
ids.AddRange(baseIds);
ids.Add(10);
ids.Add(20);
var result = ids.ToArray();
Console.WriteLine(string.Join(", ", result));Смысл простой, а кода слишком много: служебные вызовы мешают увидеть, какие элементы в итоге получаются.
В C# 12 появились collection expressions — можно “собрать” коллекцию прямо по месту:
int[] baseIds = [1, 2, 3];
int[] result = [..baseIds, 10, 20];
Console.WriteLine(string.Join(", ", result));
Здесь
..baseIds означает “вставь все элементы baseIds на это место”.Please open Telegram to view this post
VIEW IN TELEGRAM
❤10👍5🔥4
This media is not supported in your browser
VIEW IN TELEGRAM
Здесь можно быстро найти краткие справочники по синтаксису, командам и ключевым возможностям разных языков, чтобы не тратить время на долгий поиск документации. На сайте есть подробные шпаргалки по C++ и C#: быстрые справочники по синтаксису, контейнерам, алгоритмам STL, .NET и другим вещам, которые постоянно используются в разработке.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍17❤11🔥7
Collection expressions в C# 12: собираем коллекции без AddRange и Concat!
Часто нужно взять базовую коллекцию и добавить пару значений в начало или конец. Обычно для этого появляются AddRange, временные списки и много шума в коде.
Раньше приходилось собирать вручную:
Смысл простой, а кода слишком много: служебные вызовы мешают увидеть, какие элементы в итоге получаются.
В C# 12 появились collection expressions — можно “собрать” коллекцию прямо по месту:
Здесь
🔥 В итоге коллекции читаются как данные, а не как набор операций по сборке.
➡️ C# Ready | #практика
Часто нужно взять базовую коллекцию и добавить пару значений в начало или конец. Обычно для этого появляются AddRange, временные списки и много шума в коде.
Раньше приходилось собирать вручную:
var baseIds = new[] { 1, 2, 3 };
var ids = new List<int>();
ids.AddRange(baseIds);
ids.Add(10);
ids.Add(20);
var result = ids.ToArray();
Console.WriteLine(string.Join(", ", result));Смысл простой, а кода слишком много: служебные вызовы мешают увидеть, какие элементы в итоге получаются.
В C# 12 появились collection expressions — можно “собрать” коллекцию прямо по месту:
int[] baseIds = [1, 2, 3];
int[] result = [..baseIds, 10, 20];
Console.WriteLine(string.Join(", ", result));
Здесь
..baseIds означает “вставь все элементы baseIds на это место”.Please open Telegram to view this post
VIEW IN TELEGRAM
❤14👍3🔥3😁1
В этой статье:
• Разберёшься, чем Minimal API отличается от привычных контроллеров и где он действительно удобнее;• Поймёшь, какие плюсы даёт такой подход в реальном проекте, а где могут всплыть ограничения;• Посмотришь на практические нюансы миграции и поймёшь, стоит ли переходить на него в своём коде.🔊 Продолжай читать на Habr!
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5🔥4👍3
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🤝19👍7❤6🔥5
This media is not supported in your browser
VIEW IN TELEGRAM
Это огромная коллекция пошаговых гайдов, где учатся программированию через практику. Проекты реализованы на разных языках, в том числе на C# и C++. Здесь можно попробовать написать собственную базу данных, Git-клиент, веб-сервер, блокчейн, игровой движок, браузер или даже язык программирования.
Оставляю ссылочку: GitHub📱
Please open Telegram to view this post
VIEW IN TELEGRAM
❤14👍7🔥7
Почему CancellationToken бесполезен, если не передать его дальше?
Многие принимают
То есть клиент уже закрыл страницу или отменил запрос, а сервер всё ещё тратит ресурсы на работу, результат которой уже никому не нужен.
Чтобы отмена действительно работала, токен нужно прокидывать до самого места, где выполняется операция.
🔥 Если токен не дошёл до реальной работы — отмена у тебя существует только на бумаге.
➡️ C# Ready | #совет
Многие принимают
CancellationToken в методе, но потом просто не используют его в реальной async-операции. В итоге создаётся ощущение, что отмена у нас поддерживается, хотя на практике запрос в базу или внешний сервис всё равно продолжает выполняться.То есть клиент уже закрыл страницу или отменил запрос, а сервер всё ещё тратит ресурсы на работу, результат которой уже никому не нужен.
public async Task<List<Order>> GetOrders(CancellationToken ct)
{
return await _db.Orders
.Where(x => x.IsActive)
.ToListAsync();
}
Чтобы отмена действительно работала, токен нужно прокидывать до самого места, где выполняется операция.
public async Task<List<Order>> GetOrders(CancellationToken ct)
{
return await _db.Orders
.Where(x => x.IsActive)
.ToListAsync(ct);
}
CancellationToken полезен не тогда, когда он просто есть в сигнатуре, а тогда, когда реально доходит до ToListAsync, SendAsync, ReadAsync и других операций, которые можно остановить.Please open Telegram to view this post
VIEW IN TELEGRAM
👍13❤4🔥3
Сделаем консольную утилиту на C#, которая за один запуск переименует все файлы в каталоге в выбранном режиме.
В этой задаче:
• Поддержка префикса, суффикса, смены расширения и нумерации файлов.
• Обрабатываем аргументы, фильтруем и сортируем список файлов в папке.
• Генерируем имена, переименовываем файлы, выводим прогресс и ошибки.
Полезно, когда нужно быстро навести порядок в фотоархивах, экспортированных отчётах, логах или бэкапах.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥12👍6❤4
Расширяем string своим методом — ToSlug.
Сейчас научимся добавлять собственные методы к стандартным типам в C#, не изменяя их код и не создавая подклассов.
Подключим стандартную библиотеку:
Допустим, у нас есть строка с названием статьи, и мы хотим превратить её в "slug" — пригодную для URL или имён файлов. У стандартного
Создаём статический класс и описываем метод, указав
Теперь мы можем вызывать
Вот что получится при запуске:
🔥 Таким образом ты можешь элегантно добавлять поведение к любым типам — без наследования и без лишнего кода.
➡️ C# Ready | #практика
Сейчас научимся добавлять собственные методы к стандартным типам в C#, не изменяя их код и не создавая подклассов.
Подключим стандартную библиотеку:
using System;
Допустим, у нас есть строка с названием статьи, и мы хотим превратить её в "slug" — пригодную для URL или имён файлов. У стандартного
string такого метода нет, но мы можем добавить его сами через метод-расширение.Создаём статический класс и описываем метод, указав
this перед первым параметром:static class StringExtensions
{
static string ToSlug(this string input)
{
return input
.ToLower()
.Replace(" ", "-")
.Replace(".", "")
.Replace(",", "");
}
}
Теперь мы можем вызывать
.ToSlug() прямо у строки — будто это встроенный метод:string headline = "Новости дня, кратко и ясно.";
string slug = headline.ToSlug();
Console.WriteLine(slug);
Вот что получится при запуске:
новости-дня-кратко-и-ясно
🔥 Таким образом ты можешь элегантно добавлять поведение к любым типам — без наследования и без лишнего кода.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍17❤9🔥5
В этой статье:
• Поймёшь, как устроена базовая сцена в 3D и с чего начать проект на MonoGame;• Разберёшься, как добавить камеру, управление и отрисовку объектов в пространстве;• Посмотришь, как шаг за шагом собрать простой игровой прототип и увидеть результат вживую.🔊 Продолжай читать на Habr!
Please open Telegram to view this post
VIEW IN TELEGRAM
❤7👍3🔥3👎1