12765

Время сдвинулось на час, суета на глобусе

Астрологи объявили неделю плача по переводу времени. Что же, и меня это не обошло.

У меня несколько серверов, размещённых на самых разных хостингах, которыми пользуются самые разные пользователи со своих компьютеров, смартфонов и планшетов.

На части серверов установлена n «Москва». Для них пришлось обновлять файлы зон, устанавливать, перезапускать работавшие системы, а потом разбираться с записями с нарушенной хронологией. Это были серверы, которые я настраивал достаточно давно.

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

Сейчас нам обещают, что перевод стрелок был «навсегда». Как показывает практика — «навсегда» может закончиться неожиданно, да вот хотя бы следующей весной, или кому-то придёт в голову законопроект о том, чтобы сдвинуть время на 17 минут в какую-нибудь сторону в ответ на очередное политическое событие. От этих товарищей всего можно ожидать.

Так что сейчас для меня перевод времени ещё не закончен: я перевожу на UTC всё, включая аппаратные часы ноутбука. И всем советую.

Я всё-таки хотел бы надеяться, что живу в глобальном мире, на планете Земля. А что там на экране показывается — это уже несложно подвинуть относительно мирового времени. Тем более, кто его знает, какое время будет для меня локальным через полгода?

12764

В пыли потёртых гигабайтов

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

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

С винта удалось вычитать только то, что было на нижних пластинах.

12761

Winter has come

Цифровые зомби вокруг нас. Думаете, их нет?

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

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

Разработчики, пожалуйста, давайте хоть немного прав пользователям, не превращайте жизнь людей в ад!

12760

Просто забей

Вы думаете, что кулер, прикрученный к материнке саморезами — это вершина идиотизма? Как бы не так!

Принесли системник на гарантии со стандартной жалобой: «Всё было нормально, а сейчас что-то не включается». При взгляде на характерные металлические штырьки, выпирающие сбоку корпуса, закрались нехорошие подозрения. Разобрал. Да-да, так оно и есть: материнка прибита к корпусу гвоздями. Мало того, что прибита в самых случайных местах, сквозь дорожки, так в одном месте — прямо, @#$, по микросхеме, которая, естественно, не выдержала такого издевательства и раскололась на две части.

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

— Зачем?!

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

От имени всего отдела посоветовал клиенту впредь вызывать специалистов даже для того, чтобы воткнуть компьютер в розетку. А то мало ли, какая ещё идея придёт в голову этому гению компьютерной мысли, а виноваты, как всегда, будем мы.

12759

Не пытайтесь покинуть скайп

Люблю скайп.

Обновления, после которых глюков становится больше, неслабые машины начинают подтормаживать, а слабые становятся на колени. Если не обновился — связи не будет: «Невозможно подключиться», и точка.

Контакты, висящие в сети даже тогда, когда железо с этой учётной записью отключено и разобрано до болтика.

Идущие по несколько дней сообщения и неубиваемые уведомления о пропущенных полгода назад звонках.

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

Мобильный скайп — отдельная тема. Прохлопал ушами — он запустился при старте и гордо высасывает трафик с небезлимитного тарифа. А ты потом ищи его в процессах или плати за перерасход, ибо настройка «Не запускать при старте системы» гордой программой игнорируется в каждом втором случае.

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

Я, кажется, уже говорил, что люблю скайп?

12758

А больше и не надо

Пригласили посмотреть компьютер. Жалобы просты: греется, глючит.

На месте встречает меня папа, а в это время его мелкий лет семи ударно рубится в «Танки». Волевым усилием папаша сгоняет малого, выключает компьютер и начинает буквально выдирать из него провода, попутно расписывая мне все замеченные глюки. Снимает системник со стола, но, видимо, попадает пальцами в разъём питания, потому что под аккомпанемент фразы «И вообще, он меня уже доста-А-АЛ!» системник могучим взмахом руки отправляется в полёт. В окно. И за окно.

А этаж совсем не первый.

Малой с квадратными глазами смотрит то на окно, то на отца.

— Папа, я теперь тебя совсем сердить не буду! Правда-правда!

12757

Опуститься до начальства

Оглядываясь на свою профессиональную карьеру, я вдруг понял: поднявшись по служебной лестнице, я с той же скоростью спустился по профессиональной.

Из неплохого программиста превратился в среднего сисадмина, потому что должен же кто-то сеть поддерживать.

Из сисадмина превратился в обычного эникея, потому что сеть настроил до состояния ненужности постоянного администрирования, а застрявшую бумагу из принтеров доставать кому-то нужно.

Из эникея превратился в начальника IT-отдела, потому что успел перезнакомиться как со всеми аспектами работы отдела, так и со всем начальством. Кроме Word, Excel да браузера, другие программы уже больше года не запускал.

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

Вот интересно: где дно у этой бездны деградации?..

12756

Повелеваю подвинуться

От IT я далёк, но себя отношу к «сочувствующим»: увлекаюсь шелл-скриптами, пишу HTA-утилитки в Windows для личных нужд. А в далёком 2004 году даже зарабатывал, проводя курсы компьютерной грамотности на дому. Учил понемногу тётенек-бухгалтеров Word и Excel, копированию файлов и т. д. Одна из первых клиенток научила меня двум вещам: ничему не удивляться и при обучении предлагать ученику выполнять все действия самому.

Вроде бы обычный заказ: научить использованию Word. Мой стандартный (неверный) подход: сажусь за комп, задвинув полку с клавиатурой и мышью наполовину, и начинаю объяснять, для чего нужен каждый элемент на экране, кликаю меню, меняю форматирование текста примера… И так около часа.

— Всё понятно?

— Да, — кивает ученица, — спасибо. Один только вопрос: а как вы эту стрелочку на экране двигаете? — и тычет в курсор мыши.

Оказалось, человек на работе имел дело только с DOS-программами.

12755

Домен дня

О жизни в сети Novell Netware в 2013 году.

Начальник, в страшной спешке сбрасывая софт на ноут:

— В каком домене у нас сервер с дистрибутивами? COMP_NET или PDES?

Эникейщик, отбивая привычный аккорд в FAR:

— Сегодня… в COMP_NET!

12754

У десяти серверов продукт без глазу

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

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

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

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

В общем, заканчиваю с затянувшимся вступлением и перехожу непосредственно к описанию этого чудо-комплекса.

Комплекс состоял приблизительно из десятка серверов, каждый из которых был заточен под решение конкретной задачи: один сервер БД, один сервер управления поисковыми роботами, один сервер, собственно, этих роботов, один сервер обработки, один сервер распознавания текста, один сервер веб-интерфейса и ещё разные серверы. Все машины на момент установки уже устарели на два-три года, не отличались большой мощностью, имели оперативную память от 8 до 12 ГБ, что выглядело немного странно, учитывая наличие двух процессоров Xeon в каждом. При грамотном использовании ресурсов весь этот комплекс, в принципе, обладал бы очень неплохой вычислительной мощностью. Однако логика разработчиков, видимо, была проста: одна задача — один сервер, и неважно, что часть задач выполняется последовательно, и большую часть времени половина серверов простаивает, а вторая половина трудится на 5–10% мощности. Сервер распознавания текста вообще не использовался: Файнридер был на каждой клиентской машине.

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

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

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

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

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

Ах да, забыл сказать: на сервере диспетчера установлена 32-битная Windows XP. Это при двухпроцессорной-то архитектуре и 12 гигах памяти.

Допустим, что данные собраны успешно и легли в соответствующие таблицы MS SQL, далее их надо передать в подсистему обработки. Что тут сложного, спросите вы? А сложно то, что подсистема обработки — это крайне устаревшая проприетарная система с поисковым движком в ядре, работающая на PostgreSQL. То есть данные нужно экспортировать из одной базы в другую. Как же это рациональнее всего сделать? Конечно, сделать передачу по расписанию, которая, дабы днём не снижать производительность сервера обработки, будет каждый день в 00:00 перекидывать накопленный массив данных. Что мы получаем в итоге? Система обработки пыхтит ночь напролёт, индексируя и анализируя полученный одномоментно массив данных, пользователи получают результаты с задержкой в один день, зато сервер обработки днём совершенно разгружен и готов к выполнению работы. Вот только какой?

Далее встаёт проблема классифицировать входной поток и раскидать его по рубрикам. Соответственно, систему надо обучить, по каким критериям проводить эту классификацию. Машинное обучение, обучающая выборка, статистика часто упоминаемых слов и выражений, методы обработки естественного языка? Нет, не слышали. Вместо этого оператору предоставляется уникальная возможность полностью вручную создать классификаторы, используя для этого встроенный редактор поисковых запросов с использованием операторов И, ИЛИ, НЕ; как бонус — задать допустимое расстояние между словами.

Опять же, допустим, что всё получилось и работает нормально. Пользователь зашёл на веб-интерфейс программы обработки, отобрал нужные ему документы и хочет их себе сохранить для дальнейшей работы. Не тут-то было! Экспорт осуществляется в формате либо XML, либо XLS, при этом в экспорте не учитывается информация о рубриках, тексты лишаются намёков на форматирование, получить документ в оригинальном виде просто невозможно, хотя в базе он есть…

В общем, весь этот комплекс можно было довести до ума, обвешав по самое не балуй костылями, игнорировать большинство косячных встроенных функций, забирать данные из баз напрямую сторонними средствами, но весь этот зоопарк потребовал бы колоссальных усилий на поддержание в работоспособном виде и изменение каких-либо параметров. И что мы имеем в итоге? Дорогущая система стоимостью в несколько миллионов, развёрнутая на морально устаревшем в момент приобретения железе, разнородное ПО, скреплённое ржавыми гвоздями и неспособное работать в комплексе более пары дней, один уволившийся программист, психанувший после долгих попыток заставить всё это работать, — и ни одного дня использования этой системы по назначению вплоть до дня официального окончания поддержки, когда выжившие специалисты со скупыми мужскими слезами радости наконец удалили весь этот кошмар и развернули на серверах аналогичное самописное ПО с использованием опенсорса, возможно, тоже в чём-то глючное и несовершенное, но так хорошо справлявшееся с поставленными задачами, ютясь на обычных рабочих станциях, используемых вместо серверов!

А что начальство? А начальство уже заказало той же фирме разработку и внедрение новой системы на смену безвременно скончавшейся. Только, чувствую, в этот раз приёмка не состоится, если только не уволят всех несогласных…