Сохранёнки программиста
رفتن به کانال در Telegram
Заметки и ссылки на будущее, чтобы изучить когда будет время. Разместить рекламу: @tproger_sales_bot Правила общения: https://tprg.ru/rules Другие каналы: @tproger_channels Другие наши проекты: https://tprg.ru/med
نمایش بیشتر6 446
مشترکین
-324 ساعت
-137 روز
-6230 روز
در حال بارگذاری دادهها
کانالهای مشابه
ابر برچسبها
اشارات ورودی و خروجی
---
---
---
---
---
---
جذب مشترکین
نوامبر '26نوامبر '26
نوامبر '26
+11
در 0 کانالها
اکتبر '26
+41
در 0 کانالها
Get PRO
سپتامبر '26
+65
در 7 کانالها
Get PRO
اوت '26
+28
در 2 کانالها
Get PRO
ژوئیه '26
+26
در 3 کانالها
Get PRO
ژوئن '26
+48
در 2 کانالها
Get PRO
مه '26
+70
در 0 کانالها
Get PRO
آوریل '26
+30
در 0 کانالها
Get PRO
مارس '26
+47
در 5 کانالها
Get PRO
فوریه '26
+57
در 14 کانالها
Get PRO
ژانویه '26
+38
در 2 کانالها
Get PRO
دسامبر '25
+46
در 4 کانالها
Get PRO
نوامبر '25
+45
در 2 کانالها
Get PRO
اکتبر '25
+40
در 7 کانالها
Get PRO
سپتامبر '25
+26
در 3 کانالها
Get PRO
اوت '25
+41
در 1 کانالها
Get PRO
ژوئیه '25
+46
در 0 کانالها
Get PRO
ژوئن '25
+38
در 2 کانالها
Get PRO
مه '25
+68
در 5 کانالها
Get PRO
آوریل '25
+49
در 1 کانالها
Get PRO
مارس '25
+63
در 1 کانالها
Get PRO
فوریه '25
+69
در 2 کانالها
Get PRO
ژانویه '25
+72
در 4 کانالها
Get PRO
دسامبر '24
+46
در 1 کانالها
Get PRO
نوامبر '24
+104
در 6 کانالها
Get PRO
اکتبر '24
+73
در 4 کانالها
Get PRO
سپتامبر '24
+87
در 3 کانالها
Get PRO
اوت '24
+204
در 4 کانالها
Get PRO
ژوئیه '24
+86
در 4 کانالها
Get PRO
ژوئن '24
+77
در 4 کانالها
Get PRO
مه '24
+75
در 4 کانالها
Get PRO
آوریل '24
+68
در 3 کانالها
Get PRO
مارس '24
+65
در 4 کانالها
Get PRO
فوریه '24
+50
در 0 کانالها
Get PRO
ژانویه '24
+64
در 1 کانالها
Get PRO
دسامبر '23
+59
در 2 کانالها
Get PRO
نوامبر '23
+3 534
در 33 کانالها
Get PRO
اکتبر '23
+55
در 1 کانالها
Get PRO
سپتامبر '23
+71
در 0 کانالها
Get PRO
اوت '23
+69
در 0 کانالها
Get PRO
ژوئیه '23
+57
در 0 کانالها
Get PRO
ژوئن '23
+180
در 0 کانالها
Get PRO
مه '23
+73
در 0 کانالها
Get PRO
آوریل '23
+93
در 0 کانالها
Get PRO
مارس '23
+65
در 0 کانالها
Get PRO
فوریه '23
+113
در 0 کانالها
Get PRO
ژانویه '23
+68
در 0 کانالها
Get PRO
دسامبر '22
+86
در 0 کانالها
Get PRO
نوامبر '22
+90
در 0 کانالها
Get PRO
اکتبر '22
+117
در 0 کانالها
Get PRO
سپتامبر '22
+134
در 0 کانالها
Get PRO
اوت '22
+787
در 0 کانالها
Get PRO
ژوئیه '22
+119
در 0 کانالها
Get PRO
ژوئن '22
+90
در 0 کانالها
Get PRO
مه '22
+157
در 0 کانالها
Get PRO
آوریل '22
+131
در 0 کانالها
Get PRO
مارس '22
+117
در 0 کانالها
Get PRO
فوریه '22
+198
در 0 کانالها
Get PRO
ژانویه '22
+149
در 0 کانالها
Get PRO
دسامبر '21
+5 099
در 0 کانالها
Get PRO
نوامبر '21
+927
در 0 کانالها
Get PRO
اکتبر '21
+1 849
در 0 کانالها
| تاریخ | رشد مشترکین | اشارات | کانالها | |
| 15 نوامبر | +3 | |||
| 14 نوامبر | 0 | |||
| 13 نوامبر | 0 | |||
| 12 نوامبر | 0 | |||
| 11 نوامبر | +1 | |||
| 10 نوامبر | +2 | |||
| 09 نوامبر | +2 | |||
| 08 نوامبر | 0 | |||
| 07 نوامبر | 0 | |||
| 06 نوامبر | 0 | |||
| 05 نوامبر | 0 | |||
| 04 نوامبر | +1 | |||
| 03 نوامبر | +1 | |||
| 02 نوامبر | 0 | |||
| 01 نوامبر | +1 |
پستهای کانال
🖥 Как CNCF Score защитил сборку и публикацию контейнерных образов
Подписанный релиз начинается раньше публикации. В проекте CNCF Score проверили базовые образы, сканирование зависимостей и доступ сборочного процесса к реестру.
Команда использует минимальные базовые образы и проверяет результат сборки через Docker Scout. Для подписи релизов она описывает работу с OIDC, где сборочный процесс подтверждает свою личность на время операции.
Возьмите один образ проекта и проследите цепочку от Dockerfile до опубликованного артефакта. Отметьте, где проверяется состав и какие полномочия получает процесс публикации.
Как устроена поставка образов Score
| 2 | 🖥 Как найти уязвимый Pillow, если он пришёл через другую библиотеку
Pillow может попасть в приложение как зависимость другой библиотеки. Поэтому проверка только прямого списка пакетов может пропустить его.
CVE-2026-112900 затрагивает обработку EPS в версиях Pillow до 13.0.0 начиная с 2.6.0. Сначала проверьте, какая версия реально установлена в собранном образе:
python -m pip show Pillow
Затем найдите зависимость, которая подтягивает пакет, и обновите сборку. Если Pillow установлен пакетом операционной системы, сверяйтесь с бюллетенем дистрибутива: исправление может быть перенесено в его версию.
Разбор GitLab и ссылки на бюллетени | 154 |
| 3 | 🖥 Sentry MCP помогает выяснить, почему часть событий не дошла до поиска
События нет в поиске Sentry. Сначала полезно проверить, было ли оно принято и почему могло быть отброшено.
В октябрьском обновлении Sentry MCP добавились сведения об отброшенных событиях и отдельные инструменты поиска для разных наборов данных. Логи можно искать по регулярным выражениям.
Для расследования задайте проект и короткий интервал вокруг известной ошибки. Затем отдельно проверьте логи и причины отбрасывания событий. Это поможет отличить проблему доставки от запроса, который просто ничего не нашёл.
Что изменилось в Sentry MCP | 205 |
| 4 | 🖥 Как найти задержку, которая прячется внутри базы данных
Приложение ждёт ответ базы 200 мс. Из этого числа пока не видно, где ушло время: в дороге до сервера, ожидании внутри базы или обработке запроса.
Начните с пары измерений. Сравните время на стороне клиента с тем, что наблюдает сама база. Затем проверьте дисковый ввод-вывод. В облачной базе накопитель может находиться на другом сервере. Чтение страницы, которой нет в памяти, тогда добавляет ещё один сетевой обмен, уже внутри самой базы.
Так проще выбрать следующую проверку. Например, оптимизация плана поможет только той части задержки, которая приходится на выполнение запроса.
Разбор задержек PlanetScale | 229 |
| 5 | 🖥 Grafana связывает сервисы с их владельцами и контекстом расследования
По трассировке видно, какой сервис отвечает медленно. Следующий шаг часто занимает не меньше времени: найти команду, которая знает этот компонент.
В Grafana Cloud карту связей можно дополнить владельцами сервисов и сведениями из каталога. Во время инцидента полезно видеть владельца рядом с зависимостями, логами и метриками.
Начните с одного важного пути, например оформления заказа. Проверьте, что у каждого сервиса указаны команда, ссылка на инструкцию и актуальный канал связи.
Карта связей и владельцы сервисов в Grafana Cloud | 268 |
| 6 | 🖥 Когда для запуска ИИ-агента нужна отдельная микро-ВМ
Контейнер использует ядро системы, на которой запущен. Микро-ВМ запускает собственное ядро. Это меняет границу изоляции, когда ИИ-агент может запускать команды и скачивать зависимости.
При выборе среды посмотрите, какой код будет выполняться и какие ресурсы ему нужны. Если задача требует запускать команды из внешнего репозитория, проверьте, какие каталоги, токены и сетевые адреса доступны из среды. Микро-ВМ сама по себе не определяет, какие данные вы ей передаёте.
Разбор Docker об изоляции агентов | 273 |
| 7 | 🖥 ClickHouse 26.10 может выгружать большие наборы из IN-подзапросов на диск
Когда запрос содержит IN (SELECT ...), ClickHouse строит набор значений для проверки. Большой набор может не поместиться в память.
В ClickHouse 26.10 набор можно частично выгрузить на диск. Порог задаёт max_bytes_before_external_set. Например, к запросу можно добавить:
SETTINGS max_bytes_before_external_set = 134217728
При 128 МиБ движок начинает выгрузку. Общий расход памяти может быть выше: запросу нужны и другие структуры. Сравните пиковую память, время и объём записи на диск на своей нагрузке.
Пример с выгрузкой набора в ClickHouse | 296 |
| 8 | 🖥 PostgreSQL 19 позволяет перепаковывать таблицу с сохранением обычных чтений и записей
В PostgreSQL 19 появился REPACK для перепаковки таблиц. С CONCURRENTLY чтения и записи могут продолжаться во время основной части работы.
REPACK (CONCURRENTLY) public.events;
Под конец PostgreSQL берёт исключительную блокировку, чтобы применить накопившиеся изменения и подменить файлы. Проверьте на тестовой нагрузке, сколько ждёт эта блокировка и сколько места занимает операция. Отдельно проверьте долгие транзакции: снимок, взятый до начала перепаковки, после её завершения может увидеть таблицу пустой.
Команда описана в документации к PostgreSQL 19. В этой подборке разбираем её на релиз-кандидате.
Изменения в PostgreSQL 19 · Справочник REPACK | 295 |
| 9 | 🖥 Zero Wire собирает описание критической уязвимости и наблюдаемые атаки в одном месте
После публикации критического CVE нужно быстро понять, какие версии затронуты, что обновлять и наблюдаются ли попытки эксплуатации.
Cloudflare запустила Zero Wire — раздел Radar с объяснениями уязвимостей, данными об атаках и шагами исправления. Сводка помогает начать проверку и перейти к техническим подробностям.
Телеметрия показывает активность, которую видит Cloudflare. Для решения о срочности сопоставьте её со своей конфигурацией: версией компонента, доступностью извне и установленными мерами защиты.
Сохраните сервис рядом с источниками уведомлений об уязвимостях. При инциденте сверяйте рекомендации с бюллетенем разработчика и фиксируйте, где именно у вас используется затронутый компонент. | 313 |
| 10 | 🖥 Общая папка, worktree и клон дают агенту разную степень независимости
Способ подключения репозитория к агенту влияет на то, какие файлы он меняет и как его работа пересекается с вашей.
В разборе Docker Sandboxes сравниваются три варианта. Общая папка даёт доступ к текущим файлам. Git worktree создаёт отдельное рабочее дерево с общей историей репозитория. Клон получает собственную копию репозитория.
Для параллельных задач проверьте ещё каталоги сборки, зависимости и генерируемые файлы. Отдельная ветка сама по себе их не изолирует.
Выберите способ подготовки среды и сохраните его в команде запуска. Вместе с ним зафиксируйте установку зависимостей, запуск проверок и перенос результата на ревью. | 299 |
| 11 | 🖥 Отдельная реплика PostgreSQL помогает изолировать тяжёлые запросы
Аналитический запрос читает большую таблицу и конкурирует за ресурсы с пользовательскими операциями. Для таких запросов можно выделить отдельную реплику.
PlanetScale разобрала управление репликами PostgreSQL: каждой можно назначить свой размер и подключение. Одну использовать для аналитики, другую — для векторного поиска.
Реплики получают изменения асинхронно. При маршрутизации запросов нужно определить, где допустима задержка данных, а где требуется самое свежее состояние.
Начните с отчётов и длительных выборок. Измерьте отставание реплики, время выполнения и влияние на основную базу. Для каждого сценария задайте допустимую свежесть результата. | 306 |
| 12 | 🖥 Отдельный локальный проект Supabase позволяет агентам независимо менять базу
Два агента работают в разных ветках, но подключены к одной локальной базе. Один меняет таблицу, второй запускает тесты на прежней схеме. Результат начинает зависеть от порядка действий.
В руководстве Supabase показано, как выделить каждому агенту собственный локальный проект. Есть варианты запуска с Docker и без него.
Так у каждой задачи появляются независимые данные и состояние базы. Агент может применять миграции и сбрасывать тестовое окружение в пределах своего проекта.
Добавьте подготовку базы в создание рабочей среды. Зафиксируйте начальные данные, способ запуска и очистку после завершения задачи. Тесты должны явно получать адрес своей базы. | 300 |
| 13 | 🖥 pg-delta строит изменения PostgreSQL из описания желаемой схемы
В проекте растёт история SQL-миграций. Чтобы понять текущее устройство базы, приходится восстанавливать его по десяткам файлов.
При декларативном подходе вы храните желаемую схему в SQL-файлах. Инструмент сравнивает её с текущим состоянием и готовит изменения для перехода.
В разборе Declarative Schemas 2.0 показана работа pg-delta: от описания объектов до получения миграции.
Сначала попробуйте подход на локальной базе. Просмотрите сгенерированный SQL, проверьте удаление и переименование объектов, затем прогоните миграцию на копии с данными. Полученный план стоит ревьюить вместе с изменением схемы. | 303 |
| 14 | 🖥 OrioleDB использует undo-журнал для хранения предыдущих версий строк PostgreSQL
В PostgreSQL частые обновления создают старые версии строк. Их очистка и накопление влияют на размер таблиц и работу базы.
OrioleDB предлагает другой механизм хранения: прежние версии данных размещаются в undo-журнале. Проект также использует собственную организацию таблиц и индексов.
В разборе публичной беты показано, как движок работает с таблицами, в которых много обновлений, и какие изменения это вносит в эксплуатацию PostgreSQL.
Для знакомства выберите таблицу с характерной нагрузкой и воспроизведите её отдельно. Измеряйте размер данных, задержки, поведение длительных транзакций и восстановление после сбоя. Проект находится в публичной бете. | 333 |
| 15 | 🖥 Проверка CVE в реестре помогает отсеять выдуманные уязвимости из ИИ-ревью
ИИ-ревьюер нашёл опасную проблему, сослался на CVE и предложил исправление. При проверке выяснилось, что такого идентификатора вообще нет.
В кейсе Docker разобраны две части защиты. Среда ограничивает возможности агента: доступ к файлам, сети и секретам. Отдельная проверка сверяет упомянутые CVE с реестром NVD.
В примере отчёт остаётся текстом, который агент не может сам опубликовать или превратить в действие. Неизвестный CVE помечает результат как непроверенный.
Добавьте проверку идентификаторов в обработку отчёта. Затем сверяйте описание, затронутые версии и предложенные изменения с оригинальной карточкой уязвимости. | 340 |
| 16 | 🖥 Cloudflare сократила расход памяти на сборку DNS-зон на 85%
Изменение одной настройки могло запускать полную пересборку DNS-зоны с миллионами записей. На крупных зонах такая работа занимала время и создавала высокую нагрузку на память.
Cloudflare добавила планировщик сборки, который определяет минимальный безопасный объём изменений. Для подходящих операций система обрабатывает только необходимую часть зоны.
На своей нагрузке компания сократила число полных сборок на 40%, пиковое потребление памяти — на 85%, а задержку сборки уменьшила вдвое.
Разбор стоит сохранить, если небольшой запрос в вашей системе запускает большой пересчёт. Проверьте, какие зависимости действительно требуют полной обработки и как проверить корректность частичного результата. | 347 |
| 17 | Фоновая очистка GitHub исчерпала подключения к общей базе
Задача очистки следила за отставанием реплик и замедляла запись при росте задержки. Нагрузку на основной сервер она не учитывала. В результате база достигла лимита подключений, а зависимые запросы начали сбоить.
В разборе сентябрьского инцидента GitHub описаны ещё два фактора: вызовы базы долго ждали без быстрого тайм-аута, а повторные попытки создания токенов добавляли новые записи. Для восстановления пришлось снизить внутреннюю нагрузку и остановить очистку.
Проверьте свои фоновые задачи: по каким метрикам они замедляются, сколько подключений могут занять и как быстро их можно остановить.
Отдельно посмотрите на повторы при ошибках базы. У них должны быть ограничение числа попыток и паузы, чтобы перегруженный сервер успел восстановиться. | 348 |
| 18 | ИИ-агенту нужны актуальные правила Selenium, чтобы писать устойчивые тесты
Агент добавил sleep(5), скопировал длинный XPath и подключил лишнюю библиотеку для драйвера. Тест проходит локально, а в CI периодически падает.
Команда Selenium разобрала повторяющиеся ошибки агентов и подготовила рекомендации для файлов инструкций проекта. Агенту стоит передать версию Selenium, актуальную документацию и рабочие примеры. Найденные локаторы — проверить на настоящей странице.
Особенно внимательно смотрите на исправления нестабильных тестов. Попросите указать, какое условие ещё не выполнилось: элемент не появился, кнопка недоступна, загрузка продолжается. Затем настройте явное ожидание этого условия.
Сохраните правила в AGENTS.md или другом файле, который читает ваш инструмент. Они будут применяться и к следующим задачам. | 365 |
| 19 | Токен Supabase можно ограничить одним проектом и нужными действиями
Скрипту генерации типов нужен доступ к структуре базы. Токен с правами на весь аккаунт заодно открывает ему другие проекты и операции.
В Supabase можно выбрать ресурсы, разрешения и срок действия токена. Для чтения базы одного проекта достаточно выделить этот проект и включить соответствующее разрешение. Скрипту деплоя можно выдать отдельный токен.
Есть важная деталь: общий набор прав Read-only включает чтение секретов, в том числе API-ключей. Для узкой задачи настройку лучше начать с No access и включить нужные пункты вручную.
Посмотрите, какие токены сейчас используют CI и локальные инструменты. Для каждого выпишите задачу, необходимые права и срок работы. По этому списку проще заменить общие ключи отдельными. | 357 |
| 20 | Профиль Go показывает горутины, которые навсегда застряли в ожидании
Функция запустила несколько обработчиков и собирает ответы через канал. Первый обработчик вернул ошибку, функция завершилась. Остальные продолжают отправлять результаты в канал, который уже никто не читает.
Такие горутины удерживают память и накапливаются при повторных вызовах. В Go 1.27 появился профиль goroutineleak, который обнаруживает часть постоянных блокировок на каналах и примитивах пакета sync.
Если в сервисе уже подключён net/http/pprof, профиль доступен через диагностический обработчик:
curl http://localhost:6060/debug/pprof/goroutineleak > leak.prof
go tool pprof leak.prof
Начните проверку с ранних выходов по ошибке: кто после них продолжает работу, куда отправляет результат и как узнаёт об отмене. | 357 |
