Задержка запроса выросла, но логи не показывают, какая функция забирает CPU. Профиль выполнения помогает связать затраты с кодом на реальной нагрузке.
Cloudflare добавил профилирование по запросу для Workers и Durable Objects. CPU-профиль собирает выборки стеков, а flamegraph показывает, какие пути выполнения чаще попадали в наблюдение. Профиль памяти помогает найти места выделения объектов.
Для обычного Worker выбирается один работающий экземпляр. Для Durable Object можно указать имя конкретного объекта — полезно, если проблема проявляется только у него.
Сеанс запускается вручную и охватывает ограниченное время. Профиль выделений видит только объекты, созданные в этом окне: он не показывает всю удерживаемую память и может пропустить выделения при старте. При редком трафике поймать нужный участок тоже сложнее.
Please open Telegram to view this post
VIEW IN TELEGRAM
👾7❤5🔥4👏3
Naresh Jain сравнил создание одного API-сервиса агентами с дополнительными проверками и без них. Готовые приложения оценивались отдельно: для успеха требовалось пройти все 178 приёмочных тестов.
В эксперименте с behavioral harness агент во время разработки получал архитектурные контракты и обратную связь от проверок. GPT-6 Luna без этой поддержки справился в 3 из 10 запусков, с ней — в 10 из 10. Такой вариант стоил примерно на треть меньше, чем GPT-6 Sol без harness.
У GPT-6 Sol результат был 10 из 10 в обоих режимах. Дополнительные проверки увеличили расход токенов примерно в 10,5 раза и оценённую стоимость почти в семь раз, не улучшив итоговый успех.
Это небольшое сравнение на одной задаче. Оно показывает, что пользу проверок стоит измерять вместе с затратами: одинаковая схема может помогать одной модели и добавлять лишнюю работу другой.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤8👍5🔥4
Cloudflare встроил Rust-движок DataFusion в Go-сервис доставки логов. SQL фильтрует и преобразует данные внутри процесса, без отдельного сетевого вызова на каждую обработку.
В разборе устройства Transformers данные передаются пакетами в формате Arrow IPC через
cgo. Это позволяет сохранить типы и структуру столбцов, обходясь без промежуточного JSON с разбором каждой записи.Go предоставляет входной буфер только на время вызова: Rust не сохраняет указатель после возврата. Выходным буфером владеет Rust. Go копирует результат в свою память, затем явно освобождает Rust-буфер.
Такой обмен всё равно требует сериализации, декодирования и управления памятью. Его преимущество — обработка пакетами и явные сроки жизни данных. Если преобразование не удалось, сервис повторяет попытку: исходные логи не отправляются в обход фильтрации и маскирования.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤15👏8👍6
В Turso 0.7 конкурентные записи уже были, но добавление соединений почти не повышало пропускную способность. Профиль показал причину: каждая транзакция отдельно ждала
fsync, пока остальные упирались в блокировку коммита.В Turso 0.8 внедрили group commit. Транзакции складывают записи в очередь, а один участник записывает накопленное в журнал и вызывает
fsync за всю группу.Остальные ждут, пока синхронизация охватит их записи. Только после этого продолжают фиксацию: ускорение сохраняет требование надёжного хранения.
Таймера для набора группы нет. Транзакции, пришедшие во время текущей синхронизации, попадают в следующую. Под конкурентной нагрузкой дорогих обращений к диску становится меньше; одиночному последовательному клиенту объединять почти нечего.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤8👍7👏3🔥2
JSON-декодер дошёл до закрывающей скобки и вернул результат. Но после неё в ответе остался перевод строки. Для HTTP/1 это важно: пока тело не прочитано до конца, соединение нельзя использовать для следующего ответа.
В разборе команды Go показано, как такая мелочь приводила к повторным TCP/TLS-рукопожатиям. Даже код, которому нужен только статус ответа, мог постоянно открывать соединения заново.
В Go 1.27
net/http.Transport пробует дочитать остаток в фоне: до 256 КБ или 50 мс. Если получилось, соединение возвращается в пул. Вызывать resp.Body.Close() в приложении всё равно нужно.Для HTTP/2 такое дочитывание не требуется: независимые потоки позволяют другим запросам пользоваться тем же соединением.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15🔥12❤7👏6
Docker Hub позволял превратить личный аккаунт в организацию и назначить ей владельца. Вместе с аккаунтом переносились PAT-токены: их привязывали к новому пользователю, сохраняя прежнее секретное значение.
Тот, кто знал токен до переноса, мог обращаться к реестру уже от имени нового владельца. В пределах разрешений токена это затрагивало загрузку, публикацию и удаление образов.
В разборе CVE-2026-105445 Docker описывает исправление от 30 сентября: перенос PAT полностью убрали. Признаков эксплуатации компания не нашла; доступ к веб-интерфейсу и смене пароля ошибка не давала.
При смене владельца ресурса стоит отдельно проверить судьбу всех выданных ключей. Изменение строки в таблице пользователей не забирает секрет у человека, который уже его скопировал.
Please open Telegram to view this post
VIEW IN TELEGRAM
👏10👍4❤3🔥3
В цепочке A → B → C → D сбоит последний сервис. Каждый предыдущий делает одну повторную попытку. Пока ошибка идёт наверх, число обращений к D успевает вырасти в восемь раз.
В разборе Uber показано, почему отдельные лимиты повторов не решают всю проблему: нагрузка продолжает усиливаться на каждом уровне зависимостей.
Команда добавила сведения об источнике ошибки. Если сервис сам породил сбой, ближайший вызывающий сервис может повторить обращение в пределах бюджета. Если он лишь передаёт чужую ошибку, выше по цепочке её повторно «лечить» уже не пытаются.
Для этого нужна связь между входящими и исходящими вызовами. Потеря контекста может сместить место повтора, поэтому в статье отдельно разбирают такие случаи. Политика повторов здесь зависит от того, где возник сбой и кто уже пытался с ним справиться.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤12👍12🔥8
Цикл добавляет
short в Set<Short>, затем вызывает remove(i - 1). Ожидаем, что предыдущий элемент исчезнет. Но выражение i - 1 имеет тип int и упаковывается в Integer. В наборе лежат Short — совпадения нет.Компилятор пропускает код: метод
remove(Object) принимает такой аргумент. Error Prone замечает несовместимость и останавливает сборку. Он подключается к javac и использует сведения компилятора о типах.Ещё один пример —
YYYY в формате даты. Это год по нумерации недель. В конце декабря он может уже относиться к следующему году, хотя большую часть года ошибка незаметна.К встроенным проверкам можно добавить свои через BugChecker, а преобразования кода описать шаблонами Refaster. Так повторяющуюся ошибку проекта можно ловить при сборке, до очередного ревью.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤10😍8👍5❤🔥3
Когда у каждого проекта свои владельцы и внешние участники, ручная ревизия прав легко откладывается на потом. GitHub автоматизировал её через Evergreen — приложение на основе GitHub Actions, вебхуков и issues.
Раз в квартал владельцу репозитория приходит список внешних участников. Нужно отметить тех, кому доступ ещё требуется. После срока на ответ неподтверждённые доступы отзываются. Встроенный период ожидания не позволяет случайному ручному запуску ускорить очистку.
Состояние каждой проверки хранится в JSON в Git: кто имел доступ, когда запросили подтверждение и какое решение приняли. Его можно проследить по истории коммитов.
Для заброшенных репозиториев есть отдельный процесс с предупреждением и архивированием. Код сохраняется, а действия остаются в журнале. Автор описывает устройство внутреннего решения, которое можно адаптировать под свою организацию.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤14
Quick Tunnel публикует локальное приложение по временному адресу. По умолчанию зайти может любой, у кого есть ссылка.
В Protected Quick Tunnels вход можно ограничить адресами почты. Начиная с
cloudflared 2026.9.3 для этого есть флаг:cloudflared tunnel --url http://localhost:8080 --allowed-mail alice@example.com
Посетитель подтверждает почту одноразовым кодом через Cloudflare Access. Затем
cloudflared на вашей машине сверяет адрес со списком разрешённых. Аккаунт Cloudflare не нужен ни автору демо, ни посетителю.Флаг можно повторять для нескольких адресов или разрешить целый домен. Без него туннель останется публичным. Чтобы поменять список, нужно перезапустить туннель; после остановки процесса доступ прекращается. Для постоянного адреса и сложных правил предусмотрен обычный Cloudflare Tunnel с Access.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15👏5😁4
До 31 октября в Proglib Academy можно выбрать два курса и заплатить только за один.
Например, можно совместить:
💥 ИИ для разработчиков — применение нейросетей в повседневной разработке: работа с кодом, тестирование и ревью.💥 Разработка ИИ-агентов — архитектура агентов и создание собственных AI-решений.
Вместе курсы стоят 108 000 ₽, но по акции оба обойдутся в 59 000 ₽. Экономия — 49 000 ₽
Интересуют Python и ИИ или алгоритмы и архитектура? Можно выбрать любые два курса из каталога.
Please open Telegram to view this post
VIEW IN TELEGRAM
1👾7👏5👍4💯3
Список статей показывает только начало каждого текста. Можно ожидать, что база прочитает небольшой фрагмент. Но объём работы зависит от сжатия.
В эксперименте с TOAST на PostgreSQL 18 сравнили pglz и LZ4. Для pglz база умеет оценивать верхнюю границу объёма сжатых данных, нужного для начала строки. Для LZ4 такой оценки нет — значение сначала забирается целиком.
При чтении первых 200 символов из ста значений примерно по 1 МБ получилось около 1 мс с pglz и 16 мс с LZ4. Данные уже находились в памяти; обращений к страницам было 301 против 6234.
В другом тесте LZ4 быстрее загружал JSON-документы. Поэтому перед выбором сжатия стоит проверить свои запросы: читаете ли вы документ целиком, показываете короткое превью или достаёте диапазон байтов из середины.
Please open Telegram to view this post
VIEW IN TELEGRAM
😁8❤5👍4
Две уязвимости PHP2Shell позволяют выполнять код на сервере без авторизации. Обновления вышли 21 октября, но AWS зафиксировала попытку атаки ещё 17-го.
Первые признаки одной из ошибок заметили в 2024 году. Исправление застряло, а перед выпуском патчей ещё и нарушили порядок раскрытия.
Что помешало закрыть дыру раньше и какие версии PHP нужно обновить
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13😁3❤2
В SQLite 3.54 изменили обработку
UPDATE: если индексируемое значение выражения осталось прежним, соответствующий индекс больше не меняют. Обновление строки не обязательно требует этой дополнительной работы.Есть и другие изменения планировщика: запросы
UNION с LIMIT 1 обрабатываются быстрее и требуют меньше памяти. А размер базы можно исследовать командой .diskused прямо в CLI — отдельный sqlite3_analyzer объявлен устаревшим.Заявленные около 4% ускорения получены подсчётом процессорных циклов в speedtest1 на Linux x64. На своих запросах результат нужно измерять отдельно.
После основного релиза вышел патч 3.54.1. Он исправляет возможное переполнение буфера в куче на 32-битных сборках и другие ошибки 3.54.0. На 64-битные сборки именно эта проблема с буфером не распространяется.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤9👍5
Модель попросили найти пять публичных показателей. Она добралась до внутренних систем организации, изменила настройки и скачала 147 451 строку закрытых данных. Все пять ответов оказались неверными.
В другом случае модель нашла чужой кошелёк в тестовой сети и оплатила из него развёртывание контрактов. В итоговом ответе происхождение средств тоже не указала.
Как обычные задания привели к доступу без разрешения — в разборе отчётов OpenAI
Please open Telegram to view this post
VIEW IN TELEGRAM
😁18❤10
Что известно о возможном закрытии программы и кого оно затронет.
Please open Telegram to view this post
VIEW IN TELEGRAM
😢13💯6👏4👾4❤1
Удаляете одну организацию — база заодно удаляет миллионы связанных записей. В PlanetScale разобрали, как такая операция удерживает блокировки на таблицах. Если в этот момент запустить миграцию, она будет ждать завершения удаления, а новые запросы могут выстроиться уже за ней.
Это важно бэкенд-разработчикам и тем, кто выкатывает изменения схемы: даже добавление столбца способно превратить фоновую очистку в простой приложения.
Проверьте объём каскадных удалений и задайте миграциям короткий lock_timeout. Если одна операция затрагивает слишком много строк, рассмотрите управляемое удаление порциями: каждая порция должна завершаться отдельной короткой транзакцией.
Please open Telegram to view this post
VIEW IN TELEGRAM
1❤8👾5👏3💯3
Чтобы построить график популярности репозитория, раньше приходилось загружать страницы со списками пользователей. В новом API GitHub возвращает готовые дневные счётчики и сначала ограничивает выборку диапазоном дат. Для истории react/react это около 24 запросов вместо 2511.
Полезный пример для разработчиков отчётов и API: маленький ответ ещё не означает дешёвый запрос. База может перечитать огромную таблицу ради нескольких чисел.
Посмотрите на свои графики и выгрузки: фильтруете ли вы данные до группировки? Если клиенту нужны только итоги, попробуйте отдавать агрегаты по ограниченным периодам вместо всех исходных записей.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤18
Что установили присяжные и при чём здесь Cambridge Analytica — рассказываем в статье.
*Meta признана экстремистской организацией в России.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤12😁6👍2
Поменяли адрес API — снова собираете весь фронтенд? Heroku предлагает передавать публичные настройки через data-атрибуты HTML. При запуске веб-сервера значения из переменных PUBLIC_WEB_ попадают в страницу, а JavaScript читает их через document.head.dataset.
Это удобно командам, которые продвигают одну сборку из тестовой среды в рабочую. Меняется окружение, а проверенный JavaScript-пакет остаётся тем же.
Отделите настройки окружения от кода и проверьте, можно ли загружать их при старте сервера. В таком подходе изменение настроек требует перезапуска, но не пересборки. Пароли и токены туда класть нельзя: всё в HTML доступно посетителю.
Please open Telegram to view this post
VIEW IN TELEGRAM
👾6😁4