Как сегодня прошел мой хоррор день...
Как прошел сегодня мой день... Это была самая обычная среда. За окном моросил дождь, на столе остывал кофе, а в терминале бежали логи. 80 000 конфигов — целая армия. Я запустил тест, чтобы отделить зёрна от плевел. Прошла минута. Две. И вдруг — PANIC. Консоль вспыхнула красным, словно сигнал SOS с тонущего корабля. Скрипт упал. Я нахмурился. — Ладно, бывает. — перезапустил. Снова PANIC. И снова. И снова. Я вздохнул и полез в дебри стектрейсов. — nil pointer dereference. Память по адресу 0x68 умерла. Но кто убийца? --- 80 000 подозреваемых. Я начал допрос. Конфиг за конфигом. Методом исключения. Отключал по половине — падение оставалось. Сужал круг. Час. Два. Три. Кофе остыл окончательно. Глаза слезились от мелькающих строк — Ну где же ты, гад? — шептал я, пробираясь сквозь десятки тысяч строк. В какой-то момент я уже готов был поверить в проклятье. Или в то, что скрипт просто обиделся на меня. --- А потом я посмотрел на самый первый конфиг в тестовом файле. Обычный. Ничем не примечательный. Я скопировал его в отдельный файл, запустил отдельно. БАХ! Всё та же паника. — Да ты издеваешься?! — вырвалось у меня. 80 тысяч конфигураций. Одна битая. И она каким-то невероятным, космическим, рандомным шансом оказалась самой первой в очереди. --- Знаете, каков шанс? 1/80 000 × 1/10 (потому что я резал файл на 10 частей). 0,000125%. Это как выиграть в лотерею и тут же попасть под метеорит. Но я выиграл. И метеорит прилетел. --- Я сидел, смотрел на эту строчку и смеялся. Точнее, истерически хихикал. Полдня убито на поиск иголки в стоге сена, а иголка просто лежала сверху и ждала. — Ну здравствуй, — сказал я, выделяя строку. — Ты даже не представляешь, сколько времени я потратил, чтобы тебя найти. — Вот ты где прятался, — прошептал я и нажал Delete. В терминале снова побежали логи. Спокойно, без паники. 79 999 конфигов продолжали работу. А я откинулся на спинку кресла и понял: иногда самый сложный баг находится на самом видном месте. И чем дольше ты его ищешь, тем смешнее становится. --- Мораль этой истории: 1. Всегда проверяй первую строчку. 2. Рандом — зло. 3. Скрипты любят чёрный юмор. И если вдруг у вас упадёт программа — не спешите винить компилятор, память или соседского кота. Может быть, это просто один битый конфиг из восьмидесяти тысяч, которому повезло оказаться первым. Сегодня повезло ему. А завтра — повезёт тебе. 🍀 --- Аплодисменты... Конец. Аншлаг. Благодарный зритель плачет.
Это что реп