5697

LPT-мудрецы

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

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

5696

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

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

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

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

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

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

5695

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

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

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

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

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

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

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

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

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

5694

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

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

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

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

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

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

5693

Ножки в кошке

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

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

5692

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

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

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

5688

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

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

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

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

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

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

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

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

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

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

Понял!

5685

Вот гель, вот дефибриллятор

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

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

— Чего-чего… Вешайся!

Паренёк судорожно сглатывает.

— Чё, всё так серьёзно? А по-другому никак нельзя?

— По-другому надо было с самого начала. А теперь поздно — надо вешаться… Да не парься, ты не первый такой, для этого тут кабель и лежит. Не получилось залить нормально — берёшь его и вешаешься.

— А… А к-куда ег-го поц-цепить?

— Как куда? На JTAG, вестимо! Вот «пятаки» возле проца, сюда приткнёшь игольчатые зонды, а этот разъём — в LPT.

5682

Вверх по течению

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

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

— А что вы хотели? Посмотрите внимательно — у вас же один провод подключен к компьютеру? И как вы хотите, чтобы по одному и тому же проводу данные передавались в обе стороны? Нужно второй контракт заключать!

5681

Апскейлинг ножек

Захожу в наш местный компмаг, дабы прикинуть цену на модернизацию верного четырёхъядерного коня. Менеджер знакомый; называю проц и прошу подобрать к нему маму с трёхканальной памятью и всё такое. Вроде прикинули цены, расстались. Только дома я вгляделся в распечатку — в магазине-то мельком отсканил взглядом:

Процессор: Intel Core i5 760, LGA 1156…

Материнская плата: Gigabyte GA-X58-USB3, LGA 1366…

Странно, но ни напильника, ни паяльника в смете не значилось.