Истории с тегом: факапы

Всего историй: 746

3468

Вы выезжаете из американского сектора

Как-то в бытность свою молодым самоучкой-программистом изучал я строение разделов диска и файловой системы, для чего понадобилось сдампить с винчестера первые секторы. Для этих целей я быстренько наваял программку на Си со вставкой на ассемблере с обращением к биосовскому прерыванию int 13h и вызовом соответствующей функции чтения сектора. Программа готова, работа пошла. И тут до меня медленно доходит, что вместо номера функции чтения я вроде бы вставил номер функции записи. Быстро останавливаю программу, гляжу в исходник. Так и есть: загрузочный сектор, таблица разделов и первые мегабайты винта тупо затёрты рандомными данными. Винда пока работает, но уже ясно, что повторно загрузиться не сможет.

В дверях появился заядлый друг с острым желанием поиграть в Half-Life, свежий шедевр игростроя. Мне надо было убегать, и я предупредил друга: «Играй, но комп не перезагружай ни под каким видом!» Я не успел сохранить самые нужные данные: документы и исходники (в ту пору всё, скачанное из инета, бережно хранилось на винте).

По возвращении я застал печальную картину: комп, не перезагруженный, но намертво зависший, и печальный друг напротив монитора. Исходники потеряны, доки надо собирать заново.

3438

Не долетев до середины винды

Недавно прибегает отец в весьма возбуждённом состоянии: «У меня флешка не открывается!» Ну, думаю, опять глюк какой-нибудь или ещё что.

Оказалось всё очень даже занимательно: при попытке открыть флешку вылетал крэш-экран, предлагавший отправить в Microsoft сообщение о неправильной работе — тадам! — jfgfjghj.exe. Какой-то обычный вирус, только работающий криво.

Флешку открыл, мусор потёр, но хорошее настроение осталось на весь день.

3430

В пыли веков

Недавно стал у меня барахлить сканер: идёт красный цвет, даже если не класть ничего, а просто гонять пустой. Ну, думаю, пришло его время: если лампу менять, так это дешевле новый купить. Отнёс в сервисный центр на диагностику. Через две недели сообщают: менять шлейф. Почём? Полтыщи. Чёрт с ним, меняйте. А у нас нету шлейфа, ждите еще неделю.

Подождал. Прихожу забирать технику, мастер мнётся. Что опять не так? Да, мол, шлейф-то поменяли, красный цвет починили, но всё равно помехи какие-то — менять плату надо всю. Нет уж, решил забрать так. Поскольку окончательно сканер починить не удалось, сделали скидку 50%.

Прихожу домой, подключаю, сканирую первый попавшийся черновик — всё идеально. Поднимаю крышку и понимаю, на чём срезались «мастера». Ребята гоняли сканер пустым, получая сканы пожилой, послужившей своё, вытертой по краям подложки, — конечно же, далёкой от идеальной белизны, которую они надеялись получить. В общем, спасибо за ремонт и за скидку!

3409

Памятник предохранителю

Случалось мне работать в девяностых на заводе АЗЛК, где целиком делали «Москвичи». На конвейере размещалось много станков: и фрезеровочные машины, и «умные» руки-каретки... Самые продвинутые станки были импортными. Они отличались и качеством материалов, и степенями защиты. Станки ломались в день по две-три штуки, а чем сложнее устройство, тем большее количество элементов может прийти в негодность. А так как русскому мужику лень чинить очередную подохшую защиту от перегрева или заезда не туда, то всё держалось на добром русском слове «авось».

Однажды рука-каретка с грохотом протаранила стоящий за ней станок, стоящий огромных денег, который выпиливал какую-то хитровырезанную деталь. Начали разбираться; ответственным назначили меня. Ну что, сходили посмотреть с другом Лёшей.

Случился скачок напряжения в сети. Электронная защита от заезда была отключена: сгорела из-за отсутствия предохранителя. Идти за новым через ползавода мужикам было лень. Физическая защита была попросту отвёрнута — мешалась же! А не остановил каретку сломанный ограничитель скорости. Мотор мощный, предохранитель был под стать — массивный и нестандартный, такого на заводе по углам не валялось. Открыв то место, где должен был находиться предохранитель, я увидел литой медный цилиндр 50 на 8 мм.

Вот так на Руси решаются проблемы с недостающими деталями.

3407

Горшочек, не вари!

Все помнят сказку про волшебный горшочек? Я вчера испытал её на себе.

Утром, оказавшись в неприятной ситуации из-за отрубившегося накануне вечером УЗО в серверной (бесперебойники отработали, но на двенадцать с лишним часов их, конечно, не хватило) в положении того самого мужика, над которым грянул гром, я решил настроить уведомления по почте и SMS о подобных каверзах. Сначала полез в ZenOS — он превосходно собирает кучу инфы со всей сети по SNMP и генерит кучу отчётов, некоторые из которых я решил направить себе на гмейловский аккаунт. Отрубаю UPS — фиг, молчит ZenOS, как партизан, хотя событие произошло и в его базе появилось.

Поковырялся ещё, в процессе применил свой любимый метод тестирования: включил информирование вообще на все события, полагая, что если и тогда ничего не произойдёт, то ошибку стоит искать где-то ближе к почтовому серваку. Ничего не произошло, но тут мне подсказали, что можно настроить уведомления непосредственно с серверов, контролирующих «упсы» — и точно, старый добрый PowerChute с этой задачей справился, и я, довольный, вернулся к рутинным админским делам.

А вечером случилось оно. Уж не знаю, почему именно — скорее всего, коллега перезагрузил сервак с ZenOS, — но оно попёрло. В половине десятого я уехал за женой на каток, в десять мой коммуникатор уже безбожно тупил, пытаясь сообщить о трёх тысячах новый сообщений в ящике. Пока он загружал текущие заголовки, сваливались новые... Горшочек, не вари!

К полуночи я знал, что у меня есть пять с половиной тысяч событий разной степени важности, к двум часам ночи их число перевалило за семь тысяч. Конечно, добравшись до десктопа, можно было поставить фильтр на сообщения и удалять их без прочтения. Можно было залезть по VPN на работу и отрубить злобного спамера. Но у меня взыграло любопытство: решил проверить, сколько же всего горшок наварит, пока я сплю. Сегодня утром насчитал одиннадцать тысяч сообщений с одинаковым заголовком и отправителем.

Перед запуском чего-либо думать надо трижды. Дважды — мало, хотя тоже ничего: подумав дважды, я не стал включать информирование по SMS. Страшно представить, как бы я чистил входящие сообщения на телефоне...

3397

Айпишником наизнанку

Своим домашним провайдером я в целом доволен, однако вчера я решил посканить инет на предмет возможной альтернативы. Зашёл на сайт крупной конторы, рекламой которого обклеены все подъезды в округе. Первым же делом кинулся смотреть, как у них обстоят дела с услугой «внешний IP» — для меня это важно.

Дизайн сайта подразумевал рядом с текстом услуги или акции наличие символичной картинки. Задумка-то неплохая, да вот только рядом с описанием услуги «внешний IP» у провайдера был изображён дорожный указатель с надписью белым по синему: «192.168.1.139».

Пожалуй, к ним подключаться не буду.

3378

Пробежимся по-быстренькому

Если девушка вам говорит: «Милый, @#$, иди спать уже!», то её нужно слушаться.

Второй час ночи. PHP-код. Цикл, в котором должны выводиться из базы категории товаров. «Должны», потому что на самом деле выводится только последний элемент. Грешил на базу — двадцать минут проверял данные. Поубирал кучу условий выборки, оставив банальное WHERE 1. Потом просто закомментил всё внутри цикла и поставил вывод счётчика. Не помогает! Сношу всё, переписываю с нуля — работает. Возвращаю код назад и вижу такой ужас:

for ($i=0; $i<20; $i++);

Проверяйте наличие пустого оператора после цикла — сэкономит кучу времени!

3322

Система удалённого отсутствия

Живу в славном городе Питере, занимаюсь разработкой софта для систем удалённого присутствия. Только что сдал решение для внутрикорпоративного общения одной немаленькой зарубежной фирме. Заказчик поставил одно условие: готовый софт должен в 720p отдавать несколько потоков прямо от меня, причём две недели, без обедов и выходных. Требование, конечно, странное, но хозяин — барин, и деньги на кону стоят весьма и весьма внушительные.

Когда контракт ещё только подписывался, я от греха подальше подключил себе чуть ли не всех провайдеров, которые есть у нас в доме: «Б***», «И***» и «Ц***». Завёл от каждого из них кабель в квартиру, подключил к отдельному роутеру и прицепил к отдельной сетевой плате рабочего компьютера.

Наконец наступила пора тестирования готовой софтины. Проверил скрипты, переключающие активный сетевой интерфейс, убедился, что работают упсы, и отбыл на дачу — впереди две недели отдыха и месяц беспробудного кутежа, как только тест закончится триумфом. Несколько раз в день мониторю ситуацию по SSH, наслаждаюсь видом гуя работающей софтины по VNC и вовсю предвкушаю заслуженную оплату труда.

Ага, допредвкушался. Три дня до окончания тестового пробега. Звонит из своей буржуинской страны, где на тот момент рабочий день уже успел кончиться, заказчик и задаёт сакраментальный вопрос, как, мол, так: никакого трафика от меня нет уже часа три, на письма я не отвечаю, а скайпы и джабберы отключены?

Я в шоке. Пытаюсь по привычке через GPRS стукнуться к себе домой по SSH... и не могу. Звоню соседу, спрашиваю, не вламывались ли ко мне грабители, и не заливало ли наш этаж по колено? «Нет, — отвечает Андрюха, — не было ничего такого».

Прыгаю в машину, мчусь в город. По приезде обнаруживаю, что у всех провайдеров лежит сеть. У всех. У «Б***» лежит, у «И***» лежит и у «Ц***» — тоже. Понимаю, что кто-то доблестный порезал всю имеющуюся в доме оптику.

Отзваниваюсь представителю заказчика, ввожу в курс дела, с грехом пополам объясняю ситуацию и отсылаю через 3G логи роутеров, дабы убедить в своей кристальной честности (после фразы «не работает ни один провайдер» в голосе буржуя послышалось явное недоверие). Поупражнявшись в дипломатии, перехожу к следующему этапу: звоню в саппорт просить выслать монтажников. Девочки (и один мальчик) из служб поддержки идеально вежливы, принимают информацию, подтверждают «наличие проблем со связью» и обещают возвращение сети в течение ближайших двух-трёх дней.

Снова звоню заказчику и читаю ему лекцию на тему оперативности местных деятелей связи, попутно пытаясь посчитать, сколько тысяч денег мне придётся заплатить за двухчасовой диалог с далёким заокеанским забугорьем. На исходе второго часа разговора буржуин неожиданно сменяет гнев на милость и начинает объяснять мне, что не всё так страшно, как я описываю. Подозревая, что софт так и не примут, и заказчик пытается подготовить меня к этой радостной новости, по десятому разу кручу пластинку про бесчеловечное отношение к нам, простым абонентам, со стороны провайдеров — и получаю ответ, что связь уже минут пятнадцать как есть. Офигевший, вешаю трубку и иду искать спасителя моего контракта.

Нет, им не оказался соседский вайфай или 3G-свисток — просто у «Ц***» два-три дня на восстановление связи странным образом сократились до двух-трёх часов. Ещё через час вернулся в строй «Б***», а через два — «И***».

Иногда то, что говорят саппорты, нужно делить не на два, а на двадцать четыре.

3319

Подпольная хирургия

Работаю эникейщиком в колледже. Врывается в серверную тётка с глазами по пять рублей, задыхаясь, начинает кричать, что работа у неё встала — нужно срочно посмотреть принтер, который не печатает. Собираюсь, иду в эпицентр событий и вижу бедолагу-МФУ.

Все болты, которые видны на первый взгляд, откручены, кожух снят, из задней стороны принтера торчат отвёртка, пилочка для ногтей и кусок алюминиевой проволоки. Как потом выяснилось, всё, до чего дотянулись инструменты, сломано и раскурочено.

— Что здесь случилось?

(хором) Бумага застряла — пытались вытащить.

Собираю назад, что осталось, ставлю на стол, прошу, чтобы больше нечего не трогали, ухожу по другим делам. Примерно через час вызывает директор к себе на ковёр: «Ты зачем принтер раскурочил?» В результате — выговор, премии как не бывало. Ничего, будет и на моей улице праздник.

3314

Вырубившийся рубильник

Написал я как-то небольшой сервер для автоматической проверки домашних заданий по C++, выполняемых первым курсом родного университета. Описывать то, что и как он делал, долго и скучно — достаточно сказать, что у этого сервера был почтовый ящик, на который ему приходили команды. Обработанную почту он удалял сразу; сообщения неизвестной природы он тоже должен был убивать. С этого же ящика сервер рассылал результаты тестирования студентам и сообщения об ошибках мне.

Изначально сервер работал на ноутбуке автора в виртуальной машине. По истечении испытательного срока сервер, доказавший свою самостоятельность и профпригодность, был отпущен в свободное плавание на постоянно включённый компьютер во внутренней университетской сети.

В один прекрасный момент чудесно искривлённые руки одного из студентов случайно нашли баг в логике сервера. В своё время этот баг даже имел статус фичи, поэтому из сервера удален не был. Но всего не предусмотришь — в результате на мой почтовый ящик посыпались сообщения об ошибке тестирования.

Самую первую ошибку я сделал тогда, когда не предусмотрел специального сообщения, которое должно было останавливать сервер. Что ж, оставался единственный способ — сменить пароль на почтовом ящике. Где-то через час до меня дошло, где может быть ошибка, а ещё минут через пятнадцать я исправил злополучный глюк. Что ж, подумал я, на этот раз обошлось, и сервер можно включать обратно. Меняю пароль на старый — и, разумеется, совершаю вторую ошибку.

Любой айтишник знает, что приличный сервер даже в случае отсутствия соединения с внешним миром должен продолжать работать, работать и работать. Мой сервер думал так же, и когда ему наконец открыли дорогу во внешний мир, он поспешил обрадовать меня двумя тысячами идентичных сообщений об ошибке тестирования.

Что такое десять одинаковых сообщений в секунду? Конечно же, спам, даже если все письма идут на один и тот же адрес. По этой причине почтовый ящик сервера был довольно быстро заблокирован. Ошибку в коде сервера я исправил, а в адрес поддержки почтового сервиса написал письмо, в котором изложил причины столь неприличного поведения и пообещал исправиться. Ящик разблокировали быстро, и процесс тестирования продолжился.

Во время майских праздников я заметил, что хотя студенты и слали запросы на тестирование, сервер ничего не делал. Пришлось пообещать разобраться после праздников. Каково же было моё удивление, когда во вторник я обнаружил, что сервер «забанен» админами университета! Выяснилось, что третью ошибку я совершил совсем давно: увлечённый созданием тестов для домашних заданий, я забыл проверить функциональность удаления сообщений неизвестной природы. Результатом было то, что сервер со скоростью 500 килобайт в секунду скачивал с почтового ящика одно и то же письмо и больше ничем не занимался. Чтобы не иметь проблем с администрацией почтового сервиса, админы университета закрыли доступ «проблемному» пользователю. По иронии судьбы письмо, спровоцировавшее это поведение, было ответом службы поддержки почтового сервиса на мои разъяснения по поводу предыдущего происшествия.

Программисты, тестируйте свои программы и протоколы тщательно, не забывайте о mock-объектах и всегда оставляйте себе возможность «повернуть рубильник», даже находясь на другом краю света.