Библиотека шарписта | C#, F#, .NET, ASP.NET
Все самое полезное для C#-разработчика в одном канале. Как запустить своего ии-агента: https://clc.to/tvpmDQ По рекламе: @proglib_adv Для обратной связи: @proglibrary_feeedback_bot РКН: https://gosuslugi.ru/snet/67a5c81cdc130259d5b7fead
Ko'proq ko'rsatish📈 Telegram kanali Библиотека шарписта | C#, F#, .NET, ASP.NET analitikasi
Библиотека шарписта | C#, F#, .NET, ASP.NET (@csharpproglib) Rus til segmentidagi kanali faol ishtirokchi. Hozirda hamjamiyat 21 862 obunachidan iborat bo'lib, Texnologiyalar & Aralashmalar toifasida 6 194-o'rinni va Rossiya mintaqasida 30 800-o'rinni egallagan.
📊 Auditoriya ko‘rsatkichlari va dinamika
невідомо sanasidan buyon loyiha tez o‘sib, 21 862 obunachiga ega bo‘ldi.
13 Iyun, 2026 dagi oxirgi ma’lumotlarga ko‘ra kanal barqaror faollikka ega. Oxirgi 30 kunda obunachilar soni -49 ga, so‘nggi 24 soatda esa -3 ga o‘zgardi va umumiy qamrov yuqori darajada qolmoqda.
- Tasdiqlash holati: Tasdiqlanmagan
- Jalb etish (ER): Auditoriya o‘rtacha 12.71% darajada jalb etiladi. Nashrdan keyingi dastlabki 24 soatda kontent odatda umumiy obunachilar sonining 7.49% ini tashkil etuvchi reaksiyalarni to‘playdi.
- Post qamrovi: Har bir post o‘rtacha 2 778 marta ko‘riladi; birinchi sutkada odatda 1 638 ta ko‘rish yig‘iladi.
- Reaksiyalar va o‘zaro ta’sir: Auditoriya faol: har bir postga o‘rtacha 9 ta reaksiya keladi.
- Tematik yo‘nalishlar: Kontent .net, шарписта, навигация, await, string kabi asosiy mavzularga jamlangan.
📝 Tavsif va kontent siyosati
Muallif resursni shaxsiy fikrni ifoda etish maydoni sifatida ta’riflaydi:
“Все самое полезное для C#-разработчика в одном канале.
Как запустить своего ии-агента: https://clc.to/tvpmDQ
По рекламе: @proglib_adv
Для обратной связи: @proglibrary_feeedback_bot
РКН: https://gosuslugi.ru/snet/67a5c81cdc130259d5b7fead”
Yuqori yangilanish chastotasi (oxirgi ma’lumot 14 Iyun, 2026 da olingan) sababli kanal doimo dolzarb va katta qamrovli bo‘lib qoladi. Analitika auditoriya kontent bilan faol hamkorlik qilishini, uni Texnologiyalar & Aralashmalar toifasidagi muhim ta’sir nuqtasiga aylantirishini ko‘rsatadi.
dotnet run, и всё работает.
Предлагаем посмотреть видео, где показывают, как эту фичу использовать в автоматизации, генерации данных и даже как поднять mock-сервер — всё из одного файла.
➡️ Смотреть видео
🐸Библиотека шарписта #бустIEnumerable и IQueryable, новички и разработчики постарше могут запутаться. На практике выбор между этими интерфейсами зависит от того, с какими данными вы работаете и какие задачи решаете.
Один из подписчиков недавно спросил:
Когда и почему стоит использовать IEnumerable вместо IQueryable и наоборот?Вот основные моменты, которые помогут вам сделать правильный выбор: —
IEnumerable — это для работы с коллекциями в памяти. Если данные уже загружены, вы работаете с ними в памяти — фильтрация и сортировка происходят прямо там.
— IQueryable же используется, когда данные находятся в базе, и вы строите запросы, которые могут быть преобразованы в SQL-запросы. Это даёт вам «ленивую» загрузку данных и выполнение запросов на уровне базы.
Но есть и подводные камни:
— IQueryable может сгенерировать неэффективные запросы, если не следить за ними.
— IEnumerable для небольших объёмов данных, но если данных много, это может быть не так эффективно.
💬 Когда вы выбираете IEnumerable, а когда отдаёте предпочтение IQueryable? Поделитесь своим опытом в комментариях 👇
🐸Библиотека шарписта #междусобойчик{
// Код, который может вызвать исключение
}
catch (SpecificException ex)
{
// Обработка конкретного исключения
}
2. Обрабатывайте только те исключения, которые вы можете корректно обработать.
3. Логируйте исключения для диагностики
• Записывайте подробную информацию о возникшем исключении: тип ошибки, сообщение, стек вызовов.
• Используйте библиотеки логирования: Serilog, NLog, Log4Net.
catch (Exception ex)
{
logger.Error(ex, "Произошла ошибка");
}
4. Используйте блок finally для выполнения очистки
Блок finally выполняется всегда, независимо от того, возникло исключение или нет. Используйте его для освобождения ресурсов (например, закрытие файлов или соединений).
{
// Ваш код
}
catch (Exception ex)
{
// Обработка ошибки
}
finally
{
// Очистка ресурсов
}
5. Создавайте собственные исключения
При необходимости создавайте свои собственные типы исключений для лучшей организации обработки ошибок.
public class CustomException : Exception
{
public CustomException(string message) : base(message) { }
}
6. Не выбрасывайте исключения с пустыми сообщениями
Если вы выбрасываете исключение, всегда указывайте подробное сообщение, чтобы помочь диагностировать проблему.
throw new ArgumentNullException("parameterName", "Параметр не может быть null");
7. Используйте throw для повторного выбрасывания исключений
В случае, если вы хотите обработать исключение, но также передать его дальше, используйте throw без параметров, чтобы сохранить стек вызовов.
8. Не используйте исключения для обычного потока выполнения
Исключения должны использоваться для неожиданных или критических ошибок. Не используйте их для управления потоком выполнения (например, не используйте try-catch для проверки условий).
9. Используйте AggregateException для обработки нескольких исключений
Если вы работаете с задачами и несколько исключений могут быть выброшены одновременно, используйте AggregateException для их обработки.
{
// Асинхронный код
}
catch (AggregateException ex)
{
foreach (var innerEx in ex.InnerExceptions)
{
// Логирование каждого исключения
}
}
10. Планируйте стратегию обработки ошибок в продакшн-среде
В продакшн-среде важно минимизировать влияние ошибок на пользователя. Рассмотрите возможность использования retry-логики или fallback-методов.
public async Task<T> RetryAsync<T>(Func<Task<T>> action)
{
int retries = 3;
while (retries > 0)
{
try
{
return await action();
}
catch
{
retries--;
if (retries == 0) throw;
}
}
}
Этот чек-лист поможет вам правильно и эффективно обрабатывать ошибки и исключения в C#-проекте.
🐸Библиотека шарписта #бустgit log --graph --oneline --all --decorate
Команда визуализирует сложную историю ветвления и слияния веток.
🐸Библиотека шарписта #бустpublic class QuickSortExample
{
public void QuickSort(int[] arr, int low, int high)
{
if (low < high)
{
int pi = Partition(arr, low, high);
QuickSort(arr, low, pi - 1);
QuickSort(arr, pi + 1, high);
}
}
private int Partition(int[] arr, int low, int high)
{
int pivot = arr[high];
int i = (low - 1);
for (int j = low; j < high; j++)
{
if (arr[j] < pivot)
{
i++;
(arr[i], arr[j]) = (arr[j], arr[i]);
}
}
(arr[i + 1], arr[high]) = (arr[high], arr[i + 1]);
return i + 1;
}
}
Преимущества:
— Быстрая сортировка даже больших наборов данных
— Средняя сложность O(n log n)
— Эффективное использование памяти за счет рекурсии
➡️ Лучшее из мира IT-книг — у нас в @progbookpublic void Log<TState>(LogLevel logLevel, EventId eventId, TState state, Exception exception, Func<TState, Exception, string> formatter)
{
var key = eventId.Id.ToString();
var now = DateTime.UtcNow;
var lastTime = _lastLoggedTimes.GetOrAdd(key, DateTime.MinValue);
if ((now - lastTime) >= _interval)
{
_lastLoggedTimes[key] = now;
var message = formatter(state, exception);
Console.WriteLine($"[{now:O}] {logLevel}: {message}");
// Здесь вместо Console.WriteLine — вызов реального логгера
}
else
{
// Пропускаем лог, чтобы не создавать слишком много записей
}
}
Это может снизить затраты на хранение и обработку логов без потери ключевой информации.
➡️ Блог разработчиков .NET
🐸Библиотека шарписта #буст[NotNull], [CanBeNull], [Pure] и другие атрибуты — и ReSharper станет умнее: подскажет про возможные NullReferenceException, излишние проверки, и даже оптимизацию кода.
💬 Какие фишки ReSharper нравятся вам? Делитесь в комментах 👇
🐸Библиотека шарписта #буст
Endi mavjud! Telegram Tadqiqoti 2025 — yilning asosiy insaytlari 
