ch
Feedback

不要被骗子欺骗!Telemetrio 会找到并标记这些频道 👉 如果想查看标记,请订阅

Типичный программист

Типичный программист

前往频道在 Telegram

Всё самое интересное по программированию Разместить рекламу: @tproger_sales_bot Правила общения: https://tprg.ru/rules Другие каналы: @tproger_channels Сайт: https://tprg.ru/site VK: vk.com/tproger Регистрация в перечне РКН: https://tprg.ru/mJwo

显示更多

📈 Telegram 频道 Типичный программист 的分析概览

频道 Типичный программист (@tproger) 俄语 语言赛道中的 是活跃参与者。目前社区聚集了 77 966 名订阅者,在 技术与应用 类别中位列第 1 644,并在 俄罗斯 地区排名第 7 348 位。

📊 受众指标与增长动态

自 невідомо 创建以来,项目保持高速增长,吸引了 77 966 名订阅者。

根据 27 十月, 2026 的最新数据,频道保持稳定运转。过去 30 天订阅人数变化为 -249,过去 24 小时变化为 7,整体触达仍然可观。

  • 认证状态: 已认证(Telegram 官方确认)
  • 互动率 (ER): 平均受众互动率为 12.32%。内容发布后 24 小时内通常能获得 5.89% 的反应,占订阅者总量。
  • 帖子覆盖: 每篇帖子平均可获得 9 607 次浏览,首日通常累积 4 590 次浏览。
  • 互动与反馈: 受众积极参与,单帖平均反应数为 22。
  • 主题关注点: 内容集中在 sql, архитектура, api, docker, github 等核心主题上。

📝 描述与内容策略

作者将该频道定位为表达主观观点的平台:
“Всё самое интересное по программированию Разместить рекламу: @tproger_sales_bot Правила общения: https://tprg.ru/rules Другие каналы: @tproger_channels Сайт: https://tprg.ru/site VK: vk.com/tproger Регистрация в перечне РКН: https://tprg.ru/mJw...”

凭借高频更新(最新数据采集于 28 十月, 2026),频道始终保持新鲜度与高覆盖。分析显示受众积极互动,使其成为 技术与应用 类别中的关键影响点。

77 966
订阅者
+724 小时
-817 天
-24930 天
吸引订阅者
10月 '26
十月 '26
+358
在37个频道中
九月 '26
+381
在19个频道中
Get PRO
八月 '26
+414
在19个频道中
Get PRO
七月 '26
+643
在21个频道中
Get PRO
六月 '26
+354
在13个频道中
Get PRO
五月 '26
+708
在17个频道中
Get PRO
四月 '26
+394
在13个频道中
Get PRO
三月 '26
+646
在29个频道中
Get PRO
二月 '26
+427
在28个频道中
Get PRO
一月 '26
+349
在13个频道中
Get PRO
十二月 '25
+7 357
在44个频道中
Get PRO
十一月 '25
+370
在30个频道中
Get PRO
十月 '25
+988
在25个频道中
Get PRO
九月 '25
+1 690
在24个频道中
Get PRO
八月 '25
+486
在33个频道中
Get PRO
七月 '25
+509
在40个频道中
Get PRO
六月 '25
+307
在12个频道中
Get PRO
五月 '25
+423
在24个频道中
Get PRO
四月 '25
+447
在27个频道中
Get PRO
三月 '25
+809
在22个频道中
Get PRO
二月 '25
+817
在14个频道中
Get PRO
一月 '25
+904
在30个频道中
Get PRO
十二月 '24
+655
在16个频道中
Get PRO
十一月 '24
+456
在20个频道中
Get PRO
十月 '24
+614
在25个频道中
Get PRO
九月 '24
+601
在13个频道中
Get PRO
八月 '24
+635
在12个频道中
Get PRO
七月 '24
+541
在13个频道中
Get PRO
六月 '24
+327
在9个频道中
Get PRO
五月 '24
+546
在14个频道中
Get PRO
四月 '24
+564
在11个频道中
Get PRO
三月 '24
+368
在3个频道中
Get PRO
二月 '24
+339
在7个频道中
Get PRO
一月 '24
+325
在7个频道中
Get PRO
十二月 '23
+315
在9个频道中
Get PRO
十一月 '23
+3 368
在30个频道中
Get PRO
十月 '23
+472
在5个频道中
Get PRO
九月 '23
+558
在0个频道中
Get PRO
八月 '23
+890
在0个频道中
Get PRO
七月 '23
+713
在0个频道中
Get PRO
六月 '23
+688
在0个频道中
Get PRO
五月 '23
+743
在0个频道中
Get PRO
四月 '23
+725
在0个频道中
Get PRO
三月 '23
+748
在0个频道中
Get PRO
二月 '23
+1 887
在0个频道中
Get PRO
一月 '23
+1 425
在0个频道中
Get PRO
十二月 '22
+2 021
在0个频道中
Get PRO
十一月 '22
+463
在0个频道中
Get PRO
十月 '22
+854
在0个频道中
Get PRO
九月 '22
+599
在0个频道中
Get PRO
八月 '22
+720
在0个频道中
Get PRO
七月 '22
+810
在0个频道中
Get PRO
六月 '22
+741
在0个频道中
Get PRO
五月 '22
+893
在0个频道中
Get PRO
四月 '22
+862
在0个频道中
Get PRO
三月 '22
+873
在0个频道中
Get PRO
二月 '22
+457
在0个频道中
Get PRO
一月 '22
+477
在0个频道中
Get PRO
十二月 '21
+846
在0个频道中
Get PRO
十一月 '21
+932
在0个频道中
Get PRO
十月 '21
+963
在0个频道中
Get PRO
九月 '21
+1 165
在0个频道中
Get PRO
八月 '21
+1 052
在0个频道中
Get PRO
七月 '21
+1 065
在0个频道中
Get PRO
六月 '21
+984
在0个频道中
Get PRO
五月 '21
+933
在0个频道中
Get PRO
四月 '21
+1 188
在0个频道中
Get PRO
三月 '21
+1 269
在0个频道中
Get PRO
二月 '21
+1 815
在0个频道中
Get PRO
一月 '21
+1 521
在0个频道中
Get PRO
十二月 '20
+77 508
在0个频道中
日期
订阅者增长
提及
频道
28 十月+3
27 十月+16
26 十月+6
25 十月+15
24 十月+10
23 十月+5
22 十月+11
21 十月+17
20 十月+20
19 十月+13
18 十月+14
17 十月+24
16 十月+30
15 十月+19
14 十月+15
13 十月+17
12 十月+20
11 十月+13
10 十月+3
09 十月+17
08 十月+13
07 十月+12
06 十月+11
05 十月+9
04 十月+7
03 十月+5
02 十月+8
01 十月+5
频道帖子
Один удачный запуск ещё не бенчмарк Команда отработала быстрее. Или просто данные уже оказались в кеше? hyperfine повторяет запуски и показывает среднее время, разброс и выбросы. На фоне красивого единственного замера это полезное занудство. Параметр --warmup позволяет отдельно прогреть программу перед измерениями, а --prepare выполняет подготовку перед каждым запуском. Важно заранее решить, какой сценарий сравнивается: первый холодный старт или обычная повторная работа. Это разные вопросы, и ответы тоже могут различаться. В ролике из README авторы сравнивают mypy и ty. Числа на экране относятся к их конкретному тесту и окружению, а не обещают такое же соотношение в любом проекте. Смысл инструмента в том, чтобы получить собственное воспроизводимое сравнение.

2
Путь к репозиторию тоже умеет портить кеш У Cloudflare ревьюер кода каждый раз получал почти один и тот же промпт, но общий к
Путь к репозиторию тоже умеет портить кеш У Cloudflare ревьюер кода каждый раз получал почти один и тот же промпт, но общий кеш между репозиториями не работал. В переиспользуемую часть затесались путь к проекту и дата. Маленькая деталь, за которую платили на каждом ревью. Команда вынесла меняющиеся данные за границу общего префикса. Заодно убрала недоступные инструменты, повторное чтение данных и лишний финальный вызов, поменяла модели и уровень рассуждений. Средняя цена ревью снизилась с $2,43 до $0,77, медиана времени с 4:09 до 1:32. Но в разборе оптимизации есть и неудобный результат: performance-ревьюер на medium стал пропускать часть важных проблем. Это серия изменений, а не контролируемый эксперимент и не победа одного кеша. Смотреть нужно и на счёт, и на то, что агент перестал замечать.
3 238
3
У NASA есть фреймворк для полётного софта Очереди сообщений, потоки, компоненты с явными интерфейсами. Звучит знакомо, пока н
У NASA есть фреймворк для полётного софта Очереди сообщений, потоки, компоненты с явными интерфейсами. Звучит знакомо, пока не выясняется, что всё это нужно роверу или вертолёту. F´, он же F Prime, разработали в JPL для полётных и других embedded-приложений. Компоненты общаются через порты, C++-фреймворк предоставляет базовую инфраструктуру и абстракцию ОС. Отдельные инструменты описывают соединения, генерируют код и помогают с unit- и integration-тестами. Интересно посмотреть, как здесь устроена повторная сборка системы из проверяемых частей. Сам фреймворк, конечно, не гарантирует успех миссии: конкретные железо, ограничения и проверки никуда не исчезают. На фото наземные испытательные модели роверов CADRE. Фото: NASA/JPL-Caltech.
3 873
4
Кто забрал всю сеть? Общий график показывает, что канал занят. Отлично, осталось понять кем. bandwhich раскладывает трафик ср
Кто забрал всю сеть? Общий график показывает, что канал занят. Отлично, осталось понять кем. bandwhich раскладывает трафик сразу по процессам, соединениям и удалённым адресам. На видео из проекта видно, как вместо одного числа появляются конкретные потребители. Под капотом он захватывает пакеты и сопоставляет их с данными ОС: /proc в Linux, lsof в macOS, WinApi в Windows. Имена хостов пытается получить в фоне через reverse DNS. Так можно отличить фоновую загрузку от процесса, который вообще не должен был активно ходить в сеть. Для захвата нужны соответствующие права. А содержимое зашифрованных запросов от такой раскладки видимым не станет. Ещё нюанс: проект в режиме passive maintenance, критические ошибки исправляют, новые функции активно не разрабатывают.
4 937
5
Голое железо и root-доступ, ВМ со снапшотами по расписанию, Kubernetes с GitOps в проде или всё сразу. В фановом тесте от ком
Голое железо и root-доступ, ВМ со снапшотами по расписанию, Kubernetes с GitOps в проде или всё сразу. В фановом тесте от команды Deckhouse из таких ответов складывается один из 10 типов инфраструктуры. Укротитель давно научился жить с ВМ и Kubernetes рядом, но устал от двух центров управления. Соковыжималка запускает базы и ML прямо на железе, чтобы гипервизор не съедал производительность. Антиквар не трогает систему, которая работает с нулевых. А Повелителю облаков уютно до первого кругленького счёта. Грузчик и Коллекционер выпадают реже всех. Если достался один из них, ссылкой на результат точно стоит поделиться с командой. → Пройти тест и узнать свой тип
5 509
6
Git умеет запоминать ваши решения конфликтов Долгоживущая ветка, очередной rebase и знакомый конфликт в том же участке файла. Кажется, это решение уже набирали. Git умеет его запомнить: механизм rerere сохраняет исходный конфликт и результат ручной правки, если включён rerere.enabled. При следующем подходящем конфликте он пытается применить прежнее решение через трёхстороннее слияние. Это полезно, когда ветку приходится несколько раз сверять с изменяющейся основной веткой. Записывать решение вручную отдельной командой при каждом шаге обычно не нужно: merge, commit и rebase сами вызывают rerere в нужных местах. Но память Git не заменяет проверку смысла. Старый ответ может чисто примениться к коду и всё равно оказаться неверным. В базовом режиме без autoupdate результат остаётся в рабочем дереве, а индекс не меняется. Перед git add остаются просмотр diff и тесты. Экономится повторное редактирование, а ответственность за решение остаётся у разработчика.
5 896
7
SQLite может завершить коммит удалением файла Транзакция меняет несколько страниц базы, а питание может пропасть между двумя записями. Как после перезапуска получить «всё или ничего»? В разборе атомарного коммита SQLite важнейший момент выглядит буднично: удаляется файл журнала. Речь о rollback journal в режиме DELETE. Сначала SQLite сохраняет исходные страницы в журнал и сбрасывает его на устойчивый носитель. Затем записывает изменённые страницы базы и тоже синхронизирует их. Только после этого удаляет журнал. Пока он пригоден для восстановления, прерванные изменения можно откатить. После удаления транзакция считается завершённой. При открытии базы SQLite проверяет не просто наличие файла, а признаки «горячего» журнала, включая заголовок и блокировки. Всё это опирается на корректную работу синхронизации и хранилища. У WAL другой протокол. Здесь же эффект «всё или ничего» получается из строгого порядка действий и чёткой границы завершения.
5 914
8
Option в Rust не обязательно занимает дополнительное место У значения есть два состояния: оно присутствует или его нет. Кажется, для Option<T> к самому значению придётся добавить отдельный флаг. Но тип NonZeroU32 уже оставляет свободное состояние: число ноль в нём запрещено. Именно ноль можно использовать для None, а остальные значения остаются для Some. Поэтому Option<NonZeroU32> имеет тот же размер и выравнивание, что и NonZeroU32. Это гарантия документации Rust, а не удачное совпадение в одном эксперименте с компилятором. Такой приём называют null pointer optimization, хотя работает он и с числами NonZero. Гарантия распространяется на конкретный список типов, в том числе ссылки и некоторые указатели. Переносить её на любой Option<T> нельзя. Здесь ограничение типа даёт полезный бонус: отсутствие значения помещается в уже свободную комбинацию битов.
6 409
9
Кто испортил это поле? В объекте уже лежит неправильное значение. Где его записали, неизвестно, а при следующем запуске ошибка может исчезнуть. Отладчик rr предлагает сначала поймать сбой под записью, а потом сколько угодно раз разбирать один и тот же запуск в gdb. В примере проекта у объекта Firefox неверная ширина. Разработчик ставит watch -l mRect.width и выполняет reverse-cont. Отладчик идёт назад и останавливается на присваивании, которое изменило поле. Адреса объектов и порядок событий при повторном воспроизведении сохраняются, поэтому найденные зацепки не теряются после перезапуска отладки. Это работа с сохранённым исполнением. Для rr нужны Linux и совместимый процессор, в виртуальной машине ещё и доступ к аппаратным счётчикам. Есть ощутимая цена для параллельного кода: rr эмулирует одноядерную машину. Зато пойманный редкий баг больше не приходится ловить заново.
6 251
10
Один зашифрованный архив, несколько получателей и никакого общего пароля Нужно передать архив нескольким коллегам. Можно завести общий пароль и потом разбираться, кому его уже переслали. У утилиты age есть другой вариант: один файл шифруется на несколько публичных ключей, и каждый получатель открывает его своим секретным ключом. Список адресатов задаётся повторением -r или файлом с ключами через -R recipients.txt. Сами секретные ключи друг другу передавать не нужно. А благодаря обычным потокам Unix вывод tar можно сразу направить в age, без промежуточного незашифрованного архива на диске. Есть важная граница: шифрование само по себе не подтверждает личность отправителя. Принадлежность публичных ключей тоже нужно проверить отдельно. Удобство здесь вполне конкретное: несколько человек читают один архив, а передавать друг другу личные секретные ключи не приходится.
6 716
11
Как поймать причину торможения, которое уже закончилось Запрос иногда зависает, но к моменту включения трассировки всё снова работает. Тут полезен flight recorder из Go 1.25: он заранее собирает недавние события runtime в буфер в памяти. Когда программа замечает проблему, из буфера можно сохранить предшествующий ей фрагмент. В примере команды Go снимок запускается после первого ответа дольше 100 мс. Трасса приводит к неожиданному виновнику: defer b.mu.Unlock() внутри цикла. Блокировки снимаются только при выходе из функции, а та ещё успевает отправить HTTP-запрос. Всё это время другие горутины ждут. Самописец здесь помогает сохранить именно момент ожидания, который иначе легко пропустить. Порог в 100 мс относится к примеру, а буфер и сбор событий расходуют ресурсы. Зато не нужно копить трассу за несколько дней работы сервера ради одного редкого сбоя.
6 604
12
Сколько ключей придётся помнить ради дедупликации потока? Найти повторное событие по ключу легко, пока можно помнить все ключ
Сколько ключей придётся помнить ради дедупликации потока? Найти повторное событие по ключу легко, пока можно помнить все ключи за всё время. В непрерывном потоке такое состояние растёт без конца. В разборе дедупликации через Flink SQL автор сравнивает варианты с разными ограничениями. Срок хранения состояния, TTL, ограничивает память, но меняет поведение: после удаления ключа старый дубль снова может пройти как новое событие. Важен и результат запроса. Один вариант сразу выдаёт строку, а позже присылает её обновление. Другой ждёт, чтобы учесть запоздавшие события. Получатель должен уметь работать с выбранным режимом. Даже настройка TTL требует проверки: в рассмотренной версии подсказка STATE_TTL не применяется к оператору дедупликации. До запуска стоит прогнать поздний дубль, истечение срока хранения и обновление результата — именно на них короткий SQL начинает вести себя неожиданно.
6 923
13
Проверенный бот тоже может перегрузить сайт Известный поисковый робот может ходить только по разрешённым страницам и всё равн
Проверенный бот тоже может перегрузить сайт Известный поисковый робот может ходить только по разрешённым страницам и всё равно создавать слишком большую нагрузку. Проверка владельца бота сама по себе этого не предотвращает. Cloudflare описала подход к постоянной оценке проверенных ботов. Среди сигналов — соблюдение robots.txt и реакция на HTTP 429: снижает ли робот частоту запросов, учитывает ли указание подождать. Так доверие к боту должно зависеть от наблюдаемого поведения после проверки его личности. Владельцу сайта нужна возможность понять, за что робот получил определённую оценку. Публичные оценки в Cloudflare Radar пока заявлены как следующий шаг. Уже сейчас при разборе нагрузки полезно смотреть, что происходит после ответа «слишком много запросов»: клиент действительно отступает или немедленно приходит снова.
6 703
14
Маршрутизатору базы не обязательно понимать каждую колонку Результат запроса проходит через промежуточный сервис. Тот превращ
Маршрутизатору базы не обязательно понимать каждую колонку Результат запроса проходит через промежуточный сервис. Тот превращает каждую строку в объекты, разбирает значения, а потом собирает те же байты для клиента. Даже когда менять ничего не требовалось. В маршрутизаторе Neki PlanetScale сохраняет ответы PostgreSQL в исходном формате протокола. Если результат можно передать дальше, значения колонок остаются байтами. Появился LIMIT — нужно найти границы строк и выбрать нужные. Появилась общая сортировка результатов с нескольких шардов — понадобится разобрать ключ сортировки. Остальные колонки можно по-прежнему не преобразовывать в типизированные значения. Для вычисления агрегатов разбор всё же потребуется. Neki переходит к более подробному представлению данных по мере необходимости: отдельный сетевой переход остаётся, но часть промежуточных объектов создавать больше не нужно.
6 561
15
Профилировщик Python 3.15 подключается к живому процессу В Python 3.15 появился Tachyon — статистический профилировщик из pro
Профилировщик Python 3.15 подключается к живому процессу В Python 3.15 появился Tachyon — статистический профилировщик из profiling.sampling. Он снимает образцы стеков и помогает увидеть, где программа проводит время. Подключиться можно без изменения её кода. В разборе Astral профилируют обработку молекул через RDKit. Заметная доля образцов стека приходится на функцию, которая объединяет вложенные списки через sum(symbols, []). Такая запись многократно создаёт и копирует промежуточные списки. По мере роста входа работа становится квадратичной. В статье её заменяют разворачиванием списков с новым синтаксисом Python 3.15. Отчёт помогает добраться до конкретной функции, хотя внешне задача выглядит как вычисления химической библиотеки. При подключении к рабочему сервису всё равно стоит измерить издержки профилирования на своей нагрузке.
7 833
16
GitHub автоматизировал проверку доступов и репозиториев В общей организации остаются доступы подрядчиков и репозитории, владе
GitHub автоматизировал проверку доступов и репозиториев В общей организации остаются доступы подрядчиков и репозитории, владельцы которых давно заняты другим. Ручная ревизия быстро превращается в задачу «когда-нибудь потом». GitHub собрал для этого приложение Evergreen. Раз в квартал оно просит подтвердить доступ внешних участников. Неактивные репозитории проходят отдельную проверку перед архивированием. Обсуждение идёт в issues, задачи запускаются через GitHub Actions, состояние хранится в JSON в Git. У решения остаётся история: кто получил предупреждение, что подтвердили и почему доступ отозвали. Молчание тоже имеет последствия, но после срока на ответ. Неподтверждённый доступ снимают, заброшенный репозиторий архивируют. Архивирование сохраняет код и историю — это не удаление проекта.
7 686
17
С LZ4 PostgreSQL прочитал весь текст ради первых 200 символов Нужны первые 200 символов большого текста. Кажется, для этого д
С LZ4 PostgreSQL прочитал весь текст ради первых 200 символов Нужны первые 200 символов большого текста. Кажется, для этого достаточно прочитать небольшой кусок. Но способ сжатия меняет объём работы. В эксперименте PlanetScale сравнили pglz и LZ4 на PostgreSQL 18. Для pglz база умеет оценить, сколько сжатых данных нужно для начала строки. Для LZ4 такой оценки нет: сначала приходится забирать значение целиком. На ста значениях примерно по 1 МБ получение начала текста заняло около 1 мс с pglz и 16 мс с LZ4. Обращений к страницам получилось 301 против 6234. Данные уже находились в памяти. LZ4 при этом быстрее загружал другой набор данных — JSON-документы. Выбирать сжатие только по скорости записи рискованно: для списка превью, полного документа и чтения диапазона байтов база выполняет разную работу.
7 557
18
Почему remove не удаляет число из Set В цикле добавляем short в Set, затем вызываем remove(i - 1). Кажется, пре
Почему remove не удаляет число из Set<Short> В цикле добавляем short в Set<Short>, затем вызываем remove(i - 1). Кажется, предыдущий элемент должен исчезнуть. Но результат i - 1 имеет тип int и упаковывается в Integer. В коллекции лежат Short, поэтому ничего не удаляется. Компилятор доволен: метод remove(Object) принимает такой аргумент. В разборе Error Prone показано, как поймать эту ошибку ещё при сборке. Инструмент встраивается в javac и проверяет подозрительные конструкции с учётом типов. Другой пример — YYYY в формате даты. Это год по нумерации недель, поэтому на границе декабря и января имя отчёта может получить неожиданный год. К встроенным проверкам можно добавить свои правила через BugChecker. Например, запрещать характерные для проекта ошибки, пока они ещё не попали на ревью.
8 081
19
Больше CSS — меньше работы при открытии страницы Стили тоже могут тормозить React: JavaScript вычисляет их во время выполнени
Больше CSS — меньше работы при открытии страницы Стили тоже могут тормозить React: JavaScript вычисляет их во время выполнения, создаёт классы и вставляет правила. Цена появляется и на сервере, и при запуске компонентов в браузере. GitHub описал переход от CSS-in-JS к CSS Modules. Стили готовят заранее, а компоненты получают имена классов. В браузер отправляется больше обычного CSS, зато исчезает часть работы JavaScript. После миграции компонентов Primer время серверного рендеринга страницы сократилось на 55%, инициализации компонентов — на 25%. Это результат конкретного этапа, а не обещание такого ускорения любому проекту. Миграцию проводили постепенно, с флагами и визуальными проверками. Удалить библиотеку стилей оказалось проще, чем убедиться, что после этого не съехала ни одна кнопка.
8 140
20
Кеш занимал 800 МБ. Большая часть переводов просто лежала без дела Uber обслуживает миллионы переводов в секунду. Держать всё
Кеш занимал 800 МБ. Большая часть переводов просто лежала без дела Uber обслуживает миллионы переводов в секунду. Держать всё в памяти удобно, пока очередное обновление не создаёт рядом вторую копию кеша и не заканчивается память. Команда перенесла редко используемые переводы на диск. В RAM оставили индекс ключей и кеш востребованных значений. Хранилище разделили на 256 частей, чтобы запросы меньше мешали друг другу при блокировках. В приведённом примере расход памяти снизился с 800 до 80–120 МБ. При обновлении нужны ещё около 40 МБ метаданных вместо второй копии на 800 МБ. Чтобы после обновления не получать волну чтений с диска, новый кеш заранее заполняют переводами, которые запрашивали за последние 15 минут. Экономия памяти здесь потребовала учесть и то, что произойдёт при следующей перезагрузке данных.
7 918