Сергей Березовский – Сын технологий. Роман в пяти годах и тридцати главах. Книга первая (страница 27)
Во время экспериментов с плеером была обнаружена забавная ошибка в блоке управления звуком. Старший Руслан, который неплохо играл на гитаре, прислал послушать старую любительскую запись ещё студенческих времён. Андрей хотел воспроизвести её с помощью плеера, но именно эту запись плеер почему-то напрочь отказался проигрывать. Формат записи оказался слишком древним и нестандартным.
Андрей сообщил об обнаруженной ошибке Шуре, и Шура решил поручить исправление блока младшему Руслану. Руслан по-прежнему продолжал работать над этими проектами, но чем он конкретно занимался, Андрей не знал и особо интересоваться не пытался. А по своей инициативе Руслан практически никогда на связь не выходил, хотя изредка и светился зелёной лампочкой в программе-болталке.
Кроме двух уже знакомых читателю программ, плеера и магнитофона, Андрей познакомился с самой главной программой, используемой в больницах для документооборота и обмена аудиозаписями. В этой книге мы будем для удобства называть эту программу Про-системой. Про-система объединяла в себе программу-магнитофон, плеер, блок управления звуком, блок управления устройствами, кучу вспомогательных блоков и множество других полезных функций. В больницах Про-систему использовали как доктора, так и секретарши. Доктора диктовали с её помощью аудиозаписи, а секретарши слушали эти аудиозаписи и попутно писали соответствующий текст в документы. В Про-системе вели учёт всех аудиозаписей, документов, историю их создания и обработки – в общем, это была самая главная программа автоматизации всей работы больницы.
Кроме системщиков, которые следили за технической частью работы Про-системы, из руководства больницы для контроля её работы назначался специальный администратор. Администратор вёл учёт всех докторов, секретарш, их персональных анкет, регистрировал в системе новых сотрудников и предоставлял им доступ к различным функциям Про-системы. Развёртывалась Про-система, как правило, на центральном компьютере больницы, а пользователи подключались к ней прямо со своих рабочих мест.
Новое задание от немца как раз было связано с качественными улучшениями Про-системы. Заказчик изъявил желание добавить туда блок распознавания речи. Выглядело это, на первый взгляд, фантастично, но системы распознавания речи действительно использовались на практике. Такой блок облегчал работу и докторам, и секретаршам. Доктора могли видеть результат своей диктовки на экране уже через несколько секунд, а то и вовсе по мере диктовки в микрофон в интерактивном режиме. Секретарши же после распознавания речи доктора получали практически готовый черновик документа, и по мере прослушивания записи им оставалось только вносить туда мелкие изменения вроде вставки знаков препинания и исправления орфографических ошибок в словах. Блок распознавания речи разрабатывался и распространялся американской компанией и был, как говорится, заточен под несколько самых популярных западных языков. Он был, естественно, далёк от совершенства и хорошо работал только в условиях, приближенных к идеальным. Доктор должен был обладать хорошей дикцией, иметь чёткую и ясную речь, а блок распознавания при этом ещё не любил сложные и малоизвестные слова. В случае невнятной или зашумлённой речи, особенно на отличных от английского языках, число распознанных блоком слов резко падало. Даже при подключении специализированных медицинских словарей блок распознавания речи очень плохо справлялся с различными акцентами и диалектами.
Изначально это задание хотели поручить Андрею. Он тщательно изучил документацию к блоку распознавания речи и хотел выяснить у Шуры, как именно нужно делать подключение к Про-системе. Шура, в свою очередь, хотел посоветоваться с Ишаковым, но от Ишакова никакой информации по этому вопросу выбить не удалось. В итоге, поскольку Андрей с внутренним устройством Про-системы был знаком очень слабо, а блок распознавания был нужен Блёдеру достаточно срочно, Шура взял подключение этого блока на себя.
Ну а Андрей занялся другим заданием – автоматизацией процесса сборки и развёртывания программ. Про процесс сборки нужно предварительно сказать несколько слов. Как создаётся, например, автомобиль? Отдельно собирается двигатель, отдельно – колёса, отдельно – электрические блоки, отдельно – кузов. Потом всё это скрепляется, сваривается, привинчивается – и получается готовый автомобиль. Ровно то же самое происходит с компьютерными программами. Сначала разрозненные фрагменты текста одной большой программы превращаются в отдельные составляющие блоки. Потом эти блоки собираются в более крупные блоки, те – в ещё более крупные и так далее. Кроме собственно текста программы, в процессе работы используются дополнительные блоки. Это могут быть как собственные разработки, так и коммерческая продукция третьих фирм, которые производят специализированные блоки разного предназначения и распространяют их по соответствующим лицензиям.
Таким же образом происходил и процесс сборки Про-системы. Сначала по отдельности собирались блок управления звуком, блок управления устройствами и блок для редактирования документов. Потом подключались десятки дополнительных блоков для разнообразных функций Про-системы, о которых Андрей ещё даже не догадывался. На понимание процесса сборки это, впрочем, не влияло, подобно тому как от сборщика на заводе не требуется вникать в детали устройства каждого отдельного узла. Дальше к Про-системе присоединялось несколько коммерческих блоков. Важный, в частности, блок, который направлял звуковые данные из памяти программы в отвечающую за звук электронную плату, куда уже непосредственно вставлялись наушники. Затем все эти блоки соединялись между собой, и в итоге получался готовый пакет из нескольких программ, который собственно и представлял собой Про-систему в готовом для распространения виде. Итоговый результат процесса сборки также назывался словом «сборка», а завершалось всё упаковкой всего этого добра в более компактный вид, который в среде компьютерщиков называется архивом, но в этой книге для простоты мы будем использовать слово «упаковка».
Частично процессом сборки занимались специальные коммерческие программы, созданные для различных языков и сред программирования, а частично он осуществляется вручную. На крупных проектах в Корпорации этим мог заниматься, как уже говорилось, вообще отдельный человек и уделять данной процедуре значительную часть своего рабочего времени. Андрею в процессе сборки предстояло автоматизировать именно ручную часть. Он разработал небольшую программку на специальном для процесса сборки языке, которая шаг за шагом строила из более мелких блоков более крупные и выстраивала их в одну большую программу. В итоге все блоки соединялись и получалась готовая для распространения Про-система в виде упакованной сборки. Таким образом, по одному нажатию на кнопку весь процесс сборки и упаковки происходил автоматически, оставалось только откинуться на спинку кресла и наблюдать за мелькающими строками протоколов процесса на мониторе.
Затем сборка Про-системы попадала к клиентам на центральный компьютер больницы и начинался процесс развёртывания. Как располагаются на отдыхе, например, на природе? Распаковывают палатку, забивают колышки, разворачивают, натягивают, устанавливают. Собирают мангал из компактно сложенных запчастей. Откупоривают бутылки, разливают по рюмкам водочку, открывают банку с огурцами, раскладывают по пластиковым тарелочкам еду. Аналогичные процессы происходили и с Про-системой. Упакованная сборка вначале попадает на центральный компьютер, и там её распаковывают. Затем создаётся база данных и заполняется необходимой для работы начальной информацией, другими словами – инициализируется. Если база данных в больнице уже существует и активно используется, создавать её заново не нужно. Зато с ней нужно проделать процедуру обновления, чтобы она соответствовала последним изменениям Про-системы, которые появились в ней с момента предыдущего развёртывания. Другими словами, устанавливается новая версия Про-системы. После развёртывания Про-система подключается к базе данных. Если при этом база данных и Про-система физически располагаются на разных компьютерах, то нужно предварительно проверить, не закрыта ли возможность подключения одного компьютера к другому. Как правило, и база, и Про-система располагались на одном компьютере, но предусмотреть нужно было все возможные варианты. Были и другие нюансы. Например, процесс развёртывания слегка различался в зависимости от разновидности используемой операционной системы. И все эти моменты при автоматизации развёртывания нужно было учитывать.
Андрей разработал ещё одну программку, которая осуществляла почти весь процесс развёртывания самостоятельно, с минимальным участием администратора. Но заключительная часть работы, когда администратор проверял работоспособность Про-системы и выполнение ей основных функций, всё же выполнялась вручную. Андрей знал, что существуют специальные программы, которые позволяют автоматизировать и эти проверки, но в рамках задания это было уже излишеством.
Задание было весьма интересным. Андрей активно применял полученный в Корпорации опыт работы и с базами данных, и с развёртыванием программ. Задалбывая Шуру вопросами, он понял, что до конца всех нюансов развёртывания Про-системы не знал даже Шура, причём как в технической части, так и со стороны требований клиентов. В частности, было не совсем понятно, какие конкретно разновидности операционной системы используются в больницах. В процессе развёртывания этот момент был одним из ключевых, но полная информация по клиентам была недоступна. Тем не менее подавляющее большинство возникающих вопросов Шура решал очень оперативно и практически мгновенно.