среда, 15 февраля 2012 г.

[blog] Хорошая цифирька :)

Просто дабы потешить собственное самомнение – 150K просмотров блога по статистике Google:

Но вообще-то цель – 1M ;)

[work.memories] Вспомнил случай про “внезапные открытия” на сдаче проектов

В блогах, в отличии от профильных форумов (т.к. RSDN или LOR), есть неприятный недостаток. В комментариях к какой-нибудь старой заметке может развиваться интересный спор, но об этом мало кто будет знать, т.к. самой заметки может уже не быть видно на первой странице блога. В форумах же активные обсуждения, как правило, “всплывают” в топ активных тем.

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

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

Дело было лет 12-13 назад, я тогда работал в КБСП. Требовалось разработать софт для нескольких узлов крупного программно-аппаратного комплекса. Рулили этой темой из Москвы, ну а мы сидели в Гомеле.

Сейчас уже дико это вспоминать, но тогда нормального Интернета у нас не было. Поэтому просто так отправить заказчику e-mail со списком вопросов, а затем получить e-mail с ответами – такой возможности не было в принципе. Вытрясти какую-то информацию из москвичей можно было всего двумя способами – либо по телефону (да еще и не напрямую, а через цепочку посредников), либо приехав к ним в командировку **. Вот в таких условиях приходилось работать ;)

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

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

Попутно появилась возможность выяснить все накопившиеся неразрешенные ранее вопросы. И я стал выяснять, что же это за непонятный параметр был в описании протокола. Открытие было просто потрясающим!

Нам передавалась двухмерная матрица M, которую мы должны были скормить вычислительной части программы. Но оказалось, что M – это не матрица, а матрица матриц! А тот самый непонятный параметр как раз и указывал сколько в M будет двухмерных матриц M(i). Т.е. если раньше мы считали, что нам приходит одна матрица, мы ее обсчитываем, получаем новую матрицу, которую отдаем следующему узлу, то теперь оказалось, что мы получаем N матриц M, каждую из которых нужно обсчитать, получить N результатов и эти N результатов отдать дальше.

То, что при этом в разы увеличиваются объемы передаваемых данных – это еще цветочки. Ягодками было то, что на заявленной для проекта аппаратной платформе мы едва-едва успевали обсчитать одну матрицу M чтобы уложиться в рилтаймовый темп. А тут нужно обсчитывать не одну, а несколько матриц. И это выясняется за полтора месяца до сдачи проекта ;)

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

* Чтобы как-то уменьшить актуальность данной проблемы я добавил сбоку блок с несколькими последними комментариями.

** Терзают меня смутные сомнения, что за прошедшие годы эта ситуация принципиально не изменилась ;)