Началось всё, в далёком теперь уже, 2001 году. К тому времени я пол года работал в Центральном диспетчерском управлении Республики Казахстан, рядовым программистом и ни как не ожидал такого развития событий, которые произошли в дальнейшем. Энергетика всегда требовала наличия самых передовых информационных систем и, так исторически сложилось, что к 2001 году практически всё программное обеспечение было разработано и разрабатывалось своими силами. Одно из направлений — это система сбора и передачи данных, с помощью которой осуществляется диспетчерское управление. Первая такая система для персональных компьютеров была разработана нашими специалистами в начале 90-х годов и работала под управлением операционной системы MS DOS. К моменту описываемых событий верхний уровень уже был переписан для Windows NT, а приёмная часть так и работала под управлением MS DOS. Надо ли говорить что MS DOS не слишком стабильная ОС и приёмные машины (их было две – основная и резервная) «зависали» практически каждый день. У операторов даже была специальная инструкция, по которой они должны были каждое утро переводить приём с одной машины на другую, первую перезагружать.

Вот тогда-то мой тогдашний начальник и предложил мне разработать новую версию приёмной программы под Windows.

Честно скажу, я никогда не любил программное обеспечение производства Microsoft. Это сейчас Windows 2000 с 4-тым сервиспаком работает более или менее стабильно. Тогда же он работал неудовлетворительно. Я высказал начальнику свои сомнения, и тогда он предложил попробовать Линукс. На тот момент я слышал это слово всего один раз и до сих пор вспоминаю с улыбкой при каких обстоятельствах: один из наших работников связи как-то спросил меня мимоходом, не видел ли я новую операционную систему, выпущенную Microsoft под названием Линукс. Вот так вот, ни больше не меньше.

Так что даже не зная о чём идёт речь, я сразу же согласился, после чего мне был вручён диск с Red Hat версии 6.2 и компьютер. На установку первого в нашей жизни дистрибутива Линукс мы потратили несколько дней. В распоряжении у нас был компьютер HP Vectra с Celeron 266 МГц и 32 Мбайта памяти. Подумать только, меньше чем сейчас на моём Zaurus. Но это было одним из условий. Софт должен работать на «слабой машине». Именно на такой машине, с немного увеличенным ОЗУ работала первая версия линукс версии нашего ПО. А затем началось изучение и разработка ПО. На изучение ушло около 3 месяцев. Для начала надо было выбрать и найти с помощью чего вести разработку. С языком программирования никаких раздумий быть не могло. Уже тогда я бесповоротно был влюблён в С++. С копмилятором тоже всё было просто и ясно – gcc. Мы говорим линукс, подразумеваем gcc. Мы говорим gcc, подразумеваем… не пожалуй в обратную сторону выражение не работает. В дальнейшем я никогда не видел и не вижу другой альтернативы gcc, для разработки на Линукс. Сложнее было со средой разработки. Попробовали практически всё что смогли найти. Vim, Midnight commander, Emacs, Kedit, Kylix, Kdevelop, Code-Forge, Anjuta. Текстовые Редакторы – это текстовые редакторы, они не позволяют автоматизировать сборку, вручную же писать Make файлы не слишком интересное занятие. Kdevelop заточен под KDE и autoconf, тоже Anjuta – Gnome плюс autoconf. В результате был выбран Code-Forge. Code-Forge мог генерировать Make файлы и имел сносный редактор. Продержался он не очень долго, потому как появилась прекрасная альтернатива. Спасибо IBM. Я уже точно не помню когда она появилась, мне кажется я всегда её использовал. Конечно же речь об Eclipse.

Кроме того надо было найти библиотеки. Мы было ринулись изобретать велосипед и разрабатывать свои классы, но я вовремя спохватился. Лучше день провести в поиске, затем за 5 минут написать. И так, нам были нужны потоки, работа с разделяемой памятью, набор простых классов, сокеты, очереди сообщений. Выбор пал на ACE_wrappers. Моя жизнь перевернулась дважды. Первый раз её перевернул Линус Торвальдс. Второй раз Дуглас Шмидт. Без этих двух людей моя работа была бы скучная и серая. Ну конечно же – это само собой разумеется std и boost.

И так, на изучение ушло 3 месяца, и значительно больше на разработку. Примерно год была готова первая промышленная версия приёмной машины под Линукс.

Что собственно представляет собой наш софт. Изначально это чтение последовательных портов и запись в них. Чтение большого кол-ва портов. Порядка 15-ти, 25-ти. Для этого нужен мультиплексор . Нам повезло, у нас было оборудование фирмы Cyclades. Они прекрасно поддерживают Линукс. Кроме того мы работали с расширителем Digi и чудным китайским 8-ми портовым расширителем под названием Cronos (На самом деле там используется процессор Oxford Semiconductor). и наконец, сейчас мы используем Moxa, но уже не старый добрый расширитель, а мультипортовый Ethernet сервер. Освоение и подключение каждого из них – это настоящее приключение, по крайней было приключением 5 лет назад. Приключение достойное того чтобы о нём написать, но это тема отдельной статьи. Сейчас стало немного проще, появился udev, но всё равно документации, особенно русскоязычной очень мало.

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

Для визуального отображения информации мы использовали Web браузер и php, запускаемый на apache в сотрудничестве с JavaScript и плагинов для отображения Flash/Svg. Потом перешли на Java, а затем на Qt.

О стабильности Линукс знают все. Помню какой восторг у нас тогда вызывал вывод команды w. Дни, недели, месяцы, а потом и годы бесперебойной работы, без единой перезагрузки. Я понял чего мне не хватало в моей работе. Дружественная, удобная для работы операционная система. Сделанная программистами для программистов. Очень качественное базовое ПО подстёгивает и заставляет писать качественные программы. Удовлетворение от того что система, разработанная твоим коллективом работает.

Вместе с первым успехом пришли и первые проблемы. О нашей инициативе узнало руководство. И если наши непосредственные руководители нас поддержали, то остальные выступили с резкой критикой. Каких только эпитетов мы не слышали в свой адрес и детский сад и зоопарк и обвинения в нарушении корпоративной политики. Началась долгая и упорная борьба за Линукс. Но его было уже не остановить. Он шагал семимильными шагами. К 2003 году, приёмная машина превратилась в полноценную систему сбора и отображения данных. Появилась ретрансляция данных. Наш софт и, соответственно Линукс, был установлен ещё в 2-х филиалах нашей компании и на одной подстанции, где работает до сих пор. В 2005 году, в связи с внедрением нового большого программного продукта для диспетчерского управления, закупленного у иностранной компании (работает он кстати под управлением Solaris), руководство приняло решение избавиться от всех «самоделок» в компании, работающих на Линуксе. С тех пор прошло 2 с лишним года, но наш софт тихо и незаметно продолжает работать. Причина этого – невозможная и невероятная скорость, с которой удалось разработать сложное программное обеспечение, которое прекрасно работает и его не так просто выключить или заменить. И большая заслуга этого принадлежит Линуксу.

А пример тем временем оказался заразительным, Линукс проник на веб сервера. Язык разработки asp был полностью вытеснен php. Затем были взяты базы данных, в частности Oracle переехал на Линукс, MSSQL был заменён на mysql под Линукс. Потом был взят прокси сервер (надо заметить что работал он не на Windows, а на Solaris). Сейчас в каждом из наших филиалов хотя бы одна из машин работает под управлением Линукс.

Но наибольший успех обрела коммерческая версия нашего ПО. Начиная с 2004-го года мы внедрили его на 3-х энергетических объектах. И это тем более замечательно, что это единственная разработка подобного рода в нашей стране, работающая на Линуксе. Клиентская часть нашей системы изначально ориентировалась, в основном, на Internet Explorer. Тогда мы не слишком верили в Линукс на Десктопе. Но, по иронии судьбы, первое внедрение доказало обратное. Из-за супербюджетности проекта нам выделели всего один компьютер, на котором необходимо было запустить и серверную и клиентскую часть. В качестве браузера был использован веб браузер Mozilla. Прошло уже 3 года с момента первого внедрения. Компьютер под управлением Линукса (Там установлена Fedora Core 1) успешно работает. Операторы пользуются не только нашим ПО, но также пакетом Open Office и другими программами.

P.S. Сейчас мы разрабатываем другую систему. По ряду причин на серверах нашей компании она работает под управлением Windows, но разрабатываю и тестирую я её в Линуксе. Но коммерческая версия конечно же будет на Линуксе.

Реклама