bash.im ithappens.me zadolba.li
369

Ничего не изменилось

У нас политика - мы не знаем пароли юзеров. Звонит как-то девушка:
Девушка: У меня почта не приходит в Thunderbird..
Я: Сейчас сменю тебе пароль и зайду на webmail посмотрю, что тебе там пришло.

Меняю пароль на 123, захожу на вебмыло, вижу что почты новой нет, отправляю от себя письмо юзеру, на webmail приходит без проблем.
Я: Принимай у себя почту в Thunderbird (забываю сказать, что нужно указать новый пароль).
Девушка: О, от тебя пришло письмо.
Я: Как это, пришло письмо?
Девушка: Ну, ты же мне отправил письмо, вот оно пришло, тема - "тест 1".
Я: Я тебе сменил пароль, ты не могла получить почту, не указав новый пароль: 123.
Девушка: Так у меня и был 123...

368

Пременной варадокс

16 декабря 2008, 20:30

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

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

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

Я крякнул и спросил, как мне реагировать на такое самоуправство. Начальство почесало репу и выдало: ну раз уж он такой умный, что явился невовремя, хотя ограничение на день стоит - значит вообще эту явку не учитывай. Так я и сделал, но с тех пор при разработке программ стараюсь учесть не только все возможные комбинации ситуаций, но и все невозможные и ряд невероятных.

367

Собрать по кирпичику

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

Бились над проблемой 3 дня, перелопатили кучу кода, даже нашли некоторые другие баги, которые не имели отношения к проблеме. В итоге наткнулся на кусок кода в том месте, где искать никто просто не додумался:

$res = $DB->getData($query); //считывает данные с ДБ и загоняет в пронумерованный массив
$data = new array();
foreach ($res as $key=>$value)
{
if (!$data[$key])
$data[$key] = $value;
};

Все это вместо простого $data = $res;
Что имел ввиду кодер, родивший это чудо, так и осталось загадкой.

366

Дядя Вася

В свое время делали региональную сеть. По принципу - каналы (медь) предоставляет одна госконтора, а мы оконцовываем. Запустили - все работает.

Через 3 дня вдруг один из участков начал сбоить. Причем, нестабильно. Данные проходят, но с потерями. Это один из худших видов ошибки. Две недели пытались выловить причину. Несколько раз меняли оконечное оборудование (а это поездка в 160 км). Клиент негодует. Использовали даже аппаратуру для проверки качества соединения, чтобы выявить всевозможные "наводки" на канал.

Сидим на оконечной точке. В очередной раз поставили новую аппаратуру, настроили циски, все перепроверили - ничего не происходит. Грустим.
Тут заходит в гости дядя Вася - местный телефонист. Пьяный в доску.
- Привет ребята. Чё такие грустные?
- Да вот, опять связь нестабильная, пакетики теряем.
- Да не грустите, я вам тут в качестве подарка улучшение сделал.
Нас прямо приподняло над стульчиками.
- Мил человек, а что ты сделал?
- Дык я вам на линию усилок впаял. Чтобы сигнал посильнее был. Так что с вас бутылка.
- А покажи-ка?
- Дык вот же я прямо на кроссе в разрыв и вставил. Усилитель ТЧ (тональной частоты).

Опа, а у нас-то оборудование цифровое!

- Дядь Вась, а какую полосу частот он усиливает?
- ....
- Дядь Вась, вот тебе магарыч. За то, что уберешь свой "усилок".

Конечно же, все заработало. Дядь Васин усилок срезал самый верх несущей частоты модема. И в результате порядка 10% пакетов терялось. Ни одному нашему спецу даже в буйных фантазиях не представлялось, что каким-то образом может вырезаться часть частоты.

365

Какое страшное самоубийство!..

Делали мы как-то в институте модель какого-то мирка, по которому бродят дикие звери и удовлетворяют свои потребности: едят, пьют, спят, размножаются. В общем, кривенькая такая моделька, но зачем-то она нам понравилась.

И вот по мере наполнения нашего мира существами перед нами встала проблема коллизий. Проявилась она совершенно архетипично - в узком перешейке, соединявшем какой-то полуостровок с каким-то континентиком, встретились два барана (точнее, как мы их тогда называли, "экземпляры класса ТБаран"), каждый из которых шел к какой-то своей, одной ему понятной цели, уперлись друг в друга и мало-помалу померли с голода.

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

Кто ж знал, что программа подкинет нам такой сюрприз!
На узкой горной тропе встретились неудовлетворенный желудочно ТБаран и неудовлетворенный сексуально ТСлон. Как объекты для удовлетворения своих потребностей они друг друга совершенно не интересовали, поэтому представляли друг для друга просто препятствие. Всемогущий Рандом решил, что в этот раз слону придется полежать немного в качестве элемента интерьера, а баран пойдет дальше. Скрипт бодро превратил ТСлона в квадратный метр свежей зеленой травы, радостный ТБаран сожрал ее, навалил кучу и там же рухнул спать. Несчастного слона поминали всей бригадой, включая преподавателя.

364

Fuck off, please?

16 декабря 2008, 12:45

Работаю в международной компании, поддерживаю RT (тикет-система). Пришёл запрос от руководства, улучшить безопасность - усилить фильтрацию входных e-mail'ов. Усилил. Пишу аккаунт-менеджеру (главный по работе с клиентами), мол, дай вежливый и правильный текст письма на английском. Через полминуты получаю требуемый текст:

%Manager%: Dear non-customer,
%Manager%: Fuck off, please.
%Manager%: regards,
%Manager%: %CompanyName% email bouncer

Видимо накипело.

363

Днем согнем, вечером разогнем

Это было во времена Windows 3.1 и старых компьютерных биосов со списком стандартных предопределённых паролей.

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

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

Эта суматоха продолжалась дней 10, пока сотрудница наконец, вполне закономерно, не забыла свой собственный, накануне изменённый пароль. Что самое интересное - восстановить пароль попросили меня.

362

Болванка сожжена успешно!

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

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

Вставляет он, значит, диск, запускает программу Nero, ставит на запись и далее следит за прогрессом записи - все так, как делала девица. Запись успешно без единого намека на ошибку доходит до 100%, и тут девица выдает: "Ну всё, записалось, нажимай отмена. Что смотришь на меня, видишь 100% показывает? Записалось ведь значит!.. (выскакивает окно "Прожиг завершен") Ой, наверное этого окошка надо было дождаться да?.."

Откуда берется такая прыть, и как её направить в нужное русло?

361

Переучивать не будем.

История про кабель навеяла. Прямо дежавю.
Мой коллега по одной конторе ваял софт к какой-то измерительной штуке. Ну не работает и все. Методом тыка понял, что в соединительном кабеле командную шину и шину данных поменяли местами а биты в шине данных перекрутили в обратном порядке. Ну да ладно - месяц убит не напрасно, ПЗУ в железке перепрописано новым микрокодом и все работает.
И тут приходит электрик.

Это паялово обнаружило что спаяло кабель не по спецификации и принесло новый. Коллега побелел, потом покраснел и сунул электрику тетрадный листок со своими каракулями. Вот твоя новая спецификация, паять будешь так и документацию перепишешь.

Потом этим железом испытывали ракетные двигатели...