Опыт создания прикладного программного обеспечения для кассовых постов на базе операционной системы Linux
На сегодняшний день Linux перестала быть некой удивительно-легендарной операционной системой, пытающейся составить альтернативу MS Windows. Сегодня Linux состоявшаяся реальность, нашедшая свое место не только на WEB и почтовых серверах, маршрутизаторах и Firewall-ах, но и на офисных и домашних рабочих местах. Прикладные же возможности этой операционной системы, вообще, кажутся неисчерпаемыми. К слову сказать в нашем офисе только два компьютера работают под Windows мой и бухгалтера и то, по причине, что 1С плохо живет под Linux.
Что же представляет собой операционная система, выросшая из забавы студента Хельсинкского университета в 1991 году Линуса Торвальдса? Основная идея проекта создать свободную версию компактной операционной системы с открытым исходным кодом. Так с самого начала Linux распространяется на условиях лицензии GPL (General Public License), принятой для программного обеспечения, разрабатываемого в рамках движения Open Source и проекта GNU (GNU’s not UNIX). Программное обеспечение, распространяемое под этой лицензией, можно как угодно дорабатывать, модифицировать, передавать или продавать другим лицам при условии, что результат такой переработки тоже будет распространяться под лицензией GPL. Лицензия GPL делает ПО свободным и гарантирует!, что оно останется свободным. Открытость и доступность исходного кода сыграла в развитии Linux роль, которую переоценить невозможно: уже с середины 1991 года, с версии 0.2 в работу по созданию и тестированию Linux включились тысячи программистов по всему миру. В 1994 году вышла полностью рабочая версия 1.0.
В чем особая привлекательность Linux для прикладных систем?
В первую очередь, видимо, устойчивость системы
Особые механизмы организации страничной памяти, а так же защиты памяти и процессов делают невозможным, столь привычное для пользователей Windows, зависание. За более чем трехлетнюю историю эксплуатации нескольких сотен кассового ПО под Linux, когда подавляющее большинство POS-терминалов эксплуатируются 24 часа в сутки, произошел единственный случай неадекватного поведения операционной системы, да и это происшествие оказалось никак не связанным с работой программного обеспечения: причина крылась в сбоях модуля ОЗУ. Во всех случаях выхода из строя жестких дисков операционная система выдавала соответствующее сообщение на экран и продолжала нормально работать, естественно, с ограничениями на дисковый обмен;
Нетребовательность к аппаратной производительности позволяет успешно применять ПО для управления очень широким перечнем POS-терминалов и фискальных регистраторов. 486-ого процессора с 4-я Мб оперативной памяти оказывается вполне достаточно для нормальной работы кассового узла. Наличие же процессора Р166 и 12 Мб оперативной памяти снимает всяческие ограничения на размер прайс-листа, базу дисконтных карточек и любых прочих информационных массивов.
Реальная (не конкурентная, как в Windows) многозадачность серьезно упрощает построение автоматизированной системы управления магазином или рестораном. POS-терминал может одновременно формировать чек продажи и, никак не влияя на работу кассира, обновлять прайс-лист, инициировать обмен с сервером базы данных продаж и накопительных дисконтных карт, формировать любой иной статистический отчет. Стоит отметить, что все эти процессы происходят на оборудовании с невысокой аппаратной производительностью. Надо ли указывать, что это серьезно снижает затраты на оборудование?! Вышесказанное совсем не означает, что Linux не работает на высокопроизводительном оборудовании. Linux эффективно обеспечивает распараллеливание вычислений на многопроцессорных машинах и построение кластерных систем.
Сетевые возможности и многопользовательский доступ операционной системы Linux создают исключительные удобства при обслуживании техники и сопровождении ПО. Достаточно иметь хоть какой-нибудь физический канал связи, начиная с модема на коммутируемой телефонной линии, и можно производить upgrade программного обеспечения, производить диагностику оборудования или обслуживание жесткого диска, не выходя из офиса или дома. Мы, уже достаточно длительное время, сопровождаем таким образом программное обеспечение в Краснодаре и Москве. Важно, что такая работа в режиме удаленной консоли никак не влияет на работу кассира в это время. Хорошие возможности сетевого взаимодействия для организации множественного доступа и многозадачность операционной системы применяется и при организации работы официантов в ресторане. Все задачи запускаются на POS-терминале кассира/бармена, а официанты получают терминальный доступ с консоли в локальной сети. Поскольку аппаратные требования к терминалу минимальны, в качестве блокнота официанта вполне подходит и КПК, в том числе и с радиодоступом. Такое решение использует еще одно замечательное свойство Linux: совместное использование исполняемых программ. С какого количества терминалов не входили бы в систему пользователи (официанты) при одновременной работе - в память будет загружена единственная копия исполняемого кода приложения для совместного использования. Сеть магазинов, построенная на базе Linux решений, дает пользователю полную иллюзию нахождения всех кассовых аппаратов сети в соседнем помещении. Своевременно и без участия персонала происходят обновления прайс-листов и выгрузка отчетов о продажах, обновление баз по накопительным дисконтным картам и изменение процентных ставок или условий применения скидок.
Портируемость (многоплатформенность) Linux уникальна работает на всех более или менее известных платформах: Intel x86, AMD, ARM, DEC Alfa и AXP , SUN Sparc, Motorola M68000 Atari и Amiga, MIPS, PowerPC. Экспериментальный перенос из любопытства нашего ППП "СОЛО" на КПК c процессором Intel XScale PXA255 дал положительный результат без внесения каких-либо изменений в исходный текст программы, что и было продемонстрировано в Лаборатории Эталонных Образцов при совместной работе с фискальным регистратором ПРИМ-08ТК. Смеем надеяться, что это открывает новые возможности в технологиях торговли крупногабаритными товарами: чек формируется на КПК непосредственно в торговом зале, при завершении достаточно подойти к любому свободному ФР с IrDa интерфейсом (переходники RS232C – IrDa на сегодня не являются ни дорогим, ни дефицитным товаром) и распечатать чек!
В проекте Linux участвуют десятки (если не сотни) тысяч разработчиков по всему миру, ориентируясь на непосредственные потребности пользователей. Система непрерывно и быстро развивается и совершенствуется. Linux документирована так полно, как ни одна из коммерческих операционных систем: имеются книги, справочники, руководства и, что самое важное, полные исходные тексты с пояснениями и комментариями.
Именно этими замечательными свойствами Linux, а также широчайший спектр инструментов для создания ПО под Linux, обусловлен наш выбор операционной системы при разработке ППП "СОЛО", составной частью которого является кассовый модуль.
В своей работе мы используем дистрибутив Debian, который считается одним из самых надежных и педантично проработанных, в качестве СУБД задействованы mySQL и SyBase.
Кассовый модуль ППП представляет широкие возможности по доступу персонала к функциям ККМ. Для различных функций, таких как: возврат товара, изменение количества товара в чеке, сторно товарной позиции, выход из программы при незакрытом чеке, инкассация денежного ящика, X и Z-отчеты и др. - возможно устанавливать различные пароли (уровни доступа): кассир, старший кассир, администратор, руководитель... и т.д. ППП работает с различными комбинациями и сочетаниями скидок и дисконтов - по времени (дате), по типу товара (в т.ч. и отдельный товар), по сумме чека, по цене товара, по дисконтной карте, в т.ч. и с накоплением, возможно назначение исключений - товаров, на которые скидки не распространяются. Можно работать и с ручными скидками, как выбором из списка, так и назначаемыми произвольно. Дисконтная карта может быть предъявлена покупателем в любой момент формирования чека.
ППП позволяет находить товар для формирования чека не только путем сканирования штрих-кода или набором артикула на клавиатуре, но и строить иерархическое дерево поиска по признакам товара, производить контекстный поиск по наименованию или иным характеристикам товара, имеющимся в прайс-листе.
ППП позволяет настраивать способ печати чека: построчный - товар отпечатывается на бумажном чеке сразу после сканирования - серьезно сокращает время на обслуживание покупателя (причем режим работы с дисконтной картой не изменяется) и по сформированному чеку. Есть также настройка количества информации на чеке - только наименование, количество, цена и сумма (Fast - режим), или еще и печать артикула и иных признаков.
ППП имеет модули для работы с процессинговыми центрами Северо-Западного банка Сбербанка РФ и банка «Возрождение», Промстройбанка и Балтийского банка. Возможен динамический выбор процессингового центра в зависимости от эмитента пластиковой карты.
Справедливости ради следует отметить, что Microsoft "отыгралась" на мне за эту статью: в процессе работы над последней страницей система (Windows XP) выдала сообщение о сбое в приложении MS Word с предложением послать сообщение об ошибке в службу поддержки. Такого, а еще и в Office-приложениях, не было очень давно. Мое состояние, если принять во внимание, что я не "сохранялся" ни разу, можете себе представить! Я сразу вспомнил все прелести работы в MS Windows 9*
Тем не менее, вынужден признать! Система отработала "копию экрана" по PrintScreen и после моего отказа посылать куда-нибудь сообщения свернула задачу и запустила ее вновь. В предложенном из восстановленного для сохранения не было последних трех предложений, но они были в "копии экрана"! Более никаких проблем с ОС до конца дня обнаружено не было! Мысли о защите приложений, к счастью, бродят и в умах разработчиков фирмы Microsoft.
В. А.
Родин,
генеральный директор
ООО „ИСТКом“,
Санкт-Петербург
(с) 2003 г.