Выбрать главу

Не беда. Полезли на сайт «Хитачи», нашли интересующую нас модель. Для получения ссылки на скачку было нужно:

1. Отправить по почте серийник.

2. Дождаться, пока его обработают.

3. Подождать пару недель, пока нужный человек (по ответу стало ясно, что он в отпуске) не приедет в офис.

Софта нет, времени нет, идей нет. Стали вникать в суть проблемы: достали бубен и попытались найти в дебрях прилагаемого диска дрова на доску. Безуспешно — зато драйверы чудесным образом нашлись во временных файлах на диске C: и без проблем подцепились автоматическим поиском.

После установки драйвер всё равно отказывался запускаться, ссылаясь на отсутствие INI-файла. Решили проблему просто: создали пустой и кинули его в папку с дровами.

Индийские кодеры по сравнению с японцами и их дровами — просто дети малые.

#5696: Упряжка автоинкрементов

12:00 15.03.2011, IT happens

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

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

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

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

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

#5697: LPT-мудрецы

12:00 15.03.2011, IT happens

Могуч автор истории «Постпараноидальная терапия» в раскручивании. А гарантия на машины не поломалась ли? В близких к аналогичному случаю условиях я ношу с собой кроссовер — вынул хвост из сетевушки, вставил (господа офицеры, молчать!), настроил связь с лаптопом — и ломай (строй) что хочешь. Ещё параллельный порт есть для той же цели. Мало какой брандмауэр следит за ним, а ведь туда можно и флопарь подвесить, и наружный диск, и сидюк. Загружаться с него до-о-олго, а так — ничего.

Мудрецы говорят: «Если к твоему компьютеру есть физический доступ, это больше не твой компьютер». И отвёртка не нужна…

#5698: Не возражаю. Гугл

12:00 15.03.2011, IT happens

Я, конечно, понимаю всё: патентованные алгоритмы, искусственный разум… Но всё же узнать, как работает такой Гугл, было бы интересно. Формально я понимаю, что, добавляя слова в запрос, я его сужаю, потому должен получать меньше страниц; интуитивно — что второй запрос ближе к истине.

И всё же: почему же по запросу «мальчики против девочек» Гугл выдаёт менее полутора миллионов страниц, а по запросу «мальчики не против девочек» — более пяти?

#5699: На все руки Вадим

14:00 15.03.2011, IT happens