ar
Feedback

لا تقع ضحية للمخادعين! تيليمتريو يكتشف ويُميّز هذه القنوات 👉 إذا كنت تريد رؤية العلامة، اشترك

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

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

الذهاب إلى القناة على Telegram

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

إظهار المزيد

📈 نظرة تحليلية على قناة تيليجرام Типичный программист

تُعد قناة Типичный программист (@tproger) في القطاع اللغوي الروسية لاعباً نشطاً. يضم المجتمع حالياً 78 002 مشتركاً، محتلاً المرتبة 1 640 في فئة التكنولوجيات والتطبيقات والمرتبة 7 351 في منطقة روسيا.

📊 مؤشرات الجمهور والحراك

منذ تأسيسه في невідомо، حقق المشروع نمواً سريعاً وجمع 78 002 مشتركاً.

بحسب آخر البيانات بتاريخ 29 أكتوبر, 2026، تحافظ القناة على نشاط مستقر. خلال آخر 30 يوماً تغيّر عدد الأعضاء بمقدار -220، وفي آخر 24 ساعة بمقدار 5، مع بقاء الوصول العام مرتفعاً.

  • حالة التحقق: موثّقة (مؤكدة رسمياً من تيليجرام)
  • معدل التفاعل (ER): يبلغ متوسط تفاعل الجمهور 10.69‎%. وخلال أول 24 ساعة من النشر يحصد المحتوى عادةً 5.79‎% من ردود الفعل نسبةً إلى إجمالي المشتركين.
  • وصول المنشورات: يحصل كل منشور على متوسط 8 334 مشاهدة. وخلال اليوم الأول يجمع عادةً 4 516 مشاهدة.
  • التفاعلات والاستجابة: يتفاعل الجمهور بانتظام؛ متوسط التفاعلات لكل منشور يبلغ 23.
  • الاهتمامات الموضوعية: يركز المحتوى على مواضيع رئيسية مثل 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...”

بفضل وتيرة التحديث المرتفعة (أحدث البيانات بتاريخ 30 أكتوبر, 2026) تحافظ القناة على حداثتها ومستوى وصول مرتفع. وتُظهر التحليلات تفاعلاً نشطاً من الجمهور، ما يجعلها نقطة تأثير مهمة ضمن فئة التكنولوجيات والتطبيقات.

78 002
المشتركون
+524 ساعات
-597 أيام
-22030 أيام

جارٍ تحميل البيانات

جذب المشتركين
أكتوبر '26
أكتوبر '26
+408
في 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
في 29 قنوات
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 قنوات
التاريخ
نمو المشتركين
الإشارات
القنوات
30 أكتوبر+26
29 أكتوبر+17
28 أكتوبر+10
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
منشورات القناة
Дефицит ускорителей не отменяет простой В одном регионе свободен GPU, в другом нужен именно он. Или ускоритель есть, а CPU дл
Дефицит ускорителей не отменяет простой В одном регионе свободен GPU, в другом нужен именно он. Или ускоритель есть, а CPU для подготовки данных уже занят. Поэтому «мощностей не хватает» и «часть железа простаивает» вполне могут быть правдой одновременно. Meta собирает временно свободные мощности для рекламных рекомендаций в общий пул. Если свободны и CPU, и ускорители, можно оценить больше кандидатов. Если в основном ускорители, часть запросов направляют более сильной модели без сопоставимого роста работы на CPU. Самая важная часть тут не раздача бонусов, а их быстрый отзыв. Базовую нагрузку защищают отдельно, дополнительную работу сбрасывают за миллисекунды, пока центральные регуляторы ещё догоняют ситуацию. Такая схема требует работы, которую можно безболезненно сократить. Произвольная LLM-задача этому условию не обязана соответствовать.

2
VK Видео в два раза ускорил запуск роликов. Инженеры разработали собственный пресет для сжатия видео, потому что стандартные плохо подходят под запрос платформы. Что получилось: файлы стали меньше в среднем на 20%, у некоторых роликов почти на треть, а картинка осталась прежней. Плюс другие технические улучшения. В итоге видео стартует вдвое быстрее в вебе, на телефонах и планшетах. Интереснее всего то, как это раскатывали. Сначала новый пресет применяли только к популярным видео. Теперь же он сам подстраивается под нагрузку: когда сервис свободен, через новый пресет идут все загрузки, а при пиках часть роликов уходит на старые настройки, чтобы публикация не залипала в очереди.
4 595
3
Пробел в имени файла ломает слишком уверенный скрипт На report.txt всё работало, на annual report.txt внезапно поехало. В she
Пробел в имени файла ломает слишком уверенный скрипт На report.txt всё работало, на annual report.txt внезапно поехало. В shell незакавыченное раскрытие переменной может превратить одно имя в несколько аргументов. А символы шаблона добавят ещё и разворачивание по файлам. ShellCheck замечает такие ловушки до запуска. Он статически проверяет sh/bash-скрипты, объясняет подозрительные места и показывает диагностику прямо в редакторе или CI. На скриншоте из проекта есть и другие примеры: bash не умеет обычную арифметику с дробями, а правая часть сравнения в [[ ]] без кавычек считается шаблоном. Удобно, что для первой проверки достаточно shellcheck yourscript. Только зелёный результат не доказывает, что скрипт делает нужное: тест с неудобным именем файла всё ещё очень кстати.
4 815
4
GitHub Issues показывает данные, пока сервер ещё отвечает На записи переходы между issue выглядят почти мгновенными. Секрет н
GitHub Issues показывает данные, пока сервер ещё отвечает На записи переходы между issue выглядят почти мгновенными. Секрет не в том, что запросы вдруг перестали занимать время: часть данных уже лежит в браузере. Команда GitHub разобрала свою схему с IndexedDB и stale-while-revalidate. Сначала интерфейс показывает локальную версию, затем сверяется с сервером. Предварительное наполнение кеша запускают там, где пригодных данных ещё нет, с ограничениями частоты и защитой от перегрузки. По замерам команды, после этого около 70% React-навигаций укладывались в 200 мс. Это не время полной загрузки любого GitHub-экрана. И бесплатного чуда нет: локальная версия может устареть, а при первом заходе без кеша ждать всё равно придётся.
5 008
5
Один удачный запуск ещё не бенчмарк Команда отработала быстрее. Или просто данные уже оказались в кеше? hyperfine повторяет з
Один удачный запуск ещё не бенчмарк Команда отработала быстрее. Или просто данные уже оказались в кеше? hyperfine повторяет запуски и показывает среднее время, разброс и выбросы. На фоне красивого единственного замера это полезное занудство. Параметр --warmup позволяет отдельно прогреть программу перед измерениями, а --prepare выполняет подготовку перед каждым запуском. Важно заранее решить, какой сценарий сравнивается: первый холодный старт или обычная повторная работа. Это разные вопросы, и ответы тоже могут различаться. В ролике из README авторы сравнивают mypy и ty. Числа на экране относятся к их конкретному тесту и окружению, а не обещают такое же соотношение в любом проекте. Смысл инструмента в том, чтобы получить собственное воспроизводимое сравнение.
5 514
6
Путь к репозиторию тоже умеет портить кеш У Cloudflare ревьюер кода каждый раз получал почти один и тот же промпт, но общий к
Путь к репозиторию тоже умеет портить кеш У Cloudflare ревьюер кода каждый раз получал почти один и тот же промпт, но общий кеш между репозиториями не работал. В переиспользуемую часть затесались путь к проекту и дата. Маленькая деталь, за которую платили на каждом ревью. Команда вынесла меняющиеся данные за границу общего префикса. Заодно убрала недоступные инструменты, повторное чтение данных и лишний финальный вызов, поменяла модели и уровень рассуждений. Средняя цена ревью снизилась с $2,43 до $0,77, медиана времени с 4:09 до 1:32. Но в разборе оптимизации есть и неудобный результат: performance-ревьюер на medium стал пропускать часть важных проблем. Это серия изменений, а не контролируемый эксперимент и не победа одного кеша. Смотреть нужно и на счёт, и на то, что агент перестал замечать.
5 633
7
У NASA есть фреймворк для полётного софта Очереди сообщений, потоки, компоненты с явными интерфейсами. Звучит знакомо, пока н
У NASA есть фреймворк для полётного софта Очереди сообщений, потоки, компоненты с явными интерфейсами. Звучит знакомо, пока не выясняется, что всё это нужно роверу или вертолёту. F´, он же F Prime, разработали в JPL для полётных и других embedded-приложений. Компоненты общаются через порты, C++-фреймворк предоставляет базовую инфраструктуру и абстракцию ОС. Отдельные инструменты описывают соединения, генерируют код и помогают с unit- и integration-тестами. Интересно посмотреть, как здесь устроена повторная сборка системы из проверяемых частей. Сам фреймворк, конечно, не гарантирует успех миссии: конкретные железо, ограничения и проверки никуда не исчезают. На фото наземные испытательные модели роверов CADRE. Фото: NASA/JPL-Caltech.
5 632
8
Кто забрал всю сеть? Общий график показывает, что канал занят. Отлично, осталось понять кем. bandwhich раскладывает трафик ср
Кто забрал всю сеть? Общий график показывает, что канал занят. Отлично, осталось понять кем. bandwhich раскладывает трафик сразу по процессам, соединениям и удалённым адресам. На видео из проекта видно, как вместо одного числа появляются конкретные потребители. Под капотом он захватывает пакеты и сопоставляет их с данными ОС: /proc в Linux, lsof в macOS, WinApi в Windows. Имена хостов пытается получить в фоне через reverse DNS. Так можно отличить фоновую загрузку от процесса, который вообще не должен был активно ходить в сеть. Для захвата нужны соответствующие права. А содержимое зашифрованных запросов от такой раскладки видимым не станет. Ещё нюанс: проект в режиме passive maintenance, критические ошибки исправляют, новые функции активно не разрабатывают.
6 074
9
Голое железо и root-доступ, ВМ со снапшотами по расписанию, Kubernetes с GitOps в проде или всё сразу. В фановом тесте от ком
Голое железо и root-доступ, ВМ со снапшотами по расписанию, Kubernetes с GitOps в проде или всё сразу. В фановом тесте от команды Deckhouse из таких ответов складывается один из 10 типов инфраструктуры. Укротитель давно научился жить с ВМ и Kubernetes рядом, но устал от двух центров управления. Соковыжималка запускает базы и ML прямо на железе, чтобы гипервизор не съедал производительность. Антиквар не трогает систему, которая работает с нулевых. А Повелителю облаков уютно до первого кругленького счёта. Грузчик и Коллекционер выпадают реже всех. Если достался один из них, ссылкой на результат точно стоит поделиться с командой. → Пройти тест и узнать свой тип
6 483
10
Git умеет запоминать ваши решения конфликтов Долгоживущая ветка, очередной rebase и знакомый конфликт в том же участке файла. Кажется, это решение уже набирали. Git умеет его запомнить: механизм rerere сохраняет исходный конфликт и результат ручной правки, если включён rerere.enabled. При следующем подходящем конфликте он пытается применить прежнее решение через трёхстороннее слияние. Это полезно, когда ветку приходится несколько раз сверять с изменяющейся основной веткой. Записывать решение вручную отдельной командой при каждом шаге обычно не нужно: merge, commit и rebase сами вызывают rerere в нужных местах. Но память Git не заменяет проверку смысла. Старый ответ может чисто примениться к коду и всё равно оказаться неверным. В базовом режиме без autoupdate результат остаётся в рабочем дереве, а индекс не меняется. Перед git add остаются просмотр diff и тесты. Экономится повторное редактирование, а ответственность за решение остаётся у разработчика.
6 722
11
SQLite может завершить коммит удалением файла Транзакция меняет несколько страниц базы, а питание может пропасть между двумя записями. Как после перезапуска получить «всё или ничего»? В разборе атомарного коммита SQLite важнейший момент выглядит буднично: удаляется файл журнала. Речь о rollback journal в режиме DELETE. Сначала SQLite сохраняет исходные страницы в журнал и сбрасывает его на устойчивый носитель. Затем записывает изменённые страницы базы и тоже синхронизирует их. Только после этого удаляет журнал. Пока он пригоден для восстановления, прерванные изменения можно откатить. После удаления транзакция считается завершённой. При открытии базы SQLite проверяет не просто наличие файла, а признаки «горячего» журнала, включая заголовок и блокировки. Всё это опирается на корректную работу синхронизации и хранилища. У WAL другой протокол. Здесь же эффект «всё или ничего» получается из строгого порядка действий и чёткой границы завершения.
7 024
12
Option в Rust не обязательно занимает дополнительное место У значения есть два состояния: оно присутствует или его нет. Кажется, для Option<T> к самому значению придётся добавить отдельный флаг. Но тип NonZeroU32 уже оставляет свободное состояние: число ноль в нём запрещено. Именно ноль можно использовать для None, а остальные значения остаются для Some. Поэтому Option<NonZeroU32> имеет тот же размер и выравнивание, что и NonZeroU32. Это гарантия документации Rust, а не удачное совпадение в одном эксперименте с компилятором. Такой приём называют null pointer optimization, хотя работает он и с числами NonZero. Гарантия распространяется на конкретный список типов, в том числе ссылки и некоторые указатели. Переносить её на любой Option<T> нельзя. Здесь ограничение типа даёт полезный бонус: отсутствие значения помещается в уже свободную комбинацию битов.
7 077
13
Кто испортил это поле? В объекте уже лежит неправильное значение. Где его записали, неизвестно, а при следующем запуске ошибка может исчезнуть. Отладчик rr предлагает сначала поймать сбой под записью, а потом сколько угодно раз разбирать один и тот же запуск в gdb. В примере проекта у объекта Firefox неверная ширина. Разработчик ставит watch -l mRect.width и выполняет reverse-cont. Отладчик идёт назад и останавливается на присваивании, которое изменило поле. Адреса объектов и порядок событий при повторном воспроизведении сохраняются, поэтому найденные зацепки не теряются после перезапуска отладки. Это работа с сохранённым исполнением. Для rr нужны Linux и совместимый процессор, в виртуальной машине ещё и доступ к аппаратным счётчикам. Есть ощутимая цена для параллельного кода: rr эмулирует одноядерную машину. Зато пойманный редкий баг больше не приходится ловить заново.
7 202
14
Один зашифрованный архив, несколько получателей и никакого общего пароля Нужно передать архив нескольким коллегам. Можно завести общий пароль и потом разбираться, кому его уже переслали. У утилиты age есть другой вариант: один файл шифруется на несколько публичных ключей, и каждый получатель открывает его своим секретным ключом. Список адресатов задаётся повторением -r или файлом с ключами через -R recipients.txt. Сами секретные ключи друг другу передавать не нужно. А благодаря обычным потокам Unix вывод tar можно сразу направить в age, без промежуточного незашифрованного архива на диске. Есть важная граница: шифрование само по себе не подтверждает личность отправителя. Принадлежность публичных ключей тоже нужно проверить отдельно. Удобство здесь вполне конкретное: несколько человек читают один архив, а передавать друг другу личные секретные ключи не приходится.
7 489
15
Как поймать причину торможения, которое уже закончилось Запрос иногда зависает, но к моменту включения трассировки всё снова работает. Тут полезен flight recorder из Go 1.25: он заранее собирает недавние события runtime в буфер в памяти. Когда программа замечает проблему, из буфера можно сохранить предшествующий ей фрагмент. В примере команды Go снимок запускается после первого ответа дольше 100 мс. Трасса приводит к неожиданному виновнику: defer b.mu.Unlock() внутри цикла. Блокировки снимаются только при выходе из функции, а та ещё успевает отправить HTTP-запрос. Всё это время другие горутины ждут. Самописец здесь помогает сохранить именно момент ожидания, который иначе легко пропустить. Порог в 100 мс относится к примеру, а буфер и сбор событий расходуют ресурсы. Зато не нужно копить трассу за несколько дней работы сервера ради одного редкого сбоя.
7 788
16
Сколько ключей придётся помнить ради дедупликации потока? Найти повторное событие по ключу легко, пока можно помнить все ключ
Сколько ключей придётся помнить ради дедупликации потока? Найти повторное событие по ключу легко, пока можно помнить все ключи за всё время. В непрерывном потоке такое состояние растёт без конца. В разборе дедупликации через Flink SQL автор сравнивает варианты с разными ограничениями. Срок хранения состояния, TTL, ограничивает память, но меняет поведение: после удаления ключа старый дубль снова может пройти как новое событие. Важен и результат запроса. Один вариант сразу выдаёт строку, а позже присылает её обновление. Другой ждёт, чтобы учесть запоздавшие события. Получатель должен уметь работать с выбранным режимом. Даже настройка TTL требует проверки: в рассмотренной версии подсказка STATE_TTL не применяется к оператору дедупликации. До запуска стоит прогнать поздний дубль, истечение срока хранения и обновление результата — именно на них короткий SQL начинает вести себя неожиданно.
8 037
17
Проверенный бот тоже может перегрузить сайт Известный поисковый робот может ходить только по разрешённым страницам и всё равн
Проверенный бот тоже может перегрузить сайт Известный поисковый робот может ходить только по разрешённым страницам и всё равно создавать слишком большую нагрузку. Проверка владельца бота сама по себе этого не предотвращает. Cloudflare описала подход к постоянной оценке проверенных ботов. Среди сигналов — соблюдение robots.txt и реакция на HTTP 429: снижает ли робот частоту запросов, учитывает ли указание подождать. Так доверие к боту должно зависеть от наблюдаемого поведения после проверки его личности. Владельцу сайта нужна возможность понять, за что робот получил определённую оценку. Публичные оценки в Cloudflare Radar пока заявлены как следующий шаг. Уже сейчас при разборе нагрузки полезно смотреть, что происходит после ответа «слишком много запросов»: клиент действительно отступает или немедленно приходит снова.
7 641
18
Маршрутизатору базы не обязательно понимать каждую колонку Результат запроса проходит через промежуточный сервис. Тот превращ
Маршрутизатору базы не обязательно понимать каждую колонку Результат запроса проходит через промежуточный сервис. Тот превращает каждую строку в объекты, разбирает значения, а потом собирает те же байты для клиента. Даже когда менять ничего не требовалось. В маршрутизаторе Neki PlanetScale сохраняет ответы PostgreSQL в исходном формате протокола. Если результат можно передать дальше, значения колонок остаются байтами. Появился LIMIT — нужно найти границы строк и выбрать нужные. Появилась общая сортировка результатов с нескольких шардов — понадобится разобрать ключ сортировки. Остальные колонки можно по-прежнему не преобразовывать в типизированные значения. Для вычисления агрегатов разбор всё же потребуется. Neki переходит к более подробному представлению данных по мере необходимости: отдельный сетевой переход остаётся, но часть промежуточных объектов создавать больше не нужно.
7 496
19
Профилировщик Python 3.15 подключается к живому процессу В Python 3.15 появился Tachyon — статистический профилировщик из pro
Профилировщик Python 3.15 подключается к живому процессу В Python 3.15 появился Tachyon — статистический профилировщик из profiling.sampling. Он снимает образцы стеков и помогает увидеть, где программа проводит время. Подключиться можно без изменения её кода. В разборе Astral профилируют обработку молекул через RDKit. Заметная доля образцов стека приходится на функцию, которая объединяет вложенные списки через sum(symbols, []). Такая запись многократно создаёт и копирует промежуточные списки. По мере роста входа работа становится квадратичной. В статье её заменяют разворачиванием списков с новым синтаксисом Python 3.15. Отчёт помогает добраться до конкретной функции, хотя внешне задача выглядит как вычисления химической библиотеки. При подключении к рабочему сервису всё равно стоит измерить издержки профилирования на своей нагрузке.
8 232
20
GitHub автоматизировал проверку доступов и репозиториев В общей организации остаются доступы подрядчиков и репозитории, владе
GitHub автоматизировал проверку доступов и репозиториев В общей организации остаются доступы подрядчиков и репозитории, владельцы которых давно заняты другим. Ручная ревизия быстро превращается в задачу «когда-нибудь потом». GitHub собрал для этого приложение Evergreen. Раз в квартал оно просит подтвердить доступ внешних участников. Неактивные репозитории проходят отдельную проверку перед архивированием. Обсуждение идёт в issues, задачи запускаются через GitHub Actions, состояние хранится в JSON в Git. У решения остаётся история: кто получил предупреждение, что подтвердили и почему доступ отозвали. Молчание тоже имеет последствия, но после срока на ответ. Неподтверждённый доступ снимают, заброшенный репозиторий архивируют. Архивирование сохраняет код и историю — это не удаление проекта.
8 188