home.social

#отладка — Public Fediverse posts

Live and recent posts from across the Fediverse tagged #отладка, aggregated by home.social.

fetched live
  1. Открываем секретный файл с диска «Лучшие игры для IBM PC #1» 1994 года

    Всё произошло очень быстро: какая‑то ностальгическая статья про сборники Classic Fond — и вот я уже качаю образы «Лучшие игры для IBM PC» с Internet Archive . Первым скачался 25-й диск. Открыл и вспомнил всё: школу, переход рядом с ВДНХ, палатки. Ешь беляш, смотришь, какие альбомы вышли, ну и, конечно, сборники Classic Fond. В статье будем пытаться открыть секретный файл с дисков Classic Fond.

    habr.com/ru/articles/1098090/

    #пиратство #игры #отладка #challenge #zip #msdos #реверсинжиниринг #90е #ребус_для_программистов #ретроигры

  2. Джун закрывает задачи с агентом, но спотыкается на разборе инцидента

    Джун закрывает задачи быстрее, PR проходят ревью, метрики радуют руководителя. Но на первом серьёзном инциденте выясняется, что разработчик с трудом понимает устройство сервиса, над которым работал несколько месяцев. Разбираемся, как AI‑агенты меняют привычный процесс обучения новичков, какие ошибки допускают руководители при онбординге и что поможет вырастить самостоятельных инженеров. Читать разбор

    habr.com/ru/companies/otus/art

    #отладка #наставничество #профессиональный_рост #управление_командой #тимлид #джуниоры #кодревью #обучение_разработчиков #aiагенты #онбординг_разработчиков

  3. Микроядро seL4, Ada/SPARK и 185 модулей: разбор проекта

    185 модулей ядра, not‑proved: 0. Сеть и хранилище в Ring 3, TCP работает на железе. Разбор проекта Schild TCB: формальная верификация, изоляция периферии и то, где я упёрся. С честными границами — что доказано, что только в QEMU, а что на реальном ноутбуке.

    habr.com/ru/articles/1095314/

    #отладка #микроядро #spark #x86_64 #ada #sel4 #формальная_верификация #tcb

  4. Может ли локальная 27B-модель расследовать продакшен-инцидент как Claude? Две RTX 5090, около 40 прогонов и одна гонка

    Реальный продакшен-инцидент: пул соединений забит, активных запросов дюжина, рестарт помогает. Claude нашёл причину за двадцать минут. Нормальный человек на этом обновил бы библиотеку и пошёл дальше, но у меня две RTX 5090 стояли без дела, и зудел вопрос: а локальная 27B-модель смогла бы? Тот же промпт, тот же код, та же песочница, семь локальных моделей, около 40 прогонов. В промпте, кстати, осталась одна правдоподобная, но ложная гипотеза инженера. Я не планировал делать из неё ловушку. Она стала главным фильтром всего эксперимента.

    habr.com/ru/articles/1090016/

    #llm #claude #qwen #агенты #отладка #инцидент #httpclient #java

  5. Директ Коммандер на Linux: Работа над ошибками

    Неделю назад я выложил статью про то, как запустил Директ Коммандер на Linux . А через пару дней выяснил, что половину той инструкции можно выкинуть. Bottles там не нужен, хватает обычного Wine из репозитория WineHQ. Заодно разобрал автообновление: Коммандер вешает красную плашку «обновление будет установлено автоматически при следующем запуске», честно качает 134 мегабайта и не устанавливает ничего. Ни тогда, ни потом, и никак об этом не сообщает. И отдельно расскажу, как я собственным скриптом удаления снёс себе рабочую установку. Там всё сломала одна подстрока.

    habr.com/ru/articles/1087600/

    #wine #linux_mint #яндекс_директ #директ_коммандер #electron #bash #автообновление #отладка #яндекс

  6. Я дважды неправильно объяснил один баг в ora2pg

    У меня было объяснение, почему ora2pg теряет внешние ключи при переносе схемы в PostgreSQL. Я его опроверг, придумал новое и опроверг ещё раз. Настоящая причина оказалась в одной проверке exists() в Perl-коде, а чинится всё одной строкой в конфиге. Где прятался баг

    habr.com/ru/articles/1086100/

    #ora2pg #postgresql #миграция_баз_данных #mysql #mssql #внешние_ключи #perl #PG_VERSION #autovivification #отладка

  7. Терпение. Или как один зависший кадр заставил меня построить ещё полсистемы ;)

    Знаете, я хотел сегодня поговорить о довольно глубокой вещи. Зачем нам вообще продолжать что-то делать? Не зачем начинать. Начинать легко. В начале есть идея, азарт, новый репозиторий, первые коммиты и ощущение, что сейчас ты сделаешь что-то чертовски крутое. А потом проходит неделя, месяц, год, и ты сидишь ночью перед монитором и смотришь на картинку, которая почему-то дёргается. Хотя всё должно работать.

    habr.com/ru/articles/1085912/

    #Rust #EvertyDesk_Next #EVRTCK #remote_desktop #отладка #latency #realtime #кодек #транспорт #profiling

  8. Black Magic Probe на ESP32-C5: беспроводной отладчик без OpenOCD

    В прошлой статье я сделал обзор популярных способов отладки embedded: GDB-клиент -> GDB-сервер (OpenOCD) -> программатор -> целевой МК. Тогда я сформулировал свои субъективные требования к “идеальному” программатору. И на тот момент у меня уже был минимально рабочий вариант такого программатора. И вот спешу представить к чему привели меня изыскания в этом направлении.

    habr.com/ru/articles/1085396/

    #esp32 #отладка #тестирование #blackmagic #debug #gdb #rtt #wifi #ARM #riscv

  9. Карта чёрная, в консоли ни одной ошибки. Три бага одной подложки

    Мы переводили карту парковок с растровой подложки на векторные тайлы и получили чёрный экран. Без единой ошибки в консоли: ни исключения, ни предупреждения, идеально чистый лог. Единственной уликой оказалось отсутствие запросов за тайлами — воркер MapLibre не попал в сборку, потому что Rollup не умеет разбирать шаблонную строку в new URL(…, import.meta.url). Разбираем этот баг и ещё два из той же серии: как смена города убивала Leaflet и почему событие load у карты не наступает никогда.

    habr.com/ru/articles/1085300/

    #maplibre #leaflet #vite #svelte #openfreemap #отладка #карты #webworker

  10. Парсер, который не падает, а врёт: шесть случаев из моей практики

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

    habr.com/ru/articles/1084552/

    #парсинг #скрапинг #playwright #headlessбраузер #регулярные_выражения #сбор_данных #качество_данных #отладка #requests #python

  11. Спросил у Claude Code одно слово — он отправил на сервер 305 килобайт. Вскрыл трафик двух кодинг-агентов

    Спросил у Claude Code «Ответь одним словом: работает». Двадцать девять символов. На сервер ушло 305 042 байта — 113 460 токенов, ответ из четырёх. Поставил между агентом и сервером прокси на сорок строк Python и разобрал тело запроса по частям. Системный промпт — четыре процента. Восемьдесят пять процентов — описания 137 инструментов, из которых 107 принёс один MCP-сервер, которым я в этой сессии не пользовался. Ещё 29 тысяч символов добавил хук плагина. И на каждый ход уходит второй запрос, о котором я не просил. То же самое проделал с Codex CLI: 29 килобайт, 9 817 токенов, а системный промпт при этом такой же длины. Дальше — таблица, что убирается флагами (один MCP-сервер стоил 52 тысячи токенов на запрос), что это значит для окна и кэша, и скрипт, чтобы посмотреть свой первый запрос.

    habr.com/ru/articles/1083326/

    #Claude_Code #Codex_CLI #системный_промпт #токены #контекстное_окно #prompt_cache #кодингагенты #прокси #отладка #сезон_код_будущего

  12. Почему баги кроссбраузерности до сих пор никуда не исчезли

    Выкатили новую фичу, а потом бэкендер со своим Firefox пишет, что у него что-то не работает? Или пользователь с Safari жалуется на неудобства? Ничего страшного: поищу причину в интернете, починю баг и продолжу использовать для разработки Chrome </sarcasm>. В этой статье рассмотрим, почему проблемы кроссбраузерности никуда не пропали в 2026 году, и попробуем понять, как заранее определять появление ошибок.

    habr.com/ru/companies/selectel

    #selectel #кроссбраузерность #фронтенд #браузерные_движки #blink #webkit #gecko #webview #тестирование_вебприложений #отладка

  13. Мы поставили сторожа на конвейер публикаций. Первую неделю он сторожил сам себя

    У нас несколько фоновых агентов публикуют контент на разных площадках по расписанию — Дзен, VC, TenChat, Хабр. Если основной движок не справился за 20 минут, включается запасной. Чтобы не сидеть в логах руками и не пропускать пустые слоты, поверх этого стоит раннер: он спрашивает у каждой площадки факт публикации, сверяет с базой и, если слот не закрылся, шлёт алерт с просьбой перезапустить вручную.

    habr.com/ru/articles/1081430/

    #автоматизация #отладка #мониторинг

  14. А чё, так можно было? Недокументированный C#

    В C# есть четыре ключевых слова, которых нет в документации. Компилятор их принимает. Одно из них собирается на любой машине, а выполняется только на Windows. На Linux та же сборка падает. Дальше — как объект меняет свой тип на ходу и что на самом деле происходит при вызове метода у пустой ссылки.

    habr.com/ru/articles/1080494/

    #NET #C# #недокументированные_возможности #TypedReference #ключевые_слова #CLR #рантайм #компилятор #внутреннее_устройство #отладка

  15. Надпись «Откройте камерой» мешала прочитать QR-код

    Один SVG: при 640 пикселях QR не читается, при 320 читается. Разбираю, как локатор принял часть подписи за угол кода, почему удаление букв возвращало чтение и как удалось оставить подпись на месте. С контрольными опытами и исходниками.

    habr.com/ru/articles/1080454/

    #qrкод #jsqr #javascript #svg #компьютерное_зрение #отладка #тестирование #растеризация

  16. Я хотел сделать быстрый сжатый диск для macOS. А в итоге научился не верить собственным бенчмаркам

    Полгода назад я начал писать сжатую файловую систему для macOS. Идея была довольно простой. В macOS уже существует decmpfs — встроенный механизм прозрачного сжатия файлов. Приложение продолжает видеть обычный файл, хотя физически его содержимое может храниться в сжатом виде. Но у этого подхода есть неприятное для моей задачи свойство: после изменения файла сжатие может исчезнуть. Например, можно сжать node_modules, получить приличную экономию места, потом запустить сборку — часть файлов перезапишется, распакуется, и каталог постепенно снова начнёт занимать почти исходный объём. Мне хотелось другого поведения: если файл лежит на сжатом диске, он должен оставаться сжатым независимо от того, сколько раз его переписывали.

    habr.com/ru/articles/1080428/

    #FSKit #macOS #файловая_система #Swift #отладка #fs_usage #Finder #сжатие #перечисление_каталогов #DiskArbitration

  17. Кто на самом деле сломал вашего ИИ-агента: модель или обвязка?

    Когда агент в проде ошибается, спор идёт по кругу: модель тупит, промпт кривой, API виноват. Свежая работа Scale AI даёт отказам адрес — ребро между компонентами и сторону вины. Оказывается, «виновата модель» почти никогда не значит «чинить дообучением»: разбираю таксономию из 41 режима, каталог-выжимку и четыре своих отказа с числами — ни один не закрыт сменой модели.

    habr.com/ru/articles/1079638/

    #LLM #ИИагенты #agent_harness #обвязка #таксономия_отказов #RAG #отладка #метрики #тестирование #arXiv

  18. Сторис рендерились 1080×1920, а публиковались 1080×1350. Я два раза чинил не ту причину

    У нас есть конвейер, который раз в день собирает кадр для Stories в Instagram (фото + выжженная поверх подпись) и публикует его через Graph API на два бренд-аккаунта. 2 сентября в моей ленте всплыла своя же сторис, и подпись «посчитал сколько стоит перевезти сестру в москву» была обрезана с обеих сторон — первые и последние буквы срезаны краем экрана. Я это почти сразу починил. 5 сентября мне снова написали, что сторис «кривые». Я почти сразу починил снова. Обе правки были правильными и обе не имели отношения к тому, что жаловались на самом деле.

    habr.com/ru/articles/1079542/

    #instagram #pillow #graph_api #обработка_изображений #отладка

  19. ПИК это 15 республик: переводим ЖКХ-гиганта в режим отладки через Си и Linux

    Обычно статьи про ЖКХ и управляющие компании начинаются с жалоб на потекшие трубы, холодные батареи или необъяснимые цифры в квитанциях. Но если ты практикующий сишник, который проводит дни в Vim, компилируя утилиты через GCC под Linux, ты смотришь на мир иначе. Для тебя любая сложная и закрытая система — это просто криво написанный софт с кучей багов, скрытой архитектурой и нарушенными таймингами. Мое близкое знакомство с крупнейшим девелопером страны — компанией ПИК — началось с банального бытового конфликта с их управляющей компанией. Когда ты привык добираться до самой сути физических процессов, парсить сырые логи CAN-шины (J1939), высчитывать межкадровые зазоры и микросекунды тишины сети, стандартные методы «пользовательского интерфейса» вызывают лишь улыбку.

    habr.com/ru/articles/1079234/

    #си #linux #жкх #системный_анализ #системный_аналитик #системный_подход #системный_инжиниринг #архитектура_системы #архитектура #отладка

  20. HTTP 200 на несуществующий адрес: пять способов, которыми Telegram обманул мои проверки

    Задача была на полчаса: пройтись по списку из 216 адресов вида t.me/имя и понять, какие живы и что это — канал, группа или аккаунт. Ушёл день, и почти весь на то, чтобы перестать верить собственному коду. Ни одна из пяти ошибок не выглядела как ошибка: HTTP 200, валидный HTML, разбор без исключений.

    habr.com/ru/articles/1078128/

    #telegram #http #парсинг #отладка #тестирование

  21. Утёкшие горутины теперь ищет сборщик мусора. Проверил, где он молчит

    В Go 1.27 профиль goroutineleak вышел из эксперимента: рантайм научился доказывать, что горутину уже некому разбудить. Собрал тулчейн из исходников, прогнал десяток программ и замерил, что детектор находит, где он молчит и во что обходится вызов.

    habr.com/ru/articles/1076654/

    #golang #горутины #pprof #сборка_мусора #утечки_памяти #runtime #go_127 #отладка

  22. Мне 15. Мой сайт грузился две секунды, потому что каждый CSS-файл писал в базу данных

    Сайт не сломан. Он открывается. В логах чисто, ошибок нет — просто ты кликаешь по вкладке и успеваешь заметить, что кликнул. Я померил: страница кабинета грузилась 2,1 секунды. При этом сервер отдавал HTML за 30 миллисекунд. Первый час я искал не там — потому что померил не ту страницу. Всё решил один замер. Я дёрнул один и тот же CSS-файл десять раз с кукой сессии и десять раз без неё: 55 мс против 14 мс . За файл с диска. Оказалось, аутентификация делала SELECT, UPDATE и COMMIT в SQLite на каждую картинку и каждый скрипт — сорок раз за страницу, чтобы сорок раз переписать один и тот же таймстамп. Вторым тормозом был Tailwind, который компилировал стили в браузере у каждого посетителя. Стало 0,9 секунды. А потом я сел делать скриншоты для этой статьи и за двадцать минут нашёл ещё два бага, которые спокойно жили в проде. И чуть не уронил чат, исправляя найденное. Мне 15, код открыт. Смотреть, как я это нашёл

    habr.com/ru/articles/1076192/

    #оптимизация #производительность #профилирование #fastapi #sqlite #tailwind_css #кэширование #отладка #петпроект #selfhosted

  23. Пачка PDF положила прод. Расследование багов в Go библиотеках

    Мой сервис обрабатывает большой поток PDF от самых разных генераторов. В начале июня один‑единственный файл уложил его на 30 минут: HPA раздул поды до потолка, и все они наглухо повисли, 100% CPU, обработка стоит, очередь копится, алерты сыпятся пачками. Расследование в трёх актах: ложный подозреваемый, закомментированный panic и санитайзер, не знавший алфавит до конца.

    habr.com/ru/articles/1073660/

    #golang #pdf #ascii85 #парсинг_pdf #goroutine #отладка #open_source #порча_данных

  24. Async на Rust завис: как понять, где именно, когда паники нет и стек молчит

    Сервис жив, CPU в норме, паники нет — а часть запросов зависает на минуты. В async‑Rust привычный стек часто мало помогает: задача могла застрять на блокирующем вызове, мьютексе или просто перестать получать пробуждения. Разбираем, как отличать эти сценарии в Tokio и куда смотреть, когда отладчик молчит.

    habr.com/ru/companies/otus/art

    #Rust #Tokio #async #асинхронное_программирование #зависания #дедлоки #отладка #tokioconsole #мьютексы #кооперативная_многозадачность

  25. Вторая копия Vue: как лишняя строка в lockfile повесила Chromium

    Может ли лишняя запись в yarn.lock повесить браузер? Наша прожила в репозитории три месяца, не привлекая внимания, а потом ночью после релиза положила прод вечным лоадером - причём только в Chromium. Рассказываю, как мы шли к разгадке через ложные следы и что в итоге оказалось в рантайме.

    habr.com/ru/articles/1068420/

    #vue_3 #module_federation #yarn #monorepo #yarnlock #chromium #микрофронтенды #отладка

  26. «Bro, what…?» #1. Первый контакт с crackme на Linux x86-64

    Вы запускаете программу, о которой ничего не знаете. Она вежливо просит строку, а в ответ на ваш ввод насмешливо отвечает: «Bro, what are you trying to do?» И правда, что мы пытаемся сделать? Пытаемся понять ее. Перед нами crackme – программа-головоломка, написанная для тренировки навыков обратной разработки: бинарник под Linux x86-64 без исходников и документации, который издевается над каждым, кто не смог его разгадать. Это первая статья цикла из трех о гибридном анализе крякми Getting Started Keygen (Mazzottis). Мы осмотрим файл штатными утилитами, найдем main в Ghidra, расшифруем «бессмысленные» имена переменных в реальную раскладку стека и подтвердим гипотезы в GDB. По пути встретим оптимизированный пролог без RBP, «хитрое» беззнаковое условие и std::string , спрятавшийся в трех переменных, которые на первый взгляд никак не связаны. Во второй части цикла – мутационное тестирование и реконструкция скрытой структуры, в третьей – полный разбор хеш-функции и восстановление алгоритма на Python. Читать первую часть

    habr.com/ru/articles/1068160/

    #реверсинжиниринг #Ghidra #GDB #ассемблер #x8664 #crackme #CTF #отладка #Linux #C++

  27. Нагрузочный тест Sockudo: два бага в чужом Rust‑коде, которые кладут сервис на ровном месте

    Я делаю NotiBox — Pusher‑совместимый сервис realtime уведомлений. Под капотом я использую Sockudo — WebSocket сервер на Rust. Прежде чем показывать реальным пользователям, я решил проверить, на сколько Sockudo на самом деле «blazingly fast». Я ожидал, что это будет лёгкая прогулка, типичное тестирование нагрузки. Даёшь мало ресурсов серверу, запускаешь бенчмарк, видишь что он захлёбывается запросами в какой‑то момент, и фиксируешь показатели. Идеальный сценарий — полная загрузка процессора, памяти или сети, тогда ты реально нашёл предел ресурсов. Проверяешь масштабируемость и готово. Другой сценарий — ничего не перегружено, но новые соединения/запросы не проходят, растёт задержка ответов. Это тоже ожидаемо и понятно как чинить: смотришь на TIME WAIT сокеты, max open files, и другие «предохранители». А что делать, если там тоже всё по нулям? Вот тут начинается настоящее приключение.

    habr.com/ru/articles/1068142/

    #rust #open_source #sockudo #нагрузочное_тестирование #отладка #gdb #web_socket #pusher

  28. Картинка грузится, а fetch к тому же хосту — нет: как CSP тихо сломала три интеграции

    Полгода назад я закрыл замечание аудита «на сайте нет CSP» — прописал Content‑Security‑Policy с белым списком хостов, проверил, что ничего не отвалилось, и забыл. За три дня на прошлой неделе я нашёл три интеграции, которые эта политика убила молча. Ни одна из них не оставила следа на сервере. Страница, которая называет себя «в реальном времени», показывала одно и то же число десять секунд подряд — и показывала так всем, с того самого дня, как я включил CSP. Это заметка про то, почему такие поломки не видно, и про скрипт, который находит их все сразу.

    habr.com/ru/articles/1066450/

    #csp #contentsecuritypolicy #connectsrc #nextjs #отладка #мониторинг #фронтенд

  29. Мой код терял бы 230 байт из 231. Чтобы это увидеть, пришлось патчить QEMU

    Через четыре часа после первой статьи пришёл комментарий: в моём коде не хватает трёх инструкций, и на настоящей плате он рассыплется. Читатель arteast был прав. Сел воспроизводить поломку. Собрал два варианта, свой и правильный, прогнал на строке в 231 байт. Вывод побайтово одинаковый. Замедлил линию до предела. Ничего не изменилось. Написал программу, которая смотрит, бывает ли передатчик занят хоть когда-нибудь. При выводе в консоль не бывает. Моя ошибка внутри эмулятора не проявляется вообще. Проверить себя было нечем. Пришлось чинить эмулятор. Ну, чини!

    habr.com/ru/articles/1065662/

    #riscv #qemu #baremetal #uart #ассемблер #эмуляция #отладка

  30. Рентген для нейросетей, или как я перестал понимать собственный ИИ и написал свой APM

    Бывало у вас такое: месяцами пилишь архитектуру, фичи летят одна за другой, тесты зелёные. Всё работает. А потом в какой-то момент ловишь себя на мысли: «Черт, я вообще перестал понимать, как эта штука работает». Именно это произошло со мной во время разработки PAD+ AI. После очередного раунда из миллионов тестов я осознал, что полностью потерял контроль над системой. Когда система ошибалась, было невозможно понять почему. Я видел только вход и выход, а между ними — абсолютное чёрное пространство. В этой статье я рассказываю, как родился проект X-Ray — production-ready модуль наблюдаемости, который превращает «чёрный ящик» нейросети в прозрачную структуру. Вы узнаете, чем трассировка отличается от логирования, как работает модель Trace/Span и почему X-Ray стал самостоятельной библиотекой. Внутри: реальные примеры интеграции с FastAPI, архитектура persistence, аудит целостности данных и ссылка на живое демо, где можно увидеть работу системы в реальном времени. Это история о том, как вернуть контроль над сложной системой, перестав гадать и начав видеть.

    habr.com/ru/articles/1060004/

    #observability #tracing #XRay #FastAPI #AI #LLM #архитектура #отладка #PAD+_AI #трассировка

Share on Mastodon

Enter the server where you have an account.