четверг, 24 марта 2016 г.

Интервью с Константином Аристовым

Константин Аристов согласился дать интервью по ICQ. Живет в Санкт-Петербурге, женат, двое детей, e-mail littlecat.spb@gmail.com. Интервью брал Евгений Каратаев.
EK. Привет, Костя, вопрос есть. Дай мне интервью по асе? Мне интересно сделать серию интервью среди технарей, занимающихся или раньше работавшими с М.

КА. :-) Ну давай, я попробую :-)


ЕК. Когда ты первый раз познакомился с М-системами?

КА. Я предвидел... Надо резюме свое поискать чтобы точную дату найти... Где-то в конце 80-х :-) Я на кафедре в ЛЭТИ работал, и на той же кафедре работала доцент кафедры Галина Васильевна Петрова, знакомая с Лебедевым и Долженковым, которые ей и подкинули дистрибутив :-) Она стала внедрять ДИАМС-2, а если более точно, систему ТЕКРАМ на его основе, в учебный процесс. Вот тогда и познакомился :-)

ЕК. На каких машинах работал ДИАМС-2?

КА. У нас на СМ-3 и СМ-4. Это было круто, мы тогда раздобыли 16-ти канальный мультиплексор, и сделали целый учебный класс терминальный, да еще по кафедре витую пару проложили, и у меня прям на рабочем месте был терминал :-) У нее была память 128 килобайт. И на ДИАМС на этой памяти одновременно работали человек 8. А диски там были, если мне память не изменяет, 5.5 Мбайт.

ЕК. ТЕКРАМ - это что, как выглядел пакет?

КА. ТЕКРАМ это пакет ведения текстовой конструкторско-технологической документации, всякие там маршрутные карты и пр. Я его не разрабатывал, и в нем не работал :-) Выглядело тогда все одинаково, алфавитно-цифровой дисплей 80х25 и никаких тебе грызунов :-)

ЕК. Как ты попал в компанию СПАРМ?

КА. В 94-м из конторы уволился системщик, Руслан Лайшев, и они стали искать кого-то ему на замену, ковыряться в драйверах, в системных вопросах... К тому времени уже появился MSM 3 под ДОС. Поскольку мы уже были некоторое время знакомы с СП.АРМ лично, то и нам для освоения выделили дистрибутивчик на 5 установок на двух дискетках. Первая была защищена программой Руслана и содержала счетчик, хитрый драйвер для работы с нестандартными секторами на дискете...

Но кусочек защиты был реализован на М в виде программки. Карандаш, бумага, ручная декомпиляция программы MSM и вот мы уже знаем какой код имеет if, а какой 'if :-) После правки одного байта защита работать перестала... Вот так и познакомились ближе. И когда Руслан уходил, меня пригласили на его место.

Когда пришел, сначала занимался драйвером для MSM, обслуживающим мультиплексоры производства СП.АРМ. Потом возникла идея сделать аппаратный эмулятор терминала, превращающий начавшие устаревать 386-е машины в интеллектуальные терминалы. Жестянщики сделали схему, а я писал биос для этого эмулятора.

ЕК. Можно пару слов, что такое мультиплексоры, какую задачу они решали и каковы могли быть альтернативы?

КА. Один мультиплексор позволяет подключить к одной PC 8 терминалов, т.е. 8 рабочих мест. Можно было установить до 4-х мультиплексоров, и обычная 486-я в MSM for DOS обслуживала 32 рабочих места :-)

ЕК. Это была альтернатива Эзернету?

КА. Ну да, тогда еще Ethernet был дорогой игрушкой... Я бы сказал, что впоследствии он стал альтернативой терминальной сети :-) И сейчас вместо терминала, подключенного по токовой петле, мы имеем Telnet.

ЕК. В каких программных разработках ты участвовал?

КА. Нда, непростой вопрос... Мне проще вспомнить, что я сделал сам больше чем на 50%, чем то, к чему я приложил руку :-)

ЕК. Расскажи, что делал сам?

КА. БИОС для аппаратного эмулятора, ядро АРМ-трафик и дополнительные функции для GT.M ($list*, $increment, $zcvt). Все остальные поделки носили вспомогательный характер, для облегчения труда коллег (незаметный труд системщика). Были и другие проекты, например с Алексеем Масловым мы переводили комплекс программ в Мосстройпластмасс из MSM в Cache, но такие работы как-то быстро из памяти выветриваются...

ЕК. Расскажи об АРМ-трафик?

КА. АРМ-трафик, забавный проект, мне он нравится, я им горжусь :-). Сама идея лежит на поверхности, но сложность реализации видимо всех останавливает. В двух словах, это независимый аудит доступа к серверу базы данных. Есть сервер с Oracle, на котором работают 800-1000 пользователей. Задача: контролировать, кто когда под каким логином вошел, какие запросы выполнял, какие параметры в эти запросы подставлял. Есть стандартное решение, включить штатный аудит Oracle и анализировать лог-файлы. На предложение это сделать поставщик информационной системы тут же ответил, что для этого нужно увеличить мощность сервера на 20-40% (а стоит там кластер из двух Альфа-серверов, цену которого вслух никто не называет).

ЕК. Какое решение было выбрано?

КА. Вот тогда я и предложил то решение, которое в конце-концов реализовано в АРМ-трафике :-) Берем сетевой порт, к которому подключен серер БД, и зеркалируем его другой, к которому подключен сервер безопасности. На нем слушаем весь сетевой трафик, разбираем его на сеансы TCP, выделяем оракловые, расшифровываем, и в номальном виде пишем в глобал в Cache. Поначалу все скептически отнеслись к этой идее, и технических трудностей было довольно много, поскольку нужно было контролировать 2 гигабитных порта, в реальном времени разбирать весь поток, выделять нужное и складывать в базу. Я уже не говорю про недокументированный в открытых источниках протокол Oracle... Но когда мне удалось продемонстрировать записанный в глобал сеанс пользователя Oracle, стало ясно, что задача решаемая. К делу подключился Леша Маслов и написал верхний уровень комплекса, а именно, обработку глобала с сеансами, упаковку данных в SQL-таблицы Cache в удобном для последующего анализа виде и примеры отчетов Crystal Reports, показывающие, как с этими данными работать.

ЕК. Разбор трафика выполнялся на М или на Си? Как выполнялась связь с сервером Каше? Сервер Каше работал на той же машине или на параллельной? На какой аппаратуре?

КА. Разбор естественно на С, при таких скоростях. Заливка в базу через CallIn, самый быстрый метод записи (там пара-тройка сотен сетов в секунду проходит). Все это на одном сервере начального уровня, два процессора Xeon с гипертридингом, 1 гиг оперативной памяти и RAID 5 на 350 гигов. Cache 5.0.

ЕК. Использовалось ли журналирование? Если да, в каких целях?

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

ЕК. Использовалось ли индексирование записей для SQL?

КА. Ну да, конечно использовалось, в ключевых местах битмап-индексы.

ЕК. Сколько времени в целом заняла эта разработка?

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

ЕК. Расскажи о разработке по GT.M? С чего началась идея использовать GT.M?

КА. Ну тут-то все просто :-) С целью снизить стоимость прикладной системы разработчики qWord предложили перенести его на GT.M, который под Linux можно взять бесплатно :-) Но к этому моменту qWord уже был основательно завязан на Cache, т.е. использовал все эти новомодные штучки.

ЕК. $lb, $i?

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

ЕК. Но у СПАРМ есть билд GT.M с поддержкой новых функций, да?

КА. Ну конечно есть, я эту работу оформил в законченном виде и сдал разработчикам qWord, и они ее вроде используют до сих пор.

ЕК. Многие М-разработчики интересуются дальнейшими планами этих изменений. Они поддерживаются, их можно получить для использования, есть возможность их использовать с текущими версиями GT.M?

КА. В принципе можно было бы выложить патч для добавления этих функций на соурсфорж, но тогда его точно не включат в релиз. Хотя похоже на то, что и так не включат, поэтому можно выложить... Ну поддерживаться они пока никак не поддерживаются, поскольку в текущей работе я GT.M не использую, и патча для 5-ки у меня нет, хотя по предыдущему опыту его вроде несложно изготовить. Но это надо исходники последней версии посмотреть, насколько она от предыдущих отличается :-)

ЕК. Я правильно понимаю, что без участия Санчеса это придется делать при выходе каждой версии GT.M?

КА. Получается так. Вообще тема GT.M интересная, но в ней должен быть какой-то финансовый интерес, поскольку на голом энтузиазме силы уже не те :-)

ЕК. Насколько точно твоя реализация $lb соответствует тем же функциям в каше? Бинарная совместимость, наличие левостороннего присваивания $list?

КА. Левостороннее присваивание конечно есть. На момент написания моя реализация была даже лучше чем в Cache, поскольку все проверки выполнялись и не было вылетов например по $li($c(2,6)) ;-) (число с плавающей точкой с пустым телом). Я как раз тогда и наткнулся на этот баг в каше, когда свои листы отлаживал :-) Двоичная совместимость частичная, при создании листов в GT.M все элементы создаются типа "строка", хотя при извлечении обрабатываются все типы из Cache.

ЕК. В функции $i использовался переход с int32 на int64?

КА. Насчет $i я сейчас уже не помню, надо код посмотреть.

ЕК. В GTM насколько я знаю реализована изоляция транзакций. Какие технические проблемы пришлось решать при реализации $increment? Как это было сделано?

КА. Это было сделано средствами, которые уже присутствовали в коде. Я использовал блокировку, если мне память не изменяет.

ЕК. Как был решен вопрос с неоткатыванием изменений по $increment?

КА. Вот этого уже не помню :-) Тем более что как только Санчес объявил о планах реализовать $i в следующих релизах, я над этой функцией перестал работать :-)

ЕК. Сейчас ты работаешь с М системами?

КА. Только в плане поддержки АРМ-трафик. Сейчас я занимаюсь RISC-микропроцессорами и приемопередатчиками диапазона 2.4 ГГц :-) А также компьютерной безопасностью...

ЕК. Спасибо за интервью.

КА. Спасибо!

Комментариев нет:

Отправить комментарий