bash.im ithappens.me zadolba.li
12759

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

26 октября 2014, 08:12

Люблю скайп.

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

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

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

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

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

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

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

12758

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

26 октября 2014, 08:00

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

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

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

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

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

12757

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

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

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

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

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

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

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

12756

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

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

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

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

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

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

12755

Домен дня

25 октября 2014, 07:00

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

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

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

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

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

12754

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

12753

Программиста ответ

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

Гардероб. Светящаяся табличка:

Внимание! Согласно публичной оферте на пользование нашими услугами, гардеробщик ИМЕЕТ ПРАВО брать себе всё находящееся в карманах и рукавах сдаваемой одежды. Клиент, не желающий этого, обязан перед сдачей одежды вынуть всё из её карманов и рукавов.

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

Кто-то эту бумажку вытащил, провёл над «Согласен» горизонтальную черту (булева алгебра!) и поместил обратно. Лайфхакинг в действии!

12752

Сначала думай, потом делай

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

Эх, молодость, молодость… Пора интересных, местами даже гениальных, но, как правило, нереализуемых идей. Например, принцип KISS в жилищном строительстве. Если уж тема была поднята, то давайте-ка рассмотрим её чуть подробнее.

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

Хорошо, ограничимся сельской местностью. Перед домом, с южной стороны, всё равно придётся иметь хотя бы сотню метров открытого пространства, дабы ловить скудное зимнее солнце утром и вечером. При нынешних ценах на землю — весьма сомнительная роскошь. Разве что летом это пространство картошкой-морковкой засадить: вид из окна не очень, зато немного дармовой энергии перехватим. При условии, что на соседнем (к югу от нас) участке не взгромоздится особняк в три этажа плюс цоколь плюс мансарда.

Допустим, построили мы дом в чистом поле. Или нет, лучше на южном склоне холма: и ветра меньше, и теплопотери с северной стороны менее заметны. Остаётся облачность, туман, снег и дождь. Насколько остынет дом даже с очень хорошей теплоизоляцией за неделю такой погоды? А за месяц? А если жильцы иногда заходят-выходят, выпуская драгоценное тепло? Ах да, можно же печку поставить. Не очень дёшево и не совсем экологично, но это ведь для экстренных случаев (которых у нас, правда, чуть ли не шесть месяцев в году).

Хорошо, примем печку как данность. Люди уже давно к этой печке придумали разнообразные приспособления, повышающие её эффективность как отопительного прибора, от чугунной плиты позади камина до системы труб с самым дешёвым теплоносителем (сиречь водой) и радиаторов. Так, собственно, печки и превратились в разнообразные отопительные котлы — твердотопливные, газовые, электрические, опять же… Ну, и комбинированные, само собой. Этот велосипед уже давно изобрели и продолжают совершенствовать.

Но вернёмся к нашему солнышку, жизнерадостно бьющему в окно. Чтобы сделать его долю сколько-нибудь значимой на фоне вышеозначенной печки, об изысках планировки забудем: все окна на юг, все комнаты проходные. Или как вариант — длинный холодный коридор вдоль северной стены. Огромные окна, лишённые занавесок или жалюзи, сделают жизнь обитателей весьма интересной… для соседей. Открытое пространство (помните?), хороший бинокль — рай для вуайериста.

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

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

Я к чему это всё? Да к тому, что любой принцип имеет границы своей целесообразности. Самое простое — не всегда самое лучшее. Избыточное в теории часто оказывается необходимым на практике. Решение «в общем виде» может не подойти ни к одному частному случаю.

Единственный принцип, неизменный для любой осознанной человеческой деятельности — сначала думай, потом делай.

12751

Заглядывай в прошлое, там интересно

23 октября 2014, 16:36

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

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

Game & Watch там. Ну, и клоны его советские. Встроенная подставка, состоящая всего из одной копеечной детали, в сложенной состоянии совершенно не мешается, а в откинутом — прекрасно справляется с возложенной на неё задачей. Если на неё и был патент, он давно истёк. Так что теперь эту конструкцию подставки могут смело применять все производители современных гаджетов.

Что им мешает? Наверное, пресловутый «зачем», хотя ответ на него очевиден. А Гумпэю Ёкои не помешал.