Библиотека шарписта | C#, F#, .NET, ASP.NET
Все самое полезное для C#-разработчика в одном канале. По рекламе: @proglib_adv Учиться у нас: https://proglib.io/w/b60af5a4 Для обратной связи: @proglibrary_feeedback_bot РКН: https://gosuslugi.ru/snet/67a5c81cdc130259d5b7fead
显示更多📈 Telegram 频道 Библиотека шарписта | C#, F#, .NET, ASP.NET 的分析概览
频道 Библиотека шарписта | C#, F#, .NET, ASP.NET (@csharpproglib) 俄语 语言赛道中的 是活跃参与者。目前社区聚集了 21 857 名订阅者,在 技术与应用 类别中位列第 6 197,并在 俄罗斯 地区排名第 30 823 位。
📊 受众指标与增长动态
自 невідомо 创建以来,项目保持高速增长,吸引了 21 857 名订阅者。
根据 12 六月, 2026 的最新数据,频道保持稳定运转。过去 30 天订阅人数变化为 -48,过去 24 小时变化为 -2,整体触达仍然可观。
- 认证状态: 未认证
- 互动率 (ER): 平均受众互动率为 12.66%。内容发布后 24 小时内通常能获得 7.50% 的反应,占订阅者总量。
- 帖子覆盖: 每篇帖子平均可获得 2 769 次浏览,首日通常累积 1 640 次浏览。
- 互动与反馈: 受众积极参与,单帖平均反应数为 9。
- 主题关注点: 内容集中在 .net, шарписта, навигация, await, string 等核心主题上。
📝 描述与内容策略
作者将该频道定位为表达主观观点的平台:
“Все самое полезное для C#-разработчика в одном канале.
По рекламе: @proglib_adv
Учиться у нас: https://proglib.io/w/b60af5a4
Для обратной связи: @proglibrary_feeedback_bot
РКН: https://gosuslugi.ru/snet/67a5c81cdc130259d5b7fead”
凭借高频更新(最新数据采集于 13 六月, 2026),频道始终保持新鲜度与高覆盖。分析显示受众积极互动,使其成为 技术与应用 类别中的关键影响点。
dotnet test в составе .NET 10, которая теперь нативно интегрирована с Microsoft.Testing.Platform вместо прежней модели VSTest.
— Новый инструмент Copilot Diagnostics для .NET в Visual Studio
Инструмент помогает разработчикам быстрее находить и исправлять ошибки в коде, предлагает условные брейкпоинты на основе анализа контекста, объясняет, почему не работают брейкпоинты и визуализирует коллекции IEnumerable в виде таблицы с возможностью фильтрации.
— Снова ошибки в Event Viewer на Windows 11
В июле Microsoft признала, что после обновления Windows 11 у пользователей в Средстве просмотра событий возникает ошибка, связанная с Firewall, и рекомендовала игнорировать её до окончательного устранения.
— Microsoft показала, как запустить GPT-OSS локально
— Вышел Git 2.51
🐸Библиотека шарписта
#свежак "Colors": [
{
"numberKey": 1,
"isPrimary": true,
"listColors": ["Red", "Blue", "Yellow"]
},
{
"numberKey": 2,
"isPrimary": false,
"listColors": ["Purple", "Green", "Orange"]
}
]
}
Сгенерированный C# код:
{
public Color[] Colors { get; set; }
}
public class Color
{
public int NumberKey { get; set; }
public bool IsPrimary { get; set; }
public string[] ListColors { get; set; }
}
🐸Библиотека шарписта
#бустMicrosoft.Extensions.AI
Поддержаны две версии — gpt-oss-120b и gpt-oss-20b; последняя работает на машине с 16 ГБ RAM, что делает локальные эксперименты и приватные сценарии реальными без облака.
Старт за 60 секунд:
dotnet new console -n OllamaGPTOSS
cd OllamaGPTOSS
dotnet add package Microsoft.Extensions.AI
dotnet add package OllamaSharp
# Отдельно: в Ollama заранее
# ollama pull gpt-oss:20b
Дальше подключайте function calling и локальный RAG — получатся офлайн-ассистенты и агенты с контролем данных и предсказуемыми затратами.
➡️ Блог разработчиков
🐸Библиотека шарписта
#свежакОтрефактори приведённый ниже код, сохранив точное поведение. Главные цели (в порядке приоритета): 1) поведение без изменений; 2) читабельность; 3) снижение/упрощение сложности; 4) улучшение структуры и соблюдение принципов SOLID. Обязательные ограничения: - Нельзя менять публичные сигнатуры (имена и параметры публичных функций/методов, публичные классы и их публичные интерфейсы). - Не менять внешние контракты (формат входов/выходов, исключения, побочные эффекты), если явно не согласовано. Ожидаемый выход (deliverables): 1) Unified diff (git-style unified diff) с изменениями — только изменения, применимые к файлам. Если создаёте новые файлы, укажите их в diff как new file mode. 2) Полный итоговый вариант рефакторнутого(ых) файла(ов) (после изменений) для быстрой проверки. 3) Минимальный набор юнит-тестов или скрипт/команды для воспроизведения и проверки, что поведение идентично исходному (если исходных тестов не было, создайте базовые тесты покрывающие ключевые сценарии). 4) Короткая секция «Ключевые решения» — по каждому существенному изменению объяснить: - Что было изменено (строки/функция/класс); - Почему (чёткая связь с читабельностью/сложностью/структурой/SOLID); - Влияние на поведение, производительность и сложность (оценка O-нотации или замеры при возможности); - Потенциальные риски/ограничения. 5) Сводка применённых принципов SOLID: для каждого принципа — что конкретно сделано (например: «SRP: класс X разделён на A и B, т.к. имел две ответственности»). 6) Commit-style summary: короткий заголовок (<= 50 символов) и 1-2 абзаца описания. 7) Если какое-то требование невозможно выполнить (например, воспроизвести тесты), явно укажите причину и предложите компромисс. Формат вывода: - Первой секцией выведите unified diff (если изменений нет — верните комментарий и пояснение почему). - Далее — «Полные файлы после рефакторинга». - Затем — «Юнит-тесты / Проверка» и инструкция как запускать (команды). - Завершите «Ключевыми решениями» и «Commit summary». <вставьте исходный код здесь>🐸Библиотека шарписта #буст
Мощь LLM раскрывается не в ней самой, а в системах, которые вы строите вокруг неё.Именно такие системы мы и будем строить на втором потоке нашего курса «AI-агенты для DS-специалистов». Мы не просто поговорим о RAG, а соберём полный пайплайн с оценкой качества, чтобы ваш агент не врал. Представьте, что вы сможете начать изучать эту сложную и востребованную тему уже 15 сентября, а не ждать официального старта в октябре. У вас будет фора в 3 недели, чтобы спокойно разобраться в векторных базах и подходе «LLM as a Judge». 💸 Цена 49.000 ₽ действует последние 4 дня — до 24 августа. 👉 Начать строить RAG раньше других
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<RuntimeIdentifier>linux-x64</RuntimeIdentifier>
<SelfContained>true</SelfContained>
<PublishSingleFile>true</PublishSingleFile>
<PublishTrimmed>true</PublishTrimmed>
<TrimMode>link</TrimMode>
<InvariantGlobalization>true</InvariantGlobalization>
<StripSymbols>true</StripSymbols>
</PropertyGroup>
Dockerfile:
FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
WORKDIR /src
COPY . .
RUN dotnet publish -c Release -o /out
FROM mcr.microsoft.com/dotnet/runtime-deps:8.0-jammy-chiseled AS final
WORKDIR /app
COPY --from=build /out ./
USER 10001
ENTRYPOINT ["./YourApp"] # self-contained бинарь
Важно: триммер удаляет неиспользуемый код. При рефлексии используйте атрибуты DynamicallyAccessedMembers, DynamicDependency или дескриптор ILLink.Descriptors.xml. InvariantGlobalization=true экономит место, но отключает локали ICU.
Рецепт 2 — Быстрый старт
Шаги:
• Включите ReadyToRun.
• Соберите framework-dependent (меньше JIT при старте).
• Упакуйте в chiseled ASP.NET образ.
csproj:
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<PublishReadyToRun>true</PublishReadyToRun>
<RuntimeIdentifier>linux-x64</RuntimeIdentifier>
<SelfContained>false</SelfContained>
<StripSymbols>true</StripSymbols>
</PropertyGroup>
Dockerfile:
FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
WORKDIR /src
COPY . .
RUN dotnet publish -c Release -o /out
FROM mcr.microsoft.com/dotnet/aspnet:8.0-jammy-chiseled AS final
WORKDIR /app
COPY --from=build /out ./
USER 10001
ENTRYPOINT ["dotnet", "YourApp.dll"]
Холодный старт:
docker run -p 8080:8080 app:test &
curl -w '\nTime: %{time_total}s\n' -s http://localhost:8080/health/ready -o /dev/null
Мини-усиление безопасности в Dockerfile:
# после COPY и USER
VOLUME ["/app/data"]
ENV ASPNETCORE_URLS=http://0.0.0.0:8080
# файловая система только для чтения
READONLY rootfs
Два профиля покрывают 80% кейсов: минимальный образ для утилит/микросервисов без тяжёлой динамики и быстрый старт для веб-API. Дальше — NativeAOT, если нужен экстремальный старт и размер.
🐸Библиотека шарписта
#буст«Введение в машинное обучение: как спрогнозировать стоимость недвижимости».Подробности рассказываю в гс выше — включай, чтобы не пропустить.
Type t = typeof(string); // по имени типа
Type t2 = "hello".GetType(); // у объекта
Type t3 = Type.GetType("System.Int32"); // по строке
Информация о типе:
Console.WriteLine(t.FullName); // полное имя типа
Console.WriteLine(t.Namespace); // пространство имён
Console.WriteLine(t.IsClass); // это класс?
Console.WriteLine(t.IsValueType); // это value-type?
Список методов:
foreach (var m in t.GetMethods())
{
Console.WriteLine(m.Name);
}
Список свойств:
foreach (var p in t.GetProperties())
{
Console.WriteLine($"{p.Name} : {p.PropertyType}");
}
Создание экземпляра динамически:
Type t = typeof(DateTime); object obj = Activator.CreateInstance(t, 2025, 8, 19); Console.WriteLine(obj);Вызов метода через рефлексию:
Type t = typeof(string);
MethodInfo m = t.GetMethod("Contains", new[] { typeof(string) });
bool result = (bool)m.Invoke("ChatGPT", new object[] { "GPT" });
Console.WriteLine(result); // true
Доступ к полю:
class Person { public string Name = "Alice"; }
var p = new Person();
FieldInfo f = typeof(Person).GetField("Name");
Console.WriteLine(f.GetValue(p)); // Alice
f.SetValue(p, "Bob");
Console.WriteLine(p.Name); // Bob
Доступ к приватному полю:
class Secret { private int code = 1337; }
var s = new Secret();
FieldInfo f = typeof(Secret).GetField("code",
BindingFlags.NonPublic | BindingFlags.Instance);
Console.WriteLine(f.GetValue(s)); // 1337
Вызов приватного метода:
class Hidden { private void SayHi() => Console.WriteLine("Hi!"); }
var h = new Hidden();
MethodInfo m = typeof(Hidden).GetMethod("SayHi",
BindingFlags.NonPublic | BindingFlags.Instance);
m.Invoke(h, null); // Hi!
Полезно для написания ORM, DI-контейнеров, сериализаторов.
🐸Библиотека шарписта
#буст
现已上线!2025 年 Telegram 研究 — 年度关键洞察 
