Сохранёнки программиста

Сохранёнки программиста

Заметки и ссылки на будущее, чтобы изучить когда будет время. Разместить рекламу: @tproger_sales_bot Правила общения: https://tprg.ru/rules Другие каналы: @tproger_channels Другие наши проекты: https://tprg.ru/med

Username
@prog_stuff
Category
Technologies
Country
RussiaRussia
Created
, 5 years
Subscribers6,468−4 last week
Avg views per post, 7d239−15% vs prev 7d
ERR3.70%last 7 days

Subscribers, 30 days

Oct 21 – Nov 4−29 (−0.4%)

Show as table
DateSubscribers
Oct 21, 20266,497
Oct 22, 20266,492
Oct 23, 20266,491
Oct 24, 20266,486
Oct 25, 20266,482
Oct 26, 20266,481
Oct 27, 20266,476
Oct 28, 20266,472
Oct 29, 20266,470
Oct 30, 20266,469
Oct 31, 20266,468
Nov 1, 20266,469
Nov 2, 20266,468
Nov 3, 20266,467
Nov 4, 20266,468

Average views per post by day

By publication day

Show as table
DateAvg views per post
Oct 13, 2026300
Oct 14, 2026284
Oct 15, 2026321
Oct 16, 2026281
Oct 17, 2026249
Oct 18, 2026239
Oct 19, 2026247
Oct 20, 2026259
Oct 21, 2026248
Oct 22, 2026262
Oct 23, 2026264
Oct 24, 2026265
Oct 25, 2026273
Oct 26, 2026306
Oct 27, 2026294
Oct 28, 2026308
Oct 29, 2026262
Oct 30, 2026278
Oct 31, 2026272
Nov 1, 2026272
Nov 2, 2026240
Nov 3, 2026213
Nov 4, 2026139

Most viewed this month

  1. 01

    Как Cloudflare проверяет выводы ИИ-агентов В первом прототипе агент получал всё расследование одним запросом. Он смешивал телеметрию с гипотезами, выходил за область проверки и терял различие между отсутствием данных и неудачным поиском. В инженерном разборе Cloudflare сбор свидетельств вынесен в детерминированный код. До вызова модели система фиксирует область расследования, источники, время и пробелы в данных. Один снимок можно использовать повторно, чтобы сравнивать интерпретации агентов. Четыре специализированных агента исследуют трафик, историю клиента, глобальную телеметрию и сведения об угрозах. Код проверяет ссылки на свидетельства и принадлежность расследованию. Сбои источников сохраняются явно: «не проверено» отличается от «проверено, совпадений нет». Для разработчиков агентных систем это пример разделения сбора данных, анализа и проверки результата. Решение о мерах защиты принимает аналитик. #архитектура #разборы

    Photo
    Views332
    Forwards3
    Reactions—
    Comments0
  2. 02

    Как Uber ограничивает лавину повторных запросов Сервис C вернул ошибку. B повторил запрос к C, а после неудачи сообщил об ошибке A. Если A тоже повторит запрос, вся цепочка запустится заново. Даже небольшой лимит ретраев на каждом уровне усиливает нагрузку. В разборе Uber используется error ownership: инфраструктура сопоставляет входящие и исходящие ошибки, чтобы определить, где сбой возник, а где его только передали дальше. Если C объявил себя источником ошибки, B может повторить обращение к нему в пределах retry budget. Когда ошибка уходит выше, B снимает признак владения: A уже не должен повторять всю цепочку. В статье есть схема передачи x-uber-error-claim и обработка сложных случаев: потерянного контекста и совпавших независимых ошибок. Подход требует понимания зависимостей сервисов — одного общего правила «повторять любой 500» для этого недостаточно. #архитектура #разборы

    Photo
    Views323
    Forwards2
    Reactions—
    Comments0
  3. 03

    Почему реплики для чтения могут замедлять запись В текущем хранилище GitHub полные копии репозитория на файловых серверах обеспечивают и сохранность данных, и обработку запросов. Добавление реплики помогает чтению, но увеличивает работу при каждом push. В разборе новой Git-архитектуры GitHub описывает разделение этих задач. Данные репозиториев планируют хранить в Azure Blob Storage, а запросы обслуживать вычислительными воркерами с кешем. Дополнительная мощность для чтения тогда не требует новой полной реплики. Согласование хотят сосредоточить на обновлении ссылки Git. Хранение объектов и проверки можно выполнять параллельно с другими записями, а compaction и сборку мусора вынести с серверов, обслуживающих запросы. Это развивающаяся архитектура. Заявленное увеличение пропускной способности записи до 35 раз получено во внутренних бенчмарках; такой результат не обещает ускорить каждый пользовательский push в 35 раз. #архитектура #производительность

    Photo
    Views318
    Forwards2
    Reactions—
    Comments1
  4. 04

    Как батчинг меняет производительность OLTP в TigerBeetle Перенос привычной схемы работы с SQL-базой в TigerBeetle может дать слабый результат. Множество клиентов, отправляющих по одной транзакции, не раскрывает возможности движка. В разборе банковской нагрузки авторы меняют модель данных, используют батчи и идентификаторы с временной компонентой. Одна логическая транзакция состоит из двух переводов: флаг Linked связывает их атомарно — фиксируются оба либо ни один. Пока клиент ждёт ответа на текущий запрос, он собирает новые операции в следующий батч. Отдельная искусственная задержка для накопления не нужна. Сетевые и репликационные издержки распределяются на несколько операций. Материал полезен при проектировании транзакционных сервисов: разобраны модель, способ подачи нагрузки и локальность записей. Показанное ускорение относится к конкретному эксперименту; переносить его цифры на любой сервис нельзя. #производительность #разборы

    Photo
    Views314
    Forwards1
    Reactions—
    Comments0
  5. 05
    Views311
    Forwards1
    Reactions—
    Comments0

Latest posts

#3116Photo
Views112−58%vs avg
Forwards2
Reactions1
Comments0
#3115Photo
Views165−38%vs avg
Forwards1
Reactions—
Comments0
#3114Photo

WAF может проверить ответ сервера перед отправкой клиенту Запрос пытается открыть служебную страницу без авторизации. Приложение возвращает HTML административной панели. Проверка ответа помогает увидеть, что сервер действительно отдал закрытое содержимое. В Cloudflare WAF добавили сопоставление запроса с ответом. Правило может учитывать путь, состояние авторизации, код ответа и другие доступные признаки. При совпадении WAF подменяет ответ страницей блокировки до отправки клиенту. Начать можно с узкого сценария: проверить обращения к административным адресам и посмотреть, какие ответы получает неавторизованный посетитель. Сначала соберите события в журнал, затем настройте блокировку. Пользовательские правила по содержимому тела ответа пока недоступны. Блокировка ответа также не отменяет действия, которые приложение уже успело выполнить на сервере.

Open in Telegram
Views202−24%vs avg
Forwards1
Reactions—
Comments0
Views growthHide views growth

Views growth

Hours after publication

Show as table
Hours after publicationViews
0 h0
5 h115
17 h147
29 h202
  1. After 6 hours115
  2. After 24 hours202
  3. Total to date202
#3113Text

Два распаковщика могут увидеть разные файлы в одном tar-архиве Сервис проверяет архив и видит безопасный файл. Установщик открывает тот же архив — и находит дополнительный файл с другим содержимым. Такое возможно, когда программы по-разному трактуют записи tar. В разборе tar-codec есть примеры расхождений, из-за которых проверка и последующая распаковка получают разные наборы файлов. Команда Astral столкнулась с этим при работе над uv и написала более строгий парсер. Начиная с uv 0.13 он используется для обработки исходных пакетов Python. Если ваш сервис принимает архивы, проверьте всю цепочку: чем проверяете содержимое, чем распаковываете и какие варианты формата разрешаете. Добавьте в тесты архивы с повторяющимися именами и неоднозначными заголовками. Проверяющая и использующая файл части системы должны одинаково понимать его содержимое.

Open in Telegram
Views224−15%vs avg
Forwards0
Reactions1
Comments0
Views growthHide views growth

Views growth

Hours after publication

Show as table
Hours after publicationViews
0 h0
9 h168
33 h224
  1. Total to date224
#3112Photo

GitHub автоматизировал пересмотр доступов внешних участников Подрядчик закончил работу, тестовый проект закрыли, а права на репозиторий остались. Когда таких проектов десятки, ручную проверку легко отложить. В GitHub для общей организации создали приложение Evergreen. Раз в квартал оно открывает задачу со списком внешних участников. Владелец подтверждает тех, кому доступ ещё нужен. По истечении срока неподтверждённые права отзываются. Отдельный процесс ищет репозитории без недавней активности людей: сначала предупреждает владельца, затем архивирует проект. Решения и изменения сохраняются в задачах и JSON-файлах управляющего репозитория. Для своей команды можно начать с одного действия: назначить владельца каждому репозиторию и дату следующего пересмотра доступов. Затем автоматизировать напоминания и журнал решений.

Open in Telegram
Views237−10%vs avg
Forwards1
Reactions—
Comments0
Views growthHide views growth

Views growth

Hours after publication

Show as table
Hours after publicationViews
0 h0
5 h139
17 h181
29 h237
  1. After 6 hours139
  2. After 24 hours237
  3. Total to date237
#3111Photo

Общий ключ шардирования помогает оставить JOIN внутри одной базы Таблицы клиентов и заказов распределили по разным серверам: клиентов — по id, заказы — по собственному id. Теперь запросу «клиент и его заказы» приходится собирать данные с нескольких шардов. В разборе групп шардирования показан другой подход: размещать заказы по customer_id, используя то же правило распределения, что и для клиентов. Связанные строки окажутся на одном шарде, где можно выполнить JOIN и транзакцию локально. Перед выбором ключа выпишите основные запросы приложения. Какие таблицы они соединяют? Какие строки меняются вместе? Какой идентификатор известен в начале запроса? Эти ответы помогут выбрать размещение данных. Особенно полезно проверить запросы, в которых будущего ключа шардирования вообще нет: для них может потребоваться обращение к нескольким шардам.

Open in Telegram
Views242−9%vs avg
Forwards2
Reactions—
Comments0
Views growthHide views growth

Views growth

Hours after publication

Show as table
Hours after publicationViews
0 h0
9 h176
33 h242
  1. Total to date242
#3110Photo
Views283+7%vs avg
Forwards2
Reactions—
Comments0
Views growthHide views growth

Views growth

Hours after publication

Show as table
Hours after publicationViews
0 h0
5 h117
17 h168
29 h234
77 h283
  1. After 6 hours117
  2. After 24 hours234
  3. Total to date283
#3109Photo
Views260−2%vs avg
Forwards2
Reactions0
Comments0
Views growthHide views growth

Views growth

Hours after publication

Show as table
Hours after publicationViews
0 h0
9 h155
33 h232
69 h260
  1. Total to date260
#3108Text
Views275+4%vs avg
Forwards0
Reactions—
Comments0
Views growthHide views growth

Views growth

Hours after publication

Show as table
Hours after publicationViews
0 h0
4 h109
29 h220
77 h275
  1. After 6 hours109
  2. After 24 hours220
  3. Total to date275
#3107Text
Views269+2%vs avg
Forwards2
Reactions—
Comments0
Views growthHide views growth

Views growth

Hours after publication

Show as table
Hours after publicationViews
0 h0
9 h149
69 h269
  1. Total to date269

All posts

Connections