bash.im ithappens.me zadolba.li
7644

220 плюс-минус

29 октября 2011, 10:00

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

Хранил терпение неделю. Становилось всё хуже: линк падал чуть ли не каждые пять минут. Перепроверил параметры связи — в норме. На форуме обычный гам: все жалуются, ругаются, а я терплю — чего буянить?

Прошло несколько дней. Период колебаний связи дошёл до минуты, линк едва успевал подняться. ТП не отвечает. В отчаянии разваливаюсь на кресле, уставившись в потолок. Любуюсь подмигивающей лампочкой на люстре. Начиная сходить с ума, подмигиваю ей в ответ. Через минуту подмигиваю снова. Через минут ещё раз. И ещё…

Хватаю мультиметр и бегу к распределительному щитку. Так и есть: ежеминутный скачок напряжения. Прозваниваю все цепи, подкручиваю заземление. Нареканий нет, проводку меняли недавно сами. ЖЭК не отвечает. Намечаю обширный план диагностики, но перед штурмом нужно подкрепиться. Готовлюсь к трапезе, наливаю чаю, нашариваю бутерброд… и слышу противный «бх-бх-бх-бх» из холодильника. Замираю с бутербродом в зубах на минуту до следующего старта компрессора. Ах ты падла!

Выключаю холодильник из розетки; поев, удаляюсь, довольный собой. Заменить барахлящий компрессор — дело техники.

7529

История без автора

16 октября 2011, 10:00

Юзвери пищат: «Мы ничего не делали, оно само упало!»
Админы басят: «Мы ничего не трогали, оно само заработало».

Так вот, я сюда ничего не писал…

8490

По наглой админской морде

11 февраля 2012, 08:00

Технологию шпионажа в игру ещё не ввели, говорите?

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

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

Лезу на прокси. Ага, сидит, родной, ресурсы добывает. Запускаю клиента игры, нахожу в локации искомого субъекта (а его персонажа я давно определил), подхожу к нему и без разговоров отвешиваю по морде — игра на мордобои между игроками и заточена.

— Ты кто? В чём дело?
— А почему у такого-то почта до сих пор не настроена?
— А… Э… Сейчас будет…

2946

За вами выехали

24 апреля 2010, 10:00

Работаю в техподдержке крупного провайдера. Поддержка круглосуточная, но клиенты звонят обычно с 14 до 23, в остальное время — звонок раз в два часа.

Суббота, семь утра. Звонит клиент: «Сетевой кабель не подключён». Судя по голосу, с такого бодунища, что разве что перегаром из трубки не несет. Полчаса выясняю адрес, логин и прочее. Проверяю оборудование — свитч на доме «не алё».

— Спасибо, что подождали. Судя по всему, наше оборудование на вашем доме вышло из строя, сейчас пришлю наших сотрудников, они разберутся.
— Э-э-э... А что с ним?
— Судя по характеру ошибки, оно физически не работает. Возможно, без питания, сломано или украдено.
— Э-э-э, понял. Я щас.

Из трубки доносятся какие-то вопли, мат, грохот, через пару минут клиент возвращается:

— Спросил пацанов — это не мы. Мы вообще ни при чём, сукой буду. Не надо нам сотрудников присылать, окей?

5387

Противьтесь соблазну

Тестирую программу своей студентки. Она обрабатывает текст и сбрасывает результаты потихоньку в файлы. В какой-то момент на диске появляются файлы с названиями:

Изменение регистрировалось в журнале
Может быть, ошибок и нет
Нет
Но внесение изменений нужно производить квантами
Прежде всего, кто-то должен быть ответственным
Проделанная работа будет отброшена назад, если эта среда изменится
Противьтесь соблазну

Начинаю думать, что за ботва. Пишу студентке вопрос с просьбой пояснить юмор. Она ничего не понимает. Перечисляю файлы — та же реакция. Проясняю ситуацию. Она смотрит свой код и находит ошибку: формирует переменную с именем файла, а потом открывает файл, используя другую переменную с похожим именем, в которой хранится обработанная строка. Это же с каким чувством юмора надо было написать систему, чтобы она сама подбирала такие названия? Может, программа уже смотрит на нас? Всё-таки обработка текста, искусственный интеллект, самообучение…

Пока писал эту историю, появились новые файлы:

Маша и Гвидо с немалой степенью озабоченности посмотрели друг на друга
В это день было убито 1700 поляков
Все дворы были разграблены и сожжены

И это не всё, что она мне пообещала. Кого мы создали?

12754

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

24 октября 2014, 07:24

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

1710

Не прошло и... Чёрт.

17 декабря 2009, 12:45

Получил я сегодня такое письмо из техподдержки Касперского:

Здравствуйте.

К сожалению, по причине большого количества обращений в службу технической поддержки, время ответа на ваш запрос № *****, полученный 13.04.2006, составит более 24 часов. Приносим свои извинения за доставленные неудобства и надеемся на ваше понимание. Мы обязательно ответим на ваш запрос!

Данное сообщение является автоматическим и не требует ответа.

С уважением,
Служба технической поддержки Лаборатории Касперского.

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

8794

Sancta simplicitas

21 марта 2012, 10:00

Пролил кофе на стол (каюсь), позвал уборщицу. Пока суд да дело, ушёл по другим делам. Вернулся лишь через час. Мац-мац — мышки нет. Звоню уборщице.

— Ой, а я смотрю, сломанная какая-то, без хвоста… Я её в мусорку выкинула.

Полез — лежит, родимая, невидимо светит лазером в туманную даль. Sancta simplicitas, короче.

3882

Помойтос

13 августа 2010, 08:00

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

Один из экзаменуемых вытягивает билет: «Перечислить компоненты видеоподсистемы компьютера». Уверенно перечисляет практически всё. На наводящий вопрос, что соединяет видеокарту и монитор, мы получили бодрый ответ: «Помойтос». Первым челюсть с пола поднял я и уточнил: «Что?!» Получил ответ по слогам: «По-мой-тос!»

Когда мы проржались хором с остальными экзаменуемыми в классе, попытались найти, откуда он это взял. Перерыли книги, конспекты, переводчики, Т9 — пусто. Сам парень тоже не мог внятно сказать, откуда он это слово взял.

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