РжуНеМогу.РУ

История


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

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

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

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

История


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

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

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

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

История


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

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

История


История общения с менеджером одного интернет-магазина.

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

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

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

История


Висит у нас возле УАТС инструкция, солидная такая, пунктов 12-15, на случай зависания одного транка.

Что-то вроде такой:
1. Отключить пользователей транка %name%
2. Проверить связь до городской подстанции
и т.д.

Но самое главное, после всех жутко важных и обязательных пунктов стоит приписка - "или просто выключить питание на 10 секунд".

История


Несколько лет назад приехал к нам в гости двоюродный брат. У нас тогда был крутейший (по тем временам) dial-up модем Zyxel Omni Duo и ленивый пользователь, которому вломы было купить сетевой фильтр. Так что в стене из розетки торчал двойник, с одной стороны двойника был модем, а с другой - тройник. В тройник включался монитор и системник. Так вот, сидят тогда ещё мелкие братцы и зовут меня. Интернет у них, видите ли, не работает.

Смотрю, что пишет. Проверяю - мёртвый. Ну, совсем. С умным видом щёлкаю кнопочкой питания... Точно мёртвый. Проверяю, включен ли в розетку - включен. Проверила на всякий случай Usb и телефонный кабели, хотя при чём тут это...
Страх уже начал холодными лапами закрадываться в гарантийный талон модема. Но тут я полезла проверять клубки проводов. И нашла...
Из розетки торчал тройник, питающий монитор и системни. А рядом, неприкаянно, лежал двойник. Запутавшись в нашей сложной системе двойников/тройников, братцы воткнули модем в двойник, а вилку его, вместо того, чтоб включить в розетку, вставили рядом с модемом. Круг замкнулся.

История


Рассказывал знакомый хакер.
Был у него на кафедре компьютер под NT (Win2000 тогда ещё не было). Пароль "1". Понятное дело, что товарищ такой пароль подобрал с первого раза. Админ узнал про это и заменил пароль на "12", который тоже был незамедлительно взломан.

Посмеялся я над этой историей, но у самого тоже случилось такое.
Надо было поднять военным WinME. Слетел реестр, а я ошибся и довёл винду до полной незагружаемости. У Millennium режима DOS, как известно, нет. Резервную копию реестра я сделал, DOS'овская дискета в кармане, но что делать - пароль на BIOS.

Говорю: "Ну, надо разобрать компьютер, переставить красную перемычку, это сотрёт пароль на BIOS и позволит загрузиться с дискеты". Прапор наотрез отказывается. И пароля, естественно, не знает.

От безнадёги ввожу "1". Подходит! Исправляю я всё, что надо, получаю свои деньги и ухожу довольный.

История


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

Я делаю загрузку ActiveX с параметрами, товарищ рисует на дельфи ActiveX'ину. Нарисовали, связали, отправили заказчику. Всё, вроде, тихо несколько дней. У товарища заглючил комп, винт начал подсыпаться. Он, не долго думая, переставил винду, удалив предварительно все виндовые каталоги (Windows и Program Files). Ещё через пару дней приходит письмо от заказчика: "Диаграммы, в принципе, устравают, но надо переделать ряд моментов". Товарищ полез искать исходники этой ActiveX'ины и вдруг вспомнил, что все материала он сохранял в папку дельфы, которую она предлагает по умолчанию. А по умолчанию она предлагает сохранятсья куда-то в недра себя. То есть в Program Files. Которые он снёс. Короче, нету исходников. Накрылись.

Далее следует чудесная переписка с представительницей заказчика:
- Надо переделать ряд моментов в диаграммах, - настаивает она.
- Нет! - твердо отвечаем мы.
- Что значит, "нет"?!
- Эта версия ActiveX'ины финальная и доработке не подлежит!
- Но почему?!
- Мы исходники про... протеряли.

История


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

Прихожу, все сделал. И тут мне хозяин говорит: "Я вижу, что у меня тенденция к уменьшению места на диске C:". Показывает график. С момента покупки компьютера через каждую неделю сняты показания о количестве свободного места и все данные сведены в график. Так же и для диска D:. Ладно, думаю, человек с интересом относится.

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

История


Как-то утром вызывает меня шеф. Говорит: "У дизайнеров один комп не запускается, только пищит".

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

Тут опять шеф: "Не включается комп у секретарши". Ну, благо кабинеты через стенку, попути в техничку проверяю комп - не включается. Совсем.
Забираю машину в отдел. В дизайнерский комп ставлю требуемую оперативу и иду разбираться с компом секретарши. Ставлю пост-карту, она выдает ошибку питания. Сгорела материнка. Смотрю, а в ней тоже DDR2 воткнута в слот для DDR.

Иду к шефу. Оказывается, он решил "добить оперативы", пока никого из техотдела нет. В общем, ключи в печатных платах и слотах не всегда помогают - есть очень сильные люди.

История


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

Поступил заказ на создание сайта. Я нарисовал дизайн и передал страницу на исполнение php-программеру. Он же выступал верстальшиком. Создав нетленку, он вернул мне работу для тестирования. Захожу под ИЕ - все ОК. Захожу под Файрфоксом - шрифты расползаются. Пишу об этом в аську программисту.

Через пять минут ответ: "Пофиксил, посмотри". Захожу - шрифты расползаются. Зато внизу страницы появилась надпись - "Сайт предназначен для просмотра в ИЕ 6.0 и выше".

История


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

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

Когда отчетный период закончился, и сервак в очередной раз встал, задумчиво смакуя собственное "я", мы решили все-таки разобраться в причине, а не избавляться от следствия. Изучив логи, мы слегка офигели. И, когда сервер снова завис, подошли к одной из наших дам и задали вопрос, который нас правда очень интересовал: "Скажите, а с какой целью Вы этим занимаетесь?".

Дело в том, что она создавала документ под номером, например, 101. Потом создавала документ под номером 102. Документ 101 подчиняла документу 102. Документ 102 подчиняла документу 101. И пыталась посмотреть структуру подчиненности! Сервер, естественно, съедал где-то гектар памяти, говорил "больше не могу" и задумчиво останавливался...

История


Телекоммуникационная компания.

В течении недели, четко каждый день, кроме субботы и воскресенья, ровно в 10:25 утра падают линки между серверами. Лечится легко, но происходит регулярно и стабильно именно в 10:25, с точностью до секунды. Причин постфактум, по логам, определить не получается.

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

Линки упали в 9:25.

История


История общения с менеджером одного интернет-магазина.

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

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

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

История


Висит у нас возле УАТС инструкция, солидная такая, пунктов 12-15, на случай зависания одного транка.

Что-то вроде такой:
1. Отключить пользователей транка %name%
2. Проверить связь до городской подстанции
и т.д.

Но самое главное, после всех жутко важных и обязательных пунктов стоит приписка - "или просто выключить питание на 10 секунд".

История


Несколько лет назад приехал к нам в гости двоюродный брат. У нас тогда был крутейший (по тем временам) dial-up модем Zyxel Omni Duo и ленивый пользователь, которому вломы было купить сетевой фильтр. Так что в стене из розетки торчал двойник, с одной стороны двойника был модем, а с другой - тройник. В тройник включался монитор и системник. Так вот, сидят тогда ещё мелкие братцы и зовут меня. Интернет у них, видите ли, не работает.

Смотрю, что пишет. Проверяю - мёртвый. Ну, совсем. С умным видом щёлкаю кнопочкой питания... Точно мёртвый. Проверяю, включен ли в розетку - включен. Проверила на всякий случай Usb и телефонный кабели, хотя при чём тут это...
Страх уже начал холодными лапами закрадываться в гарантийный талон модема. Но тут я полезла проверять клубки проводов. И нашла...
Из розетки торчал тройник, питающий монитор и системни. А рядом, неприкаянно, лежал двойник. Запутавшись в нашей сложной системе двойников/тройников, братцы воткнули модем в двойник, а вилку его, вместо того, чтоб включить в розетку, вставили рядом с модемом. Круг замкнулся.

История


Рассказывал знакомый хакер.
Был у него на кафедре компьютер под NT (Win2000 тогда ещё не было). Пароль "1". Понятное дело, что товарищ такой пароль подобрал с первого раза. Админ узнал про это и заменил пароль на "12", который тоже был незамедлительно взломан.

Посмеялся я над этой историей, но у самого тоже случилось такое.
Надо было поднять военным WinME. Слетел реестр, а я ошибся и довёл винду до полной незагружаемости. У Millennium режима DOS, как известно, нет. Резервную копию реестра я сделал, DOS'овская дискета в кармане, но что делать - пароль на BIOS.

Говорю: "Ну, надо разобрать компьютер, переставить красную перемычку, это сотрёт пароль на BIOS и позволит загрузиться с дискеты". Прапор наотрез отказывается. И пароля, естественно, не знает.

От безнадёги ввожу "1". Подходит! Исправляю я всё, что надо, получаю свои деньги и ухожу довольный.

История


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

Я делаю загрузку ActiveX с параметрами, товарищ рисует на дельфи ActiveX'ину. Нарисовали, связали, отправили заказчику. Всё, вроде, тихо несколько дней. У товарища заглючил комп, винт начал подсыпаться. Он, не долго думая, переставил винду, удалив предварительно все виндовые каталоги (Windows и Program Files). Ещё через пару дней приходит письмо от заказчика: "Диаграммы, в принципе, устравают, но надо переделать ряд моментов". Товарищ полез искать исходники этой ActiveX'ины и вдруг вспомнил, что все материала он сохранял в папку дельфы, которую она предлагает по умолчанию. А по умолчанию она предлагает сохранятсья куда-то в недра себя. То есть в Program Files. Которые он снёс. Короче, нету исходников. Накрылись.

Далее следует чудесная переписка с представительницей заказчика:
- Надо переделать ряд моментов в диаграммах, - настаивает она.
- Нет! - твердо отвечаем мы.
- Что значит, "нет"?!
- Эта версия ActiveX'ины финальная и доработке не подлежит!
- Но почему?!
- Мы исходники про... протеряли.

История


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

Прихожу, все сделал. И тут мне хозяин говорит: "Я вижу, что у меня тенденция к уменьшению места на диске C:". Показывает график. С момента покупки компьютера через каждую неделю сняты показания о количестве свободного места и все данные сведены в график. Так же и для диска D:. Ладно, думаю, человек с интересом относится.

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

История


Как-то утром вызывает меня шеф. Говорит: "У дизайнеров один комп не запускается, только пищит".

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

Тут опять шеф: "Не включается комп у секретарши". Ну, благо кабинеты через стенку, попути в техничку проверяю комп - не включается. Совсем.
Забираю машину в отдел. В дизайнерский комп ставлю требуемую оперативу и иду разбираться с компом секретарши. Ставлю пост-карту, она выдает ошибку питания. Сгорела материнка. Смотрю, а в ней тоже DDR2 воткнута в слот для DDR.

Иду к шефу. Оказывается, он решил "добить оперативы", пока никого из техотдела нет. В общем, ключи в печатных платах и слотах не всегда помогают - есть очень сильные люди.