bash.im ithappens.me zadolba.li

Факапы

700

07831505

Несколько лет назад рядом с моим офисом собиралась открыться небольшая контора по продаже и ремонту компьютерного железа. Даже вывеску успели повесить: «PC SOS».

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

562

Письмо в ноябрь

Дело было во времена моей работы в %mail_provider%. Писал я скрипт, что по крону запускался и делал много добрых дел. Пока разбирался с кроном, вместо запуска бинарника написал ACTION="echo 'Works fine.'". Сижу, подчищаю код, всё работает, на личном мейле уже пара десятков писем с текстом "Works fine.".

Думаю заканчивать на сегодня и заменить echo на реальный код. Но вдруг получаю письмо в ответ на автосгенерированный "Works fine": "Looks like it doesn't work".

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

Оказалось, я забыл поставить в mail у ключа -s кавычки, а в теме кроме всего прочего шёл date. Как порядочная unix-овая тулза, mail честно скушал командную строку и стал отправлять письмо всем адресатам подряд. Домен, само собой, сам угадал правильно. Так что кроме меня@%mail_provider%.org письма шли также на 2008@%mail_provider%.org, число@%mail_provider%.org и им подобные.

А у парня на ящик был алиас, который удивительно совпал с трехбуквенным сокращением имени текущего месяца...

559

Долговременная память

В 2004-2005 годах мне довелось работать в одной софтовой компании, которая выпускала несколько продуктов на базе единого клиент-серверного движка. И в какой-то момент мы заметили, что у нас слишком велики требования к клиентской части (это было не веб-приложение, а отдельно инсталлируемое, тяжеловесное). Вроде бы ничего масштабного нету, но памяти уже и 512 метров мало, вот уже и гига едва хватает. Бедные клиенты вынуждены перезапускать приложение несколько раз в день, настраивать конфиги и жаловаться своему сисадмину.

Нам же эту утечку никак найти не удавалось. Решено было добавить памяти на рабочие станции. Следует еще помнить, что в те времена гигабайт был дорог, так что сотня рабочих мест влетала в копеечку.

Причина нашлась, как это часто бывает, слишком поздно и почти случайно. Исследуя документацию к библиотеке, которую мы использовали для работы с пересылаемыми XML-пакетами, я случайно нашёл метод reset. Стоило добавить в наш код вызов этого метода, как требования упали в 10 раз! Оказалось, что пока этот reset не вызван, клиент помнит все DOM-модели всех полученных с сервера пакетов...

557

Что-то ищем где-то не там

Очередной проект по доделке и переделке авторских недоделок в программе заказчика.
Угу.

Заявлена кроссплатформенность - используется Qt, есть клиенты для Windows и никсов. Клиентов беспокоит, как Гондурас странная особенность: под никсами программа уверенно работает отовсюду, кроме каталогов, расположенных в /home (например - на рабочем столе, что должно быть интуитивно понятно и привычно для пользователей Windows). Угу.

Авторы грешили на особенности сборки Qt, на примечания к документации QFileSystemWatcher "о зависимых от системы лимитах на количество одновременно наблюдаемых путей". Но почему-то программистов заказчика не обеспокоила такая особенность систем, под которые портировалась изначально виндозная программа, как чувствительность к регистру путей файловой системы. Аффтары нечувствительно приводили путь к lowercase, а потом проверяли существование каталогов типа Desktop или "Рабочий стол" для пользователей типа Vasya_Pupken.

А метод проверки QDir::exists(), спроектированный с учетом особенностей *nix, имел их всех в виду.

525

Терморегуляция

В этой истории даже не столько юмора, сколько информации, подлежащей мотанию на ус.

Дело в том, что пришлось нам недавно решать проблему с одним из серверов, ибо повадился он каждую ночь примерно в 2.25 с разбросом в пару-тройку минут выключаться. При этом в течение всего дня сервер работал вполне исправно.

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

Вторая мысль была, что какое-то из приложений, подлежащих ежедневному запуску, имеет включенную опцию "выключаться после завершения". Проверили все, никаких подобных задач на такое время не запланировано. Грешили на антивирусную проверку, которая запускалась ежедневно в 1.00, но там такая опция была отключена.

Долго думали.

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

483

А я болею от радио, радио...

Произошло буквально вчера (в понедельник, 12.01.2009).
Небольшое пояснение: из трёх компов, находящихся в нашем кабинете, колонки есть только у одного (встроены в монитор), рядом с этим компом стоит радио, которое постоянно включено и что-то там тихонечко, чтобы не отвлекать от рабочего процесса, поёт...

Теперь сама история. Захожу вечером в кабинет, с порога слышу визг Касперского (он у нас на всех компах стоит). Так как комп с колонками только один, подозрение падает на него. Коллега, работающий на этот компе уже ушёл, но комп ещё работает. Подхожу (Касперский опять визжит), открываю Каспера (снова визг), смотрю, но никаких сообщений, что найден вирус нет. Я в недоумении.

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

Еcли кто-то не верит, было это на калининградском "Окей радио" 12.01.2009 примерно с 17.30 до 18.00 по местному времени.

470

А вдруг его увидит браузер?!

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

Как-то раз сидит, пишет что-то, ругается сквозь зубы. В конце концов зовёт меня. Запрос, говорит, не работает. Я ему советую распечатать запрос - сразу, мол, поймёшь, что не работает. Распечатывает, вставляет в phpMyAdmin. Работает!

Я, немного офигевши, иду смотреть на это чудо. Действительно, в скрипте запрос сбоит, а в phpMyAdmin'е работает за милую душу. Лезу в исходник. Смотрю на строку, где формируется запрос, и начинаю сползать под стол. Строка выглядит следующим образом:

$query = "SELECT * FROM ..."

Зачем, спрашиваю? На что он мне так основательно отвечает: на всякий случай, мол, мало ли что...

468

В незнакомой ситуации - убиться

Сопровождал я как-то в компании АРМ на 16 машинах.
Сделано там все красиво и правильно - весь софт крутится на nix'ах, восемь машин рабочие, восемь в горячем резерве.
Есть полный набор документации и даже весь исходный программный код.

Ну и в один прекрасный момент падает рабочая часть АРМа - все машины вываливаются в командную строку в которой что-то пишется по-английски. Электрики паникуют, технологи паникуют, а начальство зовет специалистов из отдела ИТ.
Мы возвращаем все на место.
Все работает.
А через полтора месяца - опять ломается!

Нашим начальством выдан приказ - разобраться! Читать документацию, звонить разработчикам, делать что угодно, но чтобы такого больше - не было. Разобрались, что уж. Перелопатили исходники.

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

Как выяснилось, все стандартные режимы - проверенные и перепроверенные разработчиками - работали как положено, но прочие, да ещё и запущенные в нестандартном режиме, в необычных условиях и в некорректное время вызывали у оборудования ступор. Ответ программе не возвращался в принципе и (а проверки ведь никакой не стояло, так как оборудование всегда, ну совсем всегда должно было возвращать хоть что-то!) программа шла дальше, прогоняла состояние оборудования через эту хитрую систему кейсов, ответа не получала и закономерно падала с ошибкой "переменная не определена".

443

Ну ты же мужик

Было это в мое студенчество. Провели у себя дома небольшую сетку на сорок компов. В какой-то момент портов в свитчах перестало хватать, и мы решили заменить 8-портовые на 16-портовые. Пришли на какой-то из этажей, начали открывать щитовую. И тут из одной из квартир вышла замечательная женщина лет за пятьдесят и начала на нас кричать, что из-за сетки ей стали приходить огромные счета за телефон. При попытке спорить она вытащила двух своих сыновей лет шестнадцати-восемнадцати, которые в один голос кричали про нашу вину. Обосновывали это замечательным образом: мы впаялись в их телефонный кабель, а их обычный модем совершенно ни при чем и интернет по нему ну совсем бесплатный.

Так вот, я в первый и последний раз в жизни согласился с их доводами, так как в этот момент их мама тянула к нам за руку своего мужа со словами: "Ну ты же мужик, ну иди дай им в морду".