bash.im ithappens.me zadolba.li

Базы данных

470

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

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

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

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

$query = "SELECT * FROM ..."

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

393

Энергонекомплект

Очень давно работал на одном предприятии, единственной особенностью которого являлась строжайшая отчетность - приняли, обработали, списали.
Меня, после исправления "ненужных" функциональностей 1c, кинули на забивку базы со старого формата (что-то там на FoxPro) на новый и "красивый" 1с. Работы мало, а деньги капают. В начальниках только главбух. Лафа.

Заполняю базу. Идет одна проводка (бумажка) - 20 выключателей X1Y1, 23 выключателя X2Y2, провода Z1T1... наименований штук 20. Ищу в старой базе - нет. Смотрю число и номер проводки - есть. И значится только одно наименование - "энергокомплект". Не понимаю. Смотрю в проводку - 20 наименований, а сверху большими жирными буквами написано название предприятия - "энергокомплект".

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

Поднимая историю, выяснил следующее - электрик использовал пару розеток из "энергокомплекта", они благополучно сгорели. Электрик заявил, что такие-то розетки утрачены. А бухгалтерия, не найдя записи "розетки", списала полностью наименование "энергокоплект" - т.е. 20 реальных наименований и т.д.

После этого "по характерным признакам" были обнаружено около 10 аналогичных ошибок.
Мне так кажется, у нас половину государства так списали.

367

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

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

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

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

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

325

Порядок операндов

Проходила в свое время живая ролевая игра по "Дозорам" Лукьяненко.

К этой игре была написана база данных, в которой хранились всякие документы, досье на именных персонажей, описания древних ритуалов (игровых, естественно) и прочее. Если кто не помнит, по Лукьяненко, Ночной Дозор иногда выдает вампирам лицензии на питье крови людей. Так вот, эти лицензии тоже хранились в базе.

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

303

Иногда они возвращаются

Работал я программистом на VFP в начале трудовой деятельности.

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

Вот тут-то я в ступор и впал. Ко мне шли мной же разработанные отчеты на VFP, которые я как раз сдал 4 дня назад людям, удаленным от нас на 5 км и имеющим модемное соединение с нами. Мистика!

Но все выяснилось, когда мне позвонил один из заказчиков и пожаловался, что отчеты не печатаются. Оказалось, что в инструменте Report в VFP был переключатель, на который никто внимания не обратил, "сохранить окружение принтера" (save printer envirountment). И поэтому из любого места сети, где был виден мой принтер, экономисты отправляли на него отчеты.

290

Нет баз данных - нечего ломать.

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

Поставили последнюю систему - CRM. Собрание директоров. Замгендиректора толкает речь, которую довольно внимательно слушают - IT-компания, все присутствующие более или менее технически грамотны. Последняя фраза ввергает всех в шок:
- И теперь мы можем смело заявить что хакеры нам не страшны!
- ???
- Так как мы с помощью данных систем отказались от баз данных, мы можем не волноваться за потерю данных!

261

И что мне со всем этим делать?!

Звонит рано-рано утром злющий товарищ-разработчик на оракле.
- Вот скажи, сколько ОЗУ может использовать 32х битный линух?
- 4G
- Ну так я и думал, а то не могли понять, почему все так медленно работает. Полез проверять, а там 32-битная ось. На новеньком сервере с 16G ОЗУ. Подозреваю, что так по всему нашему банку.

Бедные админы.

142

Сизифов дамп

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

Так вот, этой программе до зарезу нужен хоть какой-нибудь сервер баз данных, в качестве которого до недавнего времени выступал аж целый MSSQL Server какой-то версии. В силу ряда причин, понадобилось сделать все то же самое, но на MySQL.

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

Застал я этого товарища за следующим делом: он только что распечатал на бумажках всю структуру базы данных, которая у него была в MSSQL, положил эти бумажки перед собой и уже занес руки над несчастной клавиатурой, дабы врукопашную сотворить все то же самое в MySQL. Само собой, по завершении этого труда в его плане стояло точно так же, ручками, вдолбить все данные словарей. Я глянул — занятие примерно на неделю выходило.

108

Потерял цель в жизни, нашедшему - денежное вознаграждение.

Работал в поддержке СУБД %dbname%.
Звонит клиент, распальцованный, из крутой конторы, но практически нулевой молодой человек. Общение начинается с поиска кнопки "Пуск".

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

Наконец, о счастье, все заработало.

На следующий день новый звонок. Знакомый голос.
- Ну, поставил я ваш %dbname%. И что теперь?