bash.im ithappens.me zadolba.li
5696

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

15 марта 2011, 09:00

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

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

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

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

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

5695

Дрова, доска, тоска

14 марта 2011, 16:45

Закупило наше начальство интерактивную доску. Чудо техники напрочь отказалось работать под «семёркой». Ставить XP как основную или вторую ось на новенький ноут желания не было, да и лицензии не нашлось.

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

1. Отправить по почте серийник.
2. Дождаться, пока его обработают.
3. Подождать пару недель, пока нужный человек (по ответу стало ясно, что он в отпуске) не приедет в офис.

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

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

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

5694

До последней точечки

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

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

Всё было терпимо, пока мне на проверку не прислали макет сайта в формате PowerPoint. Нет, они не вставили скрины страниц в PPT-презентацию. Эти умы отрисовали все 154 страницы сайта, каждую стрелочку, каждую точку и рамочку, в каковые вставили текст нужным шрифтом.

Я отказывалась верить в это. Мир рухнул. Сайтостроители сказали, что они очень долго трудились над отчётом, не спали ночами. Они вытирали пот со лба и закатывали глаза от усталости. Они объясняли, какая это была трудоёмкая работа и как нелегко им было рисовать сайт в Пауэрпойнте. Всё это делалось для того, чтобы заказчик мог взглянуть на сайт и исправить орфографические ошибки.

На сегодняшний день сайтов в формате PPT сделано четыре штуки. Несколько раз. В нескольких вариантах дизайна.

5693

Ножки в кошке

14 марта 2011, 12:45

Пришла весна. По температуре не очень чувствуется, но кошку не проведёшь. К традиционным крикам с требованием поесть добавились крики весенние, к тому же начала лезть шерсть.

Неприятный момент хозяева кошек обычно обходят с помощью кошачьей чесалки из зоомагазина. Мне идти было лень, и я приспособил для этого старенький AMD S939 3000+. Ничем не хуже получается. Хорошо, когда технологии помогают не только хозяевам, но и животным!

5692

Проверка правописания и первокурсности

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

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

5691

Пять прогнозов погоды

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

— Не трогай! Если оно так загрузилось, значит, так надо.

5690

C-c-c-cooler kill

14 марта 2011, 11:00

Мои дорогие подопечные как-то звонили и плакались, что в системнике страшно жужжит кулер, и они боятся. Якобы он может оторваться, вылететь из корпуса и отрезать голову. Как в Unreal, ага.

5689

Поправить контакты и подвести сенсоры

Поставили нам в лабораторию новый инфракрасный спектрометр. На передней панели надпись латинскими буквами, начинается с «IRa». Устанавливали, подключали и настраивали сложный прибор мужчины. Всё настроили, опробовали, нам показали, как работать, и уехали.

На следующий день стали мы работать сами — а не идёт работа. Спектры совсем не те отрисовываются. Выключили до завтра.

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

После праздников девайс опять принялся рисовать ерунду. Мы призадумались. Проверили все провода-контакты, ПО, температуру и влажность в помещении. Я пошутила: «Наверное, у нашего спектрометра душа женщины. Зовут Ирой, любит мужское присутствие и внимание». Похихикали и вызвали специалистов. Специалисты установили: чтобы спектрометр нормально работал, перед включением прибора в рабочую камеру необходимо поместить эталон отражения, в просторечии — зеркало.

Проснулась Ира — и сразу к зеркалу. Чем не женщина?

5688

Дерьмо из кирпича

Довелось мне в компании друзей попить пивка — пятница же, святое дело после рабочей недели оттянуться. Тут звонок от одного из хостеров: «А-а-а! Нас досят, срочно нужно разобраться!» Ноги в руки — и бегом домой, благо пиво пили недалеко. Быстренько провожу разбор полётов, устраняю, но решаю на часик остаться понаблюдать.

Возращаюсь к прерванному занятию. Один из знакомых (по профессии — строитель) поинтересовался причиной быстрого побега. Пришлось переводить технологию DDoS на строительный жаргон, и вот что получилось.

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

— Как же так? Ты разве соседей своих не знаешь?

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

— А быстро залепить дыру цементом?

— Это временно поможет, но не устранит первопричину, так как появится такая же дыра, но уже в другой стене.

— И что делать?

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

Понял!