Читать «Bash IT Happens Истории ## 5601 – 5700» онлайн - страница 36
Bash.org.ru IT
Индийские кодеры по сравнению с японцами и их дровами — просто дети малые.
#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
Я, конечно, понимаю всё: патентованные алгоритмы, искусственный разум… Но всё же узнать, как работает такой Гугл, было бы интересно. Формально я понимаю, что, добавляя слова в запрос, я его сужаю, потому должен получать меньше страниц; интуитивно — что второй запрос ближе к истине.