Всё по фронтенду, бэкенду и девопсу в одном месте
Разместить рекламу: @tproger_sales_bot
Правила общения: https://tprg.ru/rules
Другие каналы: @tproger_channels
Сайт: https://tprg.ru/site
Регистрация в перечне РКН: https://tprg.ru/64ai
Created
14 June 2019 — measured — cross-checked against a third-party dataset (ext.tg_channel)
Technology — a classification, not a measurement. An on-box language model (Qwen3.6-35B-A3B-FP8, prompt version 1) read this channel’s own recent posts on 10 September 2026 and assigned it the closest of 31 fixed categories, at 100% confidence. This is a model’s judgement about what the channel is likely to be about, not a fact this register measured the way a subscriber count or a view count is measured — it can be revised on a later pass, and it carries no weight anywhere else on this page. How this classification works, and why it has no browse page of its own yet.
Growth
36 measurements spanning 51 days, net -278. Dots are measurements; the straight line between them is drawn to join them, not to claim we know the path taken in between — snapshots are recorded only when a count changes, so gaps mean “no change observed”, never “interpolated”. The vertical axis spans 22,387–22,749 and does not start at zero.
Measurement log — every subscribers count we have recorded, most recent 20 of 36
Measured (UTC)
Subscribers
Change
26 Sept 2026, 05:20
22,429
-30
19 Sept 2026, 08:36
22,459
-15
16 Sept 2026, 21:18
22,474
-8
14 Sept 2026, 23:21
22,482
-10
13 Sept 2026, 07:15
22,492
-23
11 Sept 2026, 09:41
22,515
-5
8 Sept 2026, 18:16
22,520
-23
5 Sept 2026, 12:59
22,543
-14
3 Sept 2026, 14:41
22,557
-19
2 Sept 2026, 06:06
22,576
-9
1 Sept 2026, 08:18
22,585
-5
31 Aug 2026, 05:12
22,590
+3
30 Aug 2026, 07:34
22,587
-5
29 Aug 2026, 06:25
22,592
-10
28 Aug 2026, 08:15
22,602
-8
27 Aug 2026, 07:25
22,610
-4
26 Aug 2026, 06:22
22,614
-6
25 Aug 2026, 02:56
22,620
-2
23 Aug 2026, 20:24
22,622
+1
22 Aug 2026, 07:29
22,621
first reading
Engagement
106 posts held, back to 23 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 59 pages of Telegram’s post history, 20 posts per page.
ERR · 30 days
7.29%
avg views ÷ 22,429 subscribers
Avg views / post
1,630
49 posts measured
Reaction rate
0.195%
reactions ÷ views · ER floor
Posts in window
49
of 106 held
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.
What these figures were computed from
Window
Rolling 30 days · latest post in window 26 September 2026
Posts held
106 (23 July 2026 – 26 September 2026)
Views total
80,080
Reactions total
156
Forwards / comments
not exposed by the public surface — not measured, not estimated
Readings taken
27 Sept 2026, 02:41 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.
What this channel posts
Photos
≈2,070
Videos
≈559
Links
≈4,330
Lifetime counters from Telegram’s own channel header, read 27 September 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.
Reaction mix
656 reactions across 102 posts, in 13 distinct kinds. The most used accounts for 26.5% of them.
Every reaction kind recorded on the sample, most used first
Reaction
Count
Share
Share, drawn
😁
174
26.5%
❤
172
26.2%
👍
124
18.9%
🤣
56
8.54%
🔥
54
8.23%
🤔
20
3.05%
🫡
19
2.90%
🤯
14
2.13%
👎
12
1.83%
🗿
4
0.61%
🤩
3
0.457%
💩
2
0.305%
🥰
2
0.305%
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 106 of the 106 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 692 reactions in total: the kind of figure the paragraph above means by “a reaction total printed elsewhere on the page”.
Measured over the 106 most recent posts we hold, published 23 July 2026 to 26 September 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.
Advertising
Ad load
2.83%
3 of 106 posts carry an ad marker
Regulatory tokens
3
posts carrying an erid · 3 distinct tokens
Median views · ads
1,640
over 3 measured posts
Median views · rest
2,160
over 103 measured posts
An ad marker, not a judgement about a post. A post is counted here because it carries one of two explicit markings: an erid token, which Russian law has required on paid placements since 2022 and which is issued against a specific advertising contract, or a #реклама / #ad hashtag in the body, which is the channel declaring it itself. The first is documentary; the second is a self-declaration and is weaker. No classifier reads the text and decides — nothing on this site guesses that a post is an advertisement.
This is a floor, and it can only ever be a floor. A channel that runs paid placements without marking them produces no marker for us to count, and an unmarked ad is indistinguishable from an ordinary post on the public surface. The ad load above therefore means “the share of posts that declared themselves”, never “the share of posts that were paid for”. A low figure is not evidence of a channel that runs few ads.
Both figures are medians, and no ratio between them is published. Each is a view reading that actually occurred on a post, picked by percentile_disc rather than averaged, so one viral post cannot move it and no interpolated value is invented between two readings. The sample on one side is under five posts, which is too thin to compare. The two figures are shown side by side with the count behind each, and deliberately not divided into a headline like “ads get x% fewer views” — an arithmetic that is easy to print and, at this sample size, means nothing.
Advertising tokens recorded on this entry
erid
Posts
First seen
Last seen
2SDnjdSC4XD
1
31 August 2026
31 August 2026
2VtzqwLN1Md
1
31 August 2026
31 August 2026
2W5zFHGPF8M
1
6 August 2026
6 August 2026
A token repeated across several posts is one advertising contract placed more than once, which is what the identifier is for. The strings are reproduced exactly as they appeared in the post or in its click-through URL and are not validated against any registry — we record the marker a channel published, and whether it resolves to a real contract is a question for the register that issued it.
Measured over the 106 most recent posts we hold, published 23 July 2026 to 26 September 2026. Views are the latest single reading held for each post, and any reading at or above 1,000 is rounded by Telegram to three significant figures.
Как читать HTML-реликты из эпохи браузерных войн
В старом head можно встретить строки, смысл которых уже не восстановить по имени. Например, X-UA-Compatible заставлял Internet Explorer выбирать самый новый доступный режим документа, а условные комментарии показывали разную разметку отдельным версиям браузера.
Другие теги защищали страницу от вмешательства сторонних программ. Skype Toolbar превращал номера телефонов…
Как работает балансировка нагрузки в веб-бэкенде
Балансировщик принимает запрос раньше API и выбирает один из нескольких серверов. Так приложение масштабируется горизонтально: вместо наращивания процессора и памяти одной машины можно добавлять серверы, а при отказе одного остальные продолжат отвечать.
Схема распределения зависит от нагрузки. Циклический алгоритм Round Robin по очереди отправляет запросы на каждый с…
Как собрать турнирную сетку FIFA на CSS Grid и subgrid
На странице FIFA каждый столбец раунда вынесен в отдельный элемент: разметка повторяет экран. В разборе макета показана другая структура: один элемент на раунд, внутри две группы матчей по сторонам.
Сетка получает восемь колонок и четыре строки. Вложенный раунд растягивается по ней и через subgrid наследует те же линии, поэтому группы можно поставить в первую и…
Как связать Lottie-анимацию с кликами через DOM
В веб-игрушке Stress Release нужна была точная реакция на клик. Физический движок выдавал правдоподобное движение, но мог подменить заданные кадры расчётами. Поэтому команда выбрала Lottie.
Клик переводят в локальные координаты персонажа, а расстояние до центра вычисляют через Math.hypot(). Оно определяет очки и интенсивность отклика; анимация взрыва появляется в мест…
Что делает архитектор решений и как подготовиться к этой роли
Веб-разработчику, который хочет влиять не на один сервис, а на систему целиком, пригодится взгляд архитектора решений. Он переводит бизнес-задачу в набор доработок и связей между системами.
Сначала архитектор разбирает требования на функции, распределяет их по системам и проектирует обмен данными. Итог оформляет в документ с диаграммами систем, интеграци…
Как проверять все пути к res.redirect() в Node.js
В cas-authentication-user 0.3.0 проверка отклоняла внешний returnTo, но брала запасной путь из адреса запроса. url.parse() превращал /\bad.example.com в //bad.example.com, а браузер считал это адресом чужого домена. Исправление одного открытого редиректа оставило второй в той же функции.
Аудит начинайте с res.redirect(): перечислите все входящие значения и проверьте…
Когда ИТ-проекту нужно быстро масштабироваться, а своего железа нет
Знакомая ситуация: публичное облако удобно для большинства сервисов, но для части нагрузок — платёжных систем, хранения персональных данных, соответствия требованиям регуляторов — нужна физическая изоляция. Своё железо эту задачу решает. Но дальше начинается: закупка серверов, настройка гипервизора, разворачивание Kubernetes и постоянное обслуживани…
Как сверстать диагональную шапку таблицы доступнее
Эрик Мейер разбирает шапку таблицы Apollo 16: угол разделён диагональю между подписями строк и столбцов. Доступность двух span в одной ячейке показалась ему сомнительной.
Он оставил подписи в двух строках thead, растянул заголовки на обе строки через rowspan и наложил вторую строку на первую. Диагональ рисует CSS-градиент. Safari не применяет относительное позицион…
Как публиковать блог через Standard.site и AT Protocol
Standard.site задаёт схему JSON-записей для статей в сети Bluesky. Материал получает известные сервисам поля, поэтому pckt, Docs.surf, potatonet и Leaflet могут показать его без отдельной интеграции, а Bluesky собирает расширенное превью.
Для запуска нужны две записи: одна описывает издание, вторая статью. В разборе Piccalilli показана реализация на JavaScript …
Фреймворки меняются, а логика и процессы в работе над проектами всегда останутся главными. В подборке разбираем, как задача проходит путь от бэклога до релиза, какие стратегии деплоя не роняют прод и как подходить к модернизации легаси, а заодно как перестроить мышление при переходе с React на Angular. Дополняют её тексты про работу с выделенной командой и безопасность, от многофакторки до ловушек формального контрол…
Почему HTML-атрибут accept ухудшает загрузку файлов и чем его заменить
Атрибут accept в поле загрузки оставляет доступными только заданные типы файлов, а остальные делает серыми. Часть пользователей не замечает это состояние, нажимает на недоступный файл и решает, что интерфейс сломан.
Защитой такой фильтр всё равно не служит: перетаскивание файла позволяет его обойти, размер он не проверяет, а Firefox на Android е…
Как уместить динамическую карту мира в 10 КБ
Карта Calibre показывает пользовательские сессии по странам, а цвет передаёт оценку опыта на основе производительности сайта. При сборке создаётся статический SVG; приложение загружает его и задаёт цвета странам через CSS-переменные.
Скрипт на Node.js упрощает границы в GeoJSON библиотекой Turf, переносит их на карту через d3-geo и относит ячейки к странам. Один шестиуго…
❤1
Showing the 12 most recent of 106 posts we hold for @tproger_web. 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.
Forward network
Republished by
Channels on the register that have forwarded this channel's posts into their own feed.
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.
Mentions
Named by 3 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.
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.
Handles this channel named that no longer answer
Dead references
4
handles named in this channel’s posts, vacant today
Evidenced gone
1
we ourselves saw one of these resolve, at some point
Never seen alive
3
vacant every time we have ever looked
@tproger_web named 4 handles that resolve to nothing today. That is a fact about the reference, not necessarily a fact about the handle’s history — see the two groups below.
Most of these may never have existed as a live channel at all. A handle a channel names can be a typo, an aspirational name nobody registered, or a channel that was already gone before this one ever mentioned it. Unless a row below is marked evidenced, all we know is that it references a handle that is not a live channel today — not that anything “died”. How this is measured.
Evidenced gone
We ourselves saw each of these resolve to a real page at some point before it went vacant — a genuine, evidenced change, not an inference from absence.
@reactuses named in 4 posts, 23 August 2026 – 29 August 2026 · confirmed gone 27 August 2026 (two independent sightings — see how we confirm a dead handle)evidenced
Never seen alive
References a handle that is not a live channel — we have no record it ever was one.
@ternlight named in 3 posts, 8 August 2026 – 12 August 2026
@ambientcss named in 2 posts, 3 September 2026 – 4 September 2026
@supports named in 2 posts, 29 August 2026 – 29 August 2026
Channels Telegram recommends alongside this one
Telegram’s own answer, not this register’s. When this register asks Telegram’s API what is similar to this channel, this is the list it returns, in the exact order Telegram returns it — never re-sorted by subscribers or by anything else this register measures. The relationship, and the order, are Telegram’s; we record them and date them, and make no claim of our own about which of these channels actually resemble this one.
Read from Telegram’s recommendation API, most recently 20 September 2026. Telegram holds a list like this for a small and growing share of the register — how this is measured, and why most channel pages show nothing here.
Appears in Telegram’s recommendations for other channels
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.
Библиотека фронтендера | Frontend, JS, JavaScript, React.js, Angular.js, Vue.js @frontendproglib · 20,930 Telegram ranks this channel #4 of 93 here — alongside 92 others — read 25 September 2026
Типичный программист @tproger · 78,305 Telegram ranks this channel #4 of 95 here — alongside 94 others — read 19 August 2026
FrontEndDev @front_end_dev · 25,875 Telegram ranks this channel #5 of 95 here — alongside 94 others — read 13 September 2026
Frontender's notes [ru] @frontendnoteschannel_ru · 31,430 Telegram ranks this channel #8 of 95 here — alongside 94 others — read 6 September 2026
NOP::Nuances of Programming @nuancesprog · 56,542 Telegram ranks this channel #8 of 84 here — alongside 83 others — read 23 August 2026
Senior Frontend - javascript, html, css @seniorFront · 23,904 Telegram ranks this channel #10 of 89 here — alongside 88 others — read 17 September 2026
Журнал «Код» @thecodemedia · 49,232 Telegram ranks this channel #10 of 97 here — alongside 96 others — read 25 August 2026
IT Юмор @ithumor · 60,568 Telegram ranks this channel #10 of 94 here — alongside 93 others — read 22 August 2026
Владилен: IT в эпоху AI @vladm · 39,286 Telegram ranks this channel #16 of 96 here — alongside 95 others — read 30 August 2026
Сайтодел | GitHub, Верстка, Сайты, Вайбкодинг @sitodel · 25,725 Telegram ranks this channel #21 of 89 here — alongside 88 others — read 13 September 2026
[404] — программирование @procode404 · 40,506 Telegram ranks this channel #22 of 83 here — alongside 82 others — read 30 August 2026
Библиотека программиста @proglibrary · 78,288 Telegram ranks this channel #29 of 82 here — alongside 81 others — read 19 August 2026
FrontEnd Development @fedevelopment · 28,752 Telegram ranks this channel #32 of 88 here — alongside 87 others — read 9 September 2026
Макеты для верстки @figma2html · 45,580 Telegram ranks this channel #39 of 90 here — alongside 89 others — read 27 August 2026
Porscode | CMD @porscode_tg · 28,393 Telegram ranks this channel #45 of 77 here — alongside 76 others — read 9 September 2026
Python Academy @python_academy · 44,284 Telegram ranks this channel #47 of 87 here — alongside 86 others — read 28 August 2026
Code Ready | Frontend @code_ready · 21,604 Telegram ranks this channel #64 of 89 here — alongside 88 others — read 23 September 2026
Frontend Portal @FrontendPortal · 36,678 Telegram ranks this channel #64 of 90 here — alongside 89 others — read 1 September 2026
Front End World @front_end_first · 25,950 Telegram ranks this channel #67 of 90 here — alongside 89 others — read 13 September 2026
This channel appears in 19 seed channels' Telegram-generated recommendation lists in total. Each is Telegram’s list for THAT channel, not this one — see how this is measured.
Cite this entry
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 26 September 2026 — this
entry's latest reading, not the date you are reading this.
“Веб-страница” (@tproger_web), 22,429 subscribers as measured 26 September 2026. Telegram Register, tgregister.com/channel/tproger_web.
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.