Библиотека шарписта | C#, F#, .NET, ASP.NET
Все самое полезное для C#-разработчика в одном канале. Наши курсы: https://clc.to/y3LDtw По рекламе: @proglib_adv Для обратной связи: @proglibrary_feeedback_bot РКН: https://gosuslugi.ru/snet/67a5c81cdc130259d5b7fead
Mostrar más📈 Análisis del canal de Telegram Библиотека шарписта | C#, F#, .NET, ASP.NET
El canal Библиотека шарписта | C#, F#, .NET, ASP.NET (@csharpproglib) en el segmento lingüístico de Ruso es un actor destacado. Actualmente la comunidad reúne a 21 708 suscriptores, ocupando la posición 5 953 en la categoría Tecnologías y Aplicaciones y el puesto 30 278 en la región Rusia.
📊 Métricas de audiencia y dinámica
Desde su creación el невідомо, el proyecto ha mostrado un crecimiento acelerado, reuniendo a 21 708 suscriptores.
Según los últimos datos del 28 agosto, 2026, el canal mantiene una actividad estable. En los últimos 30 días la variación de miembros fue de -37, y en las últimas 24 horas de 5, conservando un alto alcance.
- Estado de verificación: No verificado
- Tasa de interacción (ER): El promedio de interacción de la audiencia es 16.02%. Durante las primeras 24 horas tras publicar, el contenido suele obtener 7.85% de reacciones respecto al total de suscriptores.
- Alcance de las publicaciones: Cada publicación recibe en promedio 3 478 visualizaciones. En el primer día suele acumular 1 705 visualizaciones.
- Reacciones e interacción: La audiencia responde de forma activa: el promedio de reacciones por publicación es 26.
- Intereses temáticos: El contenido se centra en temas clave como .net, шарписта, навигация, await, string.
📝 Descripción y política de contenido
El autor describe el recurso como un espacio para expresar opiniones subjetivas:
“Все самое полезное для C#-разработчика в одном канале.
Наши курсы: https://clc.to/y3LDtw
По рекламе: @proglib_adv
Для обратной связи: @proglibrary_feeedback_bot
РКН: https://gosuslugi.ru/snet/67a5c81cdc130259d5b7fead”
Gracias a la alta frecuencia de actualizaciones (últimos datos recibidos el 29 agosto, 2026), el canal mantiene la vigencia y un amplio alcance. La analítica demuestra que la audiencia interactúa activamente con el contenido, lo que lo convierte en un punto de referencia dentro de la categoría Tecnologías y Aplicaciones.
struct StackValue
{
public override bool Equals(object obj)
{
if (Object.ReferenceEquals(this, obj))
return true;
if (!(obj is StackValue))
return false;
var value = (StackValue)obj;
return this.Kind == value.Kind
&& this.Flags == value.Flags
&& this.Type == value.Type;
}
}
На первый взгляд всё логично: сначала быстрая проверка через ReferenceEquals, если не сработала — сравниваем по полям.
В чём подвох
ReferenceEquals принимает параметры типа object. Когда вы передаёте структуру, происходит боксинг: значение копируется в хип и оборачивается объектом.
Что происходит при вызове Equals:
• this упаковывается в новый объект
• Создаётся уникальная ссылка в heap
• Сравниваются две разные ссылки
• Результат всегда false
В современных версиях .NET есть правило CA2013, которое отлавливает подобные случаи.
📍 Навигация: Вакансии • Задачи • Собесы
🐸Библиотека шарписта
#il_люминаторCrewAI, управлять стейтом в LangGraph и подключать нейросети к вашим API и облаку.
👉 Успейте занять место до начала занятийCrewAI: делегирование рутины и контроль логики;
— сложная логика в LangGraph: стейт-менеджмент и работа с графами;
— tool use интеграция: связь агентов с вашим API, БД и облаком. ⚡️
Записаться на курс"status": 1.
Вместо того чтобы использовать XML, мы потратили миллиарды на создание библиотек валидации, TypeScript, генераторов API-клиентов — по сути, воссоздавая то, что уже было в XML.
Microsoft, несмотря на все критику, продолжал использовать XML для MSBuild, WPF, и системы конфигурации .NET Framework. Переход на JSON в .NET Core случился не потому что XML был плох, а под давлением модных трендов.
📍 Навигация: Вакансии • Задачи • Собесы
🐸Библиотека шарписта
#il_люминатор RAG и Fine-tuning: архитектурный выбор;
— работа с векторными БД и эмбеддингами;
— демонстрация пайплайна, который «читает» документацию в PDF.
Один из спикеров — Алексей Яндутов, ML-инженер в поиске Яндекса.
Это вводное занятие к большому курсу «Разработка AI-агентов». Мы ориентируемся на разработчиков, а не на «промпт-инженеров».
Записаться на урокpublic static IEnumerable<int> FindDuplicates_GroupBy(List<int> data)
{
return data.GroupBy(x => x)
.Where(g => g.Count() > 1)
.Select(g => g.Key);
}
Работает, но GroupBy выполняется лениво — при каждой итерации происходит перегруппировка.
Решение через ToLookup:
public static IEnumerable<int> FindDuplicates_Lookup(List<int> data)
{
var lookup = data.ToLookup(x => x);
return lookup.Where(g => g.Count() > 1)
.Select(g => g.Key);
}
ToLookup создаёт индекс сразу и дальнейшие операции работают с готовой структурой в памяти.
📍 Навигация: Вакансии • Задачи • Собесы
🐸Библиотека шарписта
#sharp_viewToLookup — это метод LINQ, который группирует элементы коллекции по ключу. Похож на GroupBy, но есть важные отличия, которые делают его удобным в определённых ситуациях.
— Как работает ToLookup
Метод создаёт структуру данных ILookup<TKey, TElement> — это неизменяемая коллекция групп. Каждая группа содержит элементы с одинаковым ключом.
var users = new[]
{
new { Name = "Anna", Department = "Dev" },
new { Name = "Boris", Department = "Dev" },
new { Name = "Clara", Department = "QA" }
};
var lookup = users.ToLookup(u => u.Department);
foreach (var user in lookup["Dev"])
{
Console.WriteLine(user.Name); // Anna, Boris
}
Обращение к группе происходит через индексатор lookup["Dev"]. Если ключа нет — вернётся пустая последовательность, а не исключение.
— ToLookup vs GroupBy
GroupBy возвращает IEnumerable<IGrouping<TKey, TElement>> — это отложенное выполнение. Группировка происходит при каждой итерации.
ToLookup выполняется немедленно и возвращает готовую структуру в памяти. Это значит:
• Данные группируются один раз при вызове метода
• Повторные обращения к группам не пересчитывают результат
• Потребляет память под всю структуру сразу
— Когда использовать ToLookup
Подходит, если вам нужно:
+ Многократно обращаться к одним и тем же группам
+ Избежать повторных вычислений группировки
+ Получать пустые последовательности вместо исключений для отсутствующих ключей
+ Неизменяемую структуру данных
Не подходит, если:
- Данные большие и в памяти не поместятся
- Нужна отложенная обработка
- Группировка нужна один раз — тогда GroupBy эффективнее
📍 Навигация: Вакансии • Задачи • Собесы
🐸Библиотека шарписта
#sharp_viewWHERE archived_at IS NULL. Индексы раздуваются. Миграции данных становятся сложнее — надо ли обрабатывать записи двухлетней давности? Всегда есть риск, что архивные данные случайно попадут туда, где их быть не должно.
Создание записи затрагивает внешние системы. Восстановление может требовать сложной логики, которая всегда будет неполной копией API создания. Старые данные могут не пройти новые правила валидации.
Альтернативные подходы
• Архивирование на уровне приложения
При удалении записи приложение отправляет событие в очередь, а отдельный сервис сохраняет архивные данные в другом месте.
Плюсы: основная БД остаётся простой, удаление асинхронное (быстрее и надёжнее), данные можно сериализовать в удобном формате.
Минусы: легко допустить баг и потерять архивные данные, больше инфраструктуры, сложнее искать записи для восстановления.
• Триггеры PostgreSQL
Создаём универсальную таблицу archive, которая хранит JSON-представление удалённых записей:
CREATE TABLE archive (
id UUID PRIMARY KEY,
table_name TEXT NOT NULL,
record_id TEXT NOT NULL,
data JSONB NOT NULL,
archived_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
);
Триггер автоматически копирует удаляемую строку в архив. Можно даже отслеживать каскадные удаления через session variables.
• Реплика без DELETE
Держать логическую реплику, которая игнорирует DELETE-запросы или превращает их в archived_at.
➡️ Источник
📍 Навигация: Вакансии • Задачи • Собесы
🐸Библиотека шарписта
#il_люминаторRAG для ответов по внутренней документации;
— фреймворки уровня LangChain и LlamaIndex в Enterprise-среде;
— работа с хранилищами векторных эмбеддингов (FAISS, Chroma).
📅 Когда: 23.01 в 19:00 МСК
Узнать подробности