📍 Навигация: Вакансии • Задачи • Собесы 🐸 Библиотека шарписта #garbage_collector
😁22

Channel
@csharpproglib
On this record: Growth · Engagement · What this channel posts · Reactions · Posts · Posts edited after publishing · Citations · Telegram's recommendations · Cite this entry
21,715subscribers
-10 since we began measuring on 6 August 2026
Risers and fallers across the register · movement among entries of 10,000–31,623.
| Telegram ID | -1001348905920 |
|---|---|
| Type | Channel |
| Username | @csharpproglib |
| Description | Все самое полезное для C#-разработчика в одном канале. Наши курсы: https://clc.to/y3LDtw По рекламе: @proglib_adv Для обратной связи: @proglibrary_feeedback_bot РКН: https://gosuslugi.ru/snet/67a5c81cdc130259d5b7fead |
| Created | 23 November 2018 — measured — cross-checked against a third-party dataset (ext.tg_channel) |
| First recorded | 6 August 2026 |
| Last confirmed live | 21 August 2026 |
| Measurements held | 14 |
| Confirmed unchanged | 2 times, most recently 21 August 2026 |
| On Telegram | t.me/csharpproglib |
| Measured (UTC) | Subscribers | Change |
|---|---|---|
| 20 Aug 2026, 16:22 | 21,715 | -4 |
| 19 Aug 2026, 16:53 | 21,719 | -2 |
| 18 Aug 2026, 18:03 | 21,721 | -1 |
| 17 Aug 2026, 16:58 | 21,722 | +2 |
| 14 Aug 2026, 23:55 | 21,720 | +3 |
| 13 Aug 2026, 16:07 | 21,717 | -10 |
| 12 Aug 2026, 15:14 | 21,727 | +2 |
| 11 Aug 2026, 15:56 | 21,725 | -8 |
| 10 Aug 2026, 12:27 | 21,733 | +4 |
| 9 Aug 2026, 12:31 | 21,729 | -2 |
| 8 Aug 2026, 10:22 | 21,731 | +2 |
| 7 Aug 2026, 12:11 | 21,729 | +2 |
| 6 Aug 2026, 14:30 | 21,727 | +2 |
| 6 Aug 2026, 06:51 | 21,725 | first reading |
36 posts held, back to 22 July 2026 — the reader has not yet reached the start of this channel’s public history, so older posts may sit further back, unread. Read across 34 pagesof Telegram’s post history, 20 posts per page.
ERR is average views per post over the last 30 days divided by subscribers, the definition TGStat uses, so this figure is comparable with the one you will see elsewhere. It falls structurally as a channel grows: a high ERR on a small channel and a low one on a large channel describe reach mathematics, not quality. We publish the figure and the sample it came from and pass no verdict on it.
ER is defined industry-wide as (forwards + reactions + comments) ÷ views— note the denominator is views, not subscribers. Telegram’s public web preview carries views and reactions but not forward or comment counts, so the reaction rate above is the reactions term only and is therefore a floor: the true ER for this channel is higher by an amount we have not measured and will not estimate. It is computed over the 32 of 33 measured posts that carry a reaction reading, and over those same posts' views.
| Window | Rolling 30 days · latest post in window 21 August 2026 |
|---|---|
| Posts held | 36 (22 July 2026 – 21 August 2026) |
| Views total | 103,990 |
| Reactions total | 903 |
| Forwards / comments | not exposed by the public surface — not measured, not estimated |
| Readings taken | 22 Aug 2026, 08:58 UTC |
Views are a single reading per post, taken at the time above. A post published in the last day or two is still accumulating views, which pulls the 30-day average down slightly. That is a property of the standard definition rather than a fault in it, so we keep the definition rather than “correcting” the number into something nobody can reproduce.
Precision. Telegram publishes view counts on its public widget in short form — 8.12K, 3.7M — so any reading at or above 1,000 reaches us rounded to three significant figures, and only counts below 1,000 are exact. Averages and rates derived from them are shown to the same precision rather than to the unit: a figure like 3,701,250 would assert digits nobody measured.
Reaction counts are published per emoji and rounded the same way, so a total below 1,000 is exact and a larger one is a sum that may carry a rounded component from each emoji above 1,000. Because it is a sum, it does not look rounded — read a large reaction total as three significant figures per contributing emoji rather than as the figure it prints.
Lifetime counters from Telegram’s own channel header, read 22 August 2026 — not the date at the top of this page, which is when the subscriber count was last read. A count marked ≈ was rounded by Telegram before we ever saw it — t.me prints these counters in full below 1,000 and to three significant figures above, so ≈142,000 means somewhere between 141,500 and 142,499.
Measured directly from 1 video with a duration reading, out of the posts we hold for this channel — not this channel’s whole posting history, only the sample this register has actually read. An exact reading to the second, taken from the post itself rather than from Telegram’s own rounded chrome, so it carries no ≈ mark.
1,031 reactions across 33 posts, in 15 distinct kinds. The most used accounts for 33.4% of them.
| Reaction | Count | Share | Share, drawn |
|---|---|---|---|
| 👍 | 344 | 33.4% | |
| 👾 | 278 | 27.0% | |
| 🔥 | 137 | 13.3% | |
| 😁 | 126 | 12.2% | |
| ❤ | 65 | 6.30% | |
| 🥱 | 35 | 3.39% | |
| 🤩 | 20 | 1.94% | |
| 👏 | 8 | 0.776% | |
| ⚡ | 7 | 0.679% | |
| 🤔 | 4 | 0.388% | |
| 🥰 | 3 | 0.291% | |
| ❤🔥 | 1 | 0.097% | |
| 💯 | 1 | 0.097% | |
| 😍 | 1 | 0.097% | |
| 😢 | 1 | 0.097% |
No sentiment is inferred, and none should be read in. This table is ordered by count and by nothing else. Emoji do not carry stable meaning across languages or communities — 🙏 is thanks in one channel and mourning in another — so we publish which ones were pressed and how often, and pass no judgement on what an audience meant by them.
Precision. Telegram publishes reaction counts per emoji and short-forms each one — 4.34K, 1.2M — so any single kind at or above 1,000 reaches us at three significant figures, and only counts below 1,000 are exact. The shares above are ratios of those figures and carry the same error. This is also why the total here can differ slightly from a reaction total printed elsewhere on the page: both are sums of the same rounded parts, taken over samples with different edges.
Coverage. Reactions were read on 35 of the 36 sampled posts in this sample. Summed by Telegram’s own count on each post — not by adding up the per-emoji breakdown above — those same posts carry 1,035reactions in total: the kind of figure the paragraph above means by “a reaction total printed elsewhere on the page”.
Measured over the 36 most recent posts we hold, published 22 July 2026 to 21 August 2026, using the newest reading held for each. Telegram Stars are excluded: they are a payment, not a reaction, and they have their own section.
📍 Навигация: Вакансии • Задачи • Собесы 🐸 Библиотека шарписта #garbage_collector
😁22
✅ Visual Studio умеет превращать JSON в C#-классы за пару кликов Не нужен онлайн-конвертер. Копируете JSON и в Visual Studio выбираете: Edit → Paste Special → Paste JSON As Classes IDE сама сгенерирует классы, включая вложенные объекты и массивы. Особенно удобно, когда нужно быстро разобраться с ответом незнакомого API или сделать DTO для прототипа. 💡 А после генерации уже стоит привести классы в порядок: переи…
🤩17🥱11
💡 Скрытые копии структур. Зачем нужны readonly struct и in Структуры передаются по значению — это знают все. Но копия может появиться и там, где её совсем не ожидаешь. Представьте структуру с обычным, не readonly, методом. Если она находится в readonly-контексте, например в readonly поле или приходит через in, компилятору приходится защищать значение от изменения. При вызове такого метода он может создать защитную к…
❤4👍1🔥1
🔖 Required + init: обязательные свойства без длинного конструктора Раньше обязательные свойства часто приходилось передавать через конструктор или проверять уже во время выполнения. 🔵 В C# 11 появился required: public class User { public required string Email { get; init; } public required string Name { get; init; } public int Age { get; init; } } 🔵 Теперь компилятор не позволит создать объект без об…
❤7🔥3👏1
🖍 NuGet сокращает зависимость от долгоживущих API-ключей NuGet продолжает ужесточать безопасность публикации пакетов. Один из главных шагов — переход от постоянных API-ключей к короткоживущим credentials через Trusted Publishing. Вместо хранения секрета в CI/CD workflow получает OIDC-токен, NuGet проверяет его и выдаёт временный API-ключ. Такой ключ действует около часа и затем становится недействительным. Для CI/…
🤔4👍1🔥1😢1
🤨 NativeAOT. Что значит скомпилировать .NET в нативный код заранее NativeAOT снова на слуху, потому что в .NET 11 Preview 7 его сделали режимом по умолчанию в CLI ради быстрого старта. Разберём, что это вообще такое и чем отличается от привычной модели. Обычно .NET работает так. Код на C# компилируется в промежуточный язык IL, а в нативные инструкции его переводит JIT уже во время запуска. Это гибко, но у первого з…
❤4👍4
🔖 Помеченные break и continue в C# 15. Выход из вложенных циклов без костылей Знакомая боль. Есть вложенные циклы, и из внутреннего нужно прервать или продолжить внешний. Обычный break выходит только из ближайшего цикла, поэтому приходилось заводить булев флаг и проверять его на каждом уровне, либо прыгать через goto. И то и другое замусоривает логику. В C# 15 у циклов появились метки, а break и continue научились …
🔥36🥱4❤3
😬 Microsoft показала ещё один кусочек будущего .NET Вышел .NET 11 Preview 7. Апдейт затронул почти весь стек: C#, Runtime, SDK, ASP.NET Core, EF Core, MAUI, F# и Windows Forms. Главное изменение это перевод NativeAOT в режим по умолчанию в CLI ради заметно более быстрого старта приложений. Из языка подъехали фичи C# 15, среди них паттерны union и помеченные break и continue для управления вложенными циклами. В би…
🔥45👍6🤩2
👍 Современные помощники для валидации параметров Помните те времена, когда каждый метод начинался с целой простыни проверок входных параметров? Копипаста if (string.IsNullOrEmpty(...)) была ежедневной рутиной: public void ProcessUser(string name, string email, int age) { if (string.IsNullOrEmpty(name)) throw new ArgumentException("Value cannot be null or empty.", nameof(name)); if (string.IsNullOr…
👍23❤6👾4❤🔥1
📌 Версии версионирования Какую систему нумерации версий предпочитаете и встречали ли экзотические варианты? Делитесь опытом👇 📍 Навигация: Вакансии • Задачи • Собесы 🐸 Библиотека шарписта #схема
👍11
👨💻 Мгновенная валидация кода В стремительном темпе разработки важно улавливать ошибки сразу же после правки. Представьте, что можно запускать тесты каждый раз, когда вы сохраняете файл — без лишних кликов и ожидания. Команда дня: dotnet watch test --filter "Category=Unit» Эта команда активирует «наблюдение» за исходниками проекта и при каждом изменении автоматически запускает только те тесты, которые помечены …
🔥9❤2
💎 Вспоминаем SOLID SOLID — это 5 принципов объектно-ориентированного проектирования. Давайте повторим эту базу. — Single Responsibility Principle (Принцип единственной ответственности) Каждый класс должен иметь только одну причину для изменения. Плохо: класс UserManager и сохраняет пользователя в БД, и отправляет email. Хорошо: UserRepository хранит, EmailService отправляет письма. — Open/Closed Principle (Принц…
👍21❤5🔥3👏1🥰1
Showing the 12 most recent of 36 posts we hold for @csharpproglib. View and reaction counts are the latest single reading for each post, not a live figure, and a recent post is still accumulating both. A view count marked ≈ was rounded by Telegram before we ever saw it — t.me prints views in full below 1,000 and to three significant figures above, so ≈1,200,000 means somewhere between 1,150,000 and 1,249,999. Unmarked counts are exact. Text is reproduced from the public post preview and truncated for length.
@csharpproglib edited 1 post after it first published — the same permalink now carries different wording than the one this register originally read, caught because our own crawl held a copy of the earlier text.
An edit is not deception. Typo fixes, price updates and corrections look exactly like this too — this register can tell you the wording changed and when, not why. How this is measured.
Citation-graph rank — 528,573 of 1,583,249entries in the measured graph. A weighted position computed from the forward and mention edges below — republished posts weigh more than named mentions — and recomputed periodically, over the whole graph. Published only as this ordinal position, never as a score: a position is a fact, and a score printed beside one channel’s name would read as a verdict this register does not make. The two counts beneath stay separate for the same reason mentions are never summed with forwards anywhere else on this page — a named-by count costs nothing to manufacture. The top 100 by this measure, or how it is computed.
Republished by
Channels on the register that have forwarded this channel's posts into their own feed.
Republishes
Channels on the register whose posts this channel has forwarded.
Built only from forwarded posts we have actually read, on both sides. Coverage is early and deliberately incomplete: a missing link means we have not read the post that would prove it, never that the relationship does not exist. Counts are distinct forwarded posts observed, so they only ever go up as we read more.
Named by 6 registered channels — every channel on the register whose own posts have named this one, by its current username or any other username it currently holds, merged from two separately captured readings of the same fact so a namer caught by only one of them is not missed and a namer both caught is not counted twice. A username this channel has since dropped is not matched — that handle may belong to someone else now, and crediting today’s namer to yesterday’s owner would misattribute it.
Named by
Channels on the register whose posts name this channel's handle.
Names
Channels on the register whose handles appear in this channel's posts.
A mention is a weaker signal than a forward and is counted separately for that reason — naming a channel is not republishing it, and a handle in a post body is easy to place deliberately. The post counts beside each row below are distinct posts in which the handle appeared, from posts we have read on both sides — the “Named by N registered channels” figure above is a different count, of distinct NAMING CHANNELS rather than posts, and is not the sum of the rows under it.
The reverse of the list above, and a different kind of signal. This does not require this channel to have ever been asked about directly — each row below is a channel we DID ask Telegram about, whose Telegram-generated list happened to include this one. A channel can appear here with an empty list above it, because being named by someone else’s query is independent of having been queried itself.
This channel appears in 2 seed channels' Telegram-generated recommendation lists in total. Each is Telegram’s list for THAT channel, not this one — see how this is measured.
A live page changes as we take new readings, so a citation should name the measurement it is based on, not just the URL. The line below cites the subscriber count as measured 20 August 2026 — this entry's latest reading, not the date you are reading this.
“Библиотека шарписта | C#, F#, .NET, ASP.NET” (@csharpproglib), 21,715 subscribers as measured 20 August 2026. Telegram Register, tgregister.com/channel/csharpproglib.
Full measurement history, CC BY 4.0. Every reading this register holds for this entry, not just the latest one, as a dated, downloadable record: CSV · JSON. Free to use with attribution to tgregister.com. Each file carries its own generation timestamp, which is the figure to cite for exactly when the data was retrieved.