Вы находитесь на странице: 1из 101

Уважаемый подписчик!

Данное соглашение подписчика (далее – «Соглашение») является официальным


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

Подписчиками являются определенные ранее в соответствии с договоренностями лица, которым


предоставляется доступ к электронной версии журнала. 

Ваше соглашение с ООО «Синдикат 13» вступает в силу после того, как вы получаете доступ к
информации, содержащейся в новом номере журнала «Системный Администратор»,
предварительно приняв условия Соглашения.

Информация предоставляется в электронном формате PDF, предназначается для использования на


личном компьютере и при условии использования ее только по прямому назначению,
исключительно для личного использования.

Настоящим Соглашением запрещается продавать, переуступать, давать в пользование,


экспортировать или любым другим способом передавать права пользования материалами,
представленными на страницах журнала «Системный Администратор».

Любые текстовые материалы и графические элементы, использованные в новом номере журнала,


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

Все материалы в журнале или его электронной версии в формате PDF, передаваемые подписчикам
с помощью электронных почтовых систем, являются авторскими и охраняются Законом.

Все права на авторские материалы, созданные Редакцией журнала «Системный Администратор»,


принадлежат ООО «Синдикат 13». Права на остальные материалы, принадлежат их
правообладателям.

Все права на торговые марки, торговые знаки, знаки обслуживания и другие элементы
индивидуализации, упоминаемые в информации, указанной в журнале, принадлежат их
правообладателям.

Любая информация, доставленная подписчику путем использования электронных сообщений,


предназначена только для персонального использования.

Любое профессиональное использование информации из журнала, в том числе копирование,


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

Редакция журнала «Системный Администратор»


Вакансия: администратор Linux

№3(136)
март 2014

ZEN Load Balancer


Построение отказоустойчивых сервисов

Настраиваем работу SCCM с WSUS


Управляем обновлениями

Ускоряем запуск 1С
В помощь разработчику

Ruby и многозадачность
Потоки и процессы

Мобильная торговля
Автоматизация работы

10 формул
для эффективного сисадмина

Проектирование Тестирование Изучаем 1С

Концепции моделирования CamStudio в руках тестировщика РАУЗ в 1С – друг или враг?


Подходы к проектированию данных На этапе разработки и отладки ПО Посмотрим на новый режим учета
в документно-ориентированных БД документацию о тестировании будем затрат в 1С беспристрастно,
и в традиционных СУБД отличаются сохранять в форме видеоматериалов основываясь на реальной практике
Итоги конкурса

От Москвы до самых
до окраин. И даже дальше
Конкурс «СА» – ПрофИТ, 2013» завершен, итоги
подведены. Мы сделали это! Нам удалось привлечь
в свои ряды ИТ-специалистов со всей России, а также
из‑за рубежа. Ближнего и дальнего

Нам очень хотелось, чтобы наш конкурс помог выявить мо- Неожиданно, но заслуженно первый приз получила Еле-
лодых, перспективных и талантливых ИТ-специалистов, при- на Мезенцева – инженер-программист из города Асбест
влечь к ним внимание работодателей и открыть перед ребя- (Свердловская область). Мы лишний раз убедились в том,
тами новые возможности в карьере и образовании. что представление о том, что айтишник – мужская профес-
Потому и придуман был такой девиз: «Есть призвание? сия, не вполне верное.
Будет признание!» Огромное спасибо нашим экспертам и членам жюри. Они
Мы объявили об открытии «СА» – ПрофИТ, 2013» 2 сен- создали всю «подводную» часть айсберга – придумали и на-
тября 2013 года. Завершение конкурса планировалось в де- писали задания, а потом перелопатили все ответы.
кабре, но по просьбам участников мы продлили его еще Сердечно благодарим наших партнеров. Компании
на месяц, до 13 января 2014 года. «ИнфоТекс», SuperJob, «Лаборатория Касперского»,
Когда мы подводили итоги, то были приятно удивлены PentestIT , РАЭК поверили в нас и поддержали наш кон-
масштабами географии территорий, где читают «Систем- курс. Мы надеемся на продолжение сотрудничества и на то,
ный администратор». Наши читатели и участники конкурса что к победителям нашего конкурса уважаемые компании
живут не только в самых разных городах и селах России, проявят профессиональный интерес.
но и в странах зарубежья, как близкого, так и далекого. Бело- И самые добрые слова – нашим конкурсантам. Пусть
руссия, Украина, Киргизия, Казахстан, Таджикистан, Латвия, далеко не каждый из вас смог одолеть мудреные зада-
Испания, Америка, Израиль, Норвегия – вот далеко не полный ния, но вы старались, и вам было интересно, значит, в ИТ-
перечень государств, где живут и работают наши читатели. профессии вы – не случайно. А мастерство и опыт – дело
Над заданиями трудились и будущие ИТ-специалисты, наживное.
и специалисты состоявшиеся, и студенты, и люди уже не- Мы окончательно убедились в том, что конкурсы для ИТ-
молодые, и, что интересно, немало представительниц пре- специалистов нужны и важны.
красного пола. И мы обязательно будем проводить их еще не раз.

Наши призеры фикат компании «ИнфоТекс» на обучение по курсу «Администрирование системы


Главным призером конкурса «СА» – ПрофИТ, 2013» стала Елена Мезенцева защиты информации ViPNet».
из города Асбест Свердловской области. Члены нашего жюри отметили, что Еле- Дмитрий Мясников (Пермь), Анатолий Иванов (Чебоксары) и Сергей Бабу-
на не только прекрасно разбирается в ИТ, но и внимательно читает «Системный рин (Челябинск) получают подарочный сертификат компании «ИнфоТекс» на дис-
администратор», что помогло ей ответить на вопросы специальной викторины. танционный курс «Защита персональных данных и другой конфиденциальной ин-
Елена Мезенцева получает недельный туристический тур в Прагу (Чехия), по- формации с использованием шифровальных средств».
дарочный сертификат компании «ИнфоТекс» на дистанционный курс «Защита Михаил Калинин (Москва) и Александра Александрова (Ярославль) награж-
персональных данных и другой конфиденциальной информации с использованием даются подарочным сертификатом компании «ИнфоТекс» на дистанционный курс
шифровальных средств», электронную подписку на журнал «Системный админи- «Администрирование системы защиты информации ViPNet».
стратор» на 2014 год и креативные часы «Управляй своим временем» от компании Виктор Алюшин (Москва), Артем Гаркуша (Таганрог) и Омар Ганиев (Мо-
SuperJob. сква) награждаются подарочным диском компании «ИнфоТекс» с продуктами
Второй приз получил Теймур Хеирхабаров из города Красноярск. Ему вруча- ViPNet Safe Disk, ViPNet PersonalFarewall, ViPNet Password Generator.
ются смешанная годовая подписка на журнал «Системный администратор», фир- Cпециальным призом от компании «Лаборатория Касперского» – про-
менная футболка от «Системного администратора» и настольные игры «Локалка» граммным обеспечением Kaspersky Small Office Security на 5 ПК на один год
и «Аутсорсер», подарочный сертификат компании «ИнфоТекс» на дистанционный награждаются:
курс «Пользователь системы защиты информации ViPNet» и часы «Управляй своим Сергей Яремчук (Украина), Сергей Барамба (Санкт-Петербург), Андрей Би-
временем» от компании SuperJob. рюков (Москва)
Другие призеры конкурса получают электронную подписку на журнал Дипломами компании PentestIT награждаются:
«Системный администратор» на 2014 год, а также креативные часы «Управ- Омар Ганиев, Виктор Алюшин (Москва), Теймур Хеирхабаров (Красноярск).
ляй своим временем» от компании SuperJob. И это далеко не все. А также будет много поощрительных призов от компании SuperJob – часы
Артур Еналиев (Москва) и Евгений Веселов (Ярославская область) смогут «Управляй своим временем».
повысить свою и без того высокую квалификацию, использовав подарочный серти- Подробная информация – на нашем сайте samag.ru.

системный администратор март 2014 1


В номере

08 14 19

КОНКУРС Автоматизация

01 От Москвы до самых до окраин. И даже дальше. 26 Мобильная торговля. Рассмотрим как можно автоматизиро-
Конкурс «СА» – ПрофИТ, 2013» завершен, итоги подведены. вать работу торговых представителей.
Дмитрий Андриенко
СОБЫТИЕ
БЕЗОПАСНОСТЬ
04 FOSDEM 2014. Впечатления о крупнейшей Open
Source-конференции в Европе. Что представляет собой европей- Угрозы
ское сообщество Open Source, чем живет, и велико ли оно?
Денис Силаков 30 Кому уходят СМС? Угрозы для мобильных устройств гораздо
опаснее своих собратьев, созданных для обычных компьютеров.
Администрирование Вячеслав Медведев

Балансировка нагрузки Продукты и решения

08 ZEN Load Balancer. Построение отказоустойчивых 34 BYOD и безопасность: мифы и реальность. Активное
сервисов. Рассмотрим основы балансировки сетевой нагрузки, а также распространение стратегии Bring Your Own Device во всех секторах экономики
практическую ее часть на примере ZEN Load Balancer – продукта с открытым существенно ускоряет темпы «мобилизации» бизнес-процессов.
исходным кодом. Сергей Вахонин
Александр Руденко
базы данных
Управление
Изучаем «1С»
14 Сладкая парочка, или Как настроить работу SCCM
с WSUS. Рассмотрим основные настройки, возможности, достоинства 36 Ускоряем запуск 1С (для разработчика). Несколько
и недостатки SCCM 2012 SP1 по управлению обновлениями. приемов, которые позволяют в десятки раз ускорить время запуска 1С,
Сергей Болдин особенно после обновления конфигурации.
Олег Филиппов
Новый дистрибутив
39 РАУЗ в 1С – друг или враг? Часть 1. Развенчание
19 Microsoft Excel 2013. Работаем быстро и создаем мифов и поиск правды. Взглянем на новый режим учета затрат в 1С
отчеты наглядно. Поговорим о тех преимуществах, которые получили беспристрастно, основываясь на реальной практике.
пользователи, применяющие программу Microsoft Excel из пакета Microsoft Игорь Чуфаров
Office 2013 или Office 365, по сравнению с предшественником – Excel 2010. Разработка
Ольга Кулешова
Проектирование
Бэкап
46 Концепции моделирования MongoDb на примере
22 Резервное копирование для больших и маленьких. разработки социальных игр. Подходы к проектированию данных
Сравним различные типы архитектуры систем резервного копирования. в документно-ориентированных БД и в традиционных СУБД отличаются.
Алексей Бережной Александр Календарев

2 март 2014 системный администратор


В номере

22 74 80

Веб-технологии 72 От каждого – по труду, или Каким сисадминам


больше платят. Исследовательский центр рекрутингового портала
50 Меньше кода, больше дохода. Часть 2. Разработка Superjob.ru изучил предложения работодателей и ожидания претенден-
back-end слоя. Продолжаем изучать веб-фреймворк Tapestry для соз- тов на позицию «Системный администратор UNIX» в Москве и Санкт-
дания Java EE-приложений. Рассмотрим некоторые вопросы, связанные Петербурге.
с разработкой back-end слоя (серверная часть веб-приложения). Этот слой Валерия Чернецова
включает в себя систему для работы с базами данных, инструменты для ау-
дита (логирование и т.д.) и многое другое. Вектор роста
Михаил Ушаков
74 10 формул для эффективного сисадмина. Путь
Особенности языка из падаванов в гуру лежит через шрамы ошибок. Формулы
есть не только в учебниках по химии или физике, но и в ИТ!
56 Ruby и многозадачность. В статье рассматриваются основ- Сергей Барамба
ные средства работы с потоками (threads) и процессами в языке и стандарт-
ной библиотеке Ruby. 77 Чему и как у нас учат. Разговор о преподавании
Иван Шихалев информатики в школе.
Сергей Ильичев
Тестирование
Пятая пара
60 CamStudio в руках тестировщика. Применение
видеофайлов на этапе разработки и отладки ПО. Предлага- 80 Качество программного кода. От выявления
ется улучшение менеджмента ИТ-проекта: на этапе разработки и отладки ПО стилистических огрехов к поиску ошибок. Автоматизированные
документацию о прохождении тестирования сохранять в форме видеомате- инструменты проверки кода не ограничиваются синтаксическим анализом
риалов. и поиском нарушений, связанных со стилем и форматированием.
Анна Сергеева Денис Силаков

Наука и технологии 85 Лабораторная работа. Представление текстовой


информации в ЭВМ. Часть 1. Теоретические сведения о способах
66 Программная реализация редуцированной вычис- представления текстовой информации в памяти ЭВМ, в том числе и кирил-
лительной схемы численного интегрирования системы лицы.
линейных дифференциальных уравнений на основе Владимир Закляков
методов Эйлера.
Жадов А.Д., Востриков А.В., Борисов Н.И., Тумковский С.Р. Ретроспектива

Карьера/Образование 92 Леди-адмирал виртуальных морей. В этом мартовском


номере журнала естественно представить читателю не героя, а героиню
Рынок труда «компьютерного фронта».
Владимир Гаков
70 Вакансия: системный администратор Linux. Про-
должаем публикацию цикла статей в помощь ИТ-специалистам, начинающим Зал славы «СА»
и опытным, которые озабочены проблемой своего трудоустройства.
Игорь Штомпель 96 Гарвардская марка

системный администратор март 2014 3


Событие

Визитка

Денис Силаков, кандидат ф.-м. н., ЗАО «РОСА», член рабочей


группы LSB, старший архитектор, занимается автоматизацией
разработки ОС «РОСА», denis.silakov@rosalab.ru

FOSDEM 2014
Впечатления о крупнейшей Open Source-конференции в Европе
Что представляет собой европейское сообщество Open Source, чем живет, и велико
ли оно? Мне выпала возможность оценить все это, побывав в феврале в Брюсселе
на FOSDEM 2014

История движения свободного программного обеспече- Финансовую поддержку оказали Elasticsearch, Google,
ния (СПО) насчитывает уже три десятилетия – возраст HP, InnoGames, Oracle, O'Reilly, Qualcomm и Samsung. Раз-
по меркам ИТ очень солидный. За это время сторонники меры помощи не раскрываются, но вряд ли она была очень
СПО  сумели создать и развивают достаточно много из- уж велика – запросы организаторов FOSDEM скромны,
вестных продуктов – ядро ОС Linux и системные компо- здесь нет никаких бесплатных фуршетов/банкетов, куль-
ненты  от проекта GNU, браузер Firefox, офисный пакет турных мероприятий или хотя бы сувениров. Даже наобо-
LibreOffice и многое  другое. Несмотря на поддержку ком- рот – всем желающим предлагается лично поучаствовать
мерческих компаний, эти проекты никогда не состоялись в спонсировании конференции, получив за это футбол-
бы без участия огромного числа энтузиастов, занимаю- ку с соответствующей надписью, если вы пожертвова-
щихся их развитием на досуге, в свободное от основной ли 25 евро. Если раскошелились на 50 евро, то вдобавок
работы время. к футболке можно было получить одну из книг O'Reilly в мяг-
Немаловажную роль в развитии СПО играет Интернет, кой обложке, а 100 евро давали право на книгу в твердой
позволяющий объединить усилия разработчиков со всего обложке. Продажей сувениров и атрибутики занимались
света. Однако никакая сеть полностью не заменит лично- на своих стендах и другие открытые проекты и некоммер-
го общения. Для разработчиков СПО из Европы отличным ческие организации – KDE, Gnome, Debian, Free Software
шансом встретиться сразу с большим количеством коллег Foundation, Mozilla и т.д.
является FOSDEM – крупная конференция, посвященная Главным же нефинансовым помощником вот уже кото-
исключительно СПО, ежегодно проводимая в Брюсселе. рый год является Брюссельский свободный университет
Возможность посетить FOSDEM в этом году выпала (Universite Libre de Bruxelles, ULB), на выходные практически
и мне – вместе с коллегами из дистрибутива OpenMandriva, полностью отдающий свои учебные помещения под нуж-
в разработке которого принимают участие и многие сотруд- ды FOSDEM. Университет немаленький (насчитывает бо-
ники РОСЫ, используя его в качестве своеобразной тесто- лее 20 тысяч студентов), и больших лекционных аудиторий
вой площадки для обкатки различных новшеств. у него хватает. А поскольку университет еще и современ-
ный, то в каждой аудитории имеются экран и прочие при-
Организация конференции надлежности для показа презентаций (правда, кроме ком-
В отличие от крупных индустриальных конференций пьютера, докладчикам все-таки приходилось использовать
FOSDEM организуется преимущественно силами добро- свои ноутбуки, и не всегда их системы хорошо дружили
вольцев из рядов сторонников свободного ПО. Посильную с проекторами).
помощь оказывают организации, так или иначе причастные Масштабность университета обусловливает и размах
к миру открытых и свободных продуктов. Основным спон- конференции – доклады шли параллельно в 23 аудиториях,
сором в этом году выступила компания Red Hat, немалую и всего за два дня выступили более 500 докладчиков. Сколь-
техническую помощь оказали Cisco (благодаря которой ко всего человек посетили конференцию, сказать сложно,
все участники были обеспечены Wi-Fi) и Google (видеотран- поскольку вход был абсолютно свободный и не требовал ни-
сляция выступлений). Кстати, организаторы решили прове- какой регистрации. На сайте FOSDEM организаторы скром-
сти небольшой эксперимент и сделали основную Wi-Fi-сеть но пишут «5000+». Но по моим наблюдениям в некоторых
(точнее, ее DHCP-сервер) доступной только по IPv6. Судя аудиториях присутствовали по крайней мере несколько де-
по упорной борьбе, которую вели многие участники при под- сятков человек, а кое-где – и более двух сотен. Так что чис-
ключении к Интернету, далеко не все настольные ОС оказа- ло 5000 может оказаться и заниженным – в кулуарах говори-
лись готовы к такому повороту событий. ли о 7000 посетителей.

4 март 2014 системный администратор


Событие

Самое главное – практически все посетители действи- Тот факт, что новые продукты полностью открыты
тельно имели определенное отношение к свободному и не завязаны на закрытые компоненты типа СУБД Oracle,
ПО, являясь либо участниками разработки, либо пользо- делает их привлекательными и для других разработчиков.
вателями. Конечно, встречались и просто любопытствую- Более того, сотрудники компании на FOSDEM выражали
щие, желающие посмотреть, как выглядят Linux и другие активную заинтересованность в реализации поддержки си-
свободные приложения. Однако доклады были все-таки стем, отличных от Red Hat. В частности, они с энтузиазмом
рассчитаны на разработчиков и людей, участвующих в соз- восприняли предложение попробовать добавить поддерж-
дании и развитии открытых проектов (дизайнеров, популя- ку систем на основе Mandriva – в частности, десктопной
ризаторов и прочих нетехнических специалистов, состав- версии РОСЫ и OpenMandriva (которые также используют
ляющих немаловажную часть сообщества). пакеты формата RPM, но при этом имеют свой собствен-
В итоге конференция получилась крупной, очень на- ный формат метаданных для репозиториев). Собственно,
сыщенной и без «лишних» людей, зашедших просто по- для РОСЫ мы уже сделали пробную поддержку десктопных
глазеть. Зато стоящих докладов хватало – было что послу- версий в Katello и Pulp (для серверной версии доработок
шать. Давайте к ним и перейдем. не требуется, поскольку она основана на Red Hat). И могу
сказать, что особых проблем это не вызвало – компонен-
Red Hat ты нового стека RHN следуют духу открытого ПО, и дора-
Являясь основным спонсором, Red Hat представила доста- батывать их под свои нужды достаточно реально. С точки
точно много презентаций по своим продуктам и процессам зрения функционала все они уже вполне работоспособны,
разработки. Доклады, посвященные развитию существую- хотя еще есть над чем поработать, – например, заявленная
щих и созданию новых продуктов для корпоративного сек- на FOSDEM интеграция Katello и Foreman на данный мо-
тора, вызвали большой интерес системных администрато- мент сводится к наличию ссылки в веб-интерфейсе одного
ров и всех тех, кто имеет отношение к использованию Linux на веб-интерфейс другого.
на предприятиях. В частности, инженеры компании расска- Популярной темой являлись облачные технологии
зывали о будущих направлениях развития Red Hat Network и средства виртуализации – и на стенде, и в презентациях
(RHN) – набора инструментальных средств для управления можно было узнать немало интересного об oVirt, OpenStack,
компьютерным парком компании. Сейчас для развертыва- Xen и сопутствующих продуктах. Интересно, что на стенде
ния полноценной среды управления жизненным циклом Xen демонстрировалась машина с Qubes OS – операцион-
большого набора машин (включая развертывание и обнов-
ление на них ОС, инвентаризацию, мониторинг и прочее)
Рисунок 1. Логотип конференции FOSDEM
используется RHN Satellite Server, который можно развер-
нуть на предприятии и локально. Одним из спорных мо-
ментов во внутреннем устройстве Satellite Server является
использование Oracle в качестве СУБД, что не в лучшую
сторону сказывается на его стоимости.
Назвать Satellite Server полностью открытым решением
сложно, но компания последние годы движется в сторону
сообщества. Код компонентов Satellite Server был открыт
еще в 2008 году; открытая версия, развиваемая с помощью
сообщества, получила имя Spacewalk. В 2012-м в Spacewalk
появилась возможность избавиться от Oracle и использо-
вать PostgreSQL в качестве альтернативы. Однако в обо-
зримом будущем в RHN возможны более радикальные
Рисунок 2. Открытие FOSDEM – и это далеко не все участники! (Фото из галереи FOSDEM
изменения, а именно переход от Satellite/Spacewalk к со- в Google+)
вершенно новым продуктам, изначально открытым и ори-
ентированным на свободные технологии.
Одним из таких продуктов должен стать Foreman [1].
Он сейчас позиционируется как инструментарий для управ-
ления пулом реальных или облачных серверов, поддержива-
ющий все стадии их жизненного цикла. Foreman предостав-
ляет средства развертывания ОС на множество серверов
и интегрируется с системами управления конфигурацией –
такими, как Puppet и Chef, он уже сейчас вполне работоспо-
собен и может быть использован в реальной жизни.
Наряду с Foreman в новую линейку RHN должны во-
йти система управления репозитариями Pulp [2], инстру-
ментарий управления подписками Candlepin [3], а также
Katello [4], интегрирующий все эти компоненты в приятный
унифицированный веб-интерфейс и предоставляющий ряд
дополнительных возможностей по управлению и монито-
рингу большого парка машин.

системный администратор март 2014 5


Событие

ной системой, позволяющей запускать приложения раз- шанс, что мейнтейнер при исправлении одной ошибки
личных типов в изолированных доменах. Домен – факти- может случайно внести в пакет ряд непреднамеренных из-
чески виртуальная машина Xen, так что крах приложения менений (по сравнению с предыдущей версией), обуслов-
из одного домена не приведет к проблемам в остальных. ленных изменением сборочного окружения. Или потра-
Впрочем, пользователю о ВМ знать не обязательно – при- тит некоторое время, разбираясь, как этот пакет вообще
надлежность конкретного приложения тому или иному до- должен собираться. Как следствие, подготовка обновле-
мену можно определить только по цвету его окна. Конечно, ний может немного затянуться, а вместе с обновлениями
для запуска Qubes OS желательно иметь машину помощ- дистрибутива можно получить изменения, не описанные
нее, да и скорость запуска временами оставляет желать ни в каких комментариях. Справедливости ради отметим,
лучшего. Но если вы готовы пойти на такие жертвы ради что вероятность натолкнуться на подобную проблему до-
увеличения безопасности и стабильности, то эта ОС впол- статочно мала, но лучше бы ее не было совсем. В конце
не может быть вам полезна. концов почти все более-менее крупные команды давно пе-
Помимо информации о продуктах для конечных поль- решли на использование специализированных сред сбо-
зователей, сотрудники Red Hat делились некоторыми рок – Open Build Service, Koji, Launchpad или ABF (про ис-
подробностями внутренней кухни компании – рассказы- пользование которой для сборки ARM-порта OpenMandriva
вали о процессах разработки, процедурах тестирования мы рассказывали на FOSDEM вместе с коллегами из этого
и обеспечения качества. Так что разработчики могли по- дистрибутива).
заимствовать что-то для себя – как процессы, так и гото- В завершение рассказа о представленных на FOSDEM
вые технологии для их воплощения в жизнь. Например, дистрибутивах нельзя не отметить предназначенный
инструментарий Nitrate для управления тестами, Dogtail для детей DoudouLinux – ОС с простым интерфейсом, соот-
для автоматизации тестирования приложений с графиче- ветствующим набором приложений и основным разработ-
ским интерфейсом, cwrap для автономного тестирования чиком, который явно знает о нуждах детей не понаслышке
клиент-серверных программ. и сам временами был похож на большого ребенка.
Все рассматривавшиеся инструменты открыты
и бесплатны. К тому же инженеры компании и сами лю- Офисные пакеты…
бят использовать свободные инструменты от других ко- Интересной и разнообразной оказалась секция, посвящен-
манд – например, для инспекции исходного кода они приме- ная свободным текстовым редакторам. На ней рассказыва-
няют Gerrit, а при автоматизации тестирования приложений лось не только о возможностях соответствующих приложе-
с графическим интерфейсом – наработки проекта AT-SPI ний (прежде всего Libre- и OpenOffice), но и особенностях
(Assistive Technology Service Provider Interface), изначально их разработки. Не секрет, что Libre- и OpenOffice являются
предназначенного для обеспечения комфортного взаимо- одними из самых крупных и сложных открытых приложе-
действия людей с ограниченными возможностями и графи- ний. И не удивительно, что создатели средств разработки
ческой среды ОС. под Linux ориентируются именно на эти проекты.
На FOSDEM можно было услышать рассказ одного
Другие дистростроители из разработчиков, отладчика GDB, об улучшениях, реа-
Представительство других производителей дистрибу- лизованных в этом инструменте по запросу участников
тивов Linux выглядело скромно. А жаль, ведь наверняка LibreOffice, а команда Eclipse поведала, как они изменяют
SUSE и Ubuntu тоже могут рассказать немало интересно- свой продукт по аналогичным запросам из OpenOffice. Надо
го об опыте промышленного использования и внедрения сказать, что специфика проектов заключается не только
Linux. Однако Ubuntu своего стенда не имела, а из пре- в размере кода, но и в любви разработчиков к различным
зентаций были только общий рассказ об Unity и пове- новшествам и редко используемым возможностям языков
ствование о взаимодействии с сообществом и обычными и библиотек. В частности, оба проекта активно используют
пользователями. OpenSUSE, наоборот, была представлена C++, включая новшества C++11. Для упрощения отладки
только стендом, а о коммерческой версии дистрибутива такого кода разработчикам GDB пришлось немало потру-
и ее корпоративных функциях даже не у кого было поин- диться; впрочем, судя по активным дискуссиям в кулуарах,
тересоваться. у GDB есть еще много направлений для развития в этой
Debian также был представлен стендом и несколькими области.
докладами. Один из них, посвященный воспроизводимости Что касается новшеств для конечных пользовате-
сборки пакетов под эту систему, на мой взгляд, должен лей, то их тоже хватает – помимо традиционных работ
дать повод задуматься администраторам, использующим по улучшению поддержки различных форматов файлов
Debian в промышленных масштабах. Проблема дистрибу- от Microsoft, разработчики LibreOffice предлагают и неко-
тива и его мейнтейнеров заключается в отсутствии центра- торые изюминки, например, возможность использовать
лизованной сборочной инфраструктуры, которая бы слу- графический сопроцессор при вычислениях в электрон-
жила единственным источником пакетов в официальных ных таблицах LibreOffice Calc. Не забыты и корпоративные
репозиториях. клиенты – современный LibreOffice может использовать
В ситуации, когда каждый мейнтейнер собирает пакеты реестр Windows для хранения пользовательских настро-
на своей машине, на основе одного и того же исходного ек (коих насчитывается несколько тысяч) и предоставля-
кода у разных разработчиков могут получиться несколь- ет администраторам возможность управлять настройками
ко различные результаты. Штатные инструменты Debian свободного офисного пакета на машинах пользователей
решают эту проблему лишь частично. И есть ненулевой посредством групповых политик.

6 март 2014 системный администратор


Событие

Для управления конфигурациями LibreOffice на Linux- Но главное – это общий позитивный настрой всех участ-
машинах докладчики рекомендуют использовать пакеты ников конференции и заряженность на работу, а также
с конфигурационными файлами, а для управления пакета- очень доброжелательная атмосфера и вежливое отноше-
ми на множестве машин рекламировали открытую утилиту ние друг к другу, что, к сожалению, не всегда встречается
Remote Root [5]. Теоретически Remote Root представляет в мире СПО, особенно при удаленном общении.
собой удобный веб-интерфейс, взаимодействующий с кли-
ентскими машинами по SSH. Однако на момент написания ***
статьи (равно как и на момент доклада) скачать инструмент Тот факт, что на организуемое преимущественно энтузи-
с сайта все еще было нельзя. Видимо, авторы еще не соч- астами мероприятие уже не первый год съезжаются не-
ли свое творение достаточно работоспособным, чтобы вы- сколько тысяч человек, активно увлеченных разработкой
ложить его на всеобщее обозрение. Что же, подождем. свободного ПО, наглядно демонстрирует большой интерес
к этой сфере в Европе (подчеркну, что конференция прежде
…и прочее, прочее, прочее всего европейская, участников из других частей света было
Существенный минус наличия большого количества парал- немного). Поражает и количество докладов: более 500 вы-
лельно идущих секций – это физическая невозможность ступлений – очень серьезная цифра, а ведь организаторы
посетить все интересные презентации. Впрочем, большин- одобряли далеко не все поступавшие заявки.
ство презентаций и видеозаписи выступлений можно найти Достаточно контрастно FOSDEM смотрится на фоне
на сайте fosdem.org. отечественного мира СПО, да и ИТ в целом. По масшта-
Помимо рассмотренных выше докладов проходили сек- бу до FOSDEM сильно не дотягивают даже крупнейшие
ции «по интересам»: для разработчиков Java, Ada, Perl российские ИТ-мероприятия, такие как «Форум Тех-
и Smalltalk, для администраторов и пользователей MySQL, нологий» от Mail.ru, Yet another Conference от Yandex
PostgreSQL и BSD. Обсуждалась очередная серия попыток или CEE-SECR. Что уж там говорить о конференциях
решить вопросы междистрибутивного взаимодействия – для сторонников СПО –  о сотнях докладов и тысячах по-
например, предоставить вендорам способ собрать прило- сетителей нам пока можно только мечтать. Будем надеять-
жение, пригодное для работы сразу во многих дистрибути- ся, что в будущем движение  СПО в нашей стране станет
вах (в принципе ничего нового – основные рекомендации только набирать обороты. А пока что приятно отметить,
сводятся к помещению всех имеющихся зависимостей что в аудиториях Брюссельского университета можно было
внутрь приложения). встретить и представителей нашей страны, пусть и немно-
Много внимания уделили нетехническим обсуждени- гочисленных. EOF
ям – рассмотрению юридических вопросов, различных
аспектов взаимодействия с сообществом и т.п. Немало до- 1. Проект Foreman – http://theforeman.org.
кладов имело научный уклон и рассматривало алгоритмы 2. Проект Pulp – http://www.pulpproject.org.
и инструменты для решения вполне практических задач – 3. Проект Candlepin – http://candlepinproject.org.
например, целая секция была посвящена обработке гра- 4. Проект Katello – http://www.katello.org.
фов. Наконец, был стенд Google Summer of Code, активно 5. Сайт Remote Root – http://remoteroot.org.
агитировавший студентов и разработчиков участвовать
в этой программе. Ключевые слова: FOSDEM, СПО, форум.

Рисунок 3. Qubes OS: для каждого рода задач – свой домен Рисунок 4. Сторонники СПО – совсем не обяза-
тельно суровые бородатые админы

системный администратор март 2014 7


Администрирование балансировка нагрузки

Визитка

Александр Руденко, администратор информационной


безопасности, ЗАО «Молдавская ГРЭС», a.rudikk@gmail.com

ZEN Load Balancer


Построение отказоустойчивых сервисов
Рассмотрим основы балансировки сетевой нагрузки, а также практическую ее часть
на примере ZEN Load Balancer – продукта с открытым исходным кодом

Когда нужна балансировка веряют доступность вычислительных узлов. Самый яркий


Что есть балансировка нагрузки? Это распределение вхо- представитель данной группы – это распределение запро-
дящих сетевых подключений между несколькими вычис- сов с помощью DNS, о котором ниже.
лительными узлами. При этом использование аппаратных Round robin DNS (циклический перебор). Пожалуй,
или программных решений, а также применяемый алгоритм самый распространенный метод. Основан на том, что спец-
распределения сути совершенно не меняют. ификация DNS позволяет создавать несколько одинаковых
Но благодаря ей можно решить две достаточно серьез- А-записей с отличными IP-адресами.
ные проблемы. Например, можно завести две записи для одного узла
>> Во-первых, это распределение нагрузки между вычис- srv‑01.company.com с различными IP-адресами, принад-
лительными узлами в ситуации, когда ресурсов одного лежащими разным серверам. Дополнительно должна
сервера недостаточно и вертикальное наращивание быть включена специальная опция (Round robin) на DNS-
его мощности уже невозможно. В таком случае необхо- сервере. В результате при каждом новом запросе записи
димо добавление еще одной вычислительной единицы srv‑01.company.com будут отдаваться разные IP-адреса,
и применение одного из видов балансировки. что приведет к равномерному распределению подключений
>> Во-вторых, обеспечение доступности. Как известно, между узлами.
отказоустойчивость любой системы, будь то реше- Но при всей легкости и дешевизне данного решения име-
ние аппаратное или программное, достигается путем ется ряд ограничений:
дублирования основных компонентов. К сожалению, >> Во-первых, нет никаких методов проверки доступности
не существует абсолютно надежных жестких дисков, узлов. То есть сервер может выйти из строя, но DNS
RAID-контроллеров и прочего оборудования, а совре- все равно будет отдавать его IP-адрес клиентам.
менный уровень программирования не гарантирует от- >> Во-вторых, не учитывается число текущих сессий
сутствие сбоев в ПО. на том или ином узле. Может получиться ситуация, ког-
По этой причине при построении отказоустойчивых сер- да на одном из серверов открытых сессий значитель-
висов дублируется все: сетевые контроллеры, коммутаторы но больше, чем на остальных, при этом подключения
и даже сами вычислительные узлы. все равно будут распределяться равномерно.
Например, нагрузка, создаваемая на один сервер, может >> Ну и, в-третьих, DNS не учитывает, к какому серверу
быть небольшой, но при этом хочется, чтобы выход из стоя был подключен пользователь в прошлый раз. Возмож-
одного или нескольких узлов не привел к простою сервиса. но, что при каждом новом подключении, например,
Поможет балансировщик нагрузки. к терминалу или к веб-серверу, будет открываться
новая сессия на другом узле, что может быть нежела-
Основные виды и техники балансировки тельно.
Все существующие виды балансировки можно разделить Отдельно хочется выделить сервисы типа Amazon
на три глобальные группы, отличающиеся между собой Route 53 [1]. Это облачный DNS-хостинг, позволяющий,
«глубиной» анализа входящих запросов и степенью провер- кроме стандартных функций, указывать «вес» одинаковых
ки доступности серверов. А-записей, что позволяет распределять входящие запросы
более гибко. Кроме этого, возможна интеграция с облачным
Примитивные методы балансировщиком нагрузки Elastic Load Balancing, доступ-
В эту группу входят способы балансировки, которые ника- ным в Amazon Web Services, что позволяет добиться еще
ким образом не анализируют входящий трафик и не про- более тонкой балансировки.

8 март 2014 системный администратор


балансировка нагрузки Администрирование

Штатные средства кластеризации


и резервного копирования
делают работу с этим продуктом
приятной и беззаботной

Также к примитивным методам можно отнести баланси- Балансировка на прикладном уровне (L7)
рование вручную. Суть метода в разделении всех пользо- Динамично развивающийся вид распределения нагрузки
вателей на несколько групп и подключение их к различным на уровне приложений. Такие балансировщики еще назы-
серверам. вают контроллерами доставки приложений. Ориентированы
Например, в организации работает два терминальных на работу с высокоуровневыми протоколами. В основном
сервера одинаковой производительности. Половине поль- HTTP/HTTPS.
зователей на рабочем столе создается ярлык для подключе- Здесь, как и в случае с предыдущим видом, описывают-
ния к первому серверу, а оставшимся – ко второму. Допол- ся правила. При установке соединения на некотором порту
нительно, на случай отказа текущего узла, создается ярлык пакеты перенаправляются на указанные адреса и порты вы-
для подключения к другому серверу, который будет являться числительных узлов. Но при выборе конкретного сервера
резервным. для ретрансляции на него трафика учитываются тип клиен-
Пожалуй, подобный метод применим лишь в неболь- та, URL, содержимое cookie, запрашиваемый контент и не-
ших организациях, причем целью такого распределения которые другие параметры.
является именно отказоустойчивость, а не балансировка. Кроме этого, проверка доступности сервиса на вычисли-
При этом нет необходимости в дополнительном оборудова- тельных узлах выполняется значительно интеллектуальнее.
нии и программном обеспечении, но придется немного по- Например, может запрашиваться некоторый URL и прове-
работать руками. ряться его содержимое.
Еще одной отличительной чертой этого типа от L4 явля-
Балансировка на транспортном уровне (L4) ется то, что серверы в кластере могут быть не идентичными.
Это самый универсальный и распространенный механизм. Например, одни узлы могут поставлять статические данные
Одинаково применим для TCP и UDP-протоколов, соответ- типа фото и видео, а другие серверы доставляют контент
ственно им можно распределять трафик практически любо- с помощью скриптов, HTML и CSS. В таком случае могут
го сервиса. быть созданы правила для каждого типа контента с особы-
На этом уровне во входящих пакетах проверяется лишь ми алгоритмами перенаправления трафика на различные
IP-адрес и номер порта назначения. В случае совпадения группы серверов.
с одним из правил трафик будет попросту перенаправлен В этой категории также существует еще один класс
на указанные серверы с помощью механизма sNAT в уста- профильных балансировщиков типа Citrix NetScaler [2].
новленном порядке. Содержимое пакетов не проверяется. Это решение специализируется на распределении нагрузки
Также нет никаких особых техник проверки доступности и повышении производительности продуктов Citrix (XenApp,
вычислительных узлов. Выполняется простая проверка до- XenDesktop), а также веб-приложений. Кроме продвинутой
ступности адреса и порта. В случае если порт открыт, сер- балансировки, он умеет выполнять компрессию контента,
вер считается доступным и к нему продолжают отправлять- мощное кэширование, обеспечивает шифрование, а также
ся запросы. анализ трафика и его фильтрацию. Это лишь небольшая
По такому механизму работает большинство популярных часть его возможностей, которые заслуживают отдельной
программных и аппаратных балансировщиков, в том чис- статьи.
ле Network Load Balancing (NLB), используемый в Windows
Server. Также к этой категории можно отнести популяр- Почему ZEN
ные нынче облачные сервисы типа Elastic Load Balancing Прежде чем мой выбор остановился на ZEN Load Balancer,
от Amazon, упомянутого выше. я опробовал еще несколько кандидатов, среди которых

системный администратор март 2014 9


Администрирование балансировка нагрузки

были классический HAProxy и не менее известный Linux Конкретно в моем случае пользователей почты и терми-
Virtual Server. нального сервера было немного меньше. Но главной за-
Все трое являются проектами с открытым исходным ко- дачей являлось прозрачное переключение на резервный
дом. Касательно функционала они практически равны. Ос- сервер в случае выхода из строя основного, и с ней Zen LB
новными требованиями были легкость настройки и удобство справляется отлично.
управления.
Во время установки и в процессе настройки дистрибути- Основные возможности Zen LB
ва Zen LB присутствует чувство целостности, все работает >> Классическая балансировка на транспортном (L4)
слаженно и предсказуемо. Именно благодаря этому пункту уровне для протоколов TCP, UDP. Несколько алгорит-
выбор был сделан в его пользу. мов распределения: по кругу, по весу (Weight), по при-
оритету (Priority) или по хешу.
Что собой представляет Zen LB >> Продвинутая балансировка на прикладном (L7) уровне
Это дистрибутив Linux, в его основе лежит переработанный для HTTP/HTTPS.
Debian 6, от которого, по сути, оставлена лишь базовая сис- На обоих уровнях (L4, L7) возможен возврат пользовате-
тема. Добавлены собственный балансировщик и средства ля в открытую сессию.
управления им. Идентификация уникальной сессии клиента возможна
Первая версия была выпущена в 2011 году, текущий по нескольким алгоритмам:
стабильный релиз 3.03. Обновления дистрибутива выходят >> по IP-адресу клиента;
по нескольку раз в год. >> по данным cookie;
Данный продукт представлен в двух редакциях: >> по основному заголовку при базовой аутентификации;
>> Бесплатная версия существует, к сожалению, только >> по запрашиваемому URL;
в 32-битном варианте, не имеет технической поддерж- >> по настраиваемому полю заголовка HTTP.
ки. Возможна SSL-акселерация. В этом режиме Zen LB будет
>> Платная 64-битная версия, стоит порядка 850 долла- выполнять роль SSL-прокси. Это означает, что канал станет
ров. В стоимость также включается техническая под- шифроваться от клиента и до балансировщика, а взаимо-
держка. действие самого Zen LB с реальными серверами фермы бу-
Получается, что единственным техническим ограничени- дет проходить без шифрования.
ем бесплатной версии является предел по производитель- >> Поддерживаются VLAN.
ности и пропускной способности. >> Допускается работа нескольких балансировщиков
У меня не было возможности произвести нагрузочное те- в кластерном режиме.
стирование, но по тем данным, что я нашел в сети, 32-битный >> Есть встроенная система резервного копирования
Zen LB с легкостью справляется с тысячей пользователей и восстановления конфигурации.
Exchange, а также с несколькими сотнями терминальных >> Присутствует система мониторинга и отображения на-
сессий. грузки в виде графиков.

Рисунок 1. Схема работы балансировщика нагрузки

10 март 2014 системный администратор


балансировка нагрузки Администрирование

Также стоит отметить фирменный механизм проверки Как это работает


доступности реальных серверов – FarmGuardian. Эта техно- Базовая архитектура выглядит следующим образом. Zen LB
логия позволяет использовать специальный скрипт для про- располагается между клиентом и сервером. В идеале ре-
верки работоспособности сервисов, нагрузка на которые альные серверы доступны только ему и закрыты сетевым
должна быть распределена балансировщиком. экраном от прямых клиентских подключений. Для получения
доступа к тому или иному сервису пользователю необходи-
Профили балансировки мо знать только адрес балансировщика. Собственно, к нему
По сути, это выбор уровня балансировки. TCP и UDP балан- и направляется весь сетевой трафик.
сируются классически на транспортном уровне, а HTTP со- Далее, в зависимости от отписанных правил, пакеты пе-
ответственно на прикладном. ренаправляются на наиболее подходящие серверы. В каж-
Помимо этого, присутствует вариант L4xNAT. Это та же ба- дом конкретном случае сервер определяется в зависимости
лансировка на транспортном уровне, только тут не учитыва- от выбранного алгоритма.
ются номера портов. То есть трафик принимается на любых Далее вся магия реализуется по средствам механизма
портах и перенаправляется к реальным серверам. Это сво- sNAT, который занимается подменой IP-адресов, а также
его рода труба. Все, что влетело, в том же виде и отправля- портов отправителя и получателя. В результате сервер при-
ется дальше. нимает пакеты, как будто бы от самого балансировщика.
Еще один профиль, не имеющий почти ничего общего Ему же он и возвращает ответ, в котором аналогичным об-
с классической балансировкой нагрузки, – это DATALINK. разом заменяются IP-адреса и пакеты отправляются конеч-
Это новая функция в арсенале Zen LB. С его помощью мож- ному клиенту.
но осуществлять балансировку нагрузки между нескольки- Таким образом, распределение трафика происходит со-
ми каналами связи. вершенно прозрачно для конечных пользователей и серве-
Например, когда организация имеет два канала в Ин- ров, его обрабатывающих.
тернете от различных провайдеров. Будучи в роли шлюза,
Zen LB может прозрачно для пользователей переключаться Если откажет реальный сервер
между несколькими каналами или разделить по ним весь Если по какой-то причине реальный сервер не отвечает
трафик. на указанном порту в течение времени, определенном в па-
Информацию о том, как этим воспользоваться, можно раметре Backend response timeout (пять секунд по умолча-
с легкостью найти в Интернете [3]. нию), то на этот сервер перестанут поступать новые под-
ключения.
Алгоритмы выбора сервера В веб-консоли неотвечающий узел будет помечен крас-
Round-Robin: equal sharing – равное распределение. ной отметкой. Все активные сессии, естественно, разорвут-
Примитивный алгоритм, используемый по умолчанию. ся, а повторное подключение клиента будет уже выполнено
Входящие подключения равномерно распределяются к другому, рабочему, серверу.
между всеми реальными вычислительными узлами. Та- По умолчанию через каждые пять секунд выполняется
кие  параметры серверов, как Weight, Priority, не учиты- повторная проверка доступности отказавшего ранее узла
ваются. (параметр Frecuency to check resurrected backends). Если
Hash: sticky client – привязка клиента к одному серверу. сервер вновь начинает отвечать, то его ввод в эксплуата-
Механизм работает следующим образом. Для каждого цию происходит автоматически.
клиентского IP-адреса создается хеш-строка, которая
помещается в специальную таблицу. В дальнейшем кли- Что собой представляют правила
ент идентифицируется по этой строке, а все принятые В правилах описывается, на каких интерфейсе и порту ожи-
от него пакеты перенаправляются на один и тот же сер- дать подключения и на какие адреса и порты их нужно от-
вер. сылать. Это очень похоже на перенаправление портов – Port
Weight: connection linear dispatching by weight – рас- Riderect. Интерфейсов, на которых ожидаются подключе-
пределение по весу. Этот алгоритм учитывает значение ния, может быть много.
параметра Weight, заданного (или не заданного) для каж- Например, за балансировщиком находятся несколько
дого реального сервера. В зависимости от значения веб-серверов, нагрузку на которые необходимо распреде-
этого числового параметра будут распределены под- лить равномерно. Для этого создается специальный вирту-
ключения. Это дает возможность более гибко настроить альный сетевой интерфейс, которому присваивается про-
балансировку при разных по мощностям серверах. извольный IP-адрес. Это обычный псевдоним (Alias), ничем
Priority: connections to the highest priority не отличающийся от такового в любой системе. Далее гово-
available – распределение по приоритету (параметр рится, что необходимо слушать на этом интерфейсе и в кон-
сервера Priority). Этот алгоритм позволяет постро- кретном порту.
ить кластер по типу активный-пассивный. Например, Например, на том, что используется по умолчанию на веб-
есть три узла. У первого значение приоритета выстав- сервере, – 80. Затем следует список узлов, находящихся
лено 12, у второго – 8 и у третьего – 4. В таком случае за балансировщиком (адреса и порты реальных серверов),
все входящие подключения будут направлены к серверу на которые нужно направлять поступающий трафик. В тер-
с наивысшим приоритетом, то есть к первому. В случае минологии Zen группа реальных серверов, обслуживающих
его отказа трафик будет перенаправляться на следую- один сервис, называется фермой (farm).
щий. И так далее. Все можно увидеть на рис. 1.

системный администратор март 2014 11


Администрирование балансировка нагрузки

Практика Терминальные службы могут работать и на других портах,


Давайте перейдем непосредственно к практике. отличных от стандартных, это не принципиально.
Первое, что нам необходимо сделать, – создать новый
Развертывание виртуальный интерфейс, на котором Zen LB будет прини-
Образ дистрибутива может быть развернут как на физиче- мать подключения к терминальным серверам.
ский сервер, так и в качестве виртуальной машины без ка- Идем в Settings → Interfaces и в строке с нашим фи-
ких-либо сложностей. зическим интерфейсом в колонке Action находим пункт
Требования дистрибутива к оборудованию самые демо- Add  new  virtual network interface. В появившейся новой
кратичные. Подойдет любой Debian-совместимый компью- строке указываем произвольный порядковый номер ин-
тер или платформа виртуализации. Для работы Zen LB до- терфейса и задаем ему IP-адрес. Фактически будет создан
статочно одного сетевого интерфейса. В идеале неплохо, обычный Alias.
чтобы их было два: один для управления, а второй для при- Теперь нужно настроить новую ферму. Ферма – это свое-
ема клиентских подключений. го рода группа реальных серверов и описание того, где бу-
Установка Zen LB ничем не отличается от таковой про- дет приниматься и по какому алгоритму пересылаться тра-
цедуры у любого другого дистрибутива Linux. фик конкретного сервиса.
На первом шаге мастер предложит выбрать язык для про- Итак, идем Manage → Farms и в поле Farm Description
цесса установки. В списке присутствует русский, что зна- Name пишем произвольное описание нашего сервиса.
чительно упростит это мероприятие для неопытных специа- Далее в выпадающем поле Profile необходимо выбрать
листов. тип балансировки:
Единственное, чем выделится дистрибутив, так это тем, >> TCP;
что после выбора языка и страны он автоматически под- >> UDP;
ставляет доступные для этой местности часовые пояса. >> HTTP;
Это, пожалуй, логично, но очень неудобно для тех, кто гово- >> L4xNAT;
рит по-русски, но проживает не в России. >> DATALINK.
Поэтому на последнем шаге установщика необходимо Так как терминальный сервер Windows работает по про-
перейти в пункт «Другие» и из полного списка выбрать нуж- токолу TCP, то его и оставляем. После нажатия Save появит-
ный часовой пояс. ся новый пункт Virtual IP.
После установки управление всеми параметрами балан- Это интерфейс, на котором балансировщик будет при-
сировщика осуществляется с помощью веб-интерфейса, нимать входящие подключения. Выбираем из списка ранее
который, стоит отметить, выполнен качественно, приятен созданный Alias и в поле рядом указываем порт, на котором
глазу и работает быстро и безотказно. будем слушать. Я указываю стандартный (3389), но при же-
лании можно указать произвольный. Тогда клиенты должны
Настройка правил будут использовать при подключении именно его.
Основная часть настроек балансировщика производится Теперь, когда ферма создана, в поле Action новой фермы
из веб-консоли, доступной по HTTPS/81. Учетные данные находим пункт Edit и переходим к списку параметров балан-
по умолчанию admin, и такой же пароль. сировки. Тут и алгоритм, и параметры проверки серверов,
Интерфейс крайне прост. Доступно всего четыре разде- и различные количественные ограничения. Но самое глав-
ла, в одном из которых (About) текст лицензии GNU/GPL, по- ное – это таблица внизу Edit real IP servers configuration – спи-
этому реально полезных остается три. Кратко пробежимся сок реальных серверов.
по каждому. Выбираем Add real server и указываем адрес реаль-
Раздел Settings. Тут общие настройки. Параметры NTP, ного сервера, порт, а также такие параметры, как Max
DNS, смена пароля администратора, резервное копирова- connections, Weight, Priority. В список можно добавить сколь-
ние конфигурации сервера. Наиболее важные пункты здесь: ко угодно серверов.
>> Interfaces – создание виртуальных интерфейсов; Теперь в настройках терминального клиента указыва-
>> Cluster – где можно собрать кластер из нескольких сер- ем адрес нашего виртуального интерфейса и порт, если
веров Zen. он не стандартный, и прозрачно попадаем на один из терми-
Раздел Monitoring. Содержит различные графики и дает нальных серверов из списка добавленных.
возможность просмотреть лог балансировщика.
Ну и, наконец, раздел Manage. Здесь можно загрузить Отказоустойчивость балансировщика
сертификат, подписанный доверенным центром сертифика- Естественно, что в приведенных выше примерах единой точ-
ции, который будет использоваться при работе по HTTPS. кой отказа является сам балансировщик. В случае его отка-
Также тут расположен, пожалуй, главный пункт – Farms. за доступ к сервисам будет невозможен. Поэтому в идеале
Именно здесь указываются адреса реальных серверов, необходимо обеспечить резервирование.
а также описываются правила распределения трафика. Для этого разработчики в дистрибутив Zen LB включены
Для более наглядной демонстрации механизма работы средства кластеризации. Возможно построение двухуз-
приведу пример настройки балансировки для терминальных лового кластера, без каких-либо дополнительных сетевых
серверов Windows. адаптеров и прочих сложностей. Делается это следующим
Допустим, что у нас их два: образом.
>> первый 10.200.77.45 порт 3389; На одном из двух хостов Zen LB в разделе Setings →
>> второй 10.200.77.46 порт 3389. Interfaces необходимо создать новый виртуальный сете-

12 март 2014 системный администратор


балансировка нагрузки Администрирование

вой  интерфейс, как в примерах выше. Это интерфейс уп- стройки и параметры, включая созданные ранее фермы,
равления кластером. По этому адресу всегда будет досту- будут воссозданы на втором хосте.
пен текущий мастер. Управлять кластером в дальнейшем необходимо через
Далее в разделе Setings → Cluster из выпадающего созданный для этого виртуальный интерфейс. При отказе
списка выбираем созданный ранее виртуальный интер- мастера переключение на резервный хост будет выполнено
фейс. Жмем Save VIP, и становятся доступными поля Local в течение одной-двух секунд.
hostname и Remote hostname.
Во втором поле  указываем имя второго хоста Zen LB ***
и его IP-адрес. Подробно изучив существующие сегодня механизмы ба-
Далее вводим на втором хосте пароль суперпользо- лансировки сетевой нагрузки, а также способы обеспече-
вателя (root). После указания пароля необходимо выпол- ния беспрерывной доступности сервисов, протестировав
нить Сonfigure RSA Connection between nodes для установ- на практике возможности программного продукта Zen Load
ки соединения между хостами. Balancer и оценив его работоспособность, могу сказать,
И последним действием выбираем из выпадающего спи- что этот продукт является достойнейшим представителем
ска тип кластера (Cluster type): своего класса. Его бесплатной версии с головой хватит
node1 master and node2 backup automatic failback – многим предприятиям для обеспечения доступности корпо-
это режим, в котором текущий хост будет являться ма- ративных сервисов.
стером, и все подключения будут проходить через него. Удобное и простое управление, а также штатные сред-
Второй же хост будет находиться в резерве и станет ства кластеризации и резервного копирования делают ра-
мастером только при отказе первого, при возвращении боту с этим продуктом приятной и практически беззабот-
в строй которого, он вновь станет резервным. ной. EOF
node1 or node2 can be masters – все так же, как и в пер-
вом варианте. Единственное отличие в том, что резерв- 1. Домашняя страница Amazon Route 53 – http://aws.amazon.com/
ный хост, став мастером, им и останется, даже если route53.
первый хост вернется в строй. Этот вариант подходит 2. Обзор возможностей Citrix NetScaler – http://habrahabr.ru/
в случае, если оба хоста равны по производительности, post/177329.
и кто из них будет мастером в тот или иной момент, не- 3. Балансировка up-линков с помощью Zen LB – http://michael.
важно. bizow.com/zen-load-balancer.
Жмем Configure cluster type, и менее чем через минуту
в поле Cluster status появятся сообщения об успешной сбор- Ключевые слова: отказоустойчивость, балансировка нагрузки,
ке кластера и о доступности его членов. После этого все на- кластер.

Рисунок 2. Интерфейс консоли управления

системный администратор март 2014 13


Администрирование управление

Визитка

Сергей Болдин, системный администратор


НЭК Укрэнерго, bsergey2@gmail.com

Сладкая парочка,
или Как настроить работу SCCM с WSUS
Рассмотрим основные настройки, возможности, достоинства и недостатки
SCCM 2012 SP1 по управлению обновлениями

Обновление ПО парка компьютеров предприятия играет >> обновления могут устанавливаться стороннему софту
важную роль в стабильности и безопасности работы ИТ-ин- совместно с SCUP (System Center Update Publisher) [2].
фраструктуры. Здесь основным помощником является роль Выбрав работу с SCCM, мы отказываемся от управления
WSUS в Windows Server, но такая возможность реализова- контентом с помощью WSUS. Так как Configuration Manager
на и в SCCM, которая хотя полностью и не заменяет WSUS, умеет скачивать обновления и предоставлять их клиентским
но расширяет его возможности дополнительным функцио- ПК, эти обязанности он берет на себя. И тут всплывает один
налом. WSUS находится уже в долгой эксплуатации на пред- важный недостаток – в SCCM отсутствует возможность по-
приятиях, поэтому не будем заострять на нем внимание, лучения метаданных. Поэтому полностью о WSUS забыть
а рассмотрим его совместную работу с SCCM. нельзя, и Configuration Manager «сотрудничает» с ним в этом
направлении. Несмотря на имеющиеся минусы, возможнос-
SCCM vs WSUS. Достоинства и недостатки ти SCCM дают более эффективное управление обновлени-
Основная задача WSUS заключается в подмене сервера ями, нежели WSUS, поэтому разберемся с основными прин-
Microsoft Update. Процесс обновления можно разделить ципами работы и настройками некоторых функций.
на два этапа: получение необходимых данных c Microsoft
Update и предоставление «добытого» материала клиент- Требования к SCCM
ским компьютерам. Однако не все так гладко, как хотелось Для управления обновлениями с помощью Configuration
бы. Например, в данной роли отсутствуют функция поиска Manager необходимо выполнить некоторые условия:
по скачанному контенту (для подробного анализа), а также >> сервер WSUS должен быть версии 3.0 SP2 или выше [3].
установка обновлений без ведома пользователя с примене- Например, для Windows Server 2008 и выше с ролью
нием функции пробуждения компьютера (Wake on Lan). устанавливается версия 3.0 SP1;
В свою очередь SCCM получил немалый функционал, >> необходима консоль администратора WSUS, которая
который расширяет возможности и устраняет слабые сто- является указателем его местонахождения;
роны WSUS. Но, чтобы понять, насколько Configuration >> должна быть включена служба автоматического обнов-
Manager превосходит своего «младшего брата», рассмот- ления;
рим его преимущества: >> наличие двух ролей: SUP (Software Update Point), запу-
>> сотрудники компании имеют возможность принимать скающей WSUS и разрешающей использовать его ка-
участие в обновлениях системы или ПО, при этом про- талог SCCM для сканирования клиентов, а также RSP
стой и удобный пользовательский интерфейс не вызы- (Reporting Service Point), которая отвечает за отчет-
вает у них каких-либо сложностей; ность;
>> поддерживается NAP (Network Access Protection) [1] – >> на сервере должно быть достаточно свободного диско-
набор правил для дополнительной безопасности кор- вого пространства под файлы обновлений. Также нуж-
поративной сети, компьютеры, не прошедшие провер- но учитывать рост папки winsxs [4] на системном диске.
ку NAP, могут направляться на обновление;
>> предоставление загруженных файлов пользователь- Принцип работы
скому ПК в нерабочее время; Сразу отметим, что, отказавшись от управления с помощью
>> функция сохранности устаревших обновлений, чтобы WSUS, ранее созданные GPO использоваться не будут, и не-
в дальнейшем по каким-либо причинам возвратиться которые настройки переопределятся новыми. Итак, для по-
к ним; лучения метаданных первым делом Configuration Manager
>> реализован удобный поиск по скачанному контенту; обращается к WSUS. Каждый сервер имеет свою базу дан-

14 март 2014 системный администратор


управление Администрирование

Возможности SCCM 2012 SP1


предоставляют новый уровень
управления системными
и программными обновлениями

ных, поэтому для актуальности контента между ними проис- и требуемых обновлений. По одобрению системного адми-
ходит синхронизация. А чтобы о новинках узнал и клиент- нистратора SCCM скачивает их (ответственность на роли
ский ПК, SCCM (роль Management Point) предоставляет ему SUP) и подготавливает для дальнейшего распространения
информацию о месте расположения WSUS. Между пользо- (занимается роль Distribution Point), а клиенту сообщает-
вательским компьютером и WSUS происходит сверка вер- ся о необходимости «обновиться». После установки нуж-
сий обновлений. Информация о недостающих данных по- ных файлов клиент снова отсылает отчет в Configuration
мещается в репозиторий WMI, и формируется отчет. Далее Manager. И только теперь системному администратору мож-
он отсылается в SCCM (в Management Point), где и попадает но понять новое состояние софта и операционной системы
в базу. После этого консоль отображает список доступных пользовательского ПК.

Рисунок 1. Список метаданных

системный администратор март 2014 15


Администрирование управление

В SCCM реализовано два типа раздачи скачанных дан- Обновления скачиваются не сразу, чтобы не загружать
ных. Первый происходит в ручном режиме, который при- ненужные файлы, первоначально «добываются» метадан-
меняется в случае небольшого количества обновлений ные, которые представляют собой «ссылку» (их характери-
или при необходимости тщательного контроля каждого стику).
из них. При этом время работы требуется гораздо большее, Получение метаданных происходит при синхрониза-
нежели со следующим типом распространения. Ко второ- ции баз между серверами SCCM и WSUS. Данный процесс
му относится автоматический режим, который не требует происходит автоматически по расписанию либо вручную,
к себе особого внимания и времени. по нажатию кнопки Synchronize Software Updates, кото-
Теперь перейдем от теории к практике. Будем считать, рая находится на панели меню Software Library→ Software
что WSUS уже функционирует, и разберемся с основными Updates→All Software Updates.
настройками Configuration Manager. После этого в списке появятся метаданные с разным цве-
товым оформлением иконок. Зеленые относятся к новым
Подготовка рабочей среды актуальным обновлениям. Оранжевый цвет означает начало
Сначало инсталлируем роль SUP: заходим в Administration → процесса старения. Происходит перекрытие более «свежи-
Sites → Add Site System Role, заполняем необходимые поля ми» файлами, устаревающие удаляются не сразу, а имеют
и активируем Software Update Point. Далее следует настрой- небольшой цикл жизни. Это реализовано для того, чтобы
ка параметров роли, что делается в разделе Configure Site была возможность их сохранить. Черный говорит о полной
Components. На вкладке Sync Settings определяем сервер неактуальности существующих данных (см. рис. 1).
синхронизации (WSUS или Microsoft). В Classification нужно По каждому обновлению, выделив его, можно просмо-
указать все или только необходимые типы обновлений (кри- треть краткую информацию (ID, описание, дату релиза
тические и накопительные, драйверы и сервис-паки и дру- и другое), а по второму щелчку мыши в появившемся окне
гие). Products содержит перечень программных продуктов о нем отобразится исчерпывающая информация.
(Windows 7, Office 2010, Skype и прочие). Затем во вклад-
ке Sync Schedule устанавливаем расписание для синхро- Об удобствах управления скачанным контентом
низации, а в Languages – языковые версии обновлений. Что делать, когда имеется огромное количество записей
Supersedence Rules позволяет переопределить старые об- и требуется среди них найти необходимые? В этом случае
новления новыми, при этом первые будут вычищаться. удобно воспользоваться:
Чтобы пользовательский компьютер узнал и в дальней- >> поиском по одному или нескольким критериям (по дате,
шем получил самые «свежие» файлы, нужно произвести типу, производителю, продукту, языковой версии, мо-
настройку клиентской части. Она включает в себя актива- дели и многим другим), выбор которых появляется
цию агента (значение True) и установку расписания скани- при нажатии на кнопку Add Criteria. А чтобы каждый раз
рования обновлений. Для этого заходим в раздел Software не создавать один и тот же критерий поиска, его мож-
Update, пройдя путь Administration → Client Settings → Default но сохранить (на панели инструментов кнопка Saved
Client Settings. Searches) и в дальнейшем только вызывать;

Рисунок 2. Отчет

16 март 2014 системный администратор


управление Администрирование

>> параметрами отображения, которые несут дополни- можно оставить нетронутыми, а при необходимости внести
тельную и полезную информацию. Например, скача- в них изменения.
ны файлы или нет, установлены ли дата релиза, тип, Заполнив все необходимые данные,мы с помощью цве-
группировка, имя модели и так далее (см. рис. 1). Вклю- товой индикации (статус в виде кружка) можем наблюдать
чение их происходит просто: нужно нажать правой за состоянием процесса раздачи контента: желтый цвет оз-
кнопкой мыши, наведя курсор на панель отображения, начает распространение, зеленый – удачное завершение,
и в списке выбрать нужный параметр. а красный свидетельствует о сбое.
>> группировкой контента для работы только с требуемым
объемом данных. Для этого выделяем найденные мета- Автоматическое распространение
данные и в контекстном меню выбираем пункт Create Устранения ручной работы при раздаче обновлений можно
Software Update Group. добиться с помощью автоматического режима. Создание
Теперь нужно получить обновления. Для этого необходи- такого правила происходит в разделе Software Library  →
мо нажать правой кнопкой мыши на группе и выбрать пункт Software Updates → Automatic Deployment Rules вызовом
Download. По окончании процесса скачивания они будут контекстного меню и выбором пункта Create Automatic
иметь статус Yes. На этом подготовка завершена, перейдем Deployment Rule. В появившемся окне выполняется ряд
к следующему этапу – распространение. тех же настроек, которые производились для ручного режи-
ма, только «все в одном». Таким образом, создается группа
Управление обновлениями вручную для обновлений, пакет и правило их раздачи.
В контекстном меню группы обновлений выбираем пункт
Deploy. Появляется окно, где нужно ввести большое коли- Troubleshooting
чество данных. Рассмотрим самые необходимые парамет- После всех проделанных настроек на сервере SCCM убе-
ры. В разделе General вписываем понятное имя распростра- диться в правильности их работы позволяют отчеты и жур-
нения и выбираем коллекцию компьютеров. В Deployment налы. Отчет создается в разделе Monitoring → Reporting →
Settings особое внимание нужно уделить типу раздачи. Reports → Software Updates. Задав необходимые парамет-
При выборе параметра Required обновления будут уста- ры, получаем исчерпывающую информацию (см. рис. 2)
навливаться по требованию системы или ПО, а Available об инсталляции как по всем, так и по каждому обновлению
означает доступность и инсталляцию по необходимости. в отдельности. Количество отчетов гораздо больше, нежели
После этого настраиваем расписание (раздел Scheduling). в WSUS, и они более наглядны. В журналах Windows Server
Тут нужно иметь в виду такое понятие, как крайний срок можно увидеть только поверхностную (общую) информа-
(deadline time), на основании которого содержимое группы цию серверов WSUS и/или SCCM. Поэтому, пройдя путь
инсталлируется принудительно. Так, в SCCM обновления C:\Program Files → Microsoft Configuration Manager → Logs,
распространяться в открытом виде не могут, они «заворачи- файлы SUPSetup.log, WCM.log, wsyncmgr.log, WSUSCtrl.
ваются» в пакет, создание которого происходит в разделе log помогут увидеть полную картину работы Configuration
Deployment Package, присвоив ему имя и указав путь к ска- Manager относительно обновлений.
чанным файлам. Далее выбираем точку распространения
в Distribution Point и языковые версии в Language Selection. Полномочия пользователя
Некоторые разделы (User Experience, Alerts, Download Сотруднику компании доступна консоль SCCM («Пуск →
Settings, Download Location) с настройками по умолчанию Microsoft System Center 2012 → Software Center»), в кото-

Рисунок 3. Консоль пользователя

системный администратор март 2014 17


Администрирование управление

рой виден перечень необходимых обновлений (см. рис. 3), но сделать, чтобы операция обновления происходила еже-
что позволяет устанавливать их самостоятельно. Весь про- дневно в обеденный перерыв (см. рис. 4).
цесс заключается в фиксации и нажатии кнопки Install Функция Wake On Lan [7] позволяет произвести «про-
при ранее выбранном параметре Available. Если был выбран буждение» компьютера, находящегося в режиме сна
тип Required, то в консоли для пользователя дополнительно или в выключенном состоянии. Данной функцией полезно
появится кнопка Scheduling, которая позволяет составить воспользоваться при необходимости инсталлировать фай-
расписание инсталляции файлов на любое удобное время. лы в нерабочее время. Активация ее происходит в разделе
При этом отсутствуют лишние окна с вопросами и настрой- Deployment Settings фиксацией галочки Use Wake-on-Lan to
ками, что позволяет пользователю быть более уверенным wake up clients for required deployment при настройке рас-
в своих действиях. Если сотрудник не будет устанавливать пространения обновлений для типа Required.
обновления, то они применятся сами на основании крайнего
срока. По завершении работы чаще всего требуется пере- ***
загрузка компьютера, которую можно принять сразу либо Возможности Configuration Manager 2012 SP1 предоставля-
отложить на более подходящий момент. Если установка сис- ют новый уровень управления системными и программными
темных и программных обновлений не требует временных обновлениями, более гибкую и комфортную работу, нежели
рамок, то на этом этапе основные настройки сервера SCCM только развернутый WSUS. А системному администрато-
можно считать завершенными. Однако такие действия могут ру будет удобно воспользоваться данным преимуществом.
привести к замедлению работы компьютеров в течение тру- В результате он получит не только защищенность корпора-
дового дня. Но, подобрав удобное время инсталляции фай- тивной сети, но и повысит свою квалификацию ИТ-специа-
лов, можно предотвратить эту проблему. листа. EOF

Тихо! Идет работа 1. Описание NAP – http://www.winblog.ru/net/1147765128-


В том случае, когда сотрудники компании не принимают уча- 07030805.html, http://www.xakep.ru/magazine/xa/120/116/1.asp.
стия в установке обновлений, раздать новинки компьютерам 2. Описание SCUP – http://technet.microsoft.com/ru-ru/library/
можно и без их ведома. В этом системному администратору bb531022.aspx.
помогают окна обслуживания [6], которые относятся к од- 3. Требования WSUS – http://www.wikiznanie.ru/ru-wz/index.php/
ной из функций Configuration Manager. Они позволяют уста- Wsus_faq.
навливать обновления в заданный период времени и имеют 4. Уменьшение размера папки WinSxS – http://www.outsidethebox.
приоритет (если случаются накладки по времени) перед ра- ms/15272.
ботой без их использования. В ситуации с несколькими ок- 5. Описание и установка WUA 3.0 – http://technet.microsoft.com/ru-
нами обслуживания при отсутствии между ними интервала ru/library/bb932139.aspx, http://support.microsoft.com/kb/949104.
происходит их слияние в одно целое. 6. Описание окон обслуживания – http://technet.microsoft.com/ru-
Настройка приоритетного типа раздачи файлов выполня- ru/library/bb694295.aspx.
ется в свойствах группы компьютеров во вкладке Maintenance 7. Описание Wake on Lan – http://technet.microsoft.com/ru-ru/
Windows раздела Asset and Compliance → Overview → Device library/bb693668.aspx.
Collections. Тут жмем кнопку создания окна обслуживания,
вводим имя, ставим дату старта и начальное/конечное вре- Ключевые слова: роль, метаданные, обновления, синхронизация,
мя, а также определяемся с расписанием. Например, мож- распространение, настройки, параметры.

Рисунок 4. Создание окна обслуживания

18 март 2014 системный администратор


новый дистрибутив Администрирование

Визитка

Ольга Кулешова, МСТ, старший преподаватель центра


компьютерного обучения «Специалист»
при МГТУ им. Н.Э. Баумана, kuleshova@specialist.ru

Microsoft Excel 2013


Работаем быстро и создаем отчеты наглядно
В статье речь пойдет о тех преимуществах, которые получили
пользователи, применяющие программу Microsoft Excel из пакета Microsoft
Office 2013 или Office 365, по сравнению с предшественником – Excel 2010

Microsoft Office 2013 доступен с февраля 2013 года, однако Диаграммы – быстрый способ построения диаграмм
и сегодня не так часто можно встретить пользователя, ра- по выделенному диапазону ячеек.
ботающего в этой версии программного обеспечения. В ос- Итоги – по выделенным данным произвести различные
новном встречается Office 2010 или Office 2007. Возможно, вычисления как по строкам, так и по столбцам: сумма, сред-
это связано и с тем, что Office 2013 требователен к версии нее количество (счетчик), процент от итога, нарастающий
операционной системы Windows и может работать только итог. При необходимости для данных одной таблицы можно
в Windows 7 или Windows 8, а может, и с низкой информиро- делать вычисления как по строкам, так и по столбцам, при-
ванностью о возможностях новой версии, так как многим ка- меняя нужные средства анализа поочередно (см. рис. 1).
жется, что и старые неплохо справляются с поставленными
задачами. Но следует помнить, что нет предела совершенству!
Рисунок 1. Расчет процента от итогов с помощью быстрого анализа

Мгновенное заполнение
Для обработки данных по принципу текстовых функций, таких
как объединение, разбиение, извлечение, можно применять
«Мгновенное заполнение». Пользователем задается образец
дальнейшего заполнения путем ввода данных с клавиатуры
в одну ячейку, и после применения мгновенного заполнения
будут получены результаты в остальных ячейках.
Например, если есть три ячейки, в которых располагают-
ся Фамилия Имя и Отчество, то, задавая в четвертой ячейке
образец «Фамилия И.О.», применим команду «Мгновенное
заполнение», и программа все строчки заполнит аналогич-
но. В большинстве случаев такое заполнение позволяет
Рисунок 2. Фильтр значений рядов и категорий
получить результат быстро и без применения каких-либо
формул. Однако не всегда программа может правильно по-
нять задаваемый образец, тогда придется, как и прежде, ис-
пользовать текстовые функции.

Мгновенный анализ
Быстрый анализ таблиц (экспресс-анализ) – это новая
возможность Excel 2013, которая позволяет с легкостью
увидеть, как будут выглядеть данные, если к ним приме-
нить условное форматирование, спарклайны, диаграммы
или расчет итогов.
Форматирование – возможность применения к выделен-
ным ячейкам элементов форматирования, таких как гисто-
грамма, набор значков, цветовая шкала. Быстро выделять
значения больше указанного, а также первых (наиболь-
ших) 10% от количества данных.

системный администратор март 2014 19


Администрирование новый дистрибутив

Таблицы – автоматически происходит преобразование Новинки в диаграммах


диапазона ячеек в таблице с применением стиля оформле- Реализована новая возможность – просмотр получаемой
ния таблиц, установки кнопок фильтра для удобства выбора диаграммы до момента ее построения. Это позволяет мно-
данных и выполнения сортировки. гим пользователям быстрее сделать выбор для наглядности
Спарклайны – построение миниатюрных графиков, рас- отображаемых данных.
полагающихся в одной ячейке. Позволяют выявить тен- Можно строить диаграммы, как и ранее, выбирая опре-
денции изменения данных, однако не могут заменить пол- деленный вид диаграммы, а можно воспользоваться коман-
ноценные диаграммы, так как показывают лишь общую дой «Рекомендуемые сводные таблицы» и просмотреть,
закономерность, без указания конкретных значений. как будут выглядеть данные в различных графических
Как правило, каждый из типов быстрого анализа под- представлениях. Улучшена возможность создания комбини-
разумевает его использование с параметрами, заданными рованных (смешанных) типов диаграмм – уже на этапе по-
разработчиком. Для более тонких настроек требуется более строения можно выбрать для каждого ряда желаемый тип,
детальное изучение каждого вида анализа данных. а также решить, по какой оси будет идти построение: ос-
новной или вспомогательной. Теперь настройка происходит
Формулы по принципу «все под рукой». Стоит только выделить диа-
В процессе написания формул, выделяя ячейки или диапа- грамму, как в правом верхнем углу появляются три кнопки:
зоны исходных данных, теперь стало легче увидеть данные, «Элементы диаграммы», «Стили диаграммы» и «Фильтры
так как границы ячейки или диапазона выделяются более диаграммы».
толстой линией, а сама область заполняется прозрачным В прошлых версиях для работы с различными элемента-
цветом оттенка границы. ми диаграммы использовались команды с вкладки «Макет»,
в 2013-й версии ее убрали и заменили кнопкой «Элементы
диаграммы». С помощью кнопки «Стили диаграмм», можно
Рисунок 3. Пузырьковая диаграмма с подписями данных
быстро изменить как стиль самой диаграммы, так и выбрать,
какие цвета используются для отображения рядов.
Впервые в диаграммах реализована возможность филь-
трации значений рядов и категорий (см. рис. 2).
Теперь при построении пузырьковых диаграмм средст-
вами программы можно сделать подписи для пузырьков
(см. рис. 3).
Поскольку для построения пузырьковых диаграмм не-
обходимы три ряда данных: значения горизонтальной
и вертикальной осей и значения пузырьков, то ранее
не было возможности отобразить подписи рядов (названия).
В 2013‑й версии Excel реализована возможность указать ди-
апазон ячеек, на основании которых нужно сделать подписи
на диаграмме.

Новинки в таблицах
Преобразуя обычный диапазон ячеек в «Таблицу», можно
получить новый вид фильтра – «Срезы». Это интерактивные
Рисунок 4. Отчет PowerView по данным одной таблицы
фильтры для полей таблицы, которые размещаются на ли-
сте и позволяют быстро и наглядно выполнять фильтрацию
данных, а также показывать связь данных одного поля
(столбца) с другими. Срезы ускоряют и упрощают филь-
трацию данных, но полностью ее не заменяют. Впервые
их можно было встретить при работе со сводными таблица-
ми в Excel 2010-й версии, теперь же их можно использовать
и при работе с таблицами.

Новинки в сводных таблицах


Те, кому выбор подходящих полей при создании отчета ка-
жется трудной задачей, теперь могут воспользоваться ко-
мандой «Рекомендуемые сводные таблицы». Excel анализи-
рует исходные данные и рекомендует несколько способов
подведения итогов – предоставляя их для анализа и позво-
ляя предварительно просмотреть макеты отчетов, чтобы вы-
брать подходящий.
Добавился новый инструмент фильтрации дат – это «Вре-
менная шкала» с возможностью выбора группировки дат
в годы, кварталы, месяцы, дни. Из минусов – можно выби-

20 март 2014 системный администратор


новый дистрибутив Администрирование

В Microsoft Office 2013 новые


возможности делают работу
более удобной по сравнению
с предыдущей версией

рать одно значение или смежные значения, произвольный PowerPivot сначала появился в Excel 2010 как надстрой-
выбор значений невозможен. ка, которую было необходимо дополнительно скачивать
Появился анализ табличных данных с использованием и устанавливать. В 2013-й версии он уже является над-
«Модели данных». Источником может быть любой диапазон стройкой в программе, поэтому его нужно будет всего
данных, но лучше применять именованный диапазон или таб- лишь подключить. PowerPivot позволяет обрабатывать дан-
лицу. Модель данных расширяет возможности анализа. ные из внешних источников, в которых количество записей
Получив результат расчета, порой необходимо его проа- в таблицах значительно превышает возможности по коли-
нализировать по составляющим. В этом случае можно изме- честву строк в Excel. Источников может быть множество,
нить макет отчета самостоятельно или при использовании между ними можно создавать связи, а также выполнять
модели данных применить новый инструмент – «Экспресс- различные вычисления. Сама обработка может показаться
просмотр» (экспресс-тенденции) с детализацией данных. пользователю более сложной на фоне работы с таблицами
Например, получив отчет с суммами продаж по каждому Excel, ибо используется множество подходов, как и при ра-
наименованию, можно быстро выбрать интересующее поле боте с базами данных.
для детализации до региона, дилера и т.д. PowerView – это отчеты (см. рис. 4), которые можно по-
Добавилась операция при обработке с применением мо- строить по данным одной или нескольких таблиц с созда-
дели данных – «Число различных элементов». С ее помощью нием связи; также он дает информацию как в табличном,
подсчитывается, сколько уникальных значений есть в исход- так и в графическом виде. В одном отчете можно построить
ной таблице при каких-нибудь критериях. Например, можно множество вариаций, причем при фильтрации получается
рассчитать по каждому товару, сколько всего единиц было прекрасная визуализация данных. Например, выбирая
поставлено, сколько всего было поставок, а также узнать на линейчатой диаграмме название «набор «Прелесть»,
количество уникальных поставок (заказов) – т.е. заказов можно сразу увидеть в таблицах, сколько каждый клиент
с различным количеством единиц по каждому товару. потратил денег на этот товар, а также суммы продаж в каж-
Использование моделей данных позволяет строить отчеты дом представленном городе. При этом круговая диаграм-
по нескольким моделям (таблицам) с созданием связей в про- ма показывает общие суммы продаж всех наименований
цессе работы в отчете. Нет необходимости предварительно (фон) в каждом городе, и яркий фрагмент в центре – значе-
«связывать» несколько таблиц между собой с применением ния для выбранного товара.
формул, увеличивая как размер самих таблиц, так и размер Такую прекрасную визуализацию данных можно по-
файла. В самой программе Excel при построении отчетов ре- строить в считанные мгновения! Это не может не радовать
ализованы принципы реляционных баз данных – информация пользователя, постоянно тонущего в огромных массивах
хранится в плоских таблицах, которые между собой могут данных, которые требуют наглядности и легкости пони-
быть связаны. Однако в отчетах с использованием моделей мания.
есть и ряд ограничений: нельзя будет применять группировку
полей и создавать вычисляемое поле. ***
Я выбрала Office 2013 сразу, поскольку новые возможно-
PowerView и PowerPivot сти позволяют сделать работу в программе более удобной
В Excel 2013 можно выделить несколько инструментов по сравнению с предыдущей версией, и чем больше ты ра-
для бизнес-аналитики – это PowerPivot и PowerView, кото- ботаешь, тем лучше это понимаешь. EOF
рые позволяют хранить, обрабатывать и наглядно представ-
лять огромные массивы данных. Ключевые слова: Office 2013, Excel 2013, офисный пакет.

системный администратор март 2014 21


Администрирование бэкап

Визитка

Алексей Бережной, независимый консультант, системный


архитектор, специалист по системам виртуализации
и резервного копирования, alexey.berezhnoy@tech-center.com

Резервное копирование
для больших и маленьких
Сравним различные типы архитектуры систем резервного копирования
для предприятий разного масштаба и выдадим рекомендации для построения
и модернизации систем сохранения данных

Очень часто возникает ситуация, когда существующая сис- >> децентрализованная;


тема резервного копирования по тем или иным характери- >> централизованная.
стикам не отвечает нуждам предприятия. Проблема либо Децентрализованная топология представляет собой ар-
кроется в «первородном грехе», то есть в том, что с самого хитектуру, при которой на каждый объект резервного копи-
начала были допущены промахи в разработке архитектуры, рования (например, сервер, содержащий ценные данные)
либо в прошлом система удовлетворяла всем нуждам ИТ, устанавливается полная самостоятельная копия программы
но требуются определенные изменения, чтобы привести для сохранения данных.
в соответствие быстрорастущую инфраструктуру и кон- Прекрасным примеров такой топологии является ис-
сервативную по своей природе систему резервного копи- пользование встроенных средств в операционную систе-
рования. му Windows: ntbackup для Windows Server 2003 и Windows
Основная цель статьи – рассказать о различных типах Backup Service для Windows Server 2008 и выше. Эти реше-
архитектуры и о том, какую топологию лучше выбирать ния предполагают, что предустановленное программное
и на что ориентироваться при модернизации. обеспечение собирает с сервера данные, указанные в на-
стройках задания и создает их копию на удаленном храни-
Еще раз о топологии резервного копирования лище (см. рис. 1).
Топология резервного копирования является системообра- Централизованная схема более сложна. На выделенный
зующим фактором, который накладывает отпечаток на вы- сервер устанавливается центральный программный модуль,
бираемые архитектуру и метод работы. через который осуществляется управление сбором данных,
Как я уже ранее писал в статье [1], существуют два ос- а на объекты, подлежащие резервному копированию, – спе-
новных типа топологии систем резервного копирования: циальные программы-агенты (см. рис. 2). Для хранения мо-

Рисунок 1. Децентрализованная топология резервного копирования Рисунок 2. Централизованная топология резервного копирования

22 март 2014 системный администратор


бэкап Администрирование

Цель статьи – рассказать какую


топологию лучше выбирать
и на что ориентироваться
при модернизации

гут использоваться и файловый сервер, и сетевое храни- серверу напрямую. Кроме того, необходимость избегать
лище. Если ИТ-инфраструктура строится на базе решений одновременной работы большого числа заданий приводит
от Microsoft, то очень хорошим выбором будет файл-сер- к тому, что расчет времени и выявление таких «наложений»
вер на бесплатной UNIX-like ОС, например, Linux или BSD, в расписании заданий вручную при большом количестве
с установленным Samba или FTP-сервером. В этом случае объектов практически невозможно. В этом случае потре-
различие в платформах может послужить дополнительной буется использование некоей единой консоли управления,
гарантией безопасности в случае вирусного заражения что означает переход на централизованную топологию.
или инсайдерской атаки.
Также применяется смешанная топология, когда исполь- Архитектура системы резервного копирования
зуются элементы централизованной и децентрализованной крупного предприятия
составляющей. Обычно это происходит, когда специали- Сейчас мы вместо того, чтобы рассматривать так называе-
зированные агенты не в состоянии обеспечить резервное мый средний или «middle» уровень, сразу перейдем к рас-
копирование данных всех сервисов и приходится использо- смотрению системы резервного копирования уровня боль-
вать некоторые ухищрения. Классическим примером явля- шого предприятия (Enterprise). Будет легче зайти с другого
ются предварительная выгрузка данных базы SQL-сервера полюса, чтобы показать принципиальное различие между
в промежуточный файл и его последующее копирование начальной и конечной ступенью.
обычными средствами резервирования файл-сервера. Естественно, решения масштаба крупного предприятия
принципиально отличаются от начального уровня. Поэтому,
Архитектура для небольших инфраструктур если на малых инфраструктурах часто применяется децен-
У небольших ИТ-инфраструктур малого и среднего бизне- трализованная топология, то на уровне Enterprise – обяза-
са как раз и применяется децентрализованная схема. Чаще тельно централизованная. Нет смысла экономить на лицен-
всего применяют схему с единой точкой сбора данных, на-
пример, некое сетевое хранилище, куда программы резерв-
Рисунок 3. Схема резервного копирования небольшого предприятия
ного копирования, установленные на серверах, складывают
копии (см. рис. 3). Функции администратора резервного ко-
пирования, как правило, ограничиваются установкой и на-
стройкой специализированного программного обеспечения
на серверах, подготовкой сетевого хранилища, вниматель-
ным составлением расписания, чтобы задания по возмож-
ности не пересекались между собой по времени.
У этой схемы есть единственное преимущество: деше-
визна и возможность создания подобной системы резерв-
ного копирования из подручных средств. При этом суще-
ствует немало минусов, таких как трудности организации
транспортировки резервной копии для хранения за терри-
торию предприятия (off-site), а также сложности управления
и масштабирования. Когда объектов станет слишком мно-
го, администратор резервного копирования уже не сможет
управлять данной системой, просто подключаясь к каждому

системный администратор март 2014 23


Администрирование бэкап

зиях программ-агентов резервного копирования, потому «окно бэкапа» (предпочтительное время для запуска зада-
что потеря данных обойдется колоссальными убытками. ний резервного копирования). В рамках Enterprise-решения
Изменяется и сама идеология построения системы. управление резервными копиями, временными носителями
Обычно применяется трехуровневая схема. На самом верх- производится через консоль управляющего сервера. Под-
нем уровне находятся объекты управления системой ре- черкну: все операции, включая такие задания, как форма-
зервного копирования: выделенный сервер со специализи- тирование носителей, извлечение ленточных картриджей
рованным ПО и консолью управления. Копия консоли может из считывающих механизмов и так далее. При этом даже
быть установлена на компьютер администратора резервно- если используемое оборудование позволяет самостоятель-
го копирования для удобства работы. Именно с этого уровня но управлять носителями, делать это не рекомендуется,
обычно начинается установка системы резервного копиро- за исключением аварийных ситуаций. Проблема заключает-
вания по принципу сверху вниз (см. рис. 4). ся в том, что программа управления резервным копирова-
Следующий «слой» – это уровень хранения резервных ние может «не знать» о производимых действиях непосред-
копий. На нем находятся так называемые медиасерверы, ственно на оборудовании и выдавать ошибку или выполнит
или серверы хранения данных. Они используются для трех нежелательные действия, например, сотрет ценную резерв-
целей: подключение внешних накопителей и управление ную копию.
ими, непосредственное хранение резервных копий в режи- На самом нижнем – третьем – уровне находятся програм-
ме файл-сервера, а также в качестве промежуточного, или, мы-агенты резервного копирования. Именно они собирают
как его еще называют, кэш-сервера для временного хране- данные, которые мы хотим сохранить, и заботливо склады-
ния копии перед ее постоянной записью на ленту. Исполь- вают их на системах хранения медиауровня. А само управ-
зование такого сервера ускоряет процесс записи и восста- ление агентами производится опять же из системы управле-
новления данных и позволяет более экономно использовать ния системой резервного копирования, то есть из консоли
предприятия.
Для чего нужен весь этот «огород»? Дело в том,
Рисунок 4. Система резервного копирования крупного предприятия
что при разрастании инфраструктуры администратор ре-
зервного копирования не в состоянии вручную отследить
все задачи, политики, номера носителей и другую информа-
цию касательно всей системы резервного копирования. Вся
эта рутина перекладывается на управляющую часть backup-
системы. В ведении администратора остаются только функ-
ции настройки заданий и мониторинг событий. Все осталь-
ные задачи, включая управление носителями, оповещение
о результатах выполнения заданий или восстановления,
проверки целостности копии (и даже антивирусной провер-
ки для некоторых систем) и так далее, возлагаются на ав-
томатизированный центр управления системой резервного
копирования уровня предприятия.
При такой организации можно легко делегировать полно-
мочия, например, назначив роль оператора резервного ко-
пирования, который может поменять записанные носители
на подлежащие перезаписи, запустить-остановить задание,
восстановить данные из копии, но не имеет прав на полное
управление системой. Таким образом, можно решить мас-
су проблем начиная с тех, что связаны с уходом в отпуск
Рисунок 5. Система резервного копирования среднего предприятия
или на больничный администратора резервного копирова-
ния, и заканчивая освобождением квалифицированных спе-
циалистов для более эффективного использования челове-
ческих ресурсов.
Иногда используются некоторые дополнительные эле-
менты, например, специализированные серверы для раз-
вертывания программ-агентов под ту или иную платформу,
сетевые хранилища, серверы для мониторинга и построе-
ния отчетов, но их присутствие просто расширяет данную
архитектуру в плане удобства использования и повышения
эффективности. В основе так или иначе все равно остается
трехуровневая схема и централизованная топология.
На очень крупных предприятиях встречается распреде-
ленная система резервного копирования, при которой от-
дельные трехуровневые структуры объединены между собой
в одну сеть взаимодействия. При этом один из управляющих
серверов может стать центральным узлом, через который

24 март 2014 системный администратор


бэкап Администрирование

администратор контролирует всю распределенную инфра- плывчатой границы между этими уровнями. Если уход от ре-
структуру. Такая схема применяется при наличии у пред- шений начального уровня происходит, когда администратор
приятия филиалов, а также при использовании резервного резервного копирования начнет терять управление своей
центра обработки данных (ЦОД). В этом случае можно даже системой, то пограничную дату жизненно необходимо-
говорить о некоей четырехуровневой модели управления. го перехода от среднего уровня до крупного предприятия
Но такие «монстры» встречаются нечасто в первую очередь определить довольно трудно. Чаще всего администраторы
из-за высоких затрат на подобную архитектуру. резервного копирования и руководство ИТ-инфраструкту-
рой руководствуются принципами «работает – не трогай»
Архитектура для среднего уровня и «пока вроде все устраивает». К сожалению, ждать, когда
Архитектура среднего уровня предполагает двухуровневую решение само себя исчерпает, чревато переходом систе-
структуру. В отличие от крупных предприятий здесь управ- мы в нерабочее состояние. Чем дольше затягивается ожи-
ление совмещено с медиасервером, а программы-агенты дание, тем вероятнее, что ИТ-ифраструктура останется
так и остаются на своем нижнем уровне (см. рис. 5). без рабочей резервной копии в момент аварии.
На среднем уровне предполагается использовать цен- Помимо всего прочего, такие переходы обходятся не-
трализованную топологию, но часто из-за неполноты дешево и в финансовом плане. В итоге все происходит
или недоработки программных продуктов приходится вы- по принципу «скупой платит дважды».
кручиваться, организуя смешанный вариант. Эти системы В то же время при покупке Enterprise-решения обычно
получили довольно широкое распространение в первую не требуется производить некую массовую закупку лицен-
очередь из-за ошибочной оценки их возможностей в бо- зий для программ-агентов «на вырост», большого количе-
лее отдаленной перспективе. Получается, что на стартовом ства медиасерверов и так далее. Можно вначале купить
уровне внедрение такой архитектуры вводит предприятие ядро системы резервного копирования из управляющей
в ощутимые затраты, что побуждает его держаться до по- части, одного медиасервера и небольшого числа программ-
следнего за уже внедренное решение, даже в ущерб акту- агентов для критичных сервисов, а уже потом постепенно
альности и эффективности. расширять архитектуру по мере роста ИТ-инфраструктуры
На мой взгляд, применение систем резервного копирова- в целом.
ния среднего уровня уместно, когда есть некая уверенность, В этом случае стоимость полноценного Enterprise-
что бизнес не вырастет больше определенного «потолка». решения будет ненамного выше, чем системы среднего
Например, отдельный самостоятельный филиал крупной уровня. Мало того, на данном этапе можно, скрепя сердце,
компании со своим штатом управления и специфичными пойти на компромисс и организовать вначале смешанную
бизнес-процессами. Или торговая сеть в небольшом горо- топологию, при которой копирование критичных сервисов
де вдали от транспортных артерий и крупных населенных выполняли бы специализированные агенты, а некритич-
пунктов. ных – встроенные средства резервного копирования. Глав-
Рассмотрим наиболее перспективный вариант для посте- ное – заложить нормальную масштабируемую архитектуру
пенного развития системы резервного копирования по прин- с учетом дальнейшего развития бизнеса.
ципу «от простого к сложному». Поэтому лучше не искушать судьбу и внедрять систему
уровня крупного предприятия сразу, как только бизнес по-
Проблема выбора при организации системы казал устойчивый рост и вышел из состояния стартапа.
резервного копирования
Разумеется, идеальный вариант – с самого начала приобре- ***
сти специализированное решение резервного копирования В этой статье мы рассмотрели классификацию систем ре-
от известного производителя, с централизованной тополо- зервного копирования по уровням. Очевидно, что рассма-
гией, возможностью делегирования полномочий бэкап-опе- тривать организацию сохранения данных можно только
ратору и так далее. в привязке к нуждам бизнеса и специфике предприятия.
К сожалению, бизнес, находящийся в стадии первона- В то же время нельзя идти на поводу «экономии на спичках».
чального развития, может не располагать необходимыми Своевременная модернизация способна предотвратить бу-
финансовыми средствами для приобретения такой серьез- дущие проблемы, а бесконечное откладывание принятия
ной и дорогой системы. решения о переходе на систему, адекватную растущему
Поэтому чаще всего используют некую систему началь- предприятию, может стать причиной ситуации, когда бизнес
ного уровня с децентрализованной или смешанной тополо- остался без резервных копий и потерял крупные суммы де-
гией, построенную на бесплатном решении. Впоследствии нег из-за необходимости проводить миграцию уже разрос-
планируется переход на систему более высокого уровня шейся инфраструктуры. EOF
развития уже с централизованной топологией.
Если же говорить о выборе системы на момент такой 1. Бережной А. Резервное копирование. Теория и практика. Кра-
модернизации, то я настоятельно рекомендую сразу пред- ткое изложение. //«Системный администратор», №2, 2010 г.,
почесть Enterprise-решение. Да, вот так сразу: от систе- приложение «БИТ» –http://bit.samag.ru/archive/article/1074.
мы резервного копирования начального уровня до уровня 2. Бережной А. Учебный фильм «Некоторые вопросы резервно-
Enterprise. Дело в том, что переход от решения среднего го копирования» – http://www.youtube.com/watch?v=KciuKreyM
уровня до уровня крупного предприятия не менее сложен, 3w&feature=youtu.be.
чем любой другой. При этом нахождение на данном этапе
может затянуться на непростительно долгий срок из-за рас- Ключевые слова: резервное копирование, архитектура.

системный администратор март 2014 25


Администрирование автоматизация

Визитка

Дмитрий Андриенко, инженер-программист,


ООО «Ютел», г. Иркутск, andrienco.dmitry@gmail.com

Мобильная торговля
Рассмотрим на примере компании, занимающейся оптовой торговлей соками,
как можно автоматизировать работу торговых представителей

Компании, занимающейся оптовой торговлей, необходимо Давайте кратко рассмотрим причины, по которым мо-
реализовывать закупленную у производителей продукцию, бильная торговля стала доступна оптовым компаниям:
иначе залежавшийся на складах товар будет приносить за- >> Появление на рынке относительно недорогих смарт-
траты. фонов и планшетов, которыми можно «вооружить»
Классическая схема оптовой торговли подразумевает каждого торгового представителя.
найм менеджером торговых представителей, которые обхо- >> Унификация мобильных ОС и появление доступных ин-
дят розничные торговые точки и предлагают товары в соот- струментов разработки приложения под такие ОС, сей-
ветствии с прайсом. Если клиента удалось уговорить кпить час на рынке имеются три мобильные ОС – это Google
товар, торговый представитель делает заявку, которую при- Android, Apple iOS и в меньшей доле Microsoft Windows
носит оператору, вносящему данные в информационную Mobile.
систему. >> Удешевление доступа в сеть Интернет операторами се-
тей GSM, что дает возможность выходить в Интернет
Обзор рынка и конкурентных преимуществ с мобильного устройства без больших денежных зат-
С развитием информационных технологий некоторые оп- рат.
товые компании начали прибегать к автоматизации, заку- >> Развитие поддержки технологии глобального позицио-
пая программное и аппаратное обеспечение и интегрируя нирования GPS в мобильных устройствах.
их в свою ИТ-инфраструктуру. Совокупность же технологий, >> Повышение общей компьютерной грамотности руково-
программ и аппаратного обеспечения для автоматизации дителей и работников торговли.
называется мобильной торговлей или реже мобильными Рассмотрим преимущества, которые дает мобильная тор-
продажами. говля оптовой компании.

Рисунок 1. Мобильное приложение Рисунок 2. Мобильное приложение Рисунок 3. Мобильное приложение Рисунок 4. Служба обмена данными

26 март 2014 системный администратор


автоматизация Администрирование

>> Просмотр списка цен на товары – экономия на печати Разработчик также заявляет о скорой доступности при-
прайсов, необходимости поддержки их актуальном со- ложения под iOS, но на момент написания статьи у него
стоянии. были проблемы по добавлению приложения в App Store,
>> Просмотр свободных остатков товаров на складе – так что приложение работает только под ОС Android.
нет необходимости уточнять это по телефону. После установки запускаем приложение, вводим лицен-
>> Возможность просмотра задолженности конкретного зионный код.
розничного покупателя. Видим «вкладочный» интерфейс, мы находимся
>> Руководитель продаж может отслеживать на карте пе- на вкладке «заказы», переключения осуществляются
ремещение торговых представителей. сверху на панели вкладок. Состав вкладок можно выбирать,
>> Возможность сократить расходы на операторов, вво- как в настройках мобильного устройства, так и расширения,
дящих заявки клиентов в вашу информационную сис- интегрированного в 1С (см. рис. 1- 3).
тему.
Сегодня мобильная торговля образовала свой неболь-
Рисунок 5. Конфигурация с префиксами
шой рынок, на котором действует несколько компаний, под-
держивающих определенные технологии и схемы. Наибо-
лее популярные:
>> Ассистент торговли от antirius.org.
>> Мобильный менеджер от компании «Автоматизация
бизнеса».
>> TopLine Мобильная торговля.
>> Smartup.
>> Агент Плюс.
>> Агентоид.
>> Айагент.
>> АСУМТ ОПТИМУМ CDC (группа компаний).
>> АСМТ Наполеон.
>> Меркурий.
>> Моби-С.
>> Пан Агент.
>> Флюгер-Продажи.
>> AkiTorg.
>> SalesWorks.
>> ST-Мобильная Торговля (ГК Системные Технологии).
>> PalmOrder.
>> Remote Sales Agent (RSA).
>> «Мобильный Агент» на Android и Windows Mobile от ком-
пании «9Бит».
>> I-MARKT на Android и Windows Mobile от компании
«АЙМАРКТ».
>> Assistex. Облачный сервис мобильной торговли.
Сегодня мы будем рассматривать вариант с внедрением
от «Агент Плюс» [1].

Установка и настройка системы


Обмен данными между информационной системы и кли-
ентом мобильной торговли проходит через сеть Интернет
по специальному протоколу, использующему сетевой порт
TCP/5555.
Для корректного обмена необходимо настроить роутер
и брандмауэр, то есть пробросить порт 5555 и открыть со-
единения до сервера с установленной информационной
системой.
Рисунок 6. Новое меню в интерфейсе
Также требуется реальный статический IP-адрес для сети,
который будет вводиться в настройках на каждом мобиль-
ном устройстве.
Теперь устанавливаем на каждое мобильное устройство
приложение от «Агент Плюс». Распространяется оно в виде
*.apk-файла. Это можно сделать через диспетчер файлов,
предварительно скопировав его на внутреннюю память
или SD-карту.

системный администратор март 2014 27


Администрирование автоматизация

Подробные скриншоты мобильного приложения можно Служба прослушивает порт 5555, так что напоминаю вам
посмотреть на сайте «Агент Плюс» [2], разработчик также еще раз, необходимо создать соответствующие правила
предоставляет демоверсию мобильного приложения с огра- для брандмауэра.
ниченным функционалом, ее также можно скачать с сай- Настройка правил производится через панель управ-
та [3]. ления (см. рис. 4), в пункте «Папка обмена» указываем от-
На серверную часть устанавливается специальное при- дельную папку, в нее будет происходить выгрузка и загрузка
ложение «Агент Плюс: Служба обмена данными», которое файлов обмена для каждого мобильного устройства в фор-
можно скачать с [4], после установки у нас появляется уста- мате xml.
новленная служба, которая будет отвечать за обмен данны- Интеграция с информационной системой, в нашем слу-
ми с мобильными устройствами. чае – «1С:Предприятие 7.7 конфигурация. Комплексная вер-

Рисунок 7. Настройка параметров приложения

Рисунок 8. Настройка торговых агентов и представителей

28 март 2014 системный администратор


автоматизация Администрирование

сия 4.5», происходит путем установки расширения в теку- Для обмена запускаем обработку «Обмен данными
щую конфигурацию. с мобильным устройством», которая находится в пункте
Чтобы выполнить процесс установки, необходимо с сай- «Меню  → Агент Плюс → Обработки → Обмен данными»
та разработчика [4] скачать тестовую конфигурацию, взять (см.  рис. 9).
*.md-файл (для 1С 8 *.cf) и через функцию «Сравнить/ Нажимаем на кнопку «Выгрузить», и начинается выгруз-
Объединить» в режиме конфигурации добавить объекты ка данных в формате xml, файлы попадают в папку обмена
от «Агент Плюс», в моем случае они имеют префикс кпк в подпапку агента.
(см. рис. 5). Для загрузки данных от мобильных приложений необхо-
Разработчик готовит расширение под конфигурацию димо нажать на кнопку «Загрузить», после окончания про-
«Управление торговлей для платформы 8.2» и «Торгов- цесса в мобильном приложении произвести настройки об-
ля и склад для платформы 7.7», но данные модули можно мена данными.
успешно интегрировать и с другими, например, комплекс- Для этого вызываем контекстное меню, переходим в пункт
ной для 7.7, как в нашем случае, сделав небольшие дора- настройки, настройки обмена данными, вводим внешний ре-
ботки. альный IP-адрес, порт и сохраняем.
После интеграции запускаем 1С в режиме предприя- Далее загружаем данные в мобильное устройство пунк-
тия и видим новый пункт меню в интерфейсе (см. рис. 6), том «Загрузить» (в мобильном приложении), процесс может
для платформы 8.1 и «Управления торговлей версии 10» продолжаться до 10 минут в зависимости от скорости кана-
меню будет выглядеть примерно так же, для «Управления ла и размера базы данных, для выгрузки данных нажимаем
торговлей 11 на платформе 8.2» с управляемыми формами пункт меню «Выгрузить».
это будет отдельная плитка.
Настройка расширения мобильной торговли начинается ***
с пункта «Настройка параметров для мобильного приложе- Технологии автоматизации в большинстве решений
ния» (см. рис. 7). Пристальное внимание нужно обратить по мобильной торговле не отличаются от приведенной
на настройки обмена, где требуется указываем порт и IP- выше, как и, собственно, процесс настройки.
адрес приложения обмена данными, которое мы устанавли- Развертывание системы трудоемкое, и требует от специ-
вали ранее. алиста знаний в области системного администрирования,
Остальные настройки не так важны для работоспособно- программирования, а также принципов торговли для кон-
сти системы, они уточняют, какие данные выгружать из ин- сультации заказчика и обучения работе с системой торго-
формационной системы, а какие нет. вых представителей. EOF
При изменении настроек необходимо каждый раз гене-
рировать файл для службы обмена, это делается с помо- 1. Компания Агент Плюс – http://www.agentplus.ru.
щью обработки «Генерация файла настроек для «Агент 2. Скриншоты мобильного приложения – http://www.agentplus.ru/
Плюс СОД», чтобы открыть ее, переходим в «Меню → agentplus/android/screens.
Агент Плюс → Обработки → Генерация настроек для Агент 3. Демоверсия мобильного приложения – http://www.agentplus.ru/
Плюс СОД». downloads/apmtdemo.
После этого в папку обмена добавляется требуемый нам 4. Агент Плюс: Служба обмена данными – http://www.agentplus.ru/
xml-файл с настройками. downloads/#ms.
Теперь необходимо ввести в систему все мобильные уст-
ройства, на которые мы установили приложения от «Агент Ключевые слова: мобильная торговля, обмен данными, мобильные
Плюс» и которые закрепили за торговыми представите- приложения.
лями. Для этого переходим в пункт «Меню → Справочни-
ки  → Агенты» и добавляем всех торговых представителей
Рисунок 9. Обработка – обмен данными
(см. рис. 8).
Со всех мобильных устройств вам нужно собрать иден-
тификаторы, без них обмена данными не будет, чтобы
это сделать, переходим в настройки мобильного прило-
жения и выбираем пункт «Информация», там выписываем
идентификатор.
Выглядит он примерно так: 1C9B5F71-2E9D-0976-3836-
353530393031, далее все просто: в настройках переходим
в пункт «Мобильное устройство» и создаем для каждого
агента мобильное устройство с соответствующим иденти-
фикатором.
Теперь для обмена необходимо произвести настрой-
ку-выгрузку по «Фирмам», «Типам цен», «Номенклатуре»
и «Складам», для этого переходим в «Меню → Справочни-
ки  → Настройки фирм», указываем в поле таблицы «Вы-
гружать» галочку для нужных позиций. На этом базовые на-
стройки закончены, можно переходить к процессу обмена
данными.

системный администратор март 2014 29


Безопасность угрозы

Визитка

Вячеслав Медведев,
старший аналитик отдела развития компании «Доктор Веб»

Кому уходят СМС?


Разговоры о том, что Интернет все больше входит в нашу жизнь, наверное, уже давно
набили оскомину. Но, хотим мы этого или нет, это реальность

Возможность получения нужной информации, легкость об- не представляют себе масштаб проблемы – но это особый
щения, покупки в один клик, управление своими финанса- разговор) и игнорируют даже элементарные требования
ми – никто не будет отрицать, что все это не только удобно, безопасности и осторожности при работе с веб-ресурсами,
но и приятно. Но вот беда: не все, что продается под видом позволяющие избежать серьезных проблем при действиях
меда, действительно им является. Рост удобства не сопро- в Интернете или в процессе обмена данными со своими
вождается ростом безопасности. Статистика безжалостна: знакомыми. В итоге мы получаем большой интерес крими-
большинство сайтов и приложений так или иначе содержит нальных структур (именно структур, а не только отдельных
уязвимости. хакеров) к мобильным устройствам.
Вредоносные программы для платформы Android – Согласно статистике основное внимание вирусописа-
это не миф. При этом можно утверждать, что угрозы для мо- телей направлено на Android – число вредоносных про-
бильных устройств по целому ряду причин гораздо опаснее грамм для других мобильных ОС исчисляется единицами.
своих собратьев, созданных для обычных компьютеров. В 2013 году количество вредоносных программ для Android
>> Операционные системы для мобильных устройств, увеличилось на 122%. А по сравнению с уровнем распро-
создававшиеся изначально исключительно для мак- странения мобильных угроз в 2010-м, когда первые вре-
симально удобного личного пользования и работы доносные приложения для Android только появились, рост
на достаточно слабых аппаратных конфигурациях, составил 9280% (см. рис. 1).
не имеют в своем составе развитых средств без- На графике можно увидеть любимую всеми состави-
опасности – возможности разделения прав доступа телями отчетов параболу – так что велика вероятность,
к различным объектам, ограничения по установке при- что в 2014-м количество вредоносных программ увеличит-
ложений, иных ограничений из обязательного для без- ся более чем в два раза: период поиска, когда вирусопи-
опасности списка родительского контроля. сатели нащупывали возможности для внедрения троян-
>> Смартфоны (да и многие планшеты) снабжены виде- цев в мобильные устройства, давно миновал, и наработки
окамерой, микрофоном, средствами позиционирова- прежних лет сейчас активно используются на практике.
ния. Это позволяет злоумышленникам контролировать При этом злоумышленники не только воспроизводят
каждый шаг жертвы и следить за ее личной жизнью – старые идеи: идет активный поиск новых путей отъема де-
большинство домашних компьютеров не дают таких нег. Число семейств вредоносных программ достигло 331 –
возможностей для слежки. Более того, опасность мо- за прошедший год их рост составил 185%. Выше мы уже
жет предоставлять даже аккумулятор: еще в 2011 году говорили, что мобильные телефоны дают хакерам много
исследователь Чарли Миллер сообщал о возможно- возможностей, но большая часть троянцев покушается
сти перепрограммирования аккумуляторного микро- исключительно на денежные средства – случаи использо-
контроллера в целях перегрева батареи. вания вредоносных программ в террористических целях
>> Как правило, смартфоны подключаются к сети Ин- или ради шантажа если и есть, то исчисляются единица-
тернет (а для чего они еще нужны?), не имея даже ми. И самым популярным семейством троянцев является
средств защиты, которые считаются необходимыми Android.SmsSend (он же Trojan-SMS.AndroidOS в термино-
для обычных компьютеров, и это тоже не усиливает логии другого отечественного разработчика антивирусных
их безопасность. решений), занявший без малого половину рынка мобиль-
Добавим к списку проблем и то, что пользователи ных угроз (см. рис. 2).
устройств, как правило, не являются специалистами по без- Троянцы появившегося еще в 2010 году семейства
опасности (а специалисты по безопасности, к сожалению, Android.SmsSend предназначены для скрытой отправки

30 март 2014 системный администратор


угрозы Безопасность

дорогостоящих СМС-сообщений на короткие номера, рас- Заметным событием, связанным с троянцами Android.
сылки сообщений по адресной книге и подписки пользо- SmsSend в прошлом году, стало обнаружение в сентябре
вателей на платные контент-услуги. В отдельных случаях самого крупного за последнее время мобильного ботнета,
троянцы SmsSend могут проторить дорогу иным угрозам, состоящего из Android-устройств. По оценкам специалис-
перенаправляя пользователя на зараженные веб-страницы тов компании «Доктор Веб», в состав бот-сети входило
или внедряя в устройство другие вредоносные программы, более 200 тысяч смартфонов и планшетных компьюте-
в том числе утилиты скрытого удаленного управления. Сей- ров. Для заражения мобильных устройств использовалось
час в семейство входит 1377 модификаций. сразу несколько СМС-троянцев, которые маскировались
Троянцы могут распространяться как в виде самостоя- под инсталляторы легитимного программного обеспече-
тельных приложений (.apk), например, под видом обновле- ния, такого как веб-браузеры и клиенты для работы с со-
ний (как правило, браузера или флеш-плеера) или инстал- циальными сетями (см. рис. 3).
ляторов известных приложений, так и внутри бесплатных Основным предназначением Android.SmsBot является
легитимных программ, модифицированных злоумышлен- все та же несанкционированная отправка премиум-сооб-
никами. После запуска зараженных приложений пользо- щений в целях получения злоумышленниками незаконного
ватель получает ожидаемый функционал, поэтому неже- заработка. Однако в данном случае параметры работы тро-
лательные действия, такие как отправка СМС-сообщений, янца не указываются заранее в конфигурационных файлах
обычно остаются незамеченными. или в самом коде – SmsBot получает указания к действию
В качестве примера обертки, в которую заворачивались непосредственно с принадлежащего киберпреступникам
для маскировки Android.SmsSend, можно привести попу- управляющего сайта, что в значительной мере расширяет
лярные мультимедийные проигрыватели, сборники изобра- их возможности. Многие версии троянцев Android.SmsBot
жений (в этом случае число загрузок превысило 12 тысяч!), способны по команде выполнять и другие действия, на-
а также приложения для составления диет и гороскопов. пример, загрузку прочих вредоносных программ, удале-
При запуске вредоносные приложения предлагали пользо- ние определенных СМС, сбор и отправку информации
вателям получить доступ к запрошенному контенту, после о мобильном устройстве на удаленный сервер, соверше-
чего извлекали скрытых внутри самой программы троян- ние звонков. Отдельные модификации могут запрашивать
цев и начинали процесс их установки. состояние баланса мобильного счета с помощью USSD-
На развитие семейства Android.SmsSend (как и иных или СМС-запросов и в зависимости от результата получать
вредоносных программ) сильно повлияла коммерциали- от управляющего сервера указание отправить на номер
зация рынка киберпреступности. Зачастую вредоносные сообщения определенной стоимости.
файлы создаются с учетом конкретных интересов зло- Возможность перехвата СМС-сообщений роднит SmsBot
умышленников – например, они могут собирать данные с более опасными программами, например, Android.Spy.
жителей определенного региона. Так, маскировка под ле- Такие приложения либо имитируют интерфейс настоящих
гитимные программы все еще остается наиболее популяр- мобильных банковских клиентов и обманным способом за-
ным методом на территории Китая, о чем свидетельствует ставляют пользователей предоставить свои персональные
появление в 2013 году целого ряда модификаций троянцев, данные, либо устанавливаются под видом важных про-
угрожавших китайским пользователям и, по сообщениям граммных обновлений или сертификатов и в дальнейшем
в сети Интернет, попавших и в Россию. позволяют злоумышленникам перехватывать все входящие

Рисунок 1. Динамика роста количества описаний Android-угроз в вирусной базе Dr.Web Рисунок 2. Наиболее многочисленные Android-угрозы согласно объему записей вирусной
в период с 2010 по 2013 год базы компании «Доктор Веб»

системный администратор март 2014 31


Безопасность угрозы

СМС-сообщения, в которых может содержаться различная запуска вредоносного приложения пользователю демон-
секретная информация, например, одноразовые mTAN- стрируется лицензионное соглашение, в конце которого
коды систем «Банк-Клиент», что в свою очередь дает воз- расположена незаметная гиперссылка на правила, где
можность сокрытия или модификации СМС-подтверждений говорится о том, что при согласии с предложенными ус-
о совершении платежа или перевода. ловиями с устройства будут отосланы СМС на короткие но-
В известных случаях вредоносная программа распро- мера  и с баланса пользователя будут списаны денежные
странялась по следующей схеме: потенциальная жертва, средства.
пытавшаяся воспользоваться услугами банка через веб- Троянец Android.SmsSend мог проникать к жертве с по-
браузер на уже зараженной машине, получала уведомле- мощью Android.Androways.1.origin, обнаруженного в ми-
ние о необходимости авторизации по номеру мобильного нувшем апреле. Данный вредоносный модуль был создан
телефона, для чего на мобильное устройство предлага- злоумышленниками под видом вполне обычной рекламной
лось установить специальное приложение, размещенное системы, демонстрирующей разнообразные информаци-
в официальном каталоге Google Play. Это приложение онные сообщения и позволяющей создателям игр и при-
представляло собой банковского троянца для мобильной ложений зарабатывать на своих программных продуктах,
платформы Android. интегрируя в них данный модуль. Как и многие легальные
Мало просто создать вредоносную программу, ее нужно рекламные платформы, Android.Androways.1.origin был
внедрить на мобильное устройство жертвы. В случае с мо- способен демонстрировать push-уведомления, выводи-
бильными приложениями еще совсем недавно для этой мые в панель состояния операционной системы, однако
цели жертве нужно было разлочить устройство, теперь в этих сообщениях нередко отображались заведомо лож-
в этом нет необходимости: вредоносные программы про- ные предупреждения о необходимости загрузки обновле-
никают и в официальный каталог приложений ОС Android – ний для тех или иных программ. Согласившись на загрузку
Google Play. Более того, при этом зачастую даже отсутству- такого «обновления», пользователи подвергались риску
ет необходимость получения на инфицируемом смартфоне стать жертвой мошенников (см. рис. 4).
или планшете администраторских привилегий – современ- Общее число пострадавших пользователей могло пре-
ным троянцам для успешной работы достаточно стандарт- высить 5,3 млн человек, что стало одним из крупнейших
ных пользовательских прав. Злоумышленники, загрузив- случаев заражения Android-устройств вредоносными при-
шие такие приложения в систему Google Play, составляют ложениями, которые распространялись с использованием
описания с учетом содержания самых популярных запро- каталога Google Play за все время его существования.
сов, что облегчает их попадание в результаты выдачи по- Особо опасным нужно признать распространение тро-
исковой системы Google Play. янцев через QR-код, который содержит ссылку, ведущую
Регистрация аккаунта разработчика обходится кибер- на вредоносную программу.
преступникам всего в 25 долларов. Эти скромные затра- Опасность заключается в том, что содержимое QR-
ты окупаются с лихвой, поскольку до изъятия программы кода может быть никак не связано с описанием его на-
из Google Play ее успевают скачать десятки тысяч пользо- значения – пользователи и не подозревают, что последует
вателей. за попыткой отсканировать код. Это увеличивает потенци-
Нужно отметить, что в случае загрузки троянца с Google ал распространения, так как такой код можно разместить
Play заражение как таковое может и не произойти. После на любом сайте, а содержащаяся в нем ссылка все равно

Рисунок 3. Географическое распределение зараженных устройств по оценкам специалистов компании «Доктор Веб» Рисунок 4. Ложное предупреждение, выдавае-
мое Android.Androways.1.origin

32 март 2014 системный администратор


угрозы Безопасность

будет вести на вредоносный объект. С использованием А как всему этому безобразию могут противостоять
данного способа распространялся, например, троянец антивирусные программы? К сожалению, на ситуацию
Android.SmsSend.15. с антивирусной защитой сложно смотреть с оптимизмом.
Если вредоносная программа была установлена Да, количество загрузок самого популярного антивируса –
без разрешения пользователя, злоумышленникам нужно Dr.Web для Android – превысило 30 миллионов. Но если
скрыть ее на инфицируемом устройстве либо максималь- даже среди стационарных компьютеров, необходимость
но усложнить ее удаление. И в 2013 году значительно уве- антивирусной защиты которых признается всеми, число
личилось число случаев применения вирусописателями незащищенных машин по некоторым оценкам достига-
специальных приемов, затрудняющих проведение анализа ет 30%, то что говорить о мобильных устройствах, если
вредоносных Android-приложений, а также усложняющих большинство пользователей считают мифом существова-
процесс их обнаружения и удаления на мобильных устрой- ние вредоносных программ для них.
ствах. Техника обфускации может существенно затруднить Не облегчает ситуацию и фрагментация рынка мобиль-
обнаружение вредоносной программы не только антивиру- ных устройств – производители антивирусных средств
сами, но и системой входного контроля Bouncer, предна- не могут ориентироваться только на мощные устройства
значенной для предотвращения попадания таких программ с топовой конфигурацией: необходимо обеспечить защиту
в Google Play. всех устройств, в то время как знания обо всех известных
Одной из наиболее распространенных методик самоза- вредоносных программах реализуются десятками мега-
щиты в Android-троянцах стало использование стандарт- байт антивирусных баз.
ной системной функции администратора устройства, ког- Усугубляет проблему и то, что для мобильных устройств
да приложению даются расширенные полномочия, такие антивирус зачастую является единственным средством за-
как возможность управления блокировкой экрана, запроса щиты, обязанным взять на себя оборону от всех угроз.
пароля при выходе из ждущего режима и даже выполне- Единственным выходом из сложившейся ситуации яв-
ние сброса параметров к заводским установкам с потерей ляется опора на продукты, создаваемые на основе инно-
всех имеющихся данных – при использовании преступни- вационных разработок – ПО, сочетающее традиционную
ками этой возможности попытка стандартным способом устойчивость к воздействию вредоносных программ с при-
удалить входящую в список администраторов вредоносную менением технологий, открывающих возможность исполь-
программу приводит к ошибке. зования компактных вирусных баз. Например, технология
И если в общем случае такая ситуация не является Origins Tracing™ for Android позволяет определять новые
проблемой для опытных пользователей (троянца всего семейства вирусов или перекомпилированные варианты
лишь необходимо лишить соответствующих полномочий), уже известных семейств на основе базы знаний о преды-
то большинство обычных владельцев мобильных устройств дущих угрозах и, безусловно, может сделать пользование
с этой проблемой справиться не могут. мобильным телефоном, смартфоном и планшетом гораздо
Но в ряде случаев для того, чтобы обезопасить свое более безопасным. ADV
мобильное устройство, простого отключения полномочий
администратора может быть недостаточно. Создатели вре-
Рисунок 5. Пример киберкриминальных услуг
доносных приложений идут дальше и вносят в их функци-
онал контроль активности данного режима, и, если поль-
зователь пытается его отключить, троянцы предпринимают
попытки не допустить этого. Например, они могут препят-
ствовать открытию системных настроек или выводить за-
прос на получение нужных прав до тех пор, пока пользова-
тель не согласится это сделать.
Не облегчает жизнь пользователей и наличие ошибок
в системе, позволяющих вредоносным программам (на-
пример, Android.Obad) скрывать свое присутствие в соот-
ветствующих списках, а также распространение на рынке
коммерческих систем для защиты Android-приложений
от декомпиляции, взлома и модификации (например, об-
фускации), поскольку подобные механизмы могут быть
использованы не только разработчиками легитимных про-
грамм, но и злоумышленниками (Android.Spy.67 и Android.
Tempur.5.origin).
Семейства Android.SmsSend и Android.SmsBot активно
продаются на нелегальном рынке. Их авторы зачастую
предлагают своим клиентам не только сами вредоносные
приложения, но и сопутствующие им готовые решения
в виде удаленных панелей управления, а также программ-
ных средств для построения вредоносных сетей и партнер-
ских программ. Цены на данные услуги варьируются от нес-
кольких сотен до нескольких тысяч долларов (см. рис. 5).

системный администратор март 2014 33


Безопасность продукты и решения

Визитка

Сергей Вахонин, директор по решениям ЗАО «Смарт Лайн Инк»

BYOD и безопасность: мифы и реальность


Активное распространение стратегии Bring Your Own Device (BYOD, использование
персональных устройств в рабочих целях) во всех секторах экономики существенно
ускоряет темпы «мобилизации» бизнес-процессов

Это значит, что многие компании поставлены перед необхо- го обеспечения и данных с мобильного устройства в слу-
димостью искать баланс между мобильностью сотрудников чае злонамеренного неавторизованного удаления с него
и информационной безопасностью бизнеса, решая ряд но- MDM-приложения. Однако до того момента, пока на BYOD-
вых задач, связанных с эффективностью управления пер- устройствах не появятся полностью независимые операци-
сональными устройствами и обеспечением безопасности онные среды (бизнес, персональная, среда производителя
их применения и т.п.), сегментированные на физическом уровне и снаб-
Для решения ряда задач безопасности BYOD-устройств женные низкоуровневыми интерфейсами для доступа СЗИ
рынку было предложено множество самых разных BYOD- независимых производителей, ограниченность возможно-
стратегий, но вследствие ложного маркетингового «шума», стей MDM-решений по контролю исходящих потоков данных
генерируемого конкурирующими производителями, многие на мобильных устройствах останется принципиальной про-
BYOD-стратегии, представляемые рынку как наиболее эф- блемой, обсуждения которой MDM-вендоры старательно
фективные, таковыми не являются. В частности, в области избегают. А для имитации решения проблемы они исполь-
BYOD-управления был популяризован целый ряд мифов зуют «заплатки» типа вышеупомянутых встроенных «мин».
и заблуждений относительно того, что делает программу Сильными сторонами MDM-систем являются такие функ-
внедрения BYOD-устройств в бизнес-практику предприятия ции, как надежная парольная защита устройства, шифро-
безопасной и успешной. вание встроенной памяти и карт хранения данных, либо
Перечислим наиболее распространенные мифы «контейнеризация» данных приложений, управляемое унич-
в стратегиях BYOD: тожение данных с устройства в случае потери или кражи.
>> Системы класса Mobile Device Management (MDM) Однако же на практике по крайней мере функцию удален-
предоставляют полное решение проблем безопас- ного уничтожения данных можно реализовать только при ус-
ности в BYOD. ловии, что устройство появится в Сети и будет обнаружено
>> Важные корпоративные данные могут безопасно управляющей частью MDM-системы. То есть приходится по-
храниться и создаваться непосредственно на пер- лагаться на удачу – низкую техническую квалификацию вора
сональных устройствах. или человека, нашедшего такое «защищенное» мобильное
>> Решения класса Mobile Device Management (MDM) устройство, и на то, что сработают функции шифрования
равноценны решениям класса Data Leak Prevention и парольной защиты.
(DLP). Рассматривая миф о безопасности хранения и создания
Действительно, системы класса Mobile Device данных на BYOD-устройствах, стоит помнить, что задача
Management (MDM) позволяют удаленно (централизованно) обеспечения безопасности корпоративной информации
управлять множеством мобильных устройств, будь то устрой- на персональных устройствах стоит не только в связи с ком-
ства, предоставленные сотрудникам компанией, или соб- мерческой необходимостью защиты корпоративных нара-
ственные устройства сотрудников. Это управление обычно боток, сведений, персональных данных сотрудников и т.п.,
включает в себя такие функции, как удаленное обновление но и в силу требований законодательных и нормативных
политик безопасности (без подключения к корпоративной актов. В реальности уже сама практика хранения данных
сети), распространение приложений и данных, управление на BYOD-устройствах порождает риск утечки данных не-
конфигурацией для обеспечения всех устройств необходи- зависимо от наличия на устройстве агента MDM-системы.
мыми ресурсами. Данные ограниченного доступа могут быть отправлены не-
Некоторые MDM-решения содержат встроенную посредственно с устройства по сетевым каналам или на под-
«мину» – способность самоуничтожения всего программно- ключаемые внешние устройства печати и хранения.

34 март 2014 системный администратор


продукты и решения Безопасность

Некоторые разработчики MDM-систем заявляют, безопасности в стратегии BYOD MDM-системы должны


что их решения обеспечивают полноценную защиту от уте- работать совместно с резидентными DLP-системами.
чек данных в силу наличия функций шифрования и унич- Любая MDM-система будет эффективна только в качестве
тожения данных на устройстве. Однако же рассматривать компонента в более широкой комплексной стратегии обес-
MDM-системы как равноценные DLP-системам некорректно печения безопасности данных на мобильных устройствах.
уже в силу существования довольно четкого определения MDM-системы следует применять для решения задач обще-
термина Data Leak Prevention, установленного отраслевы- го управления и контроля мобильных устройств, шифрова-
ми аналитиками. DLP-решение должно быть способно ния данных как одну из «линий обороны».
анализировать данные в состояниях «Передаваемые Всеобъемлющая и оптимальная стратегия безопасности
данные» (data-in-motion), «Используемые данные» BYOD описывается упрощенной формулой:
(data-in-use) и/или «Хранимые данные» (data-at-rest)
по их содержимому. Указанные виды анализа данных, име- Безопасность BYOD = MDM + App + VPN + VM + DLP
ющие решающее значение для выполнения задач контроля,
мониторинга и обеспечения целостности данных, попросту где комплексно применяются:
отсутствуют в современных MDM-системах. >> MDM-система для контроля локальных приложений
Наиболее эффективным решением безопасности на устройствах, удаленного уничтожения данных,
данных для устройств BYOD является предоставление обеспечения надежной парольной защиты устройства
доступа к информационным активам компании через и шифрования данных и т.п.;
удаленное подключение BYOD-устройств через терми- >> приложение (App) для удаленного подключения мо-
нальные сессии к виртуальным Windows-средам, ко- бильного устройства через Интернет к виртуальной
торые, в свою очередь, защищены функционирующей среде (например, Citrix Receiver);
на хосте DLP-системой, обеспечивающей предотвраще- >> защищенный VPN-туннель;
ние неконтролируемых утечек данных. Такой подход >> виртуальная рабочая Windows-среда (VM), в которой
называется Virtual Data Leak Prevention (vDLP). Коротко опубликованы и доступны необходимые для работы
говоря, технология Virtual DLP предлагает контролируе- приложения и данные;
мое предоставление удаленного доступа к корпоратив- >> и, наконец, DLP-система предотвращения утечек дан-
ным данным в отличие от локального хранения данных ных, интегрированная в виртуальную рабочую среду
на BYOD-устройствах в подходе MDM. Windows и обеспечивающая контроль доступных в этой
Подход Virtual DLP подразумевает выполнение ключевых виртуальной среде каналов передачи данных (элек-
задач безопасности: тронная почта, веб-сайты, мессенджеры, канал печати,
Безопасная обработка данных – сотрудники при под- перенаправленные в виртуальную среду локальные
ключении к корпоративному порталу по безопасной сес- USB-устройства) для предотвращения утечек данных
сии не используют приложения для локальной обработки с BYOD-устройства.
данных на устройстве BYOD, либо возможность исполь- Такой DLP-системой с успехом выступает программный
зования данных блокируется на контекстном уровне. Та- комплекс DeviceLock DLP Suite, обеспечивающий полный
ким образом, гарантируется, что корпоративные данные контроль разнообразных вариантов применения персо-
компании не будут распространены далее контролируе- нальных мобильных устройств в различных моделях исполь-
мого устройства. зования решений виртуализации (BYOD, home office, облач-
Безопасное хранение данных – защищаемые корпора- ные корпоративные серверы), построенных на платформах
тивные данные могут быть доступны только в виртуальной виртуализации и терминального доступа от Microsoft, Citrix,
среде, и в случае редактирования или иного изменения VMware и других производителей.
могут сохраняться только на сервере или быть распеча- При наличии заданных DLP-политик, определяющих
таны на принтерах в корпоративной сети. При этом не до- допустимость использования корпоративных данных,
пускаются локальное сохранение данных во встроенной DeviceLock, будучи установленным на стороне компании –
памяти BYOD-устройств, подключаемых съемных накопи- в виртуальной среде или на терминальном сервере, – га-
телях, печать на неконтролируемых принтерах вне корпо- рантирует, что передача данных пользователем находится
ративной сети. строго внутри границ виртуальной среды (терминальной
Контроль передачи данных – DLP-система, функци- сессии), и данные, утечка которых недопустима, не попа-
онирующая в виртуальной среде Windows, обеспечи- дают на личную часть персонального устройства (от тон-
вает контентную фильтрацию содержимого файлов кого клиента или домашнего компьютера до мобильного
и данных, проходящих через коммуникационные каналы, устройства любого типа), оставаясь при этом доступными
и контекстный контроль каналов (электронная почта, для эффективного выполнения бизнес-задач.
веб-сайты, мессенджеры и т.д., канал печати, перена- Таким образом, службы ИБ могут полностью контроли-
правленные диски и сетевые файловые ресурсы, а также ровать обмен данными между корпоративной средой и пер-
съемные носители). сональным устройством, а также подключенными к нему
Безусловно, MDM-системы играют значительную роль периферийными устройствами и буфером обмена – что осо-
в обеспечении безопасности стратегии BYOD, но следует бенно важно, учитывая, что все эти каналы передачи дан-
вновь четко обозначить, что при этом они не выполняют за- ных вне корпоративных границ становятся небезопасными
дачи предотвращения утечек данных. Для создания пол- и должны рассматриваться как угроза корпоративной ин-
ноценного и эффективного решения по обеспечению формационной безопасности. ADV

системный администратор март 2014 35


Базы данных изучаем 1С

Визитка

Олег Филиппов, заместитель начальника отдела


разработки, АНТ-Информ, comol@mail.ru

Ускоряем запуск 1С (для разработчика)


Рассмотрим несколько приемов, которые позволяют в десятки раз ускорить время
запуска 1С, особенно после обновления конфигурации

Почему 1С запускается долго? ского приложения и подключение к серверу, а на запуск


«Загрузка 1С – процесс длительный, и это нормальная си- некой программки 1CEStart.exe, которая прочитает на-
туация» – такое популярное мнение можно нередко услы- стройки, определит версию сервера, получит список баз
шать на просторах Интернета. На самом деле запуск 1С и т.п.
в пользовательском режиме при нормальных настройках Но и на этом все не закончится – далее будут прочитан
и хорошем оборудовании – дело нескольких секунд. Боль- список пользователей из базы, загружены настройки поль-
шинство пользователей, опираясь на свой опыт, со мной зователей и в списке выбран последний пользователь, ко-
не согласятся. торый заходил в систему. При этом открывается диалого-
Действительно, на запуск 1С у пользователя уходит куда вое окно, предлагающее выбрать учетную запись и ввести
больше времени. Почему? Да тут все просто: бОльшую пароль. И только после успешного ввода пароля наконец
часть времени при загрузке 1С тратит не на старт клиент- начнется запуск 1С, который в общем объеме потраченного
времени займет не самую большую долю.
Для пользователя время запуска 1С не настолько кри-
Рисунок 1. Альтернативный стартер 1С
тично, если оно не превышает определенного порога. Дан-
ную операцию ему необходимо проделать, как правило,
всего несколько раз в день, следовательно, потери време-
ни на запуск будут небольшими и существенно не скажутся
на работе.
А вот для разработчика ситуация уже совсем другая: за-
пуск 1С происходит регулярно, особенно на стадии отладки
решения. Архитектура платформы 1С позволяет разработ-
чику при первой необходимости пользоваться отладкой,
что,  кстати, положительно сказывается на времени разра-
ботки.
Кроме того, 90% работы программиста 1С – это скорее
доработка уже существующего решения, поэтому отлад-
ка используется даже на начальных этапах. Это приводит
к тому, что в процессе работы программиста запуск 1С и об-
новление конфигурации будут очень частыми операциями,
и, конечно, длительное их выполнение станет существенно
тормозить разработку.
Архитектура новых версий решений 1С основана на ис-
пользовании большого количества объектов метаданных
типа «роль». Поскольку от ролей зависит возможность дос-
тупа к объектам конфигурации, все правила, описанные
для ролей, система кэширует при старте. После обновле-
ния конфигурации этот кэш надо переинициализировать.
Соответственно при большом их количестве время запуска
может существенно вырасти.

36 март 2014 системный администратор


изучаем 1С Базы данных

Подводя итог, можно выделить следующие факторы, ко-


торые приводят к замедлению запуска 1С:
>> При первом запуске – чтение списка информационных
баз, чтение списка пользователей, определение вер-
сии сервера.
>> Повторная инициализация кэша метаданных после об-
новления информационной базы.
>> Большое количество ролей в конфигурации.
>> Чтение метаданных при запуске.
Теперь давайте попробуем разобраться, как мы можем
уменьшить негативное влияние этих факторов на время за-
пуска 1С.

Альтернативный стартер
По умолчанию 1С создает ярлыки, которые запускают про-
грамму 1СEStart.exe. В первых версиях платформы 8.2 коли-
чество ошибок в этом небольшом стартере едва ли не пре-
восходило их количество в остальной части платформы.
Теперь ситуация, конечно, лучше, но вряд ли можно назвать
данную программу удачным решением 1С. Поэтому я насто-
ятельно рекомендую выбирать альтернативные методы за-
пуска.
Для пользователей самым оптимальным будет «батник»
с картинкой 1С или заданная в самом ярлыке командная
строка. Возможные параметры командной строки можно
посмотреть в документации, или, к примеру, на infostart.ru
есть описание [1].
Но для разработчика лучше использовать другой вари-
ант – сторонний стартер для 1С [2] (см. рис. 1).
Чем он полезен для скорости запуска:
>> Стартер сворачивается в трей, оттуда его можно выз-
вать одним кликом. При этом не происходит его по-
вторного запуска, анализа файлов и прочих затратных
процедур.
>> В приложении можно указать пользователя и пароль
для каждой базы, с которыми он будет их запускать
по умолчанию.
>> Исполняемый файл для запуска можно указывать
не 1CEStart.exe, а уже 1Cv8c.exe, ну или 1сv8.exe.
Первый указывается, если нужен только клиентский
доступ, при этом в режиме тонкого клиента. Второй –
в остальных случаях.
>> Ну и наконец, если в списке баз так 50 (как я писал
ранее в одной из статей, разработчику лучше иметь
под рукой бОльшую часть типовых конфигураций, что-
бы при необходимости переносить нужный функцио-
нал в разрабатываемое прикладное решение), то воз-
можность «последние запущенные ИБ» будет очень
полезна.

Размещение кэша метаданных на RAM-диске


Как было отмечено выше, кэш метаданных обновляет-
ся при обновлении ИБ. Он представляет развернутую
для удобства чтения информацию о метаданных конфигура-
ции. Объем его может варьироваться от 3-5 Mб до 500 Мб.
При этом дисковых обращений к кэшу метаданных очень
много. Из-за них дисковая подсистема часто бывает пере-
гружена. Когда к небольшому объему данных происходит
много дисковых обращений, решение напрашивается само
собой – RAM-диск.

системный администратор март 2014 37


Базы данных изучаем 1С

Можно вместо RAM-диска использовать SSD, но спец- Уменьшение количества ролей в конфигурации
ифика состоит в том, что половина обращений – на запись, Новая концепция разработки прикладных решений на плат-
а потеря этих данных ничего не уничтожит. Это всего лишь форме «1С:Предприятие» предполагает использование
временные файлы. отдельных групп ролей на каждый объект метаданных. Та-
В случае большого количества ролей в конфигурации кая архитектура очень удобна с точки зрения функционала
от скорости работы кэша время запуска будет существенно и гибкости настройки прикладных решений. Но с произ-
варьироваться. водительностью, к сожалению, у нее пока некоторые про-
Для создания RamDisk можно использовать программу блемы.
Superspeed RamDisk+ [3] (см. рис. 2). Рекомендация тут может быть одна: если вы планируе-
Из преимуществ данной программы я бы отметил следу- те переработку своего прикладного решения под данную
ющее: схему или разработку нового под конкретного заказчика,
>> Популярность оцените необходимость такой гибкости в управлении права-
>> Сохранение данных RAM-дисков при выключении ПК ми доступа. За нее, к сожалению, придется «платить» уве-
и восстановление их при включении личением объема потребляемой памяти, кэша метаданных
>> Простота использования и временем запуска 1С, особенно после обновления конфи-
>> Большое количество поддерживаемых архитектур гурации базы.
Главный недостаток состоит в том, что эта программа
все-таки платная. Но $60-80 может позволить себе даже Размещение всей информационной базы
рядовой пользователь, если, конечно, лицензия уже не ку- на RAM-диске
плена на организацию (около 22 000 руб.), ведь быстрый Основным режимом работы платформы «1С:Предприятие»
запуск 1С – это не единственная сфера применения ПО сейчас уже является клиент-серверный. Несмотря на за-
класса RamDisk. Конечно, существуют и бесплатные ана- явление компании 1С об одинаковой работе приложения
логи. в клиент-серверном и файловом режимах, технологические
Создать RAM-диск – это одно, а заставить 1С записывать различия все-таки существуют, но связаны они в основ-
на него кэш метаданных – это другая задача. Самое простое ном со скоростью работы прикладного решения. Поэтому
решение – использовать «батник» для запуска 1С примерно на этапе разработки основной функциональности допусти-
следующего содержания: мо использовать файловый вариант. Конечно, при условии,
что после окончания разработки тестирование и нагрузоч-
SET Temp=G:\Temp ные испытания будут производиться в клиент-серверном
SET Tmp=G:\Temp режиме.
При разработке в файловом варианте исключаются
start C:\Snegopat\core\starter.exe временные затраты на клиент-серверное взаимодействие,
за счет чего скорость запуска 1С возрастает. При старте
Этот «батник» устанавливает временные каталоги основная нагрузка приходится на файловую систему, по-
для конкретного приложения (1С) в папку Temp, располо- тому что необходимо прочитать определенный объем дан-
женную на диске G. ных для работы системы. Для разработчика к этому объему
Диск G соответственно создан в оперативной памяти. данных добавляется еще и конфигурация (около 100 Мб),
В качестве исполняемого файла указан файл «Снегопата». которую платформа считывает заново при запуске после
Для использования стороннего стартера или классического обновления БД, чтобы обновить кэш имеющихся у нее ме-
стартера 1С можно просто заменить путь к файлу. таданных.
Тут ничего нового придумать не получится – только раз-
местить базу данных на RAM-диске или на диске SSD.
Рисунок 2. Программа создания RAM-дисков

***
В результате этих действий можно уменьшить время запу-
ска в 10-15 раз. В моей практике конфигуратор, который за-
пускался две минуты, начинал запускаться за пять секунд.
На первый взгляд это незначительная экономия времени,
но двухминутные затраты на запуск отладки делают прак-
тически невозможной разработку решений в нормальном
режиме. EOF

1. Параметры командной строки 1С – http://infostart.ru/


public/104654.
2. Альтернативный стартер 1С – http://infostart.ru/public/201394.
3. Домашняя страница Superspeed RAMDisk+ – http://www.
superspeed.com/desktop/ramdisk.php.

лючевые слова: 1C, производительность, ускорение запуска, оп-


К
тимизация.

38 март 2014 системный администратор


изучаем «1С» Базы данных

Визитка

Игорь Чуфаров, начальник ИТ-отдела


ООО «Кыштымский огнеупорный завод», igorchufarov@mail.ru

РАУЗ в 1С – друг или враг?


Часть 1. Развенчание мифов и поиск правды
С момента введения нового режима учета затрат в 1С прошло достаточно времени,
чтобы взглянуть на него беспристрастно, основываясь на реальной практике

Более того, если процедура перехода с партионного уче-


Rein raus. та на РАУЗ является штатной и достаточно подробно описа-
Припев одноименной песни группы Rammstein на [1], то обратный переход стандартными средствами си-
стемы невозможен (если быть точным, то возможна отмена
перехода на РАУЗ, но при этом требуется полное перепро-
ведение всех документов; нет и речи о том, чтобы перейти
Так ли страшен черт? на партионный учет с определенной даты, как это происхо-
Несмотря на уже солидную историю, режим расширенной дит при включении расширенной аналитики).
аналитики учета затрат (РАУЗ) в программах 1С до сих пор Главная особенность режима – учет себестоимости всех
вызывает множество споров и противоречивых мнений. запасов и затрат ведется только в двух регистрах «Учет
Для многих бухгалтеров его название звучит так же угрожаю- затрат (бухгалтерский и налоговый учет)» и «Учет затрат
ще, как брутальные строки из песни, вынесенной в эпиграф. (управленческий учет)». Это касается запасов в производ-
Да и, чего греха таить, многие специалисты 1С до сих стве и на складе, производственных и непроизводственных
пор считают РАУЗ неким сферическим конем в вакууме, затрат, выпуска продукции и структуры ее себестоимости.
черным ящиком, шайтан-машиной. Например, из разговора Ведь принципиальной разницы с методологической точки
с одним из сотрудников франчайзи-фирмы «1С», я узнал, зрения между запасом и затратой нет.
что отдел поддержки клиентов у них занимается сопрово- Получается, что практически вся информация о произ-
ждением, только если не используется расширенная ана- водственной деятельности предприятия учитывается только
литика. В противном случае поддержку осуществляет отдел по двум регистрам. Но как тогда удается отследить, на какой
разработки – с более квалифицированными сотрудниками, стадии в данный момент находятся затрата или запас? Ведь,
готовыми решать сложные задачи. Это о чем-то да говорит! как уже неоднократно было сказано, в разные моменты вре-
Но ведь в момент появления этого нововведения утверж- мени одна и та же сущность может быть как запасом (в мо-
далось, что оно должно упростить жизнь, а не наоборот. Не- мент, когда она находится на складе), так и затратой (когда
ужели все настолько плохо, и для работы в данном режиме передана в производство).
нужно обладать какими-то недюжинными способностями? Именно с этой целью используются ключи аналитики,
Сегодня попробуем разобраться, так ли страшен РАУЗ, которые представляют собой некоторый набор однород-
посмотрим, как в этом режиме отрабатываются различные ных аналитических сведений. Применяются они только
хозяйственные операции, а также узнаем, какими домысла- в регистрах; в отчетах, которые используют конечные поль-
ми и мифами он успел обрасти, и выясним, что из этого –
правда, а что – нет.
Рисунок 1. РАУЗ для многих специалистов до сих пор остается «черным ящиком»,
который выдает результат по одному ему известным формулам
Историческая ретроспектива
РАУЗ появился начиная с версии «Управление производ-
ственным предприятием 1.2.15». Стоит отметить, что с самого
начала расширенная аналитика позиционировалась как при-
оритетный режим; рекомендовалось подготавливать и осу-
ществлять переход; сообщалось, что все дальнейшее раз-
витие функционала будет осуществляться исключительно
под него.

системный администратор март 2014 39


Базы данных изучаем «1С»

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

Рисунок 2. Первая партия, поступившая по цене 100 рублей за штуку, сразу же передается в производство документом «Требование-накладная»

40 март 2014 системный администратор


изучаем «1С» Базы данных

глины и используется при формовке новых изделий), если Если последние два пункта во многом субъективны и свя-
распространено взаимное оказание услуг подразделения- заны скорее с нежеланием менять сложившиеся привычки
ми (транспортный цех подвозит уголь в котельную, которая (ведь, к примеру, никто не мешает использовать новые от-
отапливает транспортный цех), то РАУЗ будет просто спаса- четы вместо старых), то остальные три требуют к себе повы-
тельным кругом. Одним словом, достоинств режима предо- шенного внимания и осмысления.
статочно, для некоторых организаций он просто незаменим. Основным камнем преткновения стоит считать все же
отсутствие в режиме РАУЗ партионного учета. Вокруг этой
Цена вопроса особенности было развернуто большое обсуждение. Более
Поскольку любые недостатки есть продолжения достоинств того, весь негатив, который впоследствии проявился, чаще
(а любые достоинства суть продолжения недостатков), всего преподносился под вывеской «РАУЗ vs Партионный
за все приходится платить. Сразу же после появления РАУЗ учет». На самом деле такое противопоставление не совсем
развернулись очень активные обсуждения того, чем придет- корректно, так как отсутствие партионного учета – всего
ся пожертвовать, и так ли существенны его преимущества лишь одна из особенностей РАУЗ.
в сравнении с недостатками. Сами разработчики компании «1С» не раз говорили,
Основными претензиями стали: что правильным можно считать разделение на традици-
>> Отсутствие поддержки партионного учета товарно-ма- онную и расширенную аналитику. Но поскольку термин
териальных ценностей. «партионный учет» уже прочно укоренился именно в плане
>> Себестоимость выбытия материально-производствен- противопоставления РАУЗ, не станем занудствовать и до-
ных запасов по всем направлениям считается одина- говоримся, что и то и другое название имеет свое право
ковой и рассчитывается (корректируется) в конце ме- на жизнь.
сяца.
>> Метод ФИФО использует другой алгоритм, нежели Война миров
при партионном учете. Есть ли принципиальные отличия между режимом расши-
>> Снижение прозрачности учета. ренной аналитики и партионным учетом? Безусловно, есть.
>> Не работают привычные отчеты. Если быть кратким, то резюме таково: да, РАУЗ, как и любой
На самом деле каждый пункт из приведенного списка до- другой алгоритм, имеет свои особенности. Нужно ли их на-
статочно тесно переплетен со всеми остальными. Об этих зывать именно недостатками? Очень сомневаюсь. Я даже
и других особенностях РАУЗ я рассказывал в [2] и [3], а так- думаю, что, если бы был способ развернуть историю вспять
же в цикле статей [4-12], который, к слову сказать, еще (то есть если бы изначально в программах был РАУЗ, а за-
не окончен – ждите продолжения. тем вдруг перешли на партионный учет, мотивируя это повы-

Рисунок 3. Материалы вошли в состав готовой продукции 3 февраля, до второго поступления по новой цене

системный администратор март 2014 41


Базы данных изучаем «1С»

шением детализации складского учета, например), споров И тем не менее все сказанное выше не более чем миф,
было бы не меньше. который я сегодня собираюсь опровергнуть. Для этого мне
Как я уже говорил выше, многие до сих пор считают РАУЗ потребуется ответить на два вопроса:
некой вещью в себе, «черным ящиком», который выдает >> Так ли нужен партионный учет для корректного расчета
результат по одному ему известным формулам. В противо- себестоимости изделий, выпускаемых производствен-
вес партионному учету, где все четко и ясно с точностью ным предприятием?
до партии, РАУЗ что-то там постоянно усредняет, решает >> Насколько расходятся результаты расчета себестои-
какие-то уравнения, и в результате получается что-то при- мости при использовании РАУЗ и партионного учета?
мерное, далекое от правды (рис. 1). Главный довод против-
ников РАУЗ: «Да вы посчитайте на бумажке – у вас сойдется А что на деле?
с партионным учетом, а не с расширенной аналитикой». Как и в ранее опубликованных статьях [1-10], договорим-
Квинтэссенцией этого отношения к РАУЗ как к некоторой ся, что используется конфигурация «Управление про-
шайтан-машине можно считать высказывание на профиль- изводственным предприятием 1.3» на базе платформы
ном форуме infostart.ru [13]: «1С:Предприятие 8.2» (далее по тексту УПП). Однако если
«Да, РАУЗ устраивает торгово-шарашечные конторы, ранее всегда режим РАУЗ был включен, то сейчас будет сде-
которым плюс минус лапоть, а то и сапог – не страшно, лано сравнение одинаковых операций в партионном учете
хотя бы знать примерно (и представители которых и кри- и в режиме расширенной аналитики. Также стоит добавить,
чат о «такой же примерности» результатов у них в партион- что как при включенном РАУЗ, так и в режиме партионно-
ном учете). Если у вас реальное производство, и вы хотите го учета будет использоваться ФИФО (от аббревиатуры
знать, сколько чего затрачено и как вписалось в стоимость FIFO – First-In-First-Out – вариант, при котором со склада пар-
конечного товара, то РАУЗ даст такую среднюю темпера- тии списываются в том же порядке, в котором поступали).
туру, что будет, как в советское время, на бумаге одно, Если в партионном учете реализовать подобный меха-
а в цеху прямо противоположное, не говоря уже о каком- низм проще простого, то в случае с расширенной аналити-
либо актуальном планировании материалов, только вот кой, где отсутствует понятие «партиобразующий документ»,
финансовых вливаний для закрытия дыр, как в советское расчет делается в несколько этапов.
время, уже не будет». Сначала определяется, какие именно партии остались
Обращаю внимание, что это форум профессионального на складе после всех выбытий. Затем рассчитывается
сообщества специалистов 1С, данное мнение поддержали их стоимость. После этого вычисляется стоимость выбы-
другие специалисты, как мне представляется, не первый год тия всех остальных партий, причем она устанавливается
работающие с учетными системами. одинаковой (усредненной) для всех направлений выбытия.

Рисунок 4. Вторая партия пришла по цене 200 рублей за штуку и была израсходована только наполовину

42 март 2014 системный администратор


изучаем «1С» Базы данных

Несмотря на ряд критических замечаний по поводу тако- В чем смысл рассматриваемой последовательности дей-
го алгоритма на различных форумах, он не противоречит ствий? Один и тот же материал приходит в разное время
требованиям законодательства и вполне может называться (1 и 10 февраля) по разной стоимости. На следующий день
именно ФИФО, а не как-либо иначе. Подробнее об особен- после поступления на склад материал забирают в произ-
ностях, в том числе с наглядными примерами, вы можете водство, и еще через день он входит в состав готовой про-
прочитать в [4]. дукции.
Сейчас же перейдем от складского учета (к которому от- Во второй раз со склада забирают не весь поступивший
носится алгоритм ФИФО) к рассмотрению простейшей це- материал, а только половину. Соответственно он должен
почки, характерной для учета производственного процесса остаться на складе в количестве 5 штук. При использова-
в целом. нии партионного учета в методике ФИФО по идее со склада
>> 1 февраля на склад поступил материал «Материал сначала должны списаться партии стоимостью 100 рублей
№1» в количестве 10 штук по цене 100 рублей за шту- за штуку и только потом по 200 рублей.
ку, на общую сумму 1000 рублей (см. рис. 2, сверху). Разумеется, такое значительное различие в цене сдела-
>> 2 февраля 10 штук материала «Материал №1» пере- но намеренно для примера, чтобы показать, как работает
даны в производство документом «Требование-наклад- расчет себестоимости при производстве из разных посту-
ная» (см. рис. 2, снизу). плений.
>> 3 февраля выпущено 10 штук готовой продукции «Про- Согласно этой логике первый выпуск готовой продукции
дукт №1», на которую затрачено 10 штук материала должен быть в два раза дешевле, чем второй (так как он сде-
«Материал №1» (оформлен документ «Отчет произ- лан из первой партии материала). Ожидаемая себесто-
водства за смену», как показано на рис. 3). имость первого выпуска при партионном учете – 100 руб-
>> 10 февраля на склад поступил тот же материал «Мате- лей за штуку, второго – 200 рублей. В то же время, если
риал №1» в количестве 10 штук, но уже по цене 200 руб- верить тому, что говорят о РАУЗ, в этом режиме мы должны
лей за штуку на общую сумму 2000 рублей (см. рис. 4, получить некий усредненный результат. Посмотрим, так ли
сверху). это на самом деле. Кроме того, интересно будет увидеть
>> 12 февраля 5 штук материала «Материал №1» пере- суммовую оценку материала, оставшегося на складе.
даны в производство документом «Требование-наклад- Проведем расчет себестоимости выпуска и сформи-
ная» (см. рис. 4, снизу). руем отчет «Ведомость по партиям товаров на складах»
>> 13 февраля выпущено 5 штук готовой продукции «Про- (см. рис. 6).
дукт №1», на которую затрачено 5 штук материала Что же мы видим? Как это ни странно, но себестоимость
«Материал №1» (см. рис. 5). выпущенной продукции оказалась усредненной по отно-

Рисунок 5. 13 февраля оформлен выпуск продукции, для которой использовалась только вторая партия материала

системный администратор март 2014 43


Базы данных изучаем «1С»

шению к партиям материла. Может быть, при передаче Что сразу бросается в глаза? РАУЗ, который, по мнению
в производство получилась неправильная суммовая оцен- многих, должен был показать менее точную картину, на са-
ка? Но ведь из этого же отчета видно, что расход материала мом деле позволил получить абсолютно идентичный резуль-
был 1 февраля в количестве 10 штук стоимостью 1000 ру- тат: выпущенная продукция в количестве 15 штук оценена
блей и 10 февраля в количестве 5 штук стоимостью 1000 ру- в 2000 рублей, на складе остаток материала имеет суммо-
блей. вую оценку 1000 рублей за 5 штук.
В то же время продукция, выпущенная 3 февраля цели-
ком и полностью из первого поступления материала, рас- Беспартийное производство
ценена так, как будто для ее производства использовались Почему получены такие странные на первый взгляд резуль-
обе партии. таты? Все дело в том, что независимо от того, какой режим
Действительно, если сложить общую стоимость всех учета выбран (партионный или РАУЗ), он относится лишь
переданных в производство материалов (1000 рублей к складскому учету и никак не затрагивает производствен-
+ 1000 рублей = 2000 рублей) и разделить на их коли- ный.
чество (10 штук + 5 штук = 15 штук), получится средняя Что это значит? Это значит, что все партии, пришедшие
цена 133 рубля 33 копейки. Умножив полученное значение в производство в течение месяца, рассматриваются доку-
на 10 и на 5 штук, получим себестоимость первого и второго ментом «Расчет себестоимости» исключительно совокупно.
выпуска соответственно (1333 рубля 33 копейки и 666 руб- Иными словами, если в течение месяца было несколько по-
лей 67 копеек). ступлений одного и того же материала с разной стоимост-
Нетрудно видеть, что именно такие результаты выводятся ной оценкой, в результате будет рассчитана их средняя
в ведомости по партиям товаров на складах. И это, обращаю суммовая, и именно она войдет в конечную себестоимость
ваше внимание, при партионном учете в режиме ФИФО. готовой продукции.
Но хоть остаток-то на складе получил ту суммовую оцен- А теперь самое интересное: если в производстве затра-
ку, которую мы ожидали? Да, поскольку на складе остались ты все равно будут усреднены, нужно ли убиваться и вос-
только материалы из второй партии, то и оценка у них соот- станавливать последовательность для поддержания парти-
ветствующая (по 200 рублей за штуку, в итоге 5 штук общей онного учета?
стоимостью 1000 рублей). То есть по складу механизм сра- Еще один важный вопрос, который следует себе задать:
ботал ровно так, как и ожидалось. а соответствует ли партионный учет на складе по методи-
Что же касается производства, то здесь мы видим яв- ке ФИФО реальному положению вещей в принципе? Дей-
ное усреднение суммовых оценок. Еще раз подчеркну: вы- ствительно ли фактически первым передается на склад ма-
пуск 3 февраля был осуществлен в тот момент, когда на- териал, поступивший раньше? Если ответ отрицательный,
личествовало только одно поступление по цене 100 рублей не стоит и раздумывать, при учете по средней результат
за штуку. И при этом он оценен как 133 рубля 33 копейки будет одинаков для обоих режимов даже в складском учете.
за единицу выпущенной продукции. Возвращаясь к вопросам, заданным в начале статьи,
Теперь рассмотрим результат выполнения аналогичной можно заключить:
последовательности действий с включенным РАУЗ. По- >> На вопрос, так ли нужен партионный учет для коррект-
скольку в режиме расширенной аналитики не применяется ного расчета себестоимости изделий, выпускаемых
партионный учет, использовать отчет «Ведомость по парти- производственным предприятием, ответ таков: нет,
ям товаров на складах» нельзя. Вместо него используется значимость партионного учета сильно переоценена,
ведомость по учету МПЗ, в которой показываются все дви- так как в производстве все равно стоимостная оценка
жения материально-производственных запасов (см. рис. 7). будет усреднена.

Рисунок 6. Из ведомости по партиям товаров на складах видно, что суммовая оценка выпущенной продукции является усредненной

44 март 2014 системный администратор


изучаем «1С» Базы данных

>> На вопрос, насколько расходятся результаты расчета 1. Абрашина Е.В., Емельянов И.М. Использование механизма рас-
себестоимости при использовании РАУЗ и партионного ширенной аналитики в «1С:Управление производственным пред-
учета, можно ответить: в большинстве случаев резуль- приятием». – М.: Издательство «1С-Паблишинг», 2011. – 177 с.
таты расчета себестоимости абсолютно идентичны, 2. Чуфаров И. Парадоксы учета в 1С. //«Системный администра-
что было явно продемонстрировано на примере.*** тор», №11, 2012 г. – С. 68-71.
Говорить о менее точном или неправильном расчете се- 3. Чуфаров И. Особенности учета бракованной продукции в 1С.
бестоимости в режиме расширенной аналитики учета запа- //«Системный администратор», №12, 2012 г. – С. 72-76.
сов и затрат по меньшей мере некорректно. Отсутствие точ- 4. Чуфаров И. Как избежать ошибок учета в 1С. Часть 1. Выбы-
ной суммовой оценки по каждому документу, конечно, ведет тие запасов. //«Системный администратор», №1-2, 2013 г. –
к некоторым ограничениям детализации учета, но не несет С. 72-76.
в себе настолько далеко идущих последствий, чтобы ста- 5. Чуфаров И. Как избежать ошибок учета в 1С. Часть 2. Учет
вить под сомнение результат производственных операций. прямых материальных затрат. //«Системный администратор»,
На самом деле в большинстве случаев отрицательные от- №3, 2013 г. – С. 62-66.
зывы относительно РАУЗ продиктованы в большей степени 6. Чуфаров И. Как избежать ошибок учета в 1С. Часть 3. Рас-
страхами, нежели реальным негативным опытом. пределение косвенных материальных затрат. //«Системный
Как было показано в статье, и РАУЗ, и партионный учет администратор», №5, 2013 г. – С. 46-53.
на корректных входных данных дают идентичные результа- 7. Чуфаров И. Как избежать ошибок учета в 1С. Часть 4. Нема-
ты. Основная причина этого в том, что сам производствен- териальные затраты: услуги. //«Системный администратор»,
ный учет в УПП не является партионным вне зависимости №6, 2013 г. – С. 52-59.
от выбранного режима. Не столь важно, каким образом 8. Чуфаров И. Как избежать ошибок учета в 1С. Часть 5. Зацикли-
были рассчитаны суммовые оценки при передаче материа- вание затрат. //«Системный администратор», №7-8, 2013 г. –
лов со склада в производство. При расчете себестоимости С. 46-52.
выпуска все равно будет осуществлено усреднение суммо- 9. Чуфаров И. Как избежать ошибок учета в 1С. Часть 6. Спец-
вых оценок. одежда, спецоснастка и инвентарь. //«Системный администра-
Хотя данный факт не является секретом и указывается тор», №10, 2013 г. – С. 46-53.
в документации, думаю, для многих он станет откровением 10. Чуфаров И. Как избежать ошибок учета в 1С. Часть 7. Учет
именно после публикации данной статьи. В противном слу- оборудования. //«Системный администратор», №11, 2013 г. –
чае не было бы столько обсуждений и ошибочных выска- С. 73-79.
зываний, утверждающих, будто бы РАУЗ дает менее точные 11. Чуфаров И. Как избежать ошибок учета в 1С. Часть 8. Объекты
результаты, чем партионный учет. строительства. //«Системный администратор», №12, 2013 г. –
Может быть, у кого-то возникнет вопрос: а возможно ли С. 38-43.
в приведенном примере обеспечить детализацию, при кото- 12. Чуфаров И. Как избежать ошибок учета в 1С. Часть 9. Аморти-
рой суммовая оценка выпущенной продукции будет опреде- зация основных средств. //«Системный администратор», №1-
ляться реальной, а не усредненной стоимостью материала, 2, 2014 г. – С. 76-82.
из которого фактически она сделана? 13. Что лучше: РАУЗ или партионный учет? // Обсуждение на фо-
Да, это возможно. И именно этому будет посвящена вто- руме infostart.ru – http://forum.infostart.ru/forum36/topic46669.
рая часть статьи, которую вы сможете прочитать в одном
из следующих номеров. EOF Ключевые слова: 1C, партионный учет, РАУЗ, себестоимость.

Рисунок 7. В режиме РАУЗ получилась ровно такая же картина, как и в партионном учете

системный администратор март 2014 45


Разработка проектирование

Визитка

Александр Календарев, программист, РБК Медиа,


akalend@mail.ru

Концепции моделирования MongoDb


на примере разработки социальных игр
Подход к проектированию данных в документно-ориентированных БД немного
отличается от подобной работы в традиционных СУБД. Суть этих отличий мы сегодня
и рассмотрим

MongoDb – яркий представитель документно-ориентиро- и сервером осуществляется в его бинарном представле-


ванной базы данных, реализованой на С++, являющийся нии: BSON (Binary-encoded serialization of JSON).
Open Source-продуктом, что еще больше повышает ее по- Пример JSON-документа:
пулярность, распространяется под лицензией GNU AGPL
v3.0. Название составлено из части слова «humongous», {
"user_id" : 1,
что значит «большой», «значительный», а Db – сокращение "nickname" : "Bob",
от «DataBase». "level" : 3,
"pvp_level": 17 ,
Первый релиз был выпущен фирмой 10 Gen в 2008 году.
"awards" : ["hero-I","gold star"]
Текущей версией является 2.4. В настоящее время MongoDb }
используют более 10 миллионов компаний и стартапов, в том
числе такие гиганты ИТ-индустрии, как SourceForge.net, Документ содержит множество поименованных полей
foursquare (социальная сеть), the New York Times, MTV, Cisco с их содержанием. По сути, каждый документ содержит
и многие другие. в себе схему описания. Это позволяет хранить «гибкие»
В отличие от традиционных СУБД MongoDb не может структуры данных, что является некоторым преимуществом
делать операции объединения, JOIN-таблицы или, в терми- перед традиционными РСУБД.
нологии MongoDb, коллекции. Поэтому MongoDb подходит Множество документов сгруппированы в коллекции. Так,
в случае слабосвязанных или слабоструктурированных например, множество данных о пользователях может быть
данных. Если схема данных представляет сложные семанти- объединено в коллекцию users. А каждый элемент коллек-
ческие связи, то лучше использовать другой класс NoSQL- ции users является документом, описывающим конкретного
хранилищ: «графовые БД». пользователя.
Все документы в пределах коллекции проиндексированы
Основные концепции по первичному ключу в BTree-индекс. BTree-индекс позволя-
В основе концепции MongoDb лежит понятие документ. До- ет делать выборки по условию «больше и меньше». Также
кумент представляет набор поименованных полей, где каж- MongoDb позволяет индексировать документы по вторично-
дое поле выглядит как пара «ключ-значение». му индексу.
Внешнее представление документа сделано в виде Множество коллекций должно быть объединено в одну
формата JSON (Java Script Object Notation), а внутренняя из баз данных. Один запущенный экземпляр MongoDB мо-
организация хранения и передачи данных между клиентом жет поддерживать несколько разных баз данных. Концеп-
туально база данных соответствует понятию базы данных
в MySQL или схемы в Oracle.
Таблица 1. Сравнение традиционной РСУБД и MongoDb
Для лучшего понимания мы можем сделать сравнение
в терминах традиционных РСУБД (см. таблицу 1).
РСУБД MongoDb
База данных, Схема данных База данных Документ. Схема документа
Таблица Коллекция Документ – это основная единица, которой манипулирует
Строка данных, Таблицы Документ MongoDb, она представляет собой упорядоченный набор
Колонка строки Поле документа
полей с их значениями.
Представим документ с традиционным для компьютерной
Курсор Курсор в хранимых процедурах
сферы приветствием: «Hello, world!»:

46 март 2014 системный администратор


проектирование Разработка

{"greeting" : "Hello, world!"} byte[] – массив байт (бинарные данные);


bool – булевые (Истина и Ложь);
Этот простой документ содержит одно поле с именем null – Ноль;
«greeting» и со значением «Hello, world!». Большинство до- Object – BSON-объект;
кументов будет намного сложнее, но все они должны содер- Array[]– массив объектов;
жать множество поименованных полей. UUIDs – уникальные идентификаторы;
В MongoDb все документы должны иметь уникальный IDRefs – ссылочные типы.
первичный ключ _id, который автоматически индексируется
базой данных. Коллекция
Если это поле при вставке данных не задавать, то его зна- Для более гибкого манипулирования данными множество
чение сформируется системой автоматически и будет со- документов сгруппированно в коллекции. Аналогом кол-
держать следующие 12 байт: лекции в РСУБД может являться таблица БД, а документа –
0-3 байт – временная метка (время, когда объект был соз- строка данных.
дан). Для более быстрого извлечения документов по опреде-
4-6 байт – идентификатор экземпляра БД MongoDB. ленному признаку мы можем создать индекс на них по не-
Это необходимо для того, чтобы _id документа был уни- которым полям или сразу по группе полей (составной ин-
кальным, в случае же если БД разбита на несколько декс).
частей, которые распределены на несколько разных Индекс накладывается только на коллекцию, которая
машин. должна содержать логически сгруппированные документы.
7-8 байт – pid процесса. Например, если мы имеем коллекцию пользователей игро-
9-11 байт – инкрементный счетчик, который у каждого ков онлайн-игры (см. текст 1), то для выборки участия в «ран-
следующего документа увеличивает число на 1. домных боях» по одинаковым силам нам лучше проиндекси-
Такой алгоритм формирования первичного ключа гаран- ровать игроков по их игровому уровню «level» или боевым
тировано предполагает, что в БД не будет двух документов навыкам «pvp_level». Поэтому будет произведено наложе-
с одинаковым _id даже в случае большого потока ввода но- ние индекса на поле «level» коллекции users.
вых данных на некотором количестве распределенных сер- Коллекции идентифицируются по именам, которые могут
веров. содержать любые UTF-8 символы с некоторыми ограниче-
Для каждого документа должны выполняться следующие ниями:
правила: >> Имя коллекции не может быть пустой строкой.
>> Расположение полей в документе может быть неупоря- >> Имя коллекции не может содержать нулевой символ
доченным, то есть документы {"foo" : "bar", "baz" : "quux" } «\0» (null).
и {"baz" : "quux", "foo" : "bar"} для MongoDb идентичны. >> Имя коллекции не может содержать префикс «system».
>> Имена полей регистронезависимые, документы {"foo" : >> Имя коллекции не может содержать символ «$» (дол-
"bar"} и {"Foo" : "bar"} идентичны. лар), который зарезервирован системой.
>> Название поля не может содержать нулевой символ Имя коллекции может содержать символ «.» (точка),
«\0» (null). Этот символ используется для разделения например, «user.tanks», «user.angars». Такие наименова-
полей. ния (составные имена) коллекций несут лишь логическую
>> Символы «.» (точка) и «$» (доллар) зарезервированы смысловую нагрузку для большей информативности. Так-
системой и не могут использоваться в названии полей, же они используются служебными утилитами, например,
так как имеют специальное назначение, о котором бу- протокол GridFS применяет составные имена коллекций
дет рассказано ниже. для метаданных.
>> Имена полей, начинающиеся с «_», как правило, ис-
пользуются системой, поэтому не рекомендуется вно- База данных
сить в название данный символ. Например, как упо- База данных – это самый верхний уровень абстракции
миналось ранее, каждый документ имеет уникальное в MongoDb. Она содержит множество коллекций. Как и в тра-
поле «_id». диционных СУБД, на уровне баз данных организованы раз-
>> Каждый документ может содержать вложенный доку- ные уровни доступа для разных пользователей. По умолча-
мент. нию в MongoDb находится служебная БД.
Как мы видим, в отличие от традиционных РСУБД, в кото- Каждая база данных расположена на диске в собствен-
рых схема документа строго определена до начала исполь- ном файле, поэтому на имя БД наложены те же ограниче-
зования данных, в документно-ориентированных хранили- ния, что и на имена файлов. Дополнительными ограничени-
щах она содержится в самом документе и может меняться ями являются:
от одного к другому. >> Имя БД не может быть пустой строкой.
Поле в документе содержит имя и данные, в нем самом >> Имя БД не может содержать нулевой символ «\0» (null).
уже заложена его структура. Поля могут иметь следующие >> Имя коллекции не должно содержать символов «$.,/\»
типы: и пробел.
string – строка; >> Имена БД должны быть только в нижнем регистре.
int – целое число; >> Зарезервированные имена БД: local, admin и system,
double – двойное число с плавающей запятой; в которых сохранены все настройки, разрешения и ме-
DateTime – дата; таданные.

системный администратор март 2014 47


Разработка проектирование

Имена БД могут использовать префикс, по аналогии мером о наградах. Поэтому используются так называемые
с именами БД MySQL. Если используется коллекция users вложенные объекты. Пусть награды имеют некоторый рей-
в БД test, то можно написать: test.users. тинг, который определяет их «ценность», например, орде-
на ("type" = 1) и медали ("type" = 2) имеют разную ценность
Паттерны моделирования («rating»). Существуют медали «боевые», а есть медали
Если связанность данных небольшая, то можно использо- «юбилейные». Тогда данные по наградам можно предста-
вать их денормализацию – процесс, обратный процессу вить как массив вложенных объектов: {award: {name, rating,
нормализации. То есть развертывание структуры данных type}}:
в одну плоскую таблицу за счет увеличения избыточности.
Пример простой денормализации – это схема хране- {"nick": "Василий Теркин", "level":23, "pvp_level" : 659, ↵
"awards": [ "award": {"name":"Gold star", ↵
ния данных о наградах или наличии оружия. Пусть у нас "rating": 10, "type": 1} , ↵
есть игровая учетная запись – Пользователь (user). Каж- "award": {"name":"Victory", ↵
"rating": 7, "type": 1} }] }
дый пользователь (user) может быть в ходе игры награжден
и иметь одну или несколько наград (awards).
Мы имеем отношение многие ко многим между множе- В данном примере вложенным объектом выступает под-
ством пользователей (users) и множеством наград (awards). документ «award», состоящий из полей: {"name", "rating",
Такое отношение в РСУБД обычно реализуют через проме- "type"}.
жуточную таблицу: userAwards (награды пользователя). Такое применение оправдано в случае, если количество
Но в нестрогой системе мы можем использовать масси- пользователей большое (миллионы), а количество разных
вы. Ниже представлен пример представления отношения типов наград невелико (десятки или сотни).
множества многие ко многим: Другой паттерн представления данных в MongoDb – ис-
пользование ссылочных типов. Ссылочные типы – это ана-
>db.users.insert({"nick": "Иван Бровкин", ↵ лог внешних ключей РСУБД. Однако надо всегда помнить,
"level":20, "pvp_level" : 621, ↵
"awards": ["Silver star","Hero"] }) что MongoDb никаких объединений и пересечений не про-
изводит. Все операции по пересечению данных и объеди-
>db.users.insert({"nick": "Иван Чёлкин", ↵
нению таблиц производятся исключительно на клиентской
"level":25, "pvp_level" : 749, ↵
"awards": ["Silver star","Victory "] }) стороне.
Пусть нам для отображения на игровом поле предстоит
>db.users.insert({"nick": "Швейк", ↵
"level":25, "pvp_level" : 794, ↵
использовать список друзей friendList. Ниже на рис. 2 пред-
"awards": ["Gold star","Hero"] }) ставлено классическое отношение один ко многим при реа-
лизации для СУБД.
> db.users.insert({"nick": "Василий Теркин", ↵
"level":23, "pvp_level" : 659, ↵
«Друзья» имеют то же логическое отношение, что и «дру-
"awards": ["Gold star","Victory"] }) зья» в социальных сетях. Это те же пользователи (игроки),
с которыми у тебя есть «отношение дружбы», пользователи,
>db.users.find();
с которыми можно строить «коалиции» против врага при ор-
"_id" : ObjectId("530bb68d0af670a3356dfa02"), ганизации групповых боев.
"nick" : "Иван Бровкин", "level": 20, "pvp_level" : 621, Мы можем денормализовать данные и поместить в поле
"awards" : [ "Silver star", "Hero" ] }
«friendList» как массив вложенных объектов user со всеми
"_id" : ObjectId("530bb68d0af670a3356dfa03"), данными этого пользователя. Однако в этом случае у нас
"nick" : "Иван Чёлкин", "level":25, "pvp_level" : 749, встает проблема актуализации, то есть в случае любого из-
"awards" : [ "Silver star", "Victory " ] }
менения у пользователя необходимо сразу произвести ана-
"_id" : ObjectId("530bb68d0af670a3356dfa04"), логичные действия у всех его друзей, что очень накладно.
"nick" : "Швейк", "level" : 25, pvp_level" : 794,
Как вариант, используется объект friend, который име-
"awards" : [ "Gold star", "Hero" ] }
ет основные «не изменяемые» поля объекта user, такие
"_id" : ObjectId("530bb68d0af670a3356dfa05"), как «nick», «avatar» и ссылочное поле id = ObjectId("52cc24
"nick" : "Василий Теркин", "level" : 23, "pvp_level" : 659,
"awards" : [ "Gold star", "Victory" ] }
62d47566cbb0e20ff6") и ссылается на объект пользователя-
друга:
Но чаще всего объекты имеют более сложную структуру,
а не только одно поле «наименование», как в случае с при- friend: {"nick":"Василий Теркин", ↵

Рисунок 1. Пример простой денормализации Рисунок 2. Классическое соотношение один ко многим при реализации для СУБД

48 март 2014 системный администратор


проектирование Разработка

"avatar": "27AE/271.jpg", ↵ >> урон;


" id" : ObjectId("52cc2462d47566cbb0e20ff6") } >> скорострельность;
friend: {"nick":"Иван Ченкин", ↵
"avatar": "23EB/743.jpg"," ↵ >> броненепробиваемость.
id" : ObjectId("52cae653d47566cbb0e20fed") } Параметров для одного танка вполне достаточно, и если
использовать вложенные объекты в одном документе user,
Данные поля «id» представляют содержание первичного то он может быть слишком большим по объему. И мы при-
ключа _id на ссылаемый объект. При необходимости мы сле- дем к антипаттерну – глобальному объекту. Использование
дующим запросом выбираем всю требуемую информацию очень больших объектов может отрицательно сказаться
по «другу», например, для отображения его «базы». на производительности БД.
Подведем краткий итог. В первом примере, с наградами, Мы можем все танки выделить в одну коллекцию и ис-
ответственность за изменение информации закреплена пользовать ссылки на документ tank. Однако можно завести
за объектом user, который является «хозяином» этих наград. на каждого пользователя по индивидуальной коллекции, на-
Поэтому целесообразнее использовать массив вложенных пример, tanks_user_123, и давать ссылку на эту коллекцию:
объектов.
Во втором примере, со списком друзей, ответственность
за изменение информации закреплена за пользователем- {
"_ id" : ObjectId("52cc2462d47566cbb0e20ff6"),
другом. Поэтому целесообразнее использовать ссылочный "nick" : "Василий Теркин",
тип. Однако можно использовать комбинированный вари- "avatar" : "27AE/271.jpg",
"weapon" : {
ант, где неизменяемые данные, такие как «nick» или ссылка
"id" : 27,
на картинку с аватаром, можно представить во вложенном "power" : 127,
документе вместе со ссылкой на документ самого друга- "reserve" : 10
"experience" : 10
пользователя («user»). },
Также в виде вложенных документов удобно представить "position" : {
агрегированную информацию. Например, наш пользова- "x" : 453,
"y" : 74
тель имеет некое оружие, которое задается номером, ха- },
рактеризуется ударной силой (power), имеет запас зарядов // ссылка на коллекцию документов с танками
(reserve), у игрока есть некоторый опыт его использования "tanks" : ObjectId("52cae653d47566cbb0e20fed")
}
(eхperience). Также пользователь находится на поле c коор-
динатами (x, y):
Данная информация может быть представлена следую- ***
щим образом: Необходимо напомнить, что денормализация увеличивает
скорость доступа к данным, но оборотной стороной меда-
{ ли является их избыточность, лишние байты информации
"_ id" : ObjectId("52cc2462d47566cbb0e20ff6") ,
"nick" :"Василий Теркин", могут занимать много памяти, в частности, оперативные бу-
"avatar" : "27AE/271.jpg", феры БД, занятость которых взаимосвязана со скоростью
"weapon" : {
исполнения запроса. Слишком громоздкие объекты созда-
"id" : 27,
"power" : 127, вать и хранить не стоит, особенно если планируется исполь-
"reserve" : 10 зовать не весь объект, а только какие-то незначительные
"experience" : 10
},
его части. Для этого можно использовать ссылочные типы.
"position" : { Но следует помнить, что MongoDb не является реляционной
"x" : 453, СУБД и операции объединения и соединения таблиц не про-
"y" : 74
},
изводит. Эту функциональную возможность придется реа-
} лизовывать самостоятельно в клиентском приложении. EOF

Как мы видим, в документе пользователя присутствуют 1. Календарев А. Индексы в MongoDb. //«Системный админист-
составные объекты: weapon, position. ратор», №1-2, 2014 г. – С. 94- 97.
Еще один паттерн – это использование ссылочных данных 2. Официальный сайт MongoDB – http://www.mongodb.org.
на коллекции документов. Например, каждый пользователь 3. Документация (русский) MongoDb – http://ru.wiki.mongodb.org/
имеет некое сложное оружие, к примеру, танки. Как один display/DOCS/Home.
из вариантов, можно использовать массив сложных объек- 4. Интерактивное обучение от 10Gen (англ.) – http://
тов tanks. Каждый из танков характеризуется параметрами: www.10gen.com/what-is-mongodb.
>> подвижность; 5. Karl Seguin. The little MongoDb book. – http://openmymind.net/
>> мощность двигателя; mongodb.pdf.
>> максимальная скорость; 6. Karl Seguin. The little MongoDb book. Перевод на русский –
>> скорость поворота; http://jsman.ru/mongo-book.
>> скорость поворота башни; 7. Kristina Chodorow, Michael Dirolf. MongoDb: The Definitive
>> бронирование/защищенность корпуса; Guide – http://books.google.com.
>> бронирование/защищенность башни; 8. Кайл Бэнкер. MongoDb в действии. – ДМК «Пресс», 2012 г.
>> оружие;
>> боекомплект; Ключевые слова: MongoDb, СУБД, денормализация.

системный администратор март 2014 49


Разработка веб-технологии

Визитка

Михаил Ушаков, разработчик электронной аппаратуры и программного


обеспечения для ядерной гаммарезонансной спектроскопии, Уральский
федеральный университет, um.nix.user@gmail.com

Меньше кода, больше дохода


Часть 2. Разработка back-end слоя
Продолжаем изучать веб-фреймворк Tapestry для создания Java EE-приложений.
Рассмотрим некоторые вопросы, связанные с разработкой back-end слоя (серверная
часть веб-приложения). Этот слой включает в себя систему для работы с базами
данных, инструменты для аудита (логирование и т.д.) и многое другое

В прошлой части [1] мы научились создавать Java EE- <property name="hibernate.connection.pool_size">10 ↵


приложения с использованием веб-фреймворка Tapestry, </property> (файл hibernate.cfg.xml).

собирать веб-приложение с использованием Apache Maven,


добавлять отдельные компоненты или даже фреймворки Поскольку общие настройки hibernate уже были выпол-
с помощью файла pom.xml, а также рассмотрели базовые нены, остается описать объекты, с которыми будет работать
вопросы, связанные с конфигурированием веб-приложе- Hibernate. Для этого hibernate.cfg.xml необходимо добавить
ний с Tapestry. Теперь рассмотрим, как можно использовать ссылки на xml-файлы, описывающие отображение объектов
ORM (object relation mapping) Hibernate для работы с MySQL на таблицы баз данных:
базами данных и систему логирования Log4j (логгер) в ка-
честве back-end слоя (см. рис. 1). Конечно, в качестве слоя <!-- 1. Entities for working with users -->
<mapping resource="./db/entities/users/User.hbm.xml"/>
для работы с базой данных можно использовать и другие <mapping resource="./db/entities/users/Token.hbm.xml"/>
варианты, например, использование JDBC-драйвера на-
<!-- 2. Entities for working with helpdesk -->
прямую, Spring Framework, db4o и т.д. Однако с помощью
<mapping resource="./db/entities/helpdesk/Product.hbm.xml"/>
Hibernate в подавляющем большинстве случаев можно <mapping resource="./db/entities/helpdesk/ ↵
обойтись без конструирования SQL-запросов, а передавать ProductAttachment.hbm.xml"/>
<mapping resource="./db/entities/helpdesk/ ↵
объекты методам Hibernate. ProductIssue.hbm.xml"/>
<mapping resource="./db/entities/helpdesk/ ↵
Объекты и их связь с базой данных IssueAttachment.hbm.xml"/>
В [1] мы сконфигурировали Hibernate таким образом, чтобы <!-- 1. Entities for working with forum -->
веб-приложение запускалось, теперь потребуется выпол- <mapping resource="./db/entities/forum/ ↵
нить более детальную конфигурацию. В частности, настро- ForumSection.hbm.xml"/>
<mapping resource="./db/entities/forum/ ↵
ить размер пула соединений с базой данных (число заранее ForumTopic.hbm.xml"/>
установленных соединений). <mapping resource="./db/entities/forum/TopicPost.hbm.xml"/>

Рассмотрим на примере сущности User (файл User.hbm.


Рисунок 1. Представление веб-сервиса в виде двух слоев front-end и back-end
xml). Сущность User проецируется на таблицу Users, ко-
торая была создана с помощью следующего sql-скрипта
(структура таблицы не претендует на идеальность):

CREATE TABLE `Users` (


`Id` INT NOT NULL AUTO_INCREMENT,
`Login` VARCHAR(100) NOT NULL,
`FirstName` VARCHAR(100) NOT NULL,
`LastName` VARCHAR(100) NOT NULL,
`City` VARCHAR(100) NOT NULL,
`Email` VARCHAR(100) NOT NULL,
`PasswordHash` VARCHAR(1000) NOT NULL,
`GroupMembershipMask` INT NOT NULL,
`RegistrationDate` DATETIME NOT NULL,
`Activated` BIT NOT NULL,
`Avatar` BLOB NULL,
`AvatarFileName` VARCHAR(260) NULL,

50 март 2014 системный администратор


веб-технологии Разработка

CONSTRAINT `PK_UserId` PRIMARY KEY (`Id`) public String getLogin()


) {
COLLATE='utf8_general_ci' return login;
ENGINE=InnoDB; }
public void setLogin(String login)
{
Файл User.hbm.cfg описывает соответствие между типа-
this.login = login;
ми данных сущности (Java-классов) и типами данных в таб- }
лице, а также какие поля являются первичными ключами public String getFirstName()
{
таблицы и при наличии связей с другими таблицами. Содер- return firstName;
жимое файла User.hbm.cfg: }
public void setFirstName(String firstName)
<?xml version="1.0" encoding="UTF-8"?> {
<!DOCTYPE hibernate-mapping PUBLIC ↵ this.firstName = firstName;
"-//Hibernate/Hibernate Mapping DTD 3.0//EN" ↵ }
"http://www.hibernate.org/dtd/ ↵ public String getLastName()
hibernate-mapping-3.0.dtd"> {
<hibernate-mapping package="org.hibernate.tutorial.domain"> return lastName;
<class name="com.mushakov.uralsmessbauerportal. ↵ }
db.entities.users.User" table="Users"> public void setLastName(String lastName)
<id column="Id" name="id" type="java.lang.Integer"> {
<generator class="increment"/> this.lastName = lastName;
</id> }
<property column="Login" name="login" ↵ public String getCity()
type="java.lang.String"/> {
<property column="FirstName" name="firstName" ↵ return city;
type="java.lang.String"/> }
<property column="LastName" name="lastName" ↵ public void setCity(String city)
{
type="java.lang.String"/>
this.city = city;
<property column="City" name="city" ↵
}
type="java.lang.String"/>
public String getEmail()
<property column="Email" name="email" ↵
{
type="java.lang.String"/>
return email;
<property column="PasswordHash" name="passwordHash" ↵
}
type="java.lang.String"/>
public void setEmail(String email)
<property column="GroupMembershipMask" ↵
{
name="groupMembershipMask" type="java.lang.Integer"/>
this.email = email;
<property column="RegistrationDate" ↵
}
name="registrationDate" type="java.util.Date"/>
public String getPasswordHash()
<property column="Activated" name="activated" ↵
{
type="java.lang.Boolean"/>
return passwordHash;
<property column="Avatar" name="avatar" type="binary"/>
}
<property column="AvatarFileName" ↵
public void setPasswordHash(String passwordHash)
name="avatarFileName" type="java.lang.String"/>
{
</class>
this.passwordHash = passwordHash;
</hibernate-mapping>
}
public int getGroupMembershipMask()
В свойстве name поля class указано полное имя Java- {
return groupMembershipMask;
класса (все Java-классы должны быть POJO-классами с гет- }
терами и сеттерами). public void setGroupMembershipMask( ↵
Тэг id описывает поле первичного ключа, в данном случае int groupMembershipMask)
{
у нас первичный ключ генерируется базой данных путем ав- this.groupMembershipMask = groupMembershipMask;
томатического инкрементирования. }
Свойства column указывают имя колонки в таблице базы public Date getRegistrationDate()
{
данных, а свойство name – имя поля Java-класса. Обяза- return registrationDate;
тельно для каждого отображения необходимо указать тип }
данных, т.к. в процессе работы Hibernate использует приве- public void setRegistrationDate(Date registrationDate)
{
дение типов. Отображение типов SQL на типы данных Java this.registrationDate = registrationDate;
можно найти в [2]. }
public boolean getActivated()
Так выглядит класс User.java: {
return activated;
package com.mushakov.uralsmessbauerportal. ↵ }
db.entities.users; public void setActivated(boolean activated)
import java.util.Date; {
public class User this.activated = activated;
{ }
public int getId() public Byte[] getAvatar()
{ {
return id; return avatar;
} }
public void setId(int id) public void setAvatar(Byte[] avatar)
{ {
this.id = id; this.avatar = avatar;
} }

системный администратор март 2014 51


Разработка веб-технологии

public String getAvatarFileName() Также методы Hibernate требуют, чтобы первичный ключ
{ был сериализуемым, поэтому я добавил ограничения на TId
return avatarFileName;
} в виде extends Serializable.
public void setAvatarFileName(String avatarFileName) Ключевым для работы Hibernate является понятие фабри-
{
ки сессий. Для использования Hibernate в Java-приложении
this.avatarFileName = avatarFileName;
} потребуется создать собственную фабрику сессий из кон-
private int id; фигурации Hibernate, однако в контексте Tapestry фабрика
private String login;
private String firstName;
сессий уже создана, и попытка повторного создания будет
private String lastName; приводить к вбрасыванию исключений.
private String city; За создание сессий в Tapestry отвечает интерфейс
private String email;
private String passwordHash;
HibernateSessionManager. Для использования этого встро-
private int groupMembershipMask; енного сервиса Tapestry можно сконструировать объект
private Date registrationDate; типа HibernateSessionManagerImpl (с набором специфичных
private boolean activated;
private Byte[] avatar = new Byte[0]; параметров в конструкторе) или воспользовавшись IoC:
private String avatarFileName;
} @InjectService("HibernateSessionManager")
private HibernateSessionManager sessionManager;

Слой для взаимодействия классов сущностей


с Hibernate Этот подход (использование IoC) реализован
Теперь нам понадобится слой для работы с объектами в моем классе DatabaseManager, реализующем интерфейс
(управление транзакциями и т.д.). IdatabaseManager:
В Java используют парадигму DAO (Data access object),
согласно ей есть интерфейс DAO, у которого имеются ме- public class DatabaseManager implements IDatabaseManager
{
тоды для непосредственной работы с базой, эти методы вы- public boolean open()
полняют SQL-операции SELECT, INSERT, UPDATE, DELETE {
// session we are getting from IoC
и т.д. И есть класс, имплементирующий этот интерфейс, ко-
session = sessionManager.getSession();
торый работает с методами Hibernate или методами другого return true;
слоя для работы с базой данных. }
public void close()
Соответственно на каждую сущность мы получаем 1 класс {
интерфейса и 1 класс имплементации, а если классов сущ- sessionManager.commit();
ностей, например, 10, то таких классов будет 20. Эти классы }
public <TEntity, TId extends Serializable> ↵
будут усложнять структуру проекта. TEntity getEntityObject (Class entityClass, TId id)
Не нужно плодить лишние DAO! Для решения за- {
дачи достаточно создать интерфейс (давайте назовем if(session != null && session.isOpen())
{
его IDatabaseManager) с обобщенными (generic) методами try
и имплементацию этого интерфейса DatabaserManager. {
Интерфейс IDatabaseManager может быть, например, та- TEntity entityObject = null;
entityObject = (TEntity) ↵
ким: session.get(entityClass, id);
return entityObject;
public interface IDatabaseManager }
{ catch(Exception any)
public boolean open(); {
public void close(); sessionManager.abort();
public <TEntity, TId extends Serializable> ↵ throw new UnknownError("An exception ↵
TEntity getEntityObject (Class entityClass, TId id); occurred during reading object " ↵
public <TEntity> List<TEntity> ↵ + any.getMessage());
getEntityObjectsList(Class entityClass);
public <TEntity> boolean ↵ }
updateEntityObject(TEntity entityObject); }
public <TEntity> boolean ↵ return null;
addEntityObject(TEntity entityObject); }
public <TEntity, TId extends Serializable> boolean ↵ public <TEntity> List<TEntity> getEntityObjectsList ↵
deleteEntityObject(Class entityClass, TId id); (Class entityClass)
} {
if(session != null && session.isOpen())
{
Данный интерфейс является универсальным и позволя- try
ет методам интерфейсов передавать объекты любых типов {
за счет использования generic-методов. List<TEntity> entityObjectsList = ↵
session.createCriteria(entityClass). ↵
К сожалению, в Java довольно плохо (отсутствуют ана- list();
логи оператора typeof в C#) с отражениями (Reflection), тип return entityObjectsList;
данных можно получить, используя свойство getClass(), }
catch(Exception any)
к которому нет доступа из обобщенного типа, т.е. нельзя {
сделать entityObject.getClass(), поэтому в некоторые методы sessionManager.abort();
throw new UnknownError("An exception ↵
потребовалось передавать тип данных объекта.

52 март 2014 системный администратор


веб-технологии Разработка

occurred during reading list of ↵ occurred during adding object " + ↵


objects " + any.getMessage()); any.getMessage());
} }
} }
return null; return false;
} }
public <TEntity> boolean updateEntityObject(TEntity ↵ public <TEntity, TId extends Serializable> boolean ↵
entityObject) deleteEntityObject(Class entityClass, TId id)
{ {
if(session != null && session.isOpen()) if(session != null && session.isOpen())
{ {
try try
{ {
if(entityObject != null) Object entityObject = ↵
return false; getEntityObject(entityClass, id);
session.saveOrUpdate(entityObject); if(entityObject == null)
sessionManager.commit(); return false;
return true; session.delete(entityObject);
} return true;
catch(Exception any) }
{ catch(Exception any)
sessionManager.abort(); {
throw new UnknownError("An exception ↵ sessionManager.abort();
occurred during updating object " + ↵ throw new UnknownError("An exception ↵
any.getMessage()); occurred during deleting object " + ↵
} any.getMessage());
} }
return false; }
} return false;
public <TEntity> boolean addEntityObject( ↵ }
TEntity entityObject) private Session session;
{ @InjectService("HibernateSessionManager")
if(session != null && session.isOpen()) private HibernateSessionManager sessionManager;
{ }
try
{
if(session.contains(entityObject))
return false;
Данный класс заменяет все классы DAO, которые мог-
session.save(entityObject); ли бы потребоваться для работы с сущностями, конечно,
return true; в случае потребности в дополнительной функциональности
}
catch(Exception any) IDatabaseManager может быть с легкостью расширен. Те-
{ перь наш слой для работы с сущностями полностью готов,
sessionManager.abort(); добавим для него опцию для получения экземпляра сущно-
throw new UnknownError("An exception ↵
сти через IoC. В AppModule.java (опции развертывания app)

Рисунок 2. Отображение списка пользователей в Grid

системный администратор март 2014 53


Разработка веб-технологии

в методе public static void bind(ServiceBinder binder) необхо- Поскольку в Tapestry все переменные класса при каждой
димо добавить следующую строку: перезагрузке страницы очищаются, а при загрузке вызыва-
ется метод onActivate(), то именно в нем мы получаем спи-
binder.bind(IDatabaseManager.class, DatabaseManager.class); сок пользователей, применяя databaseManager, помеченный
аннотацией @Inject. Tapestry генерирует Java-код по взаимо-
Теперь с помощью аннотации Inject мы можем добавлять действию компонента gtid на основе значений свойств дан-
наш сервис на страницы. ного компонента (следует отметить, что grid может быть раз-
Для тестирования сервиса создадим простую страницу мещен в Java-классе), и можно работать с компонентом Grid
с CRUD (Create-Read-Update-Delete) компонентом, постро- через его интерфейс, но для компактности Java-кода стра-
енным на базе Tapestry Grid, назовем страницу Users. Users. ницы я вынес все значения свойств Grid в разметку Users.tml:
java выглядит следующим образом:
<html t:type="layout" title="Users management tool"
public class Users xmlns:t="http://tapestry.apache.org/schema/ ↵
{ tapestry_5_3.xsd"
public void onActivate() xmlns:p="tapestry:parameter">
{ <p> Users management tools with CRUD! </p>
databaseManager.open();
currentUser = new User(); <table t:type="grid" t:source="servicesUsers" ↵
servicesUsers = databaseManager.↵ t:row="currentUser" rowsPerPage="5"
getEntityObjectsList(currentUser.getClass()); include="id, firstName, lastName, login, ↵
if(servicesUsers != null && ↵ city, email, groupMembershipMask,
servicesUsers.size() > 0) registrationDate, activated" ↵
currentUser = servicesUsers.get(0); t:add="action">
databaseManager.close(); <p:actionCell>
} <a t:type="pageLink" t:page="management/ ↵
public void onActionFromDeleteUser(int id) ViewUser" t:context="currentUser.id"
{ href="#">View user</a><br/>
databaseManager.open(); <a t:type="pageLink" t:page="management/ ↵
databaseManager.deleteEntityObject( ↵ EditUser" t:context="currentUser.id"
currentUser.getClass(), id); href="#">Update</a><br/>
databaseManager.close(); <a t:type="actionLink" t:id="deleteUser" ↵
} t:context="currentUser.id">Delete</a><br/>
@Inject </p:actionCell>
private IDatabaseManager databaseManager; </table>
@Property </html>
private List<User> servicesUsers = new ↵
ArrayList<User>();
@Property В Grid есть свойство t:source, указано имя коллекции эле-
private User currentUser; ментов из Java-класса (но данная коллекция должна быть
}
помечена аннотацией @Property или должен быть метод

Рисунок 3. Редактирование пользователя с помощью BeanEditForm-компонента

54 март 2014 системный администратор


веб-технологии Разработка

List<User> getServicesUsers()), а t:row строка, с которой идет log4j.appender.R=org.apache.log4j.RollingFileAppender


работа в данный момент (здесь также используется поле log4j.appender.R.File=${catalina.home}/logs/testsecurity.txt
# Control the maximum log file size
Java-класса: currentUser). Результат отображения списка log4j.appender.R.MaxFileSize=10MB
пользователей на странице Users.java представлен на рис. 2. # Archive log files (one backup file here)
log4j.appender.R.MaxBackupIndex=1
Аналогичным образом IDatabaseManager используется
log4j.appender.R.layout=org.apache.log4j.PatternLayout
на страницах CreateUser, EditUser и ViewUser. Страницы #log4j.appender.R.layout.ConversionPattern=%p %t %c - %m%n
Create и Update я реализовал с помощью стандартного log4j.appender.R.layout.ConversionPattern=%p [%t] ↵
%d{dd MMM yyyy HH:mm:ss} (%F:%L) - %m%n
Tapestry-компонента BeanEditForm (см. рис. 3), а ViewUser –
с помощью BeanDisplay (см. рис. 4).
***
Логирование Мы рассмотрели некоторые моменты, связанные с настрой-
Для логирования необходимо добавить с помощью IoС кой back-end для Java веб-приложений, использующих
Tapestry логгер (log4j): фреймворк Apache Tapestry. Я хотел показать, как наибо-
лее компактно и эффективно организовать взаимодействие
@Inject Java-классов с ORM Hibernate. Для демонстрации было
private Logger logger;
создано несколько страниц со стандартными компонента-
ми фреймворка Tapestry. Следующие статьи, посвященные
Необходимо вызывать методы logger.info(), logger.warn(), Tapestry, будут о настройке front-end (передача данных меж-
logger.error() или logger.debug() для логирования на соот- ду страницами, создание и использование компонентов,
ветствующем уровне. По умолчанию вывод будет осущест- поддержка REST), подключение современных JavaScript
вляться в консоль контейнера сервлетов Apache Tomcat. и CSS-фреймворков, а также, возможно, тестировании Java
Для записи журнала в файл потребуется настроить аппен- EE-приложений на примере Tapestry-приложения. EOF
деры в файле конфигурации log4j (log4j.properties) [3].
Логирование в файл циклический перезаписываемый 1. Ушаков М. Меньше кода, больше дохода. Часть 1. Основные
после превышения его размера (RollingFileAppender) может особенности, создание проекта и конфигурирование. //«Сис-
быть настроено следующим образом: темный администратор», №1-2, 2014 г. – С. 98-101.
2. Отображение типов SQL на типы данных Java – http://www.
log4j.rootCategory=INFO, A1 tutorialspoint.com/hibernate/hibernate_mapping_types.htm.
log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout=org.apache.log4j.PatternLayout 3. Документация по log4j – http://logging.apache.org/log4j/1.2/
log4j.appender.A1.layout.ConversionPattern=[%p] %c{1} %m%n publications.html, http://www.javaworld.com/article/2076243/java-
log4j.category.org.apache.tapestry5.TapestryFilter=info se/log4j-delivers-control-over-logging.html.
log4j.category.org.apache.tapestry5=error
log4j.category.tapestry5=error
#### Second appender writes to a file Ключевые слова: Tapestry, фреймворк, back-end, Java.

Рисунок 4. Просмотр данных о пользователе с помощью BeanDisplay-компонента

системный администратор март 2014 55


Разработка особенности языка

Визитка

Иван Шихалев, фрилансер, специализируется


на веб-разработке и Ruby, shikhalev@gmail.com

Ruby и многозадачность
В статье рассматриваются основные средства работы с потоками (threads)
и процессами в языке и стандартной библиотеке Ruby

Прежде чем перейти к описанию инструментария отмечу, ресурсов – нам остается вполне доступен, таким образом,
что Ruby создавался не как специальный язык параллель- польза от использования потоков в Ruby, безусловно, есть.
ного программирования, хотя в это время многозадачность Работа с потоками в Ruby в основном сосредоточена
уже стала привычной и необходимой. Из этих двух посылок, в классе Thread – в самом простом случае мы создаем объ-
в общем-то, можно вывести текущую картину: никаких спец- ект этого класса из блока (или множество объектов) и ждем
ифических концепций мы в нем не увидим, только поддерж- завершения [1].
ку привычной для всех языков общего назначения модели
с некоторыми нюансами реализации. puts 'begin'
th = Thread.new do
Немного о терминологии: англоязычный термин «thread» (1..3).each { |i| puts i }
на русский переводится в двух вариантах – как «поток» end
# sleep 0
и как «нить». Второй вариант точнее и не вызывает неод-
puts '---'
нозначности с потоками данных (streams), однако первый th.join
уже прижился в качестве основного. Кроме того, есть еще puts 'end'
производные термины и варианты вроде «многонитевость»
(или «многонитность»), но они мне не встречались и, честно Результат будет такой:
говоря, режут глаз. Поэтому я буду использовать «поток».
begin
---
Многопоточность 1
Потоки позволяют программисту распараллелить выполне- 2
3
ние задачи в рамках одного процесса. Это дает заметный
end
выигрыш в двух основных случаях: во-первых, когда есть ап-
паратные ресурсы для параллельных вычислений, т.е. мно- Если же мы раскомментируем строчку «sleep 0», то по-
гоядерная или многопроцессорная архитектура. Во‑вторых, ложение строки с дефисами относительно цифр станет не-
когда какие-то подзадачи вынуждены тратить время на ожи- предсказуемым, а если вместо ноля напишем «1» или даже
дание внешних ресурсов, будь то дисковая подсистема, «0.1», то дефисы будут стабильно выводиться после тройки,
сеть или действия пользователя. поскольку поток полностью отработает раньше.
Плохая новость в том, что в действительности потоки Что еще можно сделать с потоком, кроме как запустить
Ruby не параллельны, и выигрыша от многоядерности нам его и дожидаться завершения (именно это делает метод
получить не удастся. Несмотря на то что актуальные версии join)? Можно его приостановить (метод класса Thread.stop,
интерпретатора используют потоки операционной системы, вызываемый внутри потока), «разбудить», т.е. продолжить
управление ими построено так, что в определенный момент выполнение с момента остановки (wakeup), прекратить,
времени выполняется только один поток. В старых версиях не дожидаясь окончания работы (terminate)... Такой пример:
(по 1.8.7 включительно) использовались так называемые зе-
леные потоки, исполняющиеся в рамках одного системного, th = Thread.new do
puts 'started'
в новых действует механизм GIL (global interpreter lock). Thread.stop
Хорошая новость то, что этот механизм защищает от не- puts 'continued'
sleep 100
которых (но не всех) потенциальных конфликтов между по-
puts 'finished'
токами. Ниже о синхронизации еще поговорим, а пока от- end
метим, что второй выигрыш – в случае ожидания внешних sleep 0.1

56 март 2014 системный администратор


особенности языка Разработка

puts 'wakeup' end


th.wakeup end
sleep 0
puts 'terminate'
th.terminate В более сложных случаях, когда у нас, например, две пе-
th.join
ременные, обращение к каждой из которых нужно синхро-
низировать независимо друг от друга, следует использовать
Даст следующий вывод: объекты класса Mutex и их метод synchronize.

started alpha = true


wakeup alpha_m = Mutex.new
continued beta = true
terminate beta_m = Mutex.new
5.times do
Thread.new do
Причем, если мы закомментируем строку «sleep 0», alpha_m.synchronize do
то до «continued» дело может и не дойти. puts 'alpha' if alpha
alpha = false
end
Обмен данными между потоками beta_m.synchronize do
Во-первых, мы можем передавать блоку аргументы при соз- puts 'beta' if beta
beta = false
дании потока: end
end
Thread.new 1, 2, 3 { |a, b, c| ... } end

Во-вторых, в Ruby любой код возвращает какое-то значе- Thread.exclusive делает то же самое, но при этом исполь-
ние, и результат выполнения блока мы вполне можем полу- зует один и тот же объект класса Mutex на все случаи.
чить – для этого нужно использовать метод value вместо join. Кроме такой безусловной синхронизации, объекты Mutex
В-третьих, блок, из которого создается поток, как и лю- позволяют и более гибко работать с блокировками – в каких-
бой другой, образует замыкание, т.е. в нем можно обращать- то случаях не дожидаться освобождения заблокированного
ся к любым данным, доступным в месте его объявления [2]. объекта, а выполнить другие действия (например, вывести
Однако нужно помнить о том, что разные потоки могут об- сообщение об ошибке). А еще ручное блокирование/раз-
ращаться к одним и тем же данным в произвольном порядке. блокирование дает простор для глупых ошибок по невнима-
От одновременного обращения двух потоков к одной тельности, поэтому я бы не рекомендовал им пользоваться
переменной нас защищает GIL, о котором было сказано без особой на то необходимости.
выше, он же делает многие (но не все) стандартные методы В-четвертых, мы можем получать и устанавливать так на-
стандартных классов атомарными, но этого недостаточно. зываемые переменные потока посредством методов thread_
Сколько раз выведет «true» следующий код? variable_get/set.

flag = true th = Thread.new do


5.times do sleep 0.1
Thread.new do p Thread.current.thread_variable_get 'alpha'
puts 'true' if flag end
flag = false th.thread_variable_set 'alpha', :alpha
end th.join
end
Thread.list.each do |th| Сюда же отнесем обращение к переменным, принадле-
if th != Thread.current
th.join
жащим текущему «волокну» (fiber) потока – пример выше
end можно переписать так:
end
th = Thread.new do
sleep 0.1
Правильный ответ: непредсказуемо, если запустить p Thread.current['alpha']
скрипт достаточно много раз, можно увидеть все вариан- end
th['alpha'] = :alpha
ты от одного до пяти. Хотя проверка флага и присвоение
th.join
ему значения сами по себе атомарны и не вызывают кон-
фликтов, между ними легко может произойти переключение Это короче и нагляднее, но надо помнить, что в общем
между потоками. случае «волокна» могут меняться.
Самый простой способ обеспечить синхронизацию – ис- И, в-пятых, для потоков применимы описываемые ниже
пользовать метод Thread.exclusive, в предыдущем примере способы взаимодействия между процессами.
это бы выглядело так:
Отступление о «волокнах»
5.times do «Волокна» (fibers) имеют косвенное отношение к теме
Thread.new do
Thread.exclusive do статьи, но не упомянуть их нельзя, хотя бы из-за вышео-
puts 'true' if flag писанного обращения к fiber-local переменным. По сути,
flag = false
это сопрограммы, переключение между которыми проис-
end
ходит не средствами системы (или виртуальной машины),

системный администратор март 2014 57


Разработка особенности языка

а вручную. Еще их можно охарактеризовать как подпро- 3.times do |i|


граммы, выполнение которых при каждом вызове начинает- sleep 0.01
puts "Parent [#{Process.pid}]: #{i}"
ся с того момента, на котором было остановлено в прошлый end
раз. Поясню примером: Process.waitpid pid

f = Fiber.new do Должен получиться примерно такой вывод:


current = Time.new
loop do
last = current Parent [9032]: 0
current = Time.new Child [9034]: 0
Fiber.yield [last, current] Parent [9032]: 1
end Child [9034]: 1
end Parent [9032]: 2
5.times do Child [9034]: 2
p f.resume
sleep 1
Что здесь важно помнить, так это то, что, хотя блок
end
при fork и является замыканием, он получает доступ
В результате получим последовательность пар значений не к тому же окружению, в котором определен, а к его копии
времени предыдущего вызова и текущего. В целом это до- на момент запуска. Таким образом, обмен данными посред-
вольно экзотический инструмент, которому в явном виде ством внешних переменных невозможен, а вопрос о синхро-
не так-то просто найти практическое применение. низации не имеет смысла. Что касается внешних программ,
то для их вызова служит несколько методов:
Дополнительно о потоках spawn – асинхронный вызов, который нас и будет инте-
Для группировки потоков существует класс ThreadGroup, ресовать, возвращает идентификатор процесса;
который не предоставляет никакой особой функциональ- system – синхронный вызов (т.е. метод дожидается за-
ности, кроме контроля над тем, чтобы каждый поток принад- вершения), возвращает индикатор успешности вызова;
лежал одной и только одной группе. Не добавленный ни в ка- exec – синхронный вызов, в случае неудачи вызывает ис-
кую группу явно поток принадлежит ThreadGroup::Default. ключение;
Все классы, упомянутые выше, принадлежат ядру языка `command` или %x{command} – самая простая фор-
и загружаются автоматически, однако есть другие возмож- ма – синхронный вызов, возвращает строку, соответству-
ности, которые дают уже модули стандартной библиоте- ющую выводу программы.
ки [3]. Так, «require 'thread'» предоставит нам классы Queue Таким образом, теме данной статьи соответствует только
и SizedQueue с функциональностью очереди, как ясно spawn как асинхронный. Замечу лишь, что system и exec ис-
из названия. Во втором случае объем очереди ограничен, пользуют те же аргументы. Аргументы описываются так:
и при достижении ограничения помещение нового элемента
будет дожидаться, пока другой поток освободит место. spawn(‹env,› command ‹, args›*, ‹options›) → pid

Еще одна полезная библиотека («require 'thwait'» и класс


ThreadsWait) позволяет ожидать завершения некоего набо- Вначале идет необязательный параметр, устанавливаю-
ра потоков, как всех вместе, так и по очереди. щий дополнительные переменные окружения, затем коман-
да, затем произвольное количество необязательных аргу-
Процессы в Ruby ментов и, наконец, если последний параметр – хеш, из него
Собственно запуск программы на Ruby, как и на любом берутся опции, позволяющие управлять правами доступа,
другом языке, – есть запуск процесса. Он, в свою оче- текущим каталогом и, самое главное, перенаправлениями
редь, может порождать дочерние и общаться как с ними, ввода-вывода. В самом же простом случае достаточно ука-
так и с совершенно независимыми от него процессами. зать только команду.
Ключевое отличие дочернего процесса от потока – незави-
симое адресное пространство – разные процессы не могут Сигналы
никаким образом обращаться к переменным друг друга. Процессы могут посылать друг другу сигналы и как-
С точки зрения программиста дочерние процессы де- то на них реагировать. Вообще сигналы – это скорее ме-
лятся на два принципиально разных вида: подпроцессы, ханизм для общения операционной системы с процессами,
порождаемые из того же кода посредством fork, и внешние и большинство из них зарезервировано под специальные
программы. Как работает fork? В привычных языках типа нужды, однако кое-что можно задействовать и в прикладных
C это функция, в родительском процессе возвращающая целях. Выглядит это, например, так:
идентификатор дочернего, а в дочернем – ноль. В Ruby мож-
но ее использовать точно так же, однако более элегантно child = fork do
count = 0
воспользоваться вариантом с блоком, который и станет вы- Signal.trap :USR1 do
полняться в дочернем процессе. count += 1
puts "Signal USR1: #{count}"
end
pid = fork do
Signal.trap :TERM do
3.times do |i|
puts 'Signal TERM'
sleep 0.01
exit
puts "Child [#{Process.pid}]: #{i}"
end
end
sleep 1000
end
puts 'Ooops!'

58 март 2014 системный администратор


особенности языка Разработка

end Можно создавать произвольное количество каналов и на-


Signal.trap :CHLD do значать их как выводу, так и вводу.
puts 'Child died.'
end
Process.kill :USR1, child Сокеты
sleep 0.01
Сокеты – это универсальный механизм взаимодействия про-
Process.kill :USR1, child
Process.kill :TERM, child извольных программ между собой, в том числе и по сети.
Process.wait Здесь уже неважно, как и где запускается процесс-собе-
седник, нужно только знать адрес и протокол обмена (фор-
В результате должно получиться: мат данных). Сам по себе стандарт сокетов довольно низко-
уровневый, так что подробное описание и примеры заняли
Signal USR1: 1 бы слишком много места. Отмечу лишь, что инструменты
Signal USR1: 2
Signal TERM работы с сокетами находятся в модуле «socket» стандарт-
Child died. ной библиотеки.
Кроме того, на сокетах основано взаимодействие уже
Метод Process.kill посылает сигнал, а Signal.trap устанав- максимального уровня – готовыми Ruby-объектами в биб-
ливает обработчик сигнала. При этом мы видим, что сигнал лиотеке dRuby, о которой я писал в одной из предыдущих
CHLD мы не посылали – его отправила система, уведомляя статей [4]. Здесь же стоит сказать, что dRuby позволя-
родительский процесс о завершении дочернего. Стоит об- ет обращаться к объекту в другом процессе (и, возможно,
ратить внимание на строку «sleep 0.01» между двумя от- на другой машине) как к локальному объекту Ruby со всеми
правками. Если ее закомментировать, то сигнал USR1 будет его методами, свойствами и т.д.
получен дочерним процессом только один раз, поскольку
на момент второй отправки первый еще не будет обрабо- Применение
тан – сигналы поступают в очередь и уже имеющиеся там Подведем итоги. При использовании потоков мы остаем-
не добавляются. ся в рамках одного процесса, что определяет как плюсы,
К сожалению, посредством сигналов мы можем сооб- так и минусы: с одной стороны, возможность использова-
щить процессу только о наступлении некоторого события, ния общих переменных, с другой, взаимная зависимость.
без подробной информации. А всю информацию между Дополнительный минус именно Ruby-реализации – глобаль-
процессами нужно передавать средствами ввода-вывода. ный блокировщик, из-за которого реально в любой момент
времени выполняется только один поток. Следует, однако,
Каналы ввода-вывода понимать, что GIL – это именно особенность реализации,
Общим способом для любых дочерних процессов будет пе- а не языка, независимые реализации, такие как, например
ренаправление ввода-вывода посредством каналов (pipes). JRuby и Rubinius, его не имеют, не исключено, что и будущие
Для внутренних подпроцессов это выглядит так: версии «эталонного» Ruby изменят свое поведение.
Оптимальный сценарий использования – распараллели-
rd, wr = IO.pipe вание ожидания: работа с сетью, фоновые действия, когда
child = fork do
rd.close один из потоков ждет и обрабатывает общение с пользова-
wr.write 'From Child' телем, файловые операции. Основным средством взаимо-
wr.close
действия между потоками является использование общих
end
wr.close переменных (не забывая про синхронизацию).
msg = rd.read При запуске нескольких процессов получаем полный
rd.close
p msg
параллелизм, а вот средства коммуникации приходится
Process.wait прописывать отдельно. Соответственно лучше всего такой
сценарий поведет себя на максимально независимых зада-
Здесь существенно, что оба процесса первым делом за- чах, мало связанных, обмен данными между которыми мож-
крывают ненужные «концы» канала. Если этого не сделать, но свести к нескольким точкам. Взаимодействие строится
то возможны проблемы с некорректным определением кон- на каналах ввода-вывода для дочерних процессов и соке-
ца файла. тах/dRuby для независимых. EOF
В случае внешних команд все похоже, а «пишущий ко-
нец» канала передаем в специальном хеш-значении в по- 1. Полные тексты примеров находятся по адресу – https://gist.
следнем параметре spawn: github.com/shikhalev/9198544.
2. Шихалев И. Блоки и контекст в Ruby. //«Системный админист-
rd, wr = IO.pipe ратор», №1-2, 2014 г. – С. 111-115.
child = spawn "echo 'External Child'",
[ STDERR, STDOUT ] => wr 3. Подробную документацию на стандартную библиотеку можно
wr.close найти по адресу – http://rubydoc.info/stdlib (англ.).
msg = rd.read 4. Шихалев И. Распределенный Ruby. Прозрачный RPC для взаи-
rd.close
p msg модействия Ruby-программ. //«Системный администратор»,
Process.wait №12, 2013 г. – С. 58-61.

В приведенных примерах использовалась передача дан- Ключевые слова: Ruby, потоки, сокеты, параллельное выполнение
ных только в одну сторону, что, конечно, необязательно. заданий.

системный администратор март 2014 59


Разработка тестирование

Визитка

Анна Сергеева, старший инженер службы обеспечения


качества Alloy Software Inc., annserge@rambler.ru

CamStudio в руках тестировщика


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

К слову о бережливом производстве Тестировщик в ходе своей работы находит тот или иной
Есть два пути развития технологии: дефект в исследуемой программе. Добавляет в багтрекер
Первый – экстенсивный. Он характеризуется миниму- новый тикет, где детально описывает проблему, настройки
мом затрат, помноженным на максимум ручного труда. и шаги по воспроизведению, при необходимости снабжая
Но так или иначе неизбежны затраты на зарплату, ком- тикет поясняющими скриншотами.
пьютерный ресурс, длительность процесса. Далее тикет обрабатывается менеджерами проекта
Второй – интенсивный. Здесь ручной труд сокращается и передается в разработку программистам. Результаты ис-
за счет привлечения вспомогательных программных ин- правлений попадают в новую сборку проекта, и менеджеры
струментов. Часть затрат идет на их приобретение, часть возвращают тикет в тестирование. В соответствии с планом
на повышение зарплаты более квалифицированным со- работ, ориентируясь на описание тикета, а также на при-
трудникам. Выигрыш такого подхода в сокращении чис- мечания программистов по исправлениям, тестировщик
ла ошибок и времени работы над проектом. Называется спокойно выполняет свою работу по проверке устранения
это «бережливое производство» (Lean Manufacturing) [1]. дефекта.
В «правильных» ИТ-компаниях, разрабатывающих прог- Теоретически до этого момента от тестировщика ника-
раммное обеспечение, руководство сосредотачивает силы ких действий по данной конкретной проблеме не требует-
на том, чтобы на выходе получить продукцию наиболее вы- ся. В ожидании устранения дефекта он благополучно о нем
сокого качества, насколько это возможно и целесообразно, забывает и переключается на решение совершенно других
с наименьшими затратами времени, финансов и труда на- задач.
емных работников. Поэтому автоматизации процессов про-
изводства уделяется все больше внимания. А что же на практике?
При этом автоматизация бывает разная: С момента создания тикета проходит время – в зависимости
>> новостные корпоративные рассылки о запланирован- от планирования проекта от пары дней до нескольких не-
ных мероприятиях и совещаниях; дель, а иногда и того дольше.
>> оповещение работников о назначенных задачах и сро- Тестировщик уже давно сосредоточенно трудится
ках исполнения; над очередной задачей или расслабленно отдыхает от вы-
>> составление автоматических отчетов о проделанной полнения своего титанического самоотверженного труда,
работе. и тут... И тут к нему приходит программист, которого менед-
Разумеется, затрагиваются и сами процессы выполнения жер проекта щедро назначил добровольцем по устранению
рабочих задач программистов, технических писателей, те- того самого дефекта, о котором у нас велась речь ранее.
стировщиков, релиз-инженеров и далее по списку. И программист просит тестировщика наглядно воспро-
Все это призвано не только повысить качество готового извести дефект еще раз, по шагам, показать, что и как тот
программного продукта, но и в значительной мере облег- делал, какие диалоги вызывал, какие кнопки нажимал и т.д.
чить ежедневный труд команды специалистов, а также улуч- Возможно, описание проблемы в тикете было несовер-
шить их взаимодействие. Однако практика зачастую имеет шенным, или последовательность шагов описана не полно-
тенденцию расходиться с теорией. стью, или в не достаточно доходчивой форме, или этот про-
граммист – новичок в данном проекте. Мало ли что.
Взгляд изнутри Вот и получается, что тестировщик вынужден терять кучу
Достаточно много лет я занимаюсь тестированием и часто времени, приостановив решение той задачи, над которой
сталкиваюсь с такой ситуацией. он в настоящий момент трудится, вспомнить и понять, о чем

60 март 2014 системный администратор


тестирование Разработка

конкретно его просит программист. Ну и воспроизвести, Затем Интернет стал общедоступным и наполнился мас-
разумеется... сой руководств в электронном виде. Все, что требовалось,
Частично этих проволочек можно избежать, если к тикету это запросить у поисковой системы описание нужной про-
добавить скриншот с ошибкой, снабдив его поясняющими граммы и выбрать наиболее подходящий текст: от беглых
надписями и выделив проблемный блок. Или если макси- обзоров для «чайников» до подробных технических доку-
мально формализовано описать шаги по воспроизведению. ментов для специалистов.
Но случается, что первого бывает недостаточно, второе же Теперь же активно развивается новая тенденция.
отнимает неоправданно много сил и времени. Все больше и больше поставщиков программ размещает
Разумеется, это актуально не для всех дефектов пого- в глобальной сети видеоинструкции и презентации своей
ловно, однако для описания наиболее проблемных из них продукции.
и в целях экономии времени можно записать последова- Вот, например, на сетевом ресурсе [2] размещена бога-
тельность действий с программой, приводящих к ошибке, тая коллекция демонстрационных видеозаписей по всевоз-
с помощью видеоролика. А затем при описании проблемы можным тематикам, связанным с ИТ: безопасность, сетевые
прикрепить его к создаваемому тикету. технологии, хранение данных, использование мобильных
Это помогает программистам понять суть ошибки, за- устройств и т.д. Их легко найти, удобно просматривать,
меняет печать текста на полстраницы и сокращает время и в сравнении с текстом они значительно выигрывают с точ-
работы, избавляет от необходимости бегать за разъяснени- ки зрения подачи материала и его восприятия.
ями, а тестировщикам не придется лишний раз отвлекаться Разумеется, современный пользователь, ограниченный
от текущих дел. И вот именно здесь возникает переломный во времени и достаточно ленивый, охотнее потратит пару
момент. Ибо, имея такую технологию, можно шагнуть гораз- минут на просмотр видео, нежели часами будет напряжен-
до дальше. Перейти на качественно новый уровень работы но листать скучный «талмуд», отчаянно пытаясь в нем ра-
над всем проектом. зобраться. Почему бы запись видеоинструкций не начать
Поясним, в чем тут дело. гораздо раньше, например, на этапе разработки и тестиро-
вания продукта?
Видеоинструкции как замена текстовой И если прежде документом, фиксирующим ошибки про-
документации граммы, был текстовый файл, то теперь эти функции будут
Это раньше в комплекте с выпускаемыми программами шли переданы видеофайлу. А сопровождающий его текст боль-
многотомные печатные инструкции. Их изучение было дол- ше не придется снабжать детальным описанием ошибки,
гим, муторным и неудобным. Да и к тому же, что скрывать, а лишь указывать в основном только ключевые моменты,
мало кому интересным. время возникновения и «симптомы» ошибки.

Рисунок 1. Профессиональный программный пакет Camtasia Studio

системный администратор март 2014 61


Разработка тестирование

Что имеется в виду? тирования в различные видеоинструкции, презентации


Во время тестирования тех или иных частей программы и обучающие курсы.
можно использовать средства для видеозаписи действий, Кстати, по желанию менеджеров проекта можно даже
происходящих на экране компьютера. Например, тести- настроить бизнес-логику багтекера таким образом, чтобы
ровщик во время проверки какого-либо тикета включает при открытии тикета тестировщиком, запускался рекордер,
рекордер и фиксирует свои действия. Далее, вне зависи- а при открытии программистом – проигрыватель с соответ-
мости от исхода проверки, подключает к тикету небольшой ствующим видео.
видеоролик. Таким образом, на сервере будет храниться
большой набор видеозаписей, которые можно использо- Обзор рынка видеорекордеров
вать по-разному. Для записи видеороликов, отражающих работу с компью-
Записи, связанные с тикетами со статусом Test Failed терными программами, существует великое множество ин-
(неуспех теста), могут использоваться программиста- струментов. Тут уж есть из чего выбрать, и каждый наверня-
ми для понимания шагов воспроизведения ошибки. За- ка найдет то, что по душе именно ему.
писи же, связанные с тикетами со статусом Test Passed Так, например, профессионалы, занимающиеся созда-
(успех теста), принимаются службой маркетинга для мон- нием различных видеопрезентаций, чаще всего пользуют-
ся такими программными пакетами, как Camtasia Studio [3].
Он снабжен встроенным видеоредактором, который обла-
Рисунок 2. Настройка формата выходных файлов для Demo Builder
дает понятным и удобным интерфейсом для создания ви-
деороликов (см. рис. 1) с большим числом разнообразных
функций.
Также среди платных программ стоит отметить Demo
Builder. Разработчики программы [4] позиционируют
ее как вполне профессиональный инструмент для созда-
ния презентаций и обучающих курсов. Программа включает
различные средства редактирования, эффекты и средства
визуализации для создания флеш (см. рис. 2), добавления
примечаний, склеивания и разрезания роликов на отдель-
ные сцены и т.д. Готовые файлы сохраняются в формате
SWF или AVI.
Среди свободно распространяемых аналогов популярна
Fraps [5]. Сама по себе программа неплоха, однако имеет
несколько другой профиль. Она предназначена для съемки
роликов в видеоиграх и изначально ориентирована на ви-
део высокого разрешения и большой длительности (под-
держивает масштабные AVI-файлы размером более 4 Гб).
Скорее подойдет для тестирования качества отрисовки
графики исследуемой программой.
И это далеко не весь список. В общем, есть из чего выб-
рать. Есть и профессиональные инструменты с большим
числом функций, и относительно простые программы, с ко-
торыми справится даже новичок. Право выбора оставляю
за заинтересованным читателем.
И все же для начала стоит опробовать технологию в деле
и уж потом определиться с приобретением платного про-
Рисунок 3. Программа записи видео с экрана CamStudio
граммного пакета или с установкой какого-либо свободно
распространяемого аналога.
Посему на первом, ознакомительном, этапе предлагаю
воспользоваться бесплатной программой CamStudio. Хотя
она не снабжена встроенным видеоредактором, однако
с записью видео с экрана вполне успешно справляется.

CamStudio
Программа CamStudio [6] (см. рис. 3) записывает все про-
исходящее на экране монитора в видеоролик формата AVI,
MP4 или SWF (флеш).
Основным ее достоинством является то, что для работы
совсем не нужно обладать какими-либо специальными про-
фессиональными знаниями по компьютерной анимации,
видеомонтажу и так далее. Человек, в нашем случае – те-
стировщик, совершенно далекий от мира компьютерной ки-

62 март 2014 системный администратор


тестирование Разработка

ноиндустрии, в состоянии быстро и успешно начать с ней как правило, нет возможности снабжать записывае-
работать. мое видео голосовыми комментариями, поэтому оп-
Тем более это существенно, поскольку для тестировщи- цию стоит отключить.
ка само создание ролика является вовсе не прямой целью, »» Autopan. В этом режиме область захвата следует
а лишь удобным и быстрым вспомогательным средством, за указателем мыши, скорость следования также
которое должно существенно сэкономить его силы и время настраивается.
в определенные моменты рабочего дня. »» Automatically Stop Recording. Автоматическая
Перечислим предоставляемые возможности. остановка записи ролика по таймеру. Удобно для за-
File. Главные кнопки рекордера: запись, пауза, стоп. писи серии нескольких коротких однотипных роли-
Region. Выбор области экрана для записи: фиксирован- ков.
ная часть экрана, конкретное окно какого-либо приложе- »» Program Options. Настройки программы. Здесь
ния (подходит для записи работы различных визардов, можно задать характер поведения окна программы
небольших диалогов, окон настройки), полноэкранный во время и после записи; изменить формат имен,
режим. создаваемых готовых и временных файлов, и ка-
Options. Опции для записи и настройки программы. талог их размещения; настроить горячие клавиши
»» Video Options. Опции записи видео: выбор коде- на какие-либо действия с программой и т.д. Так, на-
ка и параметров сжатия, частота кадров, привязка пример, опция Minimize program on start recording
аудио. (минимизировать программу при старте записи)
»» Cursor Options. Опции курсора: выбор его типа удобна при записи полноэкранного видео, а также
и подсветки на записи, а также возможность скрыть если монитор не отличается большим разрешением.
курсор. Play AVI file when recording stops позволяет воспро-
»» Audio Options. Настройка параметров динамиков извести ролик сразу после его записи, с выбором
и микрофона для записи звука, настройка синхро- из перечня доступных проигрывателей: системный
низации аудио и видеокадров. или встроенный CamStudio PlayerPlus.
»» Record audio from... Группа опций для выбора ис- »» Record To Flash Options. Опции, связанные с пре-
точника записи аудио: от микрофона, от динамиков, образованием записи из формата AVI в SWF.
без аудио. В стандартной ситуации работы в офисе, »» Language. Выбор языка интерфейса программы.

системный администратор март 2014 63


Разработка тестирование

Tools. Набор инструментов для работы над видеороликом. »» CamStudio Movie Player. Вызов встроенного про-
Screen Annotations. Возможность добавления при- игрывателя видеороликов.
мечаний на экран непосредственно во время записи »» SWF Producer. Вызов встроенной утилиты для пре-
(см. рис. 4). Примечания отображаются в виде цветных образования видеозаписи из формата AVI в SWF.
картинок с редактируемым текстом. Шаблоны этих кар- Окно настройки параметров преобразования при-
тинок загружаются из библиотек, поставляемых вместе ведено на рис. 5. Как правило, в результате полу-
с CamStudio. При желании можно изменять их размер чается файл меньшего размера, который удобно
и прозрачность и даже сохранять в виде пользователь- передавать через Интернет и хранить на сервере.
ских библиотек шаблонов. Готовое изображение с тек- Разработчики CamStudio заявляют, что в среднем
стом остается только расположить в нужной части экра- для файлов AVI небольшого разрешения размер
на и снять на видеоролик. Здесь удобно использовать файла SWF составит около 30%, а для файла AVI
горячие клавиши. большого разрешения размер SWF будет около 5%.
Video Annotations. Возможность добавления видеопри- Также есть возможность преобразования в флеш
мечаний. Их источником служит изображение с веб-ка- без потерь (без снижения качества изображения
меры компьютера. Величина разрешения видео настра- или частоты кадров).
ивается. Effects. Настройки эффектов для ролика: временных ме-
ток, водяных знаков и заголовков.
View. Выбор внешнего вида окна программы CamStudio.
Рисунок 4. Текстовые примечания на видео улучшают восприятие
На мой взгляд, удобен компактный режим (Compact), ког-
да отображаются только набор кнопок и главное меню
программы.
Help. Подробная помощь и информация о программе.

***
Использование видеорекордеров в ходе проектов разра-
ботки программного обеспечения решает сразу несколько
задач.
Во-первых, облегчается труд тестировщиков при опи-
сании обнаруженных дефектов. Также это помогает про-
граммистам вникнуть в суть ошибки, которую им требуется
исправить. В более широком смысле решается задача взаи-
модействия между подразделениями проекта: нет необхо-
димости в их непосредственном визуальном и вербальном
контакте, нет потерь по тайм-менеджменту.
Во-вторых, проект получает большой набор исходных
Рисунок 5. Настройка опций конвертации AVI/SWF
материалов для создания разноплановых видеоинструк-
ций, презентаций и обучающих курсов по продукту на бо-
лее ранних этапах работы над проектом (на стадии раз-
работки и тестирования) и от технически осведомленных
работников.
Грамотно составленные видеоинструкции весьма инфор-
мативны, полезны и удобны для восприятия. Размещение
таких роликов на специализированных или общих сетевых
ресурсах привлекает необходимую дополнительную целе-
вую аудиторию и положительно сказывается на рейтинге
проекта. EOF

1. О бережливом производстве – Monden Y. Toyota Production


System: An Integrated Approach to Just-In-Time //CRC
Press, 2011. – 4th Edition – 566 с.
2. Сайт видеосервера Demos On Demand – http://www.
demosondemand.com/it.
3. Сайт программы Camtasia – http://www.techsmith.com/camtasia.
html.
4. Сайт программы Demo Builder – http://demo-builder.com.
5. Сайт программы Fraps – http://www.fraps.com.
6. Сайт программы – CamStudio http://camstudio.org.

Ключевые слова: тестирование, автоматизация, бережливое про-


изводство, менеджмент проекта, видеозапись, видеоинструкция.

64 март 2014 системный администратор


Наука и технологии

Жадов А.Д., Востриков А.В., Борисов Н.И., Тумковский С.Р.

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

Одними из важнейших проблем длительной эксплуатации между собой. Ячейка сетки представляется прямоугольником или
космических аппаратов (КА) являются электризация и связанные треугольником. Количество узлов СЭМ крупногабаритного КА
с этим процессом электростатические разряды (ЭСР). В 30% будет равняться (1…2)х105. Каждая связь (ветвь) представляется
случаев потеря КА происходит из-за электризации. ЭСР порождают в виде элементов электрической цепи (R, L, C), в целом образующих
токи на поверхности КА, которые наводят в бортовой кабельной эквивалентную электрическую схему поверхности КА. При этом
сети наводки величиной до 10 В. Помехи такой величины способны номиналы элементов одного типа одинаковы.
привести к отказам бортовой радиоэлектронной аппаратуры. С помощью ПО «Satellite-MIEM», зная место электрического
Для сведения: к минимуму возможных сбоев электроники КА разряда, можно получить картину растекания тока. Для расчета
необходимо смоделировать картину растекания тока по поверхности переходных токов используется наиболее производительная
КА. Далее проводится расчет наводок в кабелях и даются программа расчета электрических схем LTSpice, однако для анализа
рекомендации по их экранированию или оптимальному маршруту схемы из 150 000 узлов требуется 83 часа (эксперимент проводился
прокладки. С этой целью в МИЭМ были разработаны структурная на ЭВМ с двуядерным процессором с тактовой частотой 1,8 ГГц
электрофизическая модель (СЭМ) КА [1] и программное на каждом ядре, объем оперативной памяти равняется 2 Гб) [2],
обеспечение ПО «Satellite-MIEM» для ее реализации. что неприемлемо для предприятий космической отрасли.
ПО «Satellite-MIEM» синтезирует структурную Используемые в ПО численные методы хорошо показывают себя
электрофизическую модель (СЭМ) на базе заданной полигональной только при расчете небольших моделей [3]. Поэтому возникает
3D-модели КА (см. рис. 1). Полигональная модель состоит необходимость в создании новых методов расчета больших
из совокупности элементарных фигур – треугольников электрических схем. Ранее в [4-6] был предложен новый подход
или прямоугольников, преобразуемых средствами программы редукции модели линейной схемы, основанный на исключении
в поверхностную сетку: совокупность связанных узлов. Сетка из модели подвекторов, содержащих в себе фазовые переменные,
является равномерной, то есть шаги по всем координатам равны значения которых не превышают 1-2% от величины приложенного
к месту разряда тока. В данной работе авторы разрабатывают
программу для реализации редуцированной вычислительной схемы
Рисунок 1. Преобразование полигональной модели в СЭМ
и проверяют теоретические оценки эффективности вычислительной
схемы на практике.

1. Построение редуцированной вычислительной схемы


Модель ЭЭС КА может быть сформирована в расширенном
однородном координатном базисе (РОКБ) и записана в виде
системы линейных обыкновенных дифференциальных
уравнений [4]:

, , (1)

где С, G – числовые матрицы порядка , – вектор


искомых фазовых переменных (напряжений во всех узлах схемы

66 март 2014 системный администратор


Наука и технологии

и токов, протекающих через индуктивные элементы), – вектор Будем считать, что исходная задача имеет следующий вид:
входных сигналов.
Отметим специфику модели схемы. , . (11)
1) Матрица C является диагональной и вырожденной. Диагональ
состоит из двух групп коэффициентов и коэффициенты внутри При использовании численных методов процесс решения (11)
каждой группы одинаковы. заключается в вычислении вектора решения в моменты времени
2) Матрица G – невырожденная, симметричная и разреженная , т.е. , ,…, .
матрица. Рассмотрим одношаговый метод Эйлера для решения
3) Вектор содержит только один или два ненулевых задачи (11). Явный метод Эйлера решения системы уравнений
коэффициента вида , где i может быть любым числом от 1 до n. с учетом конкретного вида системы уравнений (11):
Необходимо с минимальными временными затратами выполнить
решение системы уравнений в момент времени t*, т.е. вычислить . (12)
числовой вектор .
Рассмотрим неявный метод Эйлера. С учетом конкретного вида
2. Редукция вычислительной схемы методов Эйлера системы уравнений (11) получим следующую формулу метода
Для решения задачи (1) формируется модель схемы в РОКБ Эйлера:
следующим образом:
. (13)

Для построения новой вычислительной схемы необходимо


, (2) преобразовать задачи (12) и (13) в некоторую редуцированную
модель (макромодель) КА, количество уравнений в которой
будет равно (второй этап редукции модели), что снижает
Отметим, что матрицы – симметричные, подматрицы C11, L22, трудоемкость вычислений на два-три порядка. Для этого запишем
G33 – диагональные, при этом: оба вида вычислительных процессов в блочной форме:
– подвектор напряжений в узлах, к которым подсоединены
конденсаторы;
– подвектор токов, проходящих через индуктивные , (14)
элементы;
– подвектор напряжений в узлах, к которым
не подсоединены конденсаторы. , (15)
Модель (2) записывается в виде:

, (3) где , .
, (4)
, (5) Пусть подвекторы и содержат по искомых
коэффициентов решения. Получим на базе выражений (14) и (15)
Исключаем из модели подвектор . Из (5) получим: редуцированную вычислительную схему, из которой исключим
подвекторы и .
, (6)

Подстановка из (6) в (3) и (4) приводит к следующим


выражениям: (16)

(7) или
(8)

или
.
(9),

3. Программная реализация редуцированной


где r – сопротивление резисторов в схеме. вычислительной схемы
Модель может быть записана в виде системы дифференциальных Для реализации редуцированной вычислительной схемы для
уравнений, заданной в явной форме: расчета линейных ЭЭС большой размерности нами было
разработано программное обеспечение, которое позволяет:
, (10) 1) На первом этапе строить редуцированную вычислительную
схему.
где 2) На втором этапе проводить расчет картины растекания токов
по поверхности КА с помощью вычислительной схемы.

системный администратор март 2014 67


Наука и технологии

Рисунок 2. Иерархическая структура разработанной программы Иерархическую структуру разработанной программы покажем
на рис. 2.
Разработанное ПО для получения требуемого результата
выполняет ряд этапов:
1. Конвертирование ЭЭС КА из программы LTSpice в удобный
для дальнейших преобразований матричный вид.
2. Преобразование матриц для ускорения скорости расчета
по редуцированной вычислительной схеме.
3. Расчет ЭЭС с помощью вычислительной схемы.
4. Трансляция файла полученных результатов и построение
модели КА с учетом картины растекания токов.
Рассмотрим алгоритм конвертирования файла LTSpice в удобный
для дальнейших преобразований матричный вид и результат его
выполнения (см. рис. 3):
1. Объявление и обнуление переменных и массивов, выделение
памяти.
2. Открытие файлов ввода данных и вывода результата (вывод
ошибки при невозможности открытия).
3. Построчное чтение файла и запись его в символьный массив.
4. Поиск в файле величины и узла включения источника
возмущающего воздействия.
5. Проход по всему массиву, нахождение в нем C-переменных
и запись их номиналов в массив С в порядке возрастания по
диагонали, подсчет количества С, фиксирование новых позиций
для С-переменных, поставить источник возмущающего воздействия
Рисунок 3. Пример результата конвертирования файла LTSpice в удобный для дальней- в узел включения первого из элементов С.
ших преобразований матричный вид согласно (2) 6. Проход по всему массиву, нахождение в нем L-переменных
и запись их номиналов с отрицательным знаком в массив С
в порядке возрастания по диагонали, после позиций элементов С.
7. Проход по всему массиву, нахождение в нем R-переменных
и узлов их включения. Если узел связан с фиксированной позицией
С, заменить его на номер этой позиции, иначе присвоить номер:
сумма всех элементов С + сумма всех элементов L + порядок
вставки. Порядок вставки увеличить на 1.
8. Заполнение массива G: считываем номиналы текущих
R и по данным из шестого шага узлам включения ставим их

Рисунок 4. Результат преобразования матрицы

68 март 2014 системный администратор


Наука и технологии

на соответствующие позиции в матрице симметрично – На современном компьютере (ЭВМ с двуядерным процессором


G[узел1][узел 2]=-1/номинал; G[узел2][узел1]=-1/номинал, а также с тактовой частотой 1,8 ГГц на каждом ядре, объем оперативной
заполнение диагонали соответствующих узлов (прибавление памяти равняется 2 Гб) проведены исследования временных
к элементу диагонали величины, обратной номиналу). затрат на анализ модели ЭЭС, содержащей до 3000 обыкновенных
Преобразования матрицы А (16) отличаются от предложенных дифференциальных уравнений. Время анализа неявным методом
в [5], где была получена треугольная матрица с окаймлением Эйлера, явным методом Эйлера и по предложенной новой
с помощью метода определяющих величин. Предложенный вычислительной схеме с учетом времени построения самой
алгоритм позволяет получить более выгодную с точки зрения вычислительной схемы показано на рис. 5. Для модели, состоящей
дальнейших вычислений треугольную матрицу, но посредством из 100 уравнений, неявному методу Эйлера потребовалось
арифметических операций со строками матрицы, вследствие чего 0,16 с для анализа, расчет по новой вычислительной схеме
может быть потеряна точность вычислений. Алгоритм и пример при размерности подматрицы (10х10) занял 0,012 с, что в 13 раз
результата (см. рис. 4) приведены ниже: быстрее (таблица 1). Для модели из 3000 уравнений расчет неявным
1. Редукция матриц С и R. методом Эйлера потребовал 28397 с для анализа, вычисления по
2. Получение матрицы А путем перемножения матрицы G и C^-1. новой схеме при размерности подматрицы (10х10) затратили 387,5 с,
3. Поиск в матрице А строк и столбцов, содержащих наибольшее что в 75 раз быстрее. В случае больших систем использование
количество ненулевых элементов. редуцированной схемы оказывается выгоднее на два-три порядка
4. Нулевые строки поместить в низ матрицы. других неявных численных методов. При этом результат расчета
5. Остальные строки расположить в порядке возрастания в выбранной локальной области традиционными численными
количества элементов. методами и по редуцированной вычислительной схеме совпадает.
6. Расположить в порядке возрастания столбцы слева направо Существенно отличается время анализа явным методом
в матрице А так, чтобы максимальные по модулю элементы Эйлера и по предложенной новой вычислительной схеме без учета
попадали на главную диагональ. времени построения самой вычислительной схемы (такой вариант
7. Нулевые элементы на диагонали исключить посредством используется при многократном использовании макромодели).
сложения строки с нулевым элементом на диагонали и строки Для модели из 3000 уравнений явному методу Эйлера потребуется
с максимальным элементом по модулю в этом же столбце. 51,3 с для анализа, вычисления по новой схеме при размерности
8. Исключить ненулевые элементы над главной диагональю подматрицы (10х10) потребуют 0,005 с, что в 10 260 раз быстрее,
посредством вычитания текущей строки от нижестоящей строки, в случае подматрицы (100х100) вычисления по новой схеме
содержащей элемент диагонали в этом же столбце, и умножения потребуют 2,9 с, что в 17,7 раза быстрее. На практике подматрица
на коэффициент, равный отношению текущего элемента и найденного будет содержать менее 1% коэффициентов от их общего количества
ниже (идти по матрице необходимо с нижнего правого угла). модели, поэтому выгода может достигать четырех порядков по
сравнению даже с явными численными методами.
Таким образом, результат тестирования подтвердил полученную
Рисунок 5. Время анализа модели ЭЭС разными методами
теоретически в [4] эффективность редуцированной схемы.
Практика показала, что расчет по вычислительной схеме больших
математических моделей происходит на два-три порядка быстрее
используемых в специализированном программном обеспечении
методов. EOF

Ключевые слова: алгоритм, редукция, система дифференциальных


уравнений, преобразование матрицы.

Software implementation of the reduced computational


schemes for the numerical integration of the system of linear
differential equations based on the methods of Euler

Jadov A.D., Vostrikov A.V., Borisov N.I, Tumkovskiy S.R.

The paper considers the implementation of the basic algorithms


Таблица 1. Результат тестирования численных методов на ПК for constructing the reduced computational schemes for the
numerical integration of the system of linear differential equations
Количество Время анализа Время анализа Время анализа модели by Euler's method. Shows the time and construction costs reduced
уравнений модели явным модели неявным по редуцированной by calculation scheme as compared with conventional numerical
модели методом методом Эйлера, с вычислительной
Эйлера, с схеме, с methods. Payment scheme for computing large mathematical models
100 0,11 0,16 0,012 occurs at 2-3 orders of magnitude faster used in specialized software
500 1,3 118,9 0,83 techniques.
1000 4,44 811 13,26
Keywords: algorithm, the reduction of the system of differential equations,
1500 9,6 4099 45,34
matrix transformation
3000 51,3 28697 387,5

системный администратор март 2014 69


Карьера/Образование рынок труда

Вакансия: системный администратор Linux


Продолжаем публикацию цикла статей в помощь ИТ-специалистам, начинающим
и опытным, которые озабочены проблемой своего трудоустройства. На этот
раз мы обратились к представителям компаний, чьи сотрудники занимаются,
в частности, и администрированием операционной системы Linux. Расспросили,
какие требования они предъявляют к соискателям

1. Какими знаниями и навыками должен обладать системный администратор Linux?


2. Каков инструментарий системного администратора Linux?
3. Каковы требования компании к уровню образования потенциальных сотрудников?
4. Какие требования предъявляются к опыту работы?
5. Есть ли особые требования, которые обусловлены спецификой деятельности компании?

Кирилл Ковалев, (возможно, не имея опыта работы в хостинге вовсе) и далее


старший технический специалист FastVPS LLC прошли весь путь до незаменимого члена коллектива.

1 Такой сотрудник должен обладать значительным тех-


ническим кругозором, так как сетевые взаимодействия
5 Мы высоко ценим любовь к работе и стараемся подби-
рать именно таких людей в команду. Как правило, имен-
но увлеченные люди имеют в активе множество полезных
подразумевают использование самых разных технологий, качеств – например, возможность работать в любое время
относящихся к разным уровням OSI. Надо быть и немного ин- и в любом состоянии.
женером-сетевиком, и веб-мастером. Однако так как знать Если человек по-хорошему «болеет» своим делом,
все попросту невозможно, то, пожалуй, самый важный на- то это несомненный плюс, мы требуем от наших сотрудни-
вык – это навык поиска необходимой информации. ков именно такого настроя.

3 На текущий момент дипломы иностранных учебных за-


ведений и просто специализированные сертификаты
рассматриваются, увы, с несколько большим вниманием,
Юрий Трухин,
эксперт по облачным технологиям InfoboxCloud
чем полученные в странах бывшего СНГ. Впрочем, опыт по-
казывает, что любой диплом далеко не всегда говорит о на-
личии соответствующих знаний либо навыков.
По этой причине мы не ставим жестких требований по на-
1 «Сферический администратор в вакууме» должен вы-
брать одну определенную область и развиваться только
в ней. Чем меньше зона ответственности, тем глубже мож-
личию профильного образования. При приеме на работу мы но погрузиться в тонкости. Однако подобное – фантастика,
в обязательном порядке стараемся разобрать устно какие- так как, помимо кучи направлений, которые приходится за-
то типичные задачи, а также предлагаем выполнить практи- крывать, есть еще смежные области, без знания которых
ческую часть повышенной (для неподготовленного челове- работать крайне проблематично (например, связанные с се-
ка) сложности. тью). Так что главными и основными особенностями являются
Замечу также, что часть наших сотрудников имеет образо- умение гибко мыслить («Ты же не Windows-администратор,
вание, вовсе далекое от IT, – например, бухгалтер-счетовод, мысли вне рамок!»), желание учиться и развиваться, умение
инженер по проектированию вентиляционных систем и т.д. быстро искать информацию и понимать, что ты находишь.

4 Основной упор при приеме на работу мы делаем на же-


лание осваивать предлагаемый фронт работ и резвость
мышления в целом, а не на практический опыт (хотя и ценим
И иметь огонь в глазах и море желания стать отличным про-
фессионалом. Главное – постоянно учиться и совершен-
ствовать результаты своей работы.
его!). А базовые знания… Можно было бы назвать Apache,
Надо сказать, что намного удобнее для работодателя MySQL и т.д., но мы часто склоняемся к мысли, что базо-
растить своих сотрудников, хорошо понимающих тонкости вых знаний не существует. Есть только то, с чем человек
работы компании, чем устранять взаимные трения с уже работал и что знает сам, а подходит это для задачи или нет,
состоявшимся специалистом, привыкшим к иному порядку зависит от самой задачи.
работы.
У нас многие ключевые должности занимают люди, кото-
рые когда-то приходили на должность рядового сотрудника
2 Голова, консоль и поисковая система (именно в такой
последовательности). Все остальное опционально.
Разные задачи – разные инструменты. И даже для одной

70 март 2014 системный администратор


рынок труда Карьера/Образование

и той же задачи разные админы могут выбрать разные ин- тоже используются (например, тот же Chef), но очень мно-
струменты. го инструментов написано внутри компании – для установки

3 Обучаемость и общая адекватность. Плюс желание ав-


томатизировать максимальное количество процессов,
серверов, обновления программного обеспечения на них,
мониторинга и аналитики работы сервисов.
чтобы работать эффективнее. Хороший администратор
Linux – немного программист. 3 Особых требований к уровню знаний нет. Главное, что-
бы было желание и опыт. Для тех, кто только хочет стать

4 Желателен опыт работы в хостинге, но не принципиа-


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

5 Админ должен разбираться во всем. Понимать, как устро-


ен технологический стек с самых основ. Практически все,
где есть консоль, ложится на плечи Linux-админа – почтовые
с такими сервисами, как наши, на рынке труда мало. И по-
нятно, почему так происходит. Систем, которые работают
по схеме 24х365, располагаются в нескольких датацентрах,
серверы, LAMP, DNS, Perl, OpenVZ, ZFS, RAID и т.д. Список умеют при этом переживать отключение одного из них неза-
можно продолжать долго. Вся сложность заключается в том, метно для пользователей и работать с большими объемами
что, помимо внутренних проектов, мы работаем с клиентами, данных на различных Open Source-технологиях, не так много.
и зачастую клиенты генерируют весьма странные запросы, Получить опыт работы с ними непросто. К тому же студенты
с которыми тоже приходится разбираться. Поэтому умение не особо идут в системные администраторы, так как думают,
находить решения ранее нерешенных проблем важно. что это в лучшем случае только поддержка офиса. Сложи-
лось так, что профессию программиста выбирают чаще, по-
Татьяна Бахаревская, заместитель руководителя тому что она понятнее.
департамента эксплуатации Яндекса Мы решили действовать и организовали для студентов
и молодых специалистов бесплатные курсы, где на лекциях

1 Главные навыки системного администратора в Яндек-


се – быть ответственным и аккуратным, иметь желание
работать в команде, расти и развиваться. Без этого набора
и практических занятиях можно многое узнать о системном
администрировании, операционной системе Linux и о том,
как с ее помощью мы решаем задачи в Яндексе. За все время
качеств у нас работать сложно. Как говорилось в «Алисе проведения курсов мы взяли на стажировку более 50 чело-
в Зазеркалье»: «Нам надо очень быстро бежать вперед, что- век. При этом мы не обязываем выпускников работать в Ян-
бы оставаться на месте». Да и перед соседом по лестничной дексе, а растим кадры для всей индустрии.
клетке за неработающий сервис краснеть тоже не хочется. Также мы проводим олимпиаду по системному админи-
Технически системный администратор должен знать, чем стрированию Root (root.yandex.ru). Ее задачи – популяризи-
команда top отличается от команды ps и зачем нужны файло- ровать профессию системного администратора и повышать
вые системы /proc и /dev, то есть быть знакомым с операци- их квалификацию. Задания мы стараемся придумать послож-
онной системой Linux. Еще хорошо понимать, чем отличаются нее – хотим, чтобы и наши студенты, и участники олимпиады
протоколы tcp и udp и зачем нужна команда tcpdump, и не бо- поняли, что работа администратора сложная, важная и инте-
яться написать скрипт на bash. Это минимальный набор зна- ресная.
ний для начала работы системным администратором.
Если он у вас есть, то его можно и нужно наращивать, ре-
шая все более и более сложные задачи. Сейчас у нас в ком-
5 Конечно! Наш системный администратор – это не угрю-
мый нелюдим в грязном свитере с пивом, который нена-
видит всех пользователей, пришедших к нему с просьбой
пании работает много специалистов, которые несколько лет «компьютер починить». Требований к дресс-коду у нас, ко-
назад приходили новичками с базовым пониманием, а сейчас нечно, нет, но при этом системный администратор – это часть
стали гуру мирового уровня. Могут и ядро похачить, и про- команды сервиса. Он регулярно общается с разработчиками,
ектировать сервисы с учетом того, что нагрузка на них мо- инженерами по тестированию и менеджерами. Помогает раз-
жет вырасти в несколько раз за год, предотвращать аварии рабатывать – обеспечивает команду разработческими и те-
и быстро их устранять. Знают многое о сетевых протоколах стовыми средами. Думает о том, какое оборудование нужно
и современном оборудовании, программируют на C++, по- использовать в проекте, разрабатывает SLA для сервиса,
нимают, когда применить Nginx и зачем нужны транзакции занимается установкой нового программного обеспечения
в базах данных. на продуктивные среды, автоматизирует свою работу, зани-

2 Наши любимые вопросы на собеседованиях: «Как быстро


проапгрейдить ядро и операционную систему на 100 оди-
наково настроенных серверах? А как быстро разложить про-
мается поиском неисправностей, резервированием и бэка-
пами, а главное – понимает, про что тот сервис, с которым
он работает, и постоянно думает о том, как его улучшить. EOF
грамму, которую написал разработчик, на 100 серверах?
А если серверов 1000? А если больше, и они в разных да- Подготовил Игорь Штомпель
тацентрах, и пользователи не должны ничего заметить?
А как проверить, что новое ядро или новая программа рабо-
тает корректно на этих сотнях тысяч серверов?» В номере 1/2 нашего журнала на стр.118
Это мы не для того придумали, чтобы жизнь потенциаль- была допущена ошибка. На самом деле
ным кандидатам усложнить. Это ежедневные и ежечасные должность Дениса Якубовича – руководитель
задачи, которые необходимо решать. Понятно, что все при- отдела персонала компании Promwad.
Мы приносим извинения нашему эксперту
ходится автоматизировать, автоматизировать и еще раз ав- и читателям.
томатизировать. Есть опенсорсные продукты, которые у нас

системный администратор март 2014 71


Карьера/Образование рынок труда

Визитка

Валерия Чернецова, руководитель отдела аналитики


рекрутингового портала Superjob.ru

От каждого – по труду,
или Каким сисадминам больше платят
Исследовательский центр рекрутингового портала Superjob.ru изучил предложения
работодателей и ожидания претендентов на позицию «Системный администратор
UNIX» в Москве и Санкт-Петербурге

Компетенции системных администраторов включают администраторов UNIX превышает доходы их коллег, адми-
в себя конфигурацию, настройку и администрирование нистрирующих Windows.
серверов под управлением операционной системой UNIX/ Одними из самых щедрых работодателей для сис-
Linux, а также персональных компьютеров и периферий- темных администраторов являются компании сферы ИТ
ных устройств. и телекоммуникаций: средние рыночные зарплатные пред-
Системные администраторы отвечают за установку, на- ложения в Москве составляют 83 000 руб., в Санкт-
стройку и обновление операционной системы и программ- Петербурге – 66 000 руб. в месяц.
ного обеспечения, поддержку локальной (LAN), глобальной Пробовать силы в качестве системного администратора
(WAN) и телефонной сетей. UNIX могут выпускники и студенты вузов (профильных либо
Они осуществляют резервное копирование и восстанов- технических). Соискатели, впервые претендующие на эту
ление данных, обеспечивают сохранность служебной ин- позицию, должны иметь хорошую теоретическую подготовку
формации, ведут техническую документацию и консультиру- в области защиты информации, знать серверное и сетевое
ют пользователей. оборудование, принципы организации сетей и сетевых про-
Операционная система UNIX распространена не так ши- токолов. Пригодится и знание «технического» английского.
роко, как Windows. Работодателям сложнее найти соответ- ИТ и телекоммуникационные компании обещают на-
ствующих специалистов. Поэтому заработок системных чинающим системным администраторам ОС UNIX

Типичный функционал Зарплатный Требования и пожелания к профессиональным навыкам


диапазон
>>администрирование серверов под управлением ОС UNIX/Linux;
>>конфигурация, настройка и администрирование серверов; Диапазон I >>Высшее/неполное высшее образование (техническое, ИТ)
>>конфигурация, настройка и администрирование персональных >>Базовые знания в области защиты информации
компьютеров и периферийных устройств; >>Знание принципов организации сетей и сетевых протоколов
>>инсталляция, настройка, обновление ОС, прочего ПО; >>Знание серверного и сетевого оборудования
>>поддержка локальной (LAN), глобальной (WAN), телефонной >>Знание английского языка на уровне чтения технической
сетей; документации
>>резервное копирование и восстановление данных; Диапазон II >>Опыт администрирования UNIX/Linux-систем
>>обеспечение конфиденциальности и сохранности служебной >>Опыт работы системным администратором/помощником
информации; системного администратора UNIX от одного года
>>ведение технической документации;
Диапазон III >>Высшее образование (техническое/ИТ)
>>консультирование пользователей; >>Уверенные знания в области защиты информации
>>взаимодействие с интернет-провайдерами и поставщиками >>Наличие профессиональных сертификатов
оборудования. >>Знание основных типов сетевых атак и методов
противодействия им
>>Навыки программирования (Perl/PHP/C++/Shell и др.)
Портрет соискателя >>Опыт администрирования веб-серверов
>>33 года – средний возраст >>Опыт администрирования MySQL/PostgreSQL
>>100% – мужчины >>Опыт работы системным администратором UNIX от двух лет
>>73% – высшее образование Диапазон IV >>Опыт администрирования серверного оборудования
>>2,6 года – средний срок работы на последнем месте и серверного обеспечения в крупных компаниях
>>22% – готовы к переезду >>Опыт работы с оборудованием Cisco
>>44% – на момент размещения резюме не имели работы >>Опыт работы системным администратором UNIX от трех лет

72 март 2014 системный администратор


рынок труда Карьера/Образование

Одними из самых щедрых


работодателей для сисадминов
являются компании сферы
ИТ и телекоммуникаций

зарплату от 40 000 до 50 000 руб. в месяц в Москве, ния и серверного обеспечения в аналогичных компаниях.
от 32 000 до 40 000 руб. – в Санкт-Петербурге. Стаж работы системным администратором UNIX должен
Рассчитывать на прибавку к окладу или рассматривать составлять не менее трех лет. Максимальная величина
вакансии с более высокими зарплатными предложениями зарплатных предложений по данной вакансии составляет
могут специалисты с опытом администрирования ОС UNIX/ в Москве 150 000 руб., в Санкт-Петербурге – 120 000 руб.
Linux не менее года. Их доход достигает 60 000 руб. (Мо- Чаще всего на должность системного администратора
сква) и 48 000 руб. (Санкт-Петербург). UNIX претендуют молодые мужчины с высшим образовани-
Наличие профессиональных сертификатов, стаж работы ем. Женщин среди соискателей не набралось и 1%.
более двух лет – таковы основные требования следующего Средний возраст – 33 года.
зарплатного диапазона. 73% специалистов имеют профильное либо техническое
Соискатели также должны быть компетентны в области высшее образование.
защиты информации, знать методы противодействия сете- Системные администраторы – достаточно мобильные
вым атакам, иметь опыт администрирования веб-серверов специалисты: каждый пятый (22%) готов к переезду ради
и MySQL/PostgreSQL, навыки программирования. работы в компании своей мечты.
Кандидатам, соответствующим этим требованиям, ИТ- Средний срок работы системных администраторов на по-
отрасль предлагает зарплату до 100 000 руб. в Москве следнем месте составляет 2,6 года.
и до 80 000 руб. в Санкт-Петербурге. Менее половины соискателей являются безработными
Наиболее высоки зарплатные предложения крупных на момент размещения резюме (44%), остальные ищут под-
предприятий. Такие работодатели требуют от кандидатов работку либо новую работу на полную занятость, не уволь-
наличия опыта администрирования серверного оборудова- няясь со старого места. EOF

Строительство
Город / ИТ Промышленность
З/п диапазон Управление Услуги B2B Продажи В2В Продажи В2C
Отрасль Телекоммуникации Производство
недвижимостью
I Москва 40 000 – 50 000 40 000 – 50 000 35 000 – 45 000 35 000 – 50 000 35 000 – 50 000 40 000 – 50 000

СПб 32 000 – 40 000 32 000 – 40 000 28 000 – 36 000 28 000 – 40 000 28 000 – 40 000 32 000 – 40 000

II Москва 50 000 – 60 000 50 000 – 58 000 45 000 – 55 000 50 000 – 60 000 50 000 – 65 000 50 000 – 68 000

СПб 40 000 – 48 000 40 000 – 46 000 36 000 – 44 000 40 000 – 48 000 40 000 – 52 000 40 000 – 54 000

III Москва 60 000 – 100 000 58 000 – 95 000 55 000 – 90 000 60 000 – 100 000 65 000 – 100 000 68 000 – 95 000

СПб 48 000 – 80 000 46 000 – 76 000 44 000 – 72 000 48 000 – 80 000 52 000 – 80 000 54 000 – 76 000

IV Москва 100 000 – 150 000 95 000 – 150 000 90 000 – 130 000 100 000 – 140 000 100 000 – 140 000 95 000 – 130 000

СПб 80 000 – 120 000 76 000 – 120 000 72 000 – 105 000 80 000 – 110 000 80 000 – 110 000 76 000 – 105 000

Среднее Москва 83 000 77 000 75 000 75 000 82 000 76 000


(медиана)
СПб 66 000 62 000 60 000 60 000 66 000 61 000

Каждый зарплатный диапазон характеризуется определенным типичным набором требований и пожеланий к кандидату. Каждый последующий включает
в себя требования, сформулированные для предыдущих.

системный администратор март 2014 73


Карьера/Образование вектор роста

Визитка

Сергей Барамба, начальник отдела системных решений


Департамента ИТ, ООО «БФТ», sbaramba@yandex.ru

10 формул для эффективного сисадмина


Путь из падаванов в гуру лежит через шрамы ошибок
Формулы есть не только в учебниках по химии или физике, но и в ИТ! Сегодня я хочу
поделиться теми, которые помогают мне работать и облегчают решение сложных задач

С чего все началось атором задачи, то сначала отправляю письмо, даю «вменя-
Материал для статьи я начал собирать чуть больше месяца емое» время ознакомиться с ним, после чего обязательно
назад. Каждая формула была отловлена и сформулирована звоню или прихожу для личного обсуждения проблемы.
в ежедневной сутолоке дел, специально, потому что за этот И обязательно начинаю с вопроса, все ли понятно в моем
промежуток времени я ей воспользовался. Надо сказать, запросе. Это помогает осуществлять «санитарный кон-
они (формулы) так естественно вжились в мой повседнев- троль» моих писем, узнать какую информацию я упустил,
ный уклад, что я как-то и не задумываюсь, просто пользу- где возникли сложности с пониманием.
юсь… В разговоре я использую следующий алгоритм. Возник-
Их оказалось чуть больше десятка, но я выбрал свои са- ший вопрос сразу же устно обсуждается после получения
мые любимые, заслуженные и полезные. Они работают! письменного запроса. Далее – четкие устные договорен-
ности, затем они переносятся на бумагу или в электронный
Первая формула. Личное общение эффективнее вид и идут по маршруту на юридически значимое согласо-
почтовой переписки вание.
Эта формула помогает мне быть эффективнее коллег, ко- Системные администраторы, которые избегают разго-
торые решают абсолютно все рабочие вопросы, общаясь воров с коллегами, пользователями, на самом деле много
через почту или СЭД. Время, которое потребуется для до- теряют. Теряют коммуникативные навыки, возможность сло-
стижения результата, при живом общении будет гораздо вами «на лету» изложить свое видение вопроса, доказать
меньшим. Если возникает проблема, решение которой мо- свою правоту или выдвинуть план действий.
жет затянуться, я беру трубку или встаю и иду к человеку Если личное общение не помогает достигнуть цели, я ис-
для того, чтобы ее обсудить. Это всегда сокращает путь пользую вторую формулу.
к достижению цели.
Конечно, для того, чтобы остались «следы» и докумен- Вторая формула. Говорите языком документов
ты, никто не отменял проверенные механизмы, но количест- Иногда мне приходится включать «режим юриста», дотошно
во «транзакций» по согласованию вопросов уменьшается следуя буквам регламентов, инструкций, приказов и других
в разы. Стиль изложения коллег зачастую оставляет желать документов. Конечно, обязательно их внимательно изучить
лучшего, порой письмо трактуется по-разному, и, если без- и уметь цитировать. Такое бывает не только в случаях, когда
думно приступить к выполнению просьбы, можно сделать не удалось найти общий язык с коллегами. По неизведан-
ненужную работу или пойти неправильным путем. ному пути порой лучше идти именно согласно требованиям
Проговорить и согласовать производственные моменты документов, по правилам.
проще, чем писать письмо и каждый раз нажимать кнопки Вероятность допустить ошибку, таким образом, меньше,
клавиатуры, изображая кипучую деятельность. При непо- а если что-то пошло не так, то вас нельзя будет упрекнуть
средственном общении разговор приобретает личност- в непрофессионализме. В горячих спорах я тоже переклю-
ную окраску, и, используя ее, можно склонить чашу весов чаюсь в такой режим, стараясь максимально следовать
в свою сторону. требованиям приказов и положений. Тогда почва для кон-
Ведь главное – получить результат, который устраивал фликта улетучивается, и удается строить диалог конструк-
бы все заинтересованные стороны, занял минимум времени тивно.
и принес максимум пользы. Еще такой подход может оказаться полезным для выявле-
Эта формула имеет небольшое дополнение: сначала ния нестыковок и ошибок в документах, они могут устареть
письмо, потом звонок «в голову». Если я являюсь иници- или быть неактуальными. После того как обнаружены недо-

74 март 2014 системный администратор


вектор роста Карьера/Образование

Как мы думаем, как оцениваем


себя и окружающий мир,
в такой реальности и живем

статки, обязательно надо приложить усилия, чтобы все ис- а значит, необходимо, чтобы такие «слова-паразиты» по-
править и актуализировать. кинули ваш лексикон. Если хотим быть профессионалами
и эффективно работать, то придется брать на себя ответ-
Третья формула. Все телепаты в отпуске, ственность. А еще придется уметь отстоять свои слова, на-
вечном и не оплачиваемом учиться их ценить.
Там, где запрос вырван из контекста, не понятен и порож- Итог: отвечаем четко, последовательно и следуем фак-
дает море вопросов, я применяю эту формулу и требую там.
разъяснений. Так уж устроен человек, что считает; если
все понятно и известно ему, то и соседи по цеху в курсе Пятая формула. Делай вид, что у тебя
всех мелочей. Но это отнюдь не так. есть добродетель, даже если у тебя ее нет
Общаясь с коллегами, я стараюсь повторить несколько Этот постулат вошел в список моих формул уже давно.
раз одни и те же тезисы обсуждаемой проблемы. В конце Слова принадлежат Шекспиру, и я часто озвучиваю их себе
диалога обязательно произношу фразу «А теперь подыто- и подчиненным. Формула на самом деле универсальна,
жим» и повторяю главное. Мне просто хочется быть уверен- всегда можно убрать слово «добродетель» и заменить
ным, что меня поняли правильно, что я не упустил из виду на любое другое. В ней скрывается очень мощный инстру-
какие-то мелочи или важный пункт в алгоритме. мент качественного решения новых задач и мотивирования
А прежде чем отправить письмо, думаю, как меня поймут самого себя. «Делай вид, что ты высококлассный систем-
и хватает ли в нем информации. Если вставить ссылку на до- ный администратор, мыслящий о будущем, знающий от-
кумент или страницу портала, откуда следует начать поиски, веты на все сложные вопросы, даже если ты не такой».
передать максимальное количество необходимой инфор- Примерив на себя такой образ, уже не захочется с ним
мации, то будет минимум вопросов ко мне за уточнениями, расставаться, уже не будет дороги назад. Это очень сти-
получится двойная экономия. Я не буду отвлекаться, мой мулирует не расслабляться, двигаться вперед, всегда быть
коллега сможет максимально правильно и четко выполнить в тонусе.
поставленную задачу. «Делай вид, что ты знаешь Linux, даже если ты его ни разу
не видел». «Делай вид, что ты умеешь программировать
Четвертая формула. Никаких «вроде», на PowerShell, даже если никогда ничего не писал». Каждый
«возможно», «может быть», только проверенные день жизнь подкидывает нам различные задачки, большие
факты. Все свои «вроде бы» оставляем при себе! и маленькие. ИТ достаточно сложно, и всего знать невоз-
Настоящий профессионал редко произносит подобные можно.
слова. У него за спиной опыт, прежде чем дать ответ, все бу- А формула «Делай вид...» помогает нам стать и быть зна-
дет проверено, посчитано, несколько раз обдумано. Наши ющим и профессиональным системным администратором.
знания и умения – это набор фактов, четкого понимания Это стимул думать, учиться, искать и побеждать, не отсту-
сути явления. Тут незачем колебаться, это неэффективно пать перед трудностями. Бороться с самим собой, со своим
и наносит вред нашей репутации. Услышав подобные сло- неумением, слабостями в форме такой «театральной игры»
ва от своих коллег, я воспринимаю их как способ избежать легче.
ответственности, нежелание думать и лишний раз все про- Сегодня вы примеряете такую успешную маску, но со вре-
верить. менем маска вам уже не понадобится. Тут главное – иметь
Общение с подобной неуверенностью в профессиональ- здравый смысл, вовремя остановиться и не переиграть са-
ных вопросах – признание собственной некомпетентности, мого себя.

системный администратор март 2014 75


Карьера/Образование вектор роста

Шестая формула. Успехи никто не оценит, ние. Достаточно только проявить интерес, договориться
зато ошибку будут долго еще вспоминать и написать гарантийное письмо. И пару недель у вас будет
при удобном случае возможность все внимательно изучить и даже попробовать
Таков наш несправедливый мир. Надо просто с достоин- использовать в боевой обстановке.
ством принять это. Если постоянно себя грызть за ошибки Обязательно, хотя бы раз в месяц, я выбираюсь на очные
прошлого, то будет страх делать что-то новое, бороться. мероприятия, где кратко и емко расскажут о новинках в об-
Всегда проще тихонько отсидеться в уголке с 9 до 6 и ниче- ласти ИТ.
го нигде не сломать. Таким образом, я внутри себя поддерживаю некий уро-
ИТ позволяет остановиться в развитии и существовать вень «современности и актуальности» окружающих техно-
в некотором стабильном состоянии, когда ничего нигде логий.
не меняется и не происходит. А вот для того, чтобы разви-
ваться и двигаться вперед, необходимы мужество и опреде- Девятая формула. Материализация мысли –
ленная смелость. Через шрамы ошибок и лежит путь из па- первый шаг к достижению результата
даванов к гуру. Все идеи и мысли, которые мне показались правильными
и полезными, я стараюсь занести на материальный носи-
Седьмая формула. Обновляйте договоренности. тель. Бумажка, заметка в сотовом, схема на доске – где угод-
Забывчивость – стандартный диагноз каждого но, только не просто в памяти.
сотрудника Я заметил за собой, что если оставить пришедшее в го-
Так уж устроена наша память, что старается не перегру- лову только в мыслях, то со временем яркие и правильные
жаться. Вот и установленные когда-то среди коллег догово- идеи гаснут, мысль становится не столь четкой. Вокруг
ренности по качественному взаимодействию друг с другом, нас столько способов сохранить наши идеи, главное – по-
если они не выполняются по несколько раз за день, доста- вторить себе формулу и не рассчитывать на свою память.
точно быстро стираются из памяти. Если хорошая мысль пришла про сложную задачу, которой
Поэтому регулярно, раз в два-три месяца, я подстегиваю не захочется заниматься, но сделать надо, сразу необходи-
и свою память, и память коллег, рассылая одно и то же пись- мо отрезать мосты к отступлению. Лучше всего подойдет
мо с договоренностями, которое я бережно храню для таких «материализация» в виде почты руководителю. Теперь уже
случаев. Благодаря ему я сам вспоминаю, что же необхо- не сослаться на свою забывчивость, а значит, первый шаг
димо соблюдать. Пример таких договоренностей вы може- к достижению результата будет сделан.
те прочитать в №7-8 журнала «Системный аминистратор» А еще я где-то прочитал поговорку: «Тупой карандаш луч-
за прошлый год [1]. Ну и, конечно же, у меня не будет мо- ше острой памяти», и стараюсь не лениться и материализо-
рального права требовать от коллег пунктуальности, если вывать свои мысли.
я сам ничего не помню.
Я пересматриваю, не устарели ли положения данного Десятая формула. Помни о своих пользователях.
письма, не нужно ли что-либо подправить. Так я поддер- Сделай для них больше, чем они ждут
живаю его актуальность, проводя «санитарный контроль». Пользователи – это не назойливые мухи, отвлекающие
В конце письма я обязательно добавляю: «Есть ли предло- своим жужжанием нас от важных проектов. Пользовате-
жения или дополнения?» Вдруг кто-нибудь увидел то, чего ли – это наши клиенты, из их мнения о нашей работе скла-
не заметил я, или предложит новый пункт. дывается общее впечатление о нас как сотрудниках. Ча-
Ну и достраивать новое и вычеркивать устаревшее легче, сто и премиальный фонд и лояльность руководства очень
чем коллективно вспоминать, как мы договаривались, и кто сильно зависят от оценки нашей деятельности. Да и само-
виноват, что все оказалось забыто. му приятно работать, понимая, что в нашей памяти ничего
не теряется и пользователи довольны. Это даст возмож-
Восьмая формула. Живой айтишник – это всегда ность сосредоточиться на сложных рабочих проектах. Уме-
движение. Остановка смерти подобна ние строить с пользователями деловые отношения поможет
Не устаю повторять, что изменения в ИТ происходят на- им более лояльно относиться к нашим промахам и невоз-
столько быстро, что нужно просто бежать, чтобы оста- можности быстро удовлетворить запросы всех. А это край-
ваться в тренде и быть квалифицированным сотрудником, не полезно.
а не пыльным мешком устаревших знаний. Такой «драйв»
подстегивает к изучению самых современных технологий, ***
тестированию и выбору наиболее новых приложений и ап- Каковы мысли в душе человека, таков и он (Библия, Прит-
паратных платформ. чи 23:7). Как мы думаем, как оцениваем себя и окружающий
А еще новейшие ИТ-технологии требуют наличия несла- мир, в такой реальности и живем. Если пытаться в кругово-
бых коммуникативных навыков и знаний эффективных прин- роте рутинных событий выискивать пути лучше и качествен-
ципов работы в команде. Поэтому часть свободного и даже нее делать свою работу, это обязательно скажется на по-
рабочего времени я обязательно бюджетирую для чтения следующих событиях нашей жизни.
книг, ИТ-новостей и обзоров, ознакомления с новыми техно- Ищите себя, свои формулы, совершенствуйтесь –
логиями. Новые дорогие железки нет нужды покупать, чтобы это ведь так интересно. EOF
пощупать.
Производители и вендоры регулярно дают возможность 1. Барамба С. Ты-я-он-она. Вместе – целое ИТ-подразделение!
бесплатно взять на тестирование почти любое оборудова- //«Системный администратор», №7-8, 2013 г. – С.110-113.

76 март 2014 системный администратор


вектор роста Карьера/Образование

Визитка

Сергей Ильичев, ЧОУ «ТПКГ» г. Тула, системный


администратор и учитель информатики, sergil68@mail.ru

Чему и как у нас учат


Разговор о преподавании информатики в школе
Однажды со мной произошел такой случай: накануне сессии знакомый попросил
объяснить своему сыну, студенту первого курса одного московского вуза, как работать
со ссылками на языке Си…

Студент, как оказалось, не понимал основополагающих (полного) общего, начального профессионального, средне-
принципов хранения информации в памяти компьютера и, го профессионального и высшего профессионального об-
как следствие, смысла адресации. На вопрос: «А что же разования образовательными учреждениями, имеющими
вы на информатике в школе проходили?» – ответом было: государственную аккредитацию [1].
«Да учитель по географии вел информатику». Принципы построения Федерального базисного учебно-
И вот чуть больше года назад мне довелось окунуть- го плана для 10-х-11-х классов основаны на идее двухуров-
ся в школьную жизнь. Вначале помогал в обслуживании невого (базового и профильного) федерального компонен-
школьных компьютеров, а с 1 сентября 2013 года меня та государственного стандарта общего образования. Таким
представили коллективу как преподавателя информати- образом, предметы, в том числе и информатика, в школе
ки и информационно-коммуникационных технологий (ИКТ) согласно стандарту изучаются на базовом и профильном
старших классов. уровне. Также для учащегося есть возможность пройти
Не буду расписывать, почему и как я оказался у школь- так называемый элективный курс, который тоже позволяет
ной доски. Проработав 15 лет на государственном пред- изучать предмет углубленно.
приятии программистом/системным администратором Позволю себе процитировать Федеральный государ-
(как хотите, но на нашем предприятии приходилось делать ственный образовательный стандарт среднего (полного)
и то и другое), я познакомился с применением информаци- общего образования (10-11 кл.) касательно углубленного
онных технологий на практике, приобрел некоторый опыт, изучения предмета [2]:
однако никогда не пытался работать преподавателем. Но та- «Информатика» (углубленный уровень) – требования
кой эксперимент мне показался интересным. к предметным результатам освоения углубленного курса
Итак, вашему вниманию предлагаются заметки о том, информатики должны включать требования к результатам
что же увидел человек, поработавший достаточное вре- освоения базового курса и дополнительно отражать:
мя айтишником, в преподавании нашего с вами предме- 1) владение системой базовых знаний, отражающих
та в школе. Оговорюсь, что это чисто мое мнение, совсем вклад информатики в формирование современной научной
не претендующее на непререкаемую истину. картины мира;
2) овладение понятием сложности алгоритма, знание ос-
Заинтересованность государства новных алгоритмов обработки числовой и текстовой инфор-
в ИТ‑грамотности школьников мации, алгоритмов поиска и сортировки;
Да, да. Она есть. Всем понятно, что нашей стране не хочется 3) владение универсальным языком программирования
быть сырьевым придатком. Еще 5 сентября 2005 года Пре- высокого уровня (по выбору), представлениями о базовых
зидент Российской Федерации Владимир Путин объявил типах данных и структурах данных; умение использовать ос-
о старте четырех приоритетных национальных проектов, од- новные управляющие конструкции;
ним из которых является проект «Образование». 4) владение навыками и опытом разработки программ
Для тех, кто, может быть, еще не знает, – в России в выбранной среде программирования, включая тестирова-
с 2007 года в образовании действуют Федеральные государ- ние и отладку программ; владение элементарными навыка-
ственные образовательные стандарты (ФГОСы). Как разъ- ми формализации прикладной задачи и документирования
ясняется на сайте Министерства образования и науки, об- программ;
разовательные стандарты – это совокупность требований, 5) сформированность представлений о важнейших видах
обязательных при реализации основных образовательных дискретных объектов и об их простейших свойствах, алго-
программ начального общего, основного общего, среднего ритмах анализа этих объектов, о кодировании и декодиро-

системный администратор март 2014 77


Карьера/Образование вектор роста

вании данных и причинах искажения данных при передаче; достаточно обширны. Таким образом, согласно ФГОС в на-
систематизацию знаний, относящихся к математическим шем государстве молодой человек, изучивший информатику
объектам информатики; умение строить математические в средней школе, должен обладать неплохим начальным ба-
объекты информатики, в том числе логические формулы; гажом знаний для применения информационных технологий
6) сформированность представлений об устройстве со- в своей будущей деятельности и для продолжения изучения
временных компьютеров, о тенденциях развития компью- ИТ в их широком спектре в высшем учебном заведении.
терных технологий; о понятии «операционная система» Итак, заинтересованность государства, подкрепленная
и основных функциях операционных систем; об общих законодательно, есть, и все выглядит хорошо на бумаге.
принципах разработки и функционирования интернет-при- А что на практике?
ложений;
Учебники и методическая литература
Понятно, что в процессе образования без дидактического
Государство заинтересовано материала никак не обойтись. Преподавателю мало знать
самому предмет, надо еще и объяснить школьникам тот
в ИТ-грамотности, или иной вопрос, да и без самостоятельного обучения вряд
это подкреплено законодательно ли можно говорить о глубоком изучении предмета.
Учебников по информатике для школы в России – масса.
и выглядит хорошо на бумаге. Стоит лишь зайти в книжный магазин или посмотреть в Ин-
А что на практике? тернет. Между тем для того, чтобы выбрать учебник и мето-
дический материал к нему для конкретного курса (базового,
профильного или элективного), мне пришлось приложить
некоторые усилия. Однако с уверенностью скажу, что даже
7) сформированность представлений о компьютерных се- при отсутствии опыта подобрать подходящий учебник, соот-
тях и их роли в современном мире; знаний базовых принци- ветствующий ФГОС, сложно, но не невозможно.
пов организации и функционирования компьютерных сетей, Есть отличные примеры творческого и ответственного
норм информационной этики и права, принципов обеспе- подхода к своему делу. Можно отметить учебники для 8-го
чения информационной безопасности, способов и средств и 9-го классов «Информатика и ИКТ» Л.Л. Босовой и А.Ю.
обеспечения надежного функционирования средств ИКТ; Босовой – прекрасно изложенный материал с использова-
8) владение основными сведениями о базах данных, нием различных, в том числе и свободных, программ, кото-
их структуре, средствах создания и работы с ними; рый обильно снабжен тестами и контрольными вопросами,
9) владение опытом построения и использования компью- да еще и презентациями для изложения материала на уро-
терно-математических моделей, проведения экспериментов ках и самостоятельного изучения, выложенными в Интер-
и статистической обработки данных с помощью компьюте- нет [3].
ра, интерпретации результатов, получаемых в ходе модели- Отдельного внимания и благодарности заслуживают учи-
рования реальных процессов; умение оценивать числовые теля, которые выкладывают свои наработки в свободный
параметры моделируемых объектов и процессов, пользо- доступ. При подготовке к занятиям много интересного мате-
ваться базами данных и справочными системами; риала нашлось на персональных страничках К.Ю. Поляко-
10) сформированность умения работать с библиотека- ва [4] и А.И. Козлова [5].
ми программ; наличие опыта использования компьютерных Говоря о методике преподавания, нельзя не отметить Ку-
средств представления и анализа данных». Мир («Комплект Учебных Миров»), созданный для обучения
Впечатляет, не правда ли? Требования к изучению пред- школьников программированию [6]. В учебной литературе
мета на базовом уровне, конечно, не столь глубоки, но тоже также активно продвигается так называемый школьный
алгоритмический язык, составляющий основу КуМира, ко-
торый является русскоязычным алгоритмическим языком,
На экскурсии в гостях у разработчиков промышленной электроники
ООО «Тулапромприбор» очень похожим на Паскаль. Вообще нужно отметить, что вся
система обучения информатике в школе сильно ориенти-
рована на Паскаль, от учебников до заданий на экзаменах,
что, может быть, совсем неплохо для обучения на базовом
уровне. На профильном уровне и занятиях по выбору необ-
ходимо все-таки хотя бы начинать знакомить учеников с дру-
гими языками программирования, например, с Си или Java,
а может быть, и Python.
Хотелось бы также отметить учебно-методический жур-
нал для учителей «Информатика» издательского дома
«Первое сентября», в котором постоянно ведется обмен
методическими разработками, обсуждаются различные во-
просы преподавания информатики в школе.
Таким образом, можно с уверенностью сказать,
что в настоящее время в российской школе есть все сред-
ства в плане обучающих программ и методических разра-

78 март 2014 системный администратор


вектор роста Карьера/Образование

боток для подготовки учителей и преподавания предмета Заинтересованность детей


информатики на любом уровне Говорят, наших детей трудно сейчас чем-то удивить – смарт-
фон даже у школьника уже не редкость. Тем более компью-
Оснащение тер, который уже совсем не в новинку.
Не знаю, как в других регионах, но мне достался отлично Конечно, трудно и скорее всего невозможно сделать
оборудованный класс с интерактивной доской и широкопо- так, чтобы все дети в обычной школе углубленно изучали
лосным доступом в Интернет. Компьютеры не самые совре- информатику. Однако, в любом случае, найдется молодой
менные, но для решаемых задач вполне пригодные. человек (и, наверное, не один), который захочет разо-
Кроме аппаратной части порадовало наличие лицензи-
онного программного обеспечения. На всех компьютерах –
лицензионная ОС Windows 7, Microsoft Office 2010, антиви-
рус Касперского. В кабинете информатики был обнаружен
Почему не удался переход
также пакет программных продуктов национального про- на свободные программы
екта «Образование», куда вошли продукты фирм Microsoft,
Adobe, Corel, «1C», ABBYY, Embarcadero (Borland). Хотя
в школах? Из‑за неподготовлен-
в сопровождающих документах сказано, что часть продук- ности кадров
тов для образовательных учреждений предоставляется бес-
платно (не требует активации), мне так и не удалось уста-
новить, например, Borland Developer Studio 2006 из этого браться, как работает компьютер или как можно сделать
комплекта – нужна лицензия. Как стало понятно из информа- какого-то робота, программу или веб-сервер своими рука-
ции на форумах, срок лицензии закончился еще в 2010 году. ми. За небольшой срок моей работы в школе только самые
Получилось, что нельзя сбрасывать со счетов свободное пассивные ученики не спросили, как сделать самому игру
ПО, которое, как оказалось, является неплохим подспорьем для планшета или телефона.
еще и в деле обучения премудростям информатики и ин- Создание в нашей школе по выбору ребят и при под-
формационных технологий. То, что не вышло с BSD2006, держке руководства элективного курса по изучению веб-
при знакомстве со средствами проектирования пробуем технологий – прекрасный пример заинтересованности уче-
компенсировать с помощью набирающей обороты свобод- ников в изучении ИТ.
ной среды для быстрой разработки Lazarus.
А чего же не хватает?
О попытке перехода на свободное ПО Как я уже говорил, очень многое значат кадры. Хотя день-
Кстати, несколько слов о якобы неудавшейся попытке ги решают не все, однако, предполагаю, вряд ли даже
перехода на свободные программы в российских школах. средний айтишник рискнет сменить профессию на пре-
Проблема, конечно же, не в отсутствии подключения к Ин- подавательскую. Всем известно, что есть заинтересован-
тернету и нехватке литературы. Она скорее всего в непод- ность фирм, занимающихся ИТ, в выпускниках вузов. Од-
готовленности кадров. нако вложение усилий и средств в создание компьютерных
Разговаривая с учителями других школ, я задавал вопро- центров и преподавание информатики и информационных
сы о Linux и OpenOffice.org. В ответ слышал: «Все это ин- технологий для школьников в настоящее время – явление
тересно. А когда изучать?» Представим себе среднестати- достаточно редкое. Исключение составляют платные про-
стического учителя информатики. При нагрузке 1,5-2 ставки екты, такие как «Роботландия» или различные проекты
(что в школах совсем не редкость) он проводит 27-36 часов на базе Arduino. А ведь тем ребятам, которые хотели бы
в неделю у доски (4-6 уроков ежедневно). Прибавить сюда изучать информатику углубленно, просто необходим опыт
подготовку к занятиям. И получается, что действительно профессионалов. Похоже, что пока это остается уделом
для кого-то временной фактор в этом вопросе является на- энтузиастов.
стоящим барьером! Не знаю, насколько серьезно выглядит такое предложе-
С учетом того, что я знаком с Linux с 2006 года и приме- ние, но могла бы помочь поддержка государства в этом во-
нял его на практике для решения различных задач автома- просе (хотя бы в виде налоговых льгот для компаний, помо-
тизации на предприятии, практически сразу после начала гающих школам в процессе обучения). И тогда, возможно,
занятий в компьютерном классе на машины учеников был где-то не придется учителю географии преподавать инфор-
установлен Linux Mint второй системой (вместе с Windows). матику. EOF
Когда мы проходим, например, OpenOffice.org, ребята ис-
пользуют эту операционную систему спокойно, хотя, надо 1. http://минобрнауки.рф.
сказать, что и без особого энтузиазма. 2. http://минобрнауки.рф/документы/2365.
Исключение составляют выбравшие углубленное изуче- 3. http://metodist.lbz.ru/authors/informatika/3 – издательство «Би-
ние информатики (элективный курс), где мы пробуем изу- ном». Лаборатория знаний. Авторская мастерская Л.Л. Босо-
чить азы построения веб-систем: программирование на PHP вой.
с помощью связки LAMP (Linux-Apache-MySQL-PHP). Эти ре- 4. http://kpolyakov.spb.ru – сайт К. Полякова «Преподавание, на-
бята по достоинству оценили возможности свободного ПО. ука и жизнь».
Тема веб-программирования остается одной из наиболее 5. http://www.somit.ru – информатика в анимациях – персональ-
интересных для молодых людей, изучать которую без UNIX ный сайт учителя физики и информатики А.И. Козлова.
и свободного ПО достаточно сложно. 6. http://www.niisi.ru/kumir – система программирования КуМир.

системный администратор март 2014 79


Карьера/Образование пятая пара

Визитка

Денис Силаков, кандидат ф.-м. н., ЗАО «РОСА», член рабочей


группы LSB, старший архитектор, занимается автоматизацией
разработки ОС «РОСА», denis.silakov@rosalab.ru

Качество программного кода


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

В предыдущей статье [1], посвященной качеству кода, >> мертвый код (неиспользуемые переменные, приватные
мы  рассмотрели ряд инструментов, помогающих разра- методы и параметры функций);
ботчикам улучшить читаемость исходных текстов программ >> пустые тела циклов и условий;
и облегчить тем самым их поддержку и развитие. Досто- >> излишне усложненные циклы;
инством подобных утилит является простота и легкость >> некорректное или неэффективное использование
использования – достаточно указать, какие правила необ- стандартных классов Java и так далее.
ходимо проверять, и запустить инструмент. Этот фактор Достойной альтернативой является FindBugs, который
обусловил большую популярность таких средств анализа содержит более четырехсот правил для проверки, относя-
кода, особенно при использовании систем CI. щихся преимущественно к семантике программы и исполь-
В то же время рассмотренные инструменты способны зованию тех или иных конструкций в коде.
выявить очень ограниченный класс ошибок. Безусловно, В мире .NET аналогичные возможности предоставляет
проблемы плохого форматирования кода или неговорящих FxCop, анализирующий промежуточный код на языке CLI
названий переменных неприятны, но на функциональность (в который компилируются все .NET-приложения, неза-
программы напрямую они не влияют. висимо от конкретного языка программирования). Наряду
Однако не стоит думать, что это все, на что способны с проверкой следования правилам именования и другим
автоматизированные средства анализа программ. Рынок аспектам, влияющим на простоту поддержки кода, FxCop
таких инструментов постоянно развивается и предлагает позволяет выявлять проблемы с надежностью, переноси-
все более совершенные и изощренные способы прове- мостью и безопасностью приложений. Анализ на основе
рить ваши приложения на корректность, позволяя находить FxCop встроен в некоторые редакции Visual Studio.
все большее количество потенциальных проблем, не затра- Другие языки тоже не обделены вниманием – для C++
чивая на это особых усилий. существует мощный cppcheck (интегрирующийся с Visual
В этой статье я предлагаю вам обзор наиболее популяр- Studio, Eclipse, Code::Blocks и другими популярными IDE),
ных и функциональных средств автоматического анализа для Python – PyChecker и Frosted, для Groovy – CodeNarc
приложений, которые активно используются как в промыш- и так далее.
ленных проектах, так и разработчиками небольших про-
грамм. Детекторы уязвимостей
Среди различных видов проблем, выявляемых семанти-
Анализаторы семантической корректности кода ческими анализаторами, необходимо отдельно отметить
Начнем с простого. Многие утилиты, проверяющие соот- ошибки работы с оперативной памятью, которые уже долгие
ветствие кода определенным правилам, не ограничивают- годы являются головной болью большого количества при-
ся требованиями к структуре и оформлению. Часто такие ложений.
структурные проверки дополняются семантическим анали- Традиционные языки программирования (прежде всего
зом, в рамках которого инструменты пытаются определить, C и C++) оставляют задачи по управлению памятью про-
нет ли в программе конструкций, потенциально ведущих граммистам. И, как показывает практика, даже в небольших
к проблемам с производительностью, безопасностью, логи- программах часто встречаются опасные ошибки, связанные
кой работы и прочими аспектами, непосредственно влияю- с обращением к памяти по некорректным адресам – напри-
щими на функционал приложения. мер, выход за границы массива или присвоения указателю
Типичным представителем таких инструментов в мире на функцию неверного значения, указывающего совсем
Java является PMD (см. рис. 1), позволяющий выявлять: не туда, куда хотелось бы разработчикам.

80 март 2014 системный администратор


пятая пара Карьера/Образование

Ошибки работы с оперативной


памятью долгие годы являются
головной болью большого
количества приложений

Опасными такие ошибки являются не только потому, тью достаточно сложно. Для более полного анализа необ-
что приводят к «падению» программы и возможной потере ходимо так или иначе проэмулировать работу программы
результатов труда пользователя, но и потому, что представ- или ее конкретного участка и посмотреть, как код ведет
ляют собой потенциальные бреши в безопасности системы. себя в реальной жизни.
Зная о наличии в программе некорректного обращения к па- Подобный подход используют инструменты от Coverity –
мяти, злоумышленник с помощью специально сформиро- в частности, Static Analysis Verification Engine (Coverity SAVE),
ванных входных данных может заставить программу сделать использующий абстрактную интерпретацию для частичного
то, что нужно ему для вторжения в ОС, – например, открыть исполнения различных участков программы и позволяющий
сессию удаленного доступа. Впрочем, это большая тема, находить утечки памяти, обращение к неинициализирован-
и она освещалась на страницах Open Source [2]. ным областям и ряд других потенциальных ошибок, которые
Частично проблемы были решены созданием языков могут привести к серьезным последствиям. При этом весь
и фреймворков с автоматическим управлением памятью – анализ происходит статически – то есть Coverity работает
таких, как Java, .NET, Perl, Python и другие. Однако полного исключительно с кодом и не требует запуска приложения.
перехода всех приложений на такие языки пока не пред- Инструменты Coverity не бесплатные, но для ознакомле-
видится. Традиционные подходы с ручным управлением ния компания предлагает пробную версию. Открытые про-
памятью по-прежнему остаются на ведущих позициях, и по- екты могут воспользоваться сервисом Coverity SCAN, по-
иск  потенциальных ошибок в них остается актуальной за- зволяющим загружать на сайт компании свои приложения
дачей. и получать результаты анализа. Есть у Coverity и достойные
За десятилетия борьбы с некорректным использованием аналоги – например, Klockwork и отечественные PVS-Studio
памяти появилось немало инструментов, помогающих раз-
работчикам в решении этой нелегкой задачи. Во-первых,
Рисунок 1. Отчет плагина PMD в Eclipse (изображение с eclipsezone.com)
современные ОС и средства разработки предоставляют
ряд возможностей для определения некорректной рабо-
ты с памятью, предотвращая использование таких ошибок
злоумышленниками – об этом также подробнее рассказано
в статье [2].
Имеются и инструментальные средства для анализа при-
ложений на предмет возможных нарушений. Часть таких
инструментов использует статический анализ кода – так,
уже упоминавшийся cppcheck способен выявлять утечки
памяти и некоторые другие ошибки (например, с помощью
этой утилиты не так давно была обнаружена потенциальная
уязвимость в библиотеке libXfont, входящей в состав исполь-
зуемой в Linux и многих UNIX-системах графической систе-
мы X.Org).

Статические анализаторы
Посредством исключительно синтаксического разбора
и анализа кода обнаружить многие ошибки работы с памя-

системный администратор март 2014 81


Карьера/Образование пятая пара

и CppCat, позволяющие выявлять нетривиальные пробле- зрения разработчика, пользоваться им очень просто – до-
мы. Реальный пример анализа исходного кода программы статочно всего лишь запустить программу с его помощью,
Crypto++ от разработчиков CppCat – для следующего участ- указав необходимые опции (например, что именно нужно
ка кода: отслеживать/профилировать).
Вот так, например, выглядит небольшой кусок результата
void CAST256::Base::UncheckedSetKey() работы Valgrind при запуске через него IM-клиента Kopete
{
word32 kappa[8]; из командной строки:
...
memset(kappa, 0, sizeof(kappa)); $ valgrind kopete
}
<...>
34,370 bytes are definitely lost
=at 0x4029CFA: operator new(unsigned int)
CppCat выдаст предупреждение о том, что большинство
=by 0x5E93A40: KEmoticons::theme() (in /usr/lib/
оптимизирующих компиляторов удалят завершающий вы- libkemoticons.so.4.11.4)
зов memset, поскольку переменная kappa локальная и пос- =by 0x805D343: ??? (in /usr/bin/kopete)

Здесь Valgrind нам подсказывает, что после выхода


Как показывает практика, даже из Kopete не освободилась память, выделенная операто-
ром new() в методе Kemoticons::theme(). Если бы Kopete был
в небольших программах часто собран с отладочной информацией, то мы бы увидели еще
встречаются опасные ошибки, и функцию в исполнимом файле kopete, из которой вызвал-
ся этот метод.
связанные с обращением Несмотря на свою мощь и простоту использования,
к памяти по некорректным Valgrind не является панацеей от всех бед.
Во-первых, Valgrind только осуществляет мониторинг
адресам работы приложения. Процесс использования инструмента
подразумевает активное участие человека, который «гоня-
ет» приложение всеми возможными способами, и качество
ле вызова memset нигде не используется. Однако вполне проверки во многом зависит от того, насколько полно были
возможно, что массив kappa содержит какие-то приватные покрыты возможные сценарии работы. Конечно, в промыш-
данные, и вызов memset был призван принудительно их очи- ленных проектах человека часто заменяют автоматическими
стить. Так что удаление вызова memset делает приватные тестами, но эти тесты ведь тоже надо написать и обеспечить
данные потенциально доступными нежелательным участкам хорошее покрытие кода и сценариев. А для приложений
кода, то есть мы имеем потенциальную брешь в безопас- с графическим интерфейсом это не всегда просто.
ности. Во-вторых, побочным эффектом применения промежу-
точного представления программы, используемого Valgrind,
Динамический анализ – Valgrind является медленная скорость работы приложений. Замед-
Наиболее известные и мощные инструменты статическо- ление работы приложения в Valgrind по сравнению с обыч-
го анализа являются коммерческими и не всегда дешевы- ным запуском на порядок – явление вполне обычное. Если
ми. Мир свободного ПО предлагает альтернативу в лице на небольших программах это не очень заметно, то в случае
Valgrind – программе с открытым исходным кодом, доступ- больших и сложных продуктов тестирование с помощью
ной для Linux, Mac OS X и BSD-систем. Valgrind может затянуться на сутки и более. Так что запу-
Valgrind в отличие от Coverity использует динамический скать этот инструмент после каждого коммита в инструмен-
анализ – исследует поведение приложения в ходе его ра- тарий CI вряд ли разумно.
боты. Для запуска приложения Valgrind транслирует его би- Наконец, используемые в Valgrind средства анализа
нарные файлы в промежуточное представление для соб- не совсем идеальны и не всегда способны дать однознач-
ственной виртуальной машины, которая затем и выполняет ный вердикт – имеется ли в том или ином месте утечка памя-
программу. ти или нет. И анализ результатов работы этого инструмента
Такой подход позволяет инструменту контролировать также требует некоторого времени и напряжения ума.
все аспекты выполнения приложения, в частности, отсле- В ряде специфических ситуаций Valgrind и другие рас-
живать вызовы функций выделения/освобождения памяти смотренные выше инструменты могут оказаться не у дел.
и обращения к ней. Это дает возможность в любой момент Например, при тестировании ядра ОС и его модулей –
времени знать, какие участки памяти приложение зарезер- в частности, драйверов устройств. Но такое тестирование
вировало для своих нужд и не выходят ли инструкции обра- очень востребовано (ведь ошибка в модуле ядра приве-
щения к ней за пределы выделенных приложению областей. дет к краху ОС или ее компрометации злоумышленником),
Заодно Valgrind может отслеживать утечки памяти, что тоже и средства для его проведения существуют как в Windows,
немаловажно для программ, работа которых не прерывает- так и в Linux.
ся в течение долгого времени. Для первой это динамический Driver Verifier, а так-
Valgrind – инструмент многогранный, позволяющий так- же статический SLAM, входящий в состав Windows Driver
же выявлять состояния гонки в многопоточных програм- Development Kit. Для Linux прежде всего необходимо от-
мах и осуществлять профилирование программы. С точки метить отечественные разработки – динамический KEDR

82 март 2014 системный администратор


пятая пара Карьера/Образование

и инструменты проекта Linux Driver Verification (LDV), прово- Казалось бы, вот оно, счастье! Конечно, надо еще сфор-
дящие статическую верификацию. Эти средства объектив- мулировать требования в формальном виде, но это не очень
но являются одними из лидеров в области автоматического большая проблема. Но есть более существенная слож-
тестирования модулей ядра Linux; мы активно использу- ность, с которой сталкиваются автоматизированные инстру-
ем их при разработке дистрибутивов РОСЫ и исправили менты, использующие формальную верификацию, – это по-
с их помощью ряд достаточно хитрых проблем. требность в огромном количестве ресурсов. Более точно:
В заключение констатируем, что ошибки работы с памя- используемые в этих инструментах алгоритмы страдают
тью остаются одной из насущных проблем современного от эффекта комбинаторного взрыва, и победить эти про-
ПО. Выявлять их непросто, но и цена таких ошибок велика. блемы в общем случае пока не представляется возможным.
Как следствие, нацеленные на их обнаружение инструмен-
ты достаточно нетривиальны и по сложности существенно
превосходят инструменты форматирования кода и прочие
косметические анализаторы.
Зная о наличии в программе
Однако в плане сложности Valgrind, Coverity и компания – некорректного обращения
далеко не все средства для тестирования кода. Пора пере-
йти к самому наукоемкому классу таких инструментов, осно-
к памяти, злоумышленник
ванному на строгой математике. с помощью специально
Формальная верификация кода
сформированных
Программирование исконно очень близко математике, входных данных может
и развитый математический аппарат активно использует-
ся в разных областях, имеющих отношение к разработке
заставить программу
ПО, например, в теории алгоритмов и теории компилято- сделать то, что нужно
ров. Вполне ожидаемо, что уже несколько десятилетий ему для вторжения в ОС
в воздухе витают идеи применить математические методы
и к тестированию программ, то есть подойти к вопросу про-
верки качества приложений как к математической задаче. Как следствие, применять формальную верификацию полу-
Такой  подход получил общее название формальной вери- чается либо для небольших программ, либо для проверки
фикации. достаточно узких и специфических требований. Либо про-
Классическое тестирование может только находить водить тестирование на мощных кластерах, но и это спаса-
ошибки, но не способно гарантировать их полное отсут- ет ненадолго.
ствие – ведь для этого необходимо было бы перебрать По этой причине использование инструментов формаль-
все возможные входные данные и сочетания внешних ус- ной верификации в промышленности довольно ограничено,
ловий. Формальная же верификация как раз позволяет несмотря на большой интерес многих вендоров к строгим
доказать, что программа обладает или не обладает теми математическим подходам. Тем не менее есть и вполне по-
или иными свойствами – в частности, что в ней отсутствуют лезные инструменты формальной верификации, используе-
те или иные ошибки. мые для реальных проектов.
Например, можно проверить, что та или иная перемен- Так, уже упомянутый ранее мною LDV, который мы ис-
ная не обнуляется в ходе работы, что переменная инициа- пользуем в РОСЕ, основывается на статических анализа-
лизируется до ее использования или что выходное значение торах BLAST и CPAchecker (более того, в последние годы
функции sqrt() действительно возвращает квадратный ко- BLAST и развивается в основном разработчиками LDV).
рень своего аргумента. Правда, нельзя проверить, что оши- Также достаточно известным является инструмент Java
бок нет вообще, ведь вряд ли такое требование можно опи- Path Finder, позволяющий находить в многопоточных Java-
сать математически. программах тупики, необработанные исключения и некото-
Часто используемым видом формальной верификации рые другие ошибки.
является Model Checking («проверка моделей»). Он под- В целом интерес к формальной верификации не угасает,
разумевает построение математической модели программы и исследования в этой области ведутся как научными цен-
(возможно, абстрактной модели, отражающей не все харак- трами, так и крупными корпорациями. При этом инструменты
теристики программы, а только те, которые важны для про- формальной верификации сейчас применяются не только
верки того или иного свойства). Такая модель может быть к программам, но и к аппаратным средствам – в частности,
построена с использованием конечных автоматов, сетей к процессорам.
Петри и аналогичных математических объектов. Немаловажен и тот факт, что год от года растет произ-
Далее необходимо сформулировать требования для про- водительность компьютеров и увеличиваются вычисли-
верки на модели; обычно для этого используются времен- тельные мощности, доступные для проведения статической
ные (или темпоральные) логики, добавляющие к «обычной» верификации. Хотя и приложения не отстают в своем раз-
логике понятия времени и причинно-следственных связей. витии, все более усложняясь и разрастаясь.
Проверка выполнения требования на модели – занятие
очень трудоемкое, но рутинное, и для него существуют Программы-комбайны
соответствующие автоматические инструменты – такие, Как вы уже наверняка подметили, многие рассмотренные
как BLAST, CPAchecker или SPIN. в этой статье (а также в предыдущей статье про качество

системный администратор март 2014 83


Карьера/Образование пятая пара

кода) инструменты зависят от языка программирования. в этой статье инструментов скорее дают пищу для размыш-
Если вы работаете над крупным проектом или репозитори- лений – нет ли в тех или иных местах программы потенци-
ем из нескольких проектов, использующих разные языки альной ошибки, которая может проявиться в самый непод-
и технологии, то вам могут помочь фреймворки, поддержи- ходящий момент. Иными словами, для продвинутых средств
вающие сразу множество платформ и языков. автоматизированного тестирования и анализа велика веро-
Кроме того, даже в рамках одного небольшого проекта ятность ложного срабатывания.
не всегда удобно применять много разрозненных инстру- Определить, является ли срабатывание ложным, не всег-
ментов – хочется каким-то образом их интегрировать. Безус- да легко. По этой причине не все упомянутые выше инстру-
ловно, здесь могут помочь инструменты Continuos Integration менты используются на регулярной основе в рамках не-
(CI) – например, Hudson и Jenkins предлагают плагины прерывной интеграции. А если и используются, то далеко
для многих рассмотренных выше утилит. не всегда результатам их работы уделяется должное вни-
Однако некоторые вендоры предлагают комбинирован- мание. Ведь если вы из раза в раз получаете одни и те же
ные решения, сразу покрывающие несколько направлений. предупреждения и уверены, что все они являются ложными
Так, тот же Coverity предоставляет целый набор продуктов срабатываниями, то вскоре вы просто перестанете обра-
под общим названием Coverity Platform, включающий разно- щать внимание на отчеты этих инструментов и можете не за-
образные инструменты проверки качества кода и обеспе- метить появления реальных проблем.
чения контроля качества программного продукта в целом. Конечно, многие программы позволяют составлять спи-
Имеются у Coverity и инструментальные средства, которые сок известных ложных срабатываний, которые будут игно-
очень пригодятся в крупных проектах – например, Coverity рироваться при последующих запусках, а многие средства
Connect предоставляет средства обработки ошибок, най- CI предоставляют плагины, позволяющие отслеживать по-
денных инструментами Coverity Platform, и поддерживает явление новых ошибок в отчете тех или иных инструментов
базу знаний о возможных ошибках. тестирования, так что после очередной сборки вы можете
Есть у Coverity и аналоги – например, достаточно извест- сконцентрироваться только на ошибках, которые привнесли
ны статические анализаторы кода QA-C и QA-C++ от PRQA, последние изменения кода. Это несколько облегчает жизнь,
позволяющие выявлять широкий класс проблем и недоче- но в условиях часто изменяющегося кода список известных
тов и при этом представлять результаты в удобной и понят- ошибок необходимо постоянно обновлять, а, занимаясь
ной форме. только новыми ошибками, можно забыть исправить старые,
Из свободных инструментов хорошим выбором будет но отнюдь не ложные.
SonarQube (см. рис. 2), поддерживающий более 20 языков Помножьте эти проблемы на ресурсоемкость многих ин-
программирования и способный проверять соответствие струментов и на немаленькую стоимость некоторых из них,
кода имеющимся требованиям, находить дублирующие- и вы придете к выводу, что для небольших проектов, тре-
ся участки программ, потенциальные ошибки, а также за- бования к качеству которых относительно невелики, вполне
пускать все ваши тесты для приложений. Для SonarQube хватит и простых утилит. Когда же сложность кода возрас-
существует более полусотни плагинов, еще больше рас- тает настолько, что держать его весь в голове не пред-
ширяющих его функциональность, а сам он может быть ин- ставляется возможным, а требования к качеству при этом
тегрирован в инструменты CI. становятся все более серьезными, пора вспомнить и о про-
двинутых автоматизированных средствах. Но главное – что-
Сложные инструменты – для сложных проектов! бы было, что вспомнить, ведь на срочное изучение новых
Итак, качество кода отнюдь не сводится к его оформлению, технологий времени, как всегда, не окажется.
а автоматизированные инструменты проверки качества по-
зволяют исправлять более серьезные ошибки, чем некра- ***
сивые отступы. Однако в отличие от lint и ему подобных, К сожалению, в процессе обучения в вузах подобным авто-
дающих однозначный ответ, соответствует ли программа матизированным инструментам редко уделяется много вни-
заданным требованиям или нет, многие из рассмотренных мания; однако ничто не мешает любознательным студентам
проявить инициативу и самостоятельно попробовать неко-
торые из них, благо здесь имеется и богатый выбор свобод-
Рисунок 2. Sonar умеет анализировать даже программы на Коболе
(пример с sonarsource.com) ных программ.
Такая инициатива наверняка будет по достоинству оце-
нена не только преподавателями, но и работодателями,
а оценка последних ничуть не менее важна. EOF

1. Силаков Д. Качество программного кода. Позаботьтесь о дол-


гой жизни ваших программных продуктов. //«Системный адми-
нистратор», №1-2, 2014 г. – С. 128-133.
2. Силаков Д. Ошибки сегментации и безопасность,
или Как «упавшая» программа может привести к взлому сис-
темы. //Open Source, №125. – С. 22-31.

Ключевые слова: тестирование, верификация, корректность кода,


динамический анализ.

84 март 2014 системный администратор


пятая пара Карьера/Образование

Визитка

Владимир Закляков, советник налоговой службы


2-го ранга, zaklyakov@samag.ru

Лабораторная работа
Представление текстовой информации в ЭВМ. Часть 1
Теоретические сведения о способах представления текстовой информации
в памяти ЭВМ, в том числе и кириллицы

В теоретической части работы рассматриваются вопросы мации, существующих стандартов и методов, несомненно,
кодирования текстовой информации и некоторые полезные может быть расширен в будущем.
свойства кодировок. Вопросы упаковки, сжатия и оценки Если вопросы представления чисел в памяти ЭВМ были
количества информации не затрагиваются. рассмотрены в [1], то данная работа посвящена пробле-
В последующей, практической, части предлагается са- мам хранения текстовой информации. Понимание принци-
мостоятельно выполнить несколько заданий посредством пов кодирования и знание основных кодовых таблиц важно
общения с компьютером через интерфейс командной стро- не только системным администраторам, но и пользователям
ки (CLI), что поможет закреплению теоретических знаний для правильного чтения как информации, добытой из Интер-
и получению соответствующих навыков работы в консоли. нета, электронной почты, так и файлов, полученных через
внешние носители и др.
Описание лабораторного стенда
Для работы требуется ОС Linux, имеющая в своём составе Зарождение кодировок
командный интерпретатор bash, утилиты и команды iconv Чтобы лучше понять принципы кодирования текстов, перене-
(обычно пакет glibc-common), cat, od, echo, cp, mv, rm, dd сёмся во времена, когда ЭВМ только появлялись, а их базо-
(пакет coreutils), dos2unix и unix2dos (пакет dos2unix). Для до- вые принципы ещё не были чётко сформулированы. А если
полнительного задания повышенной сложности понадобит- их нет, то давайте их и придумаем вместе. Итак, исходные
ся утилита strings (пакет binutils). Фактически это может быть условия: мы имеем несколько букв (алфавит) и желание
любой Linux, UNIX или совместимая с ними ОС. представить его в виде цифр, так как цифры [2] «хранить»
в памяти ЭВМ мы уже научились. Первое, что обычно при-
Краткие теоретические сведения ходит на ум, – закрепить за каждым символом алфавита
Так как большинство современных ЭВМ (если не сказать, числовой номер – код. Например, 1 для буквы «а», 2 пусть
что почти все) удовлетворяет принципам вычислительной обозначает букву «б», 3 – букву «в» и т.д. Наверняка среди
машины фон Неймана, то логично предположить, что ин- читателей найдутся те, кто в детстве играл подобным обра-
формация, которую они хранят, обрабатывают и передают зом.
по сетям, удовлетворяет принципу двоичного кодирования, Хоть мы великая страна с наибольшим числом часовых
а именно представима в виде двоичных чисел. поясов, и нам есть, чем гордиться, всё же мы не были первы-
Существуют международные стандарты и методы коди- ми, кто использовал ЭВМ и придумывал способы представ-
рования текстовой, числовой, изобразительной, звуковой ления текстов, поэтому первично кодированию подверглись
и видеоинформации. Сегодняшний список видов инфор- латинские символы, цифры и различные знаки препинания,

Таблица 1а. Семибитная кодовая таблица ASCII (ANSI)

0 1 2 3 4 5 6 7 8 9 A B C D E F 0 1 2 3 4 5 6 7 8 9 A B C D E F

системный администратор март 2014 85


Карьера/Образование пятая пара

а не кириллица. Так, в англоязычных странах используют- В таблице 1а для преобразования прописных букв в строч-
ся 26 прописных и 26 строчных букв (A… Z, a… z), девять ные достаточно к коду буквы прибавить 3210 (1000002)
знаков препинания (. , : ! " ; ? ( ) ), пробел, 10 цифр, пять зна- и, наоборот, для преобразования строчных в пропис-
ков арифметических действий (+, -, *, /, ^) и ряд специаль- ные из кода буквы вычесть 3210. На практике чаще ис-
ных символов (№, %, _, #, $, &, >, <, |, \); все они и были за- пользуют не сложение и вычитание, а «побитовое
кодированы – в итоге набралось чуть больше 100 символов. ИЛИ» с числом 001000002 или «побитовое И» с чис-
(Дефис, тире, длинное тире и минус были закодированы лом 110111112 соответственно. Повторное применение
как «чёрточка» одного вида.) Для кодирования такого числа побитовых операций не оказывает никакого влияния
вариантов можно ограничиться семиразрядным двоичным на результат, чего не скажешь об операциях сложения
числом (от 0000000 до 1111111, в десятичной системе счис- и вычитания. Наглядно это можно увидеть, если сделать
ления – от 0 до 127), что и было сделано. таблицы с символами в 32 колонки. Тогда вышестоящие
символы от нижестоящих будут отличаться ровно на 32 по-
Кодовые таблицы зиции (см. таблицу 1а).
Для кодирования букв и других символов, используемых Однако на практике использовать такую таблицу для пре-
в печатных документах, необходимо закрепить за каждым образований шестнадцатеричных значений в вид символа
символом числовой номер – код. и обратно не очень удобно, поэтому чаще можно увидеть
Первой семиразрядной кодовой таблицей была ASCII таблицу с 16 колонками (таблица 1б).
(American Standard Code for Information Interchange), опу- В последующем данная ASCII таблица была принята
бликованная как стандарт ASA X3.4-1963 в июне 1963 года как стандарт ведущими международными организациями
американской организацией по стандартизации American по стандартизации [1]:
Standards Association (ASA), которая позднее стала име- >> ISO/IEC 646:1991 [8];
новаться ANSI [3]. (Поэтому данную семибитную кодовую >> ITU-T Recommendation T.50 (09/92) [9], ECMA-
таблицу по появлении называли также ANSI, однако на се- 6 (European Computer Manufacturers Association).
годня термин «кодировка ANSI» не устоялся, в ряде случаев
под ним могут пониматься совсем другие кодировки, вплоть Русификация
до ISO/IEC 8859-1.) Таблица содержала 32 кода команд Однако для нашей страны и многих других стран необходи-
или управляющих символов (от 0 до 31), большая часть ко- мо было добавить в кодовую таблицу символы националь-
торых сегодня не применяется пользователями, и 95 кодов ных алфавитов. Для этого было предложено использовать
(от 33 до 127) для различных знаков, достаточных для рабо- восьмибитную кодовую таблицу, которая могла содержать
ты с английскими текстами, как показано в таблице 1 (а,б). дополнительно ещё 128 символов (с 128 по 255).
Там же (таблица 1а) символы построчно имеют следую- В дальнейшем был принят стандарт на восьмибитную та-
щие коды в шестнадцатеричной системе счисления (в скоб- блицу ASCII – ISO/IEC 8859, в которой первые 128 символов
ках – в десятичной): оставались теми же, что и в семибитной таблице, а символы
>> 1-я строка с 00 по 0F и далее (правая колонка) с 10 по 1F с 128 по 255 отводились для неанглийских символов [1].
(0–15, 16–31); Существует несколько частей этого стандарта:
>> 2-я строка с 20 по 2F и 30 – 3F (32–47, 48–63); >> ISO/IEC 8859-1:1998 – Part 1: Latin alphabet № 1;
>> 3-я строка с 40 по 4F и 50 – 5F (64–79, 80–95); >> SO/IEC 8859-5:1999 – Part 5: Latin/Cyrillic alphabet;
>> 4-я строка с 60 по 6F и 70 – 7F (96–111, 112–127). >> ISO/IEC 8859-6:1999 – Part 6: Latin/Arabic alphabet;
>> ISO/IEC 8859-7:2003 – Part 7: Latin/Greek alphabet;
>> ISO/IEC 8859-8:1999 – Part 8: Latin/Hebrew alphabet и т.д.
Интересное свойство В таблице 2 представлена вторая половина кодовой та-
блицы (коды 128–255) для стандарта ISO 8859-5.
a + 3210 = A, b + 3210 = B, … , z + 3210 = Z Первые русские ЭВМ использовали семибитную коди-
A - 3210 = A, b - 3210 = B, … , z - 3210 = Z
ровку символов КОИ-7 (Код Обмена Информацией семибит-

Таблица 1б. Семибитная кодовая таблица ASCII (ANSI)

x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF
0x
1x
2x
3x
4x
5x
6x
7x

пробельный символ

86 март 2014 системный администратор


пятая пара Карьера/Образование

ный, см. таблицу 3), в которой присутствовали прописные понятие «кодовая страница» (code page, CP). Полная та-
латинские буквы, а на месте строчных латинских были рус- блица кодовых страниц Microsoft Windows велика, поэтому
ские прописные буквы (кириллица). в таблице 6 приведено лишь несколько наиболее важных
Позднее на первых отечественных персональных ком- кодировок.
пьютерах использовалась так называемая «Основная коди- Кодировка русских букв в операционной системе
ровка ВЦ Академии наук СССР», в руководствах к старым Microsoft Windows – CP1251 – показана в таблице 7.
матричным принтерам обозначаемая просто как «ГОСТ» – В операционной системе Linux (как и в большинстве
восьмибитная кодовая таблица, вторая половина которой UNIX) для представления русских букв исторически ис-
содержала символы псевдографики, русские прописные пользовалась кодировка КОИ-8R (таблица 8), зарегистри-
и строчные буквы (коды с 128 по 255 – см. таблицу 4). рованная в IANA как KOI8-R и описанная в RFC 1489 (см.
В дальнейшем основной кодировкой русских букв дополнительную информацию [10]), однако на сегодня
для первой операционной системы ПК – MS DOS стала большинство дистрибутивов Linux по умолчанию использу-
«Альтернативная кодировка ВЦ Академии наук СССР» ют кодировку UTF8, о которой будет рассказано ниже.
(вторая половина таблицы для кодов 128–255 приведена Стандартизован и зарегистрирован также украин-
в таблице 5). Содержит псевдографику (позволяющую ский клон КОИ-8 – KOI8-U (таблица 9), имеющий отличия
в текстовом режиме рисовать рамки из одинарных и двой- от KOI8-R во второй строке символов псевдографики.
ных линий). Существует несколько модификаций, отличаю- О том, как его утверждали осенью 1997 года, можно узнать
щихся символами в последних 14 позициях. Зарегистриро- из фотографий Тараса Гейченко [11].
вана в IANA [5] как IBM 866 или CP866. Кириллица Macintosh (компьютеров фирмы Apple),
С широким распространением операционной системы она же CP10007, довольно близка к CP1251. Не зареги-
Microsoft Windows и появлением её национальных локали- стрирована в IANA, но часто обозначается как x-mac-cyrillic
заций для второй половины таблицы ASCII было введено (таблица 10).

Таблица 2. Кодовая таблица ISO 8859-5 (коды с 12810 по 25510)

Таблица 3. Семибитная таблица символов КОИ-7

Таблица 4. Кодировка символов «ГОСТ» (коды с 12810 по 25510)

Таблица 5. Таблица символов DOS Cyrillic (CP866, коды с 12810 по 25510)

системный администратор март 2014 87


Карьера/Образование пятая пара

Таблица 6. Некоторые национальные кодовые страницы (CP – code page) операционной


ческих символов в текстах было невозможно, так как они
системы Microsoft Windows кодировались одними и теми же кодами. Для решения про-
блемы в 1991 году в Калифорнии была создана некоммер-
ческая организация Unicode Consortium, в которую вошли
Локализация ANSI Mac DOS (OEM) DOS (OEM)
представители многих зарубежных компьютерных фирм
CP CP Primary CP Secondary
CP (Borland, IBM, Lotus, Microsoft, Novell, Sun, WordPerfect
и др.) и которая занимается развитием и внедрением стан-
English (United 1252 10000 437 850 дарта The Unicode Standard.
States) После этого стандарт кодирования символов Unicode
English (Britain, 1252 10000 850 437 становится доминирующим в интернациональных про-
Canada и др.) граммных многоязычных средах. Microsoft Windows NT
French (Standard) 1252 10000 850 437 и его потомки Windows 2000, 2003, XP, Vista, 7, 8, 8.1 ис-
German 1252 10000 850 437 пользуют Unicode, точнее, UTF-16, как внутреннее пред-
(Standard) ставление текста. UNIX-подобные операционные системы
Russian 1251 10007 866 855 типа Linux, BSD и Mac OS X, iOS, Android и др. приняли
Unicode (UTF-8) как основное представление многоязыч-
ного текста.
Продолжение истории Unicode резервирует 1 114 112 (220+216) символов кода,
Развитие обмена текстами через дискеты и модемы (BBS, в настоящее время используются более 96 000 символов.
эхоконференции FidoNet, электронная почта через UUCP) Первые 256 кодов символов точно соответствуют таковым
показало недальновидность придуманной ранее схемы. ISO 8859-1, наиболее популярной восьмиразрядной таблицы
Например, использование одновременно кириллицы и гре- символов «западного мира»; в результате первые 128 сим-

Таблица 7. Таблица символов CP1251 (коды с 12810 по 25510)

Таблица 8. Таблица символов KOI8-R (коды с 12810 по 25510)

Таблица 9. Таблица символов KOI8-U (коды с 12810 по 25510)

Таблица 10. Macintosh Cyrillic, CP10007 (коды с 12810 по 25510)

88 март 2014 системный администратор


пятая пара Карьера/Образование

волов также идентичны таблице ASCII. В таблице 11 пока- План 1. Дополнительный многоязычный план (SMP –
зан русский блок Unicode (коды от 040016 до 04FF16). Supplementary Multilingual Plane), главным образом исполь-
Кодовое пространство стандарта Unicode разделено зуется для исторических символов, а также для музыкаль-
на 17 планов («planes») от 0 до 16, и каждый план име- ных и математических символов.
ет 65 536 (= 216) точек кода. Также планы ещё называют пло- План 2. Дополнительный иероглифический план (SIP –
скостями. Supplementary Ideographic Plane), используется для прибли-
Первый план (план 0), Основной многоязычный план зительно 40 000 редких китайских иероглифов.
(BMP – Basic Multilingual Plane) – тот, в котором описано План 3. Третичный иероглифический план (TIP – Tertiary
большинство символов. BMP содержит символы почти Ideographic Plane), используется (зарезервирован) для ар-
для всех современных языков и большое количество специ- хаичных китайских иероглифов.
альных символов. Планы 4 – 13, временно не используются.
Ещё три плана (1, 2, 3) используются для «графических» План 14. Дополнительный план особого назначения
символов. (SSP – Supplementary Special-purpose Plane), отведён

Таблица 11. Кириллица в Unicode (фрагмент плана 0)

040 041 042 043 044 045 046 047 048 049 04A 04B 04C 04D 04E 04F

системный администратор март 2014 89


Карьера/Образование пятая пара

для символов, используемых по особому назначению (теги, Естественно, обе не являются специфически «русски-
селекторы написания и др.). ми», а пригодны для написания «сколько угодно»-язычного
Планы 15 и 16 открыты для любого частного использо- письма.
вания.
UTF-8
Однобайтное и многобайтное кодирование, В UTF-8 [4] все символы разделены на несколько групп
кодировки переменной длины по значению первых битов. Символы с кодами ме-
Для кодирования одного символа может использовать- нее 12810 кодируются одним байтом, первый бит которого
ся один или несколько байтов. Если для любого символа равен нулю, а последующие 7 бит в точности соответству-
достаточного одного байта – кодировка считается одно- ют 128 символам седьмой таблицы ASCII (см. таблицу 12),
байтовой, если требуется несколько – многобайтовой. следующие 1920 символов – двумя байтами (Greek, Cyrillic,
Все существующие текстовые кодировки могут быть клас- Coptic, Armenian, Hebrew и Arabic-символы). Последующие
сифицированы по данному признаку. символы кодируются тремя и четырьмя байтами.
Кодировки переменной длины используют для разных Наиболее наглядно правила записи кода одного симво-
групп символов разную длину. В них одни символы могут ла в UTF-8 сформулированы в [6]:
быть однобайтовыми, а другие двух-, трёх- и даже четырёх- 1. Если размер символа в кодировке UTF-8 = 1 байт,
байтовыми. то его код имеет вид (0aaa aaaa), где «0» – просто ноль,
остальные биты «a» – это код символа в кодировке ASCII.
Недостатки многобайтовых кодировок 2. Если размер символа в кодировке в UTF-8 > 1 байт
К недостаткам многобайтовых кодировок можно отнести (то есть от 2 до 6):
следующее: 2.1. Первый байт содержит количество байтов символа,
1. Излишнюю избыточность (один символ кодируется б закодированное в единичной системе счисления:
льшим числом битов). 2 — 11
2. Низкую помехоустойчивость (в случае потери одно- 3 — 111
го байта из многобайтового кода все последующие байты 4 — 1111
смещаются, и весь последующий текст перестаёт правиль- 5 — 1111 1
но читаться). 6 — 1111 11
3. Использование байтов с кодами 0-31 (служебные 2.2. Затем следует «0» – бит-терминатор, означающий
коды). Подобно двоичным файлам, например, кодировка завершение кода размера.
Unicode мало подходит для непосредственной передачи 2.3. Затем идут значащие биты до конца текущего байта.
по сети – байты в тексте вполне могут приходиться на об- 2.4. Далее идёт один или несколько значащих байтов,
ласть управляющих символов. которые имеют вид (10xx xxxx), где «10» – биты признака
4. Может использоваться разный порядок байт: LITTLE_ продолжения, а x – значащие биты.
ENDIAN и BIG_ENDIAN. В общем случае варианты представления одного симво-
Для нивелирования указанных недостатков обычно ла в кодировке UTF-8 выглядят так:
применяются две другие основанные на Unicode кодиров- (1 байт) 0aaa aaaa
ки переменной длины, обозначаемые как UTF (Unicode (2 байта) 110x xxxx 10xx xxxx
Transformation Format): семибитная UTF-7 (последний (3 байта) 1110 xxxx 10xx xxxx 10xx xxxx
пересмотр – RFC2152, 1997 г., зарегистрирована в IANA (4 байта) 1111 0xxx 10xx xxxx 10xx xxxx 10xx xxxx
как UTF-7) и восьмибитная UTF-8 (RFC 2279, 1998 г., заре- (5 байт) 1111 10xx 10xx xxxx 10xx xxxx 10xx xxxx 10xx xxxx
гистрирована в IANA как UTF-8). (6 байт) 1111 110x 10xx xxxx 10xx xxxx 10xx xxxx 10xx
Замечание. UTF-7 и UTF-8 в каком-то смысле уже не яв- xxxx 10xx xxxx
ляются языковыми кодировками, а являются программно- Рассмотрим на примере как закодировать русскую бук-
распознаваемым кодом относительно исходного Unicode, ву «а» в UTF-8.
но зарегистрированы они именно как кодировки, наравне 1. Смотрим в таблицу 11 и определяем Unicode код бук-
с ISO 8859-5 или KOI8-R. вы «a» – 043016.

Таблица 12. Принцип кодирования символов в UTF-8

Диапазон кодов UTF-8 (binary) Комментарии


(hexadecimal)

000000–00007F 0aaaaaaa Первый бит 0, следующие 7 соответствуют таблице ASCII


000080–0007FF 110xxxxx 10xxxxxx Первые 3 бита 110 – всего используется 2 байта, второй байт начинается с 10
000800–00FFFF 1110xxxx 10xxxxxx Первые 4 бита 1110 – всего используется 3 байта, второй и третий байты начинаются
10xxxxxx с 10
010000–10FFFF 11110xxx 10xxxxxx Первые 5 бит 11110 – всего используется 4 байта, второй, третий и четвёртый байты
10xxxxxx 10xxxxxx начинаются с 10

90 март 2014 системный администратор


пятая пара Карьера/Образование

2. Переводим число 043016 в двоичный вид:


Таблица 13. Вспомогательный материал для конвертирования символов из одной
0000 0100 0011 0000.
кодировки в другую
3. Так как русские буквы кодируются двумя сим-
волами, то исходя из определения длины кода
UTF‑8 получаем 11 значащих бит (см. [6]) и выделяем Буква CP1251 UTF16 UTF16→ UTF8 UTF8→
CP1251 CP1251
их с конца 0000 0100 0011 0000.
4. Перегруппируем биты из 100 0011 0000 в 10000 110000. Ё A8 04 01 byte1== D0 81 byte1==
0x04 && byte2== 0xD0 &&
5. Соотнесём данные биты с местом, куда они будут за-
0x01 ? 0xA8 byte2==
писаны в двухбайтовой записи 0x81 ? 0xA8
110x xxxx 10xx xxxx получим 110x xxxx 10xx xxxx
ё B8 04 51 byte1== D1 91 byte1==
10000 110000 → 1 0000 11 0000 0x04 && byte2== 0xD1 &&
6. Запишем результат 1101 0000 1011 0000. 0x51 ? 0xB8 byte2==
7. Переведём в шестнадцатеричный вид, результат готов: 0x91 ? 0xB8
D0 B0. А C0 04 10 D0 90 byte1 ==
Совершать подобные манипуляции вручную для каждой Я DF 04 2F D0 AF
0xD0 ? byte2 +
буквы неудобно, поэтому прибегают к различным упрощаю- 0x30
а E0 04 30 byte1 == D0 B0
щим жизнь таблицам. Зачастую они очень просты, и разъ-
п EF 04 3F 0x04 ? D0 BF
яснять, как ими пользоваться, не имеет смысла. Например, byte2 + 0xB0
таблица 13 создана Stanislav Borutsky [7]. р F0 04 40 D1 80 byte1 ==
0xD1 ? byte2 +
Автор таблицы 14 мне неизвестен. я FF 04 4F D1 8F
0x70

***
На данный момент вы получили первичное представление за административное управление в Интернете – http://www.
о способах кодирования текстовой информации. iana.org.
Некоторое количество дополнительной информации 6. Примеры ошибок (абракадабра, крякозябры) – http://
и практические задания для самостоятельного выполнения ru.wikipedia.org/wiki/UTF-8.
читатели найдут в следующем номере. EOF 7. Конвертируем русские буквы из UTF8/UTF16 в CP1251 и об-
ратно – http://cax.livejournal.com/59592.html.
1. Грошев А. С. Информатика: учеб. для вузов/А. С. Грошев. – Ар- 8. ISO – http://www.iso.org/ – International Organization for
хангельск: Арханг. гос. техн. ун-т, 2010. – 470 с. ISBN 978-5- Standardization; IEC – http://www.iec.ch/ – International
261-00480-6. Electrotechnical Commission – ведущие международные орга-
2. Закляков П. Представление чисел в памяти ЭВМ. Ча- низации по стандартизации, в области электротехники – со-
сти 1 и 2.//«Cистемный администратор», 2012 г.: №3, с.90-96; вместные стандарты.
№5, с.88-91; №6, с.84-89; №7-8, с.112-121. 9. The International Telecommunication Union http://www.itu.int.
3. American National Standards Institute http://www.ansi.org. 10. Дополнительная информация по кодировке KOI8-R – http://koi8.
4. UTF-8, a transformation format of ISO 10646 http://tools.ietf.org/ pp.ru.
html/rfc2279. 11. Как утверждали кодировку KOI8-U, фотографии с места собы-
5. Internet Assigned Numbers Authority – организация, отвечающая тия – http://www.net.ua/index.php/ru/koi8umenu/12-lavra, 1997 г.

Таблица 14. Вспомогательная таблица для ручного преобразования кодировок символов

системный администратор март 2014 91


Карьера/Образование ретроспектива

Визитка

Владимир Гаков, журналист, писатель-фантаст, лектор. Окончил физфак МГУ. Работал в НИИ.
С 1984 г. на творческой работе. В 1990-1991 гг. – Associate Professor, Central Michigan University.
С 2003 г. преподает в Академии народного хозяйства. Автор 8 книг и более 1000 публикаций

Леди-адмирал виртуальных морей


В мартовском номере журнала естественно представить читателю не героя, а героиню
«компьютерного фронта» – их тоже хватает в сравнительно недолгой, но уже славной
истории компьютерной техники и ИТ

Заслуженная «пионерка» молодой науки информати- Хоппер – фамилия мужа, с которым Грейс (урожденная
ки, американка Грейс Марри Хоппер прославилась тем, Марри), прожила в браке полтора десятилетия. Зато геро-
что была одним из первых программистов для одно- иня азимовского цикла не совершила такого карьерного
го из первых компьютеров – Harvard Mark I (см. заметку взлета в сфере, казалось бы, столь далекой от киберне-
в «Зале Славы СА»). И разработала первый компилятор тики, – на флоте!
для компьютерного языка программирования. И пустила Грейс Брюстер Марри родилась в 1906 году в Нью-
в широкий оборот термины «bug» и «debugging» (у нас Йорке и с раннего детства обнаружила редкий для девоч-
прижились, соответственно, «глюк» и «разглючивание»). ки интерес ко всему механическому. Больше радости, чем
И – что самое удивительное – первой в Штатах дослужи- куклы, маленькой Грейс доставляли разборки домашних
лась до адмиральских погон! будильников («чтобы посмотреть, как там все устроено»).
Собрать их обратно, к сожалению, получалось не всегда –
Прообраз Сьюзен Келвин за что родители устраивали дочери выволочку. Однако за-
Кто такая Сьюзен Келвин, для читателей – любителей на- тем, поняв, что это, видимо, призвание Грейс, специально
учной фантастики – долго объяснять не надо. Вспомнят эту покупали ей дешевые часы – пусть себе возится с ними
фамилию и те, кто этих книжек не читал, но хотя бы смо- на здоровье! В общем, чем бы дитя ни тешилось…
трел недавний фильм «Я, робот». Сьюзен Келвин – главная После окончания средней школы в штате Нью-
героиня знаменитого цикла рассказов (а затем и романов) Джерси 16-летняя Грейс попыталась поступить в престиж-
Айзека Азимова о роботах, специалист-робопсихолог, ный колледж Вассар, но не прошла конкурс (помешали
много сделавшая для того, что свести к минимуму недопо- низкие оценки по латыни). Пришлось повторять попытку
нимания и конфликты, связанные годом позже – и на сей раз
с появлением в человеческом мире удачно. В 1928 году талантли-
искусственных разумных существ. вая девушка закончила этот
Умная и талантливая – но одино- колледж с отличием и сразу
кая, суховатая и внешне непри- двумя дипломами – математи-
влекательная женщина, полностью ка и физика. А двумя годами
посвятившая жизнь своей науке. позже защитила магистер-
И своим роботам. скую диссертацию в еще
Выдающийся американский пи- более престижном высшем
сатель-фантаст признавался (в том учебном заведении – зна-
числе лично – автору этих строк), менитом Йельском уни-
что свою Сьюзен Келвин он частич- верситете. За докторской
но «списал» с Грейс Хоппер, о кото- дело также не задержа-
рой к началу 1950-х годов знали все, лось – в том же университе-
кто интересовался наукой. Особенно те в 1934 году Грейс защи-
передним ее краем – в частности, тила диссертацию на тему
кибернетикой. Хотя реальная «Сью- «Новые типы критериев
зен Келвин» в жизни, может быть, неприводимости». К тому
и не блистала красотой, но и ученым- времени она уже носила
шины карьеры еще впереди
«сухарем», и «синим чулком» не была: Вер фамилию мужа – профес-

92 март 2014 системный администратор


ретроспектива Карьера/Образование

сора из Нью-Йоркского университета – и преподавала


математику в своей alma mater – колледже Вассар. С му-
жем Грейс Хоппер развелась в 1945-м и с тех пор больше
замуж не выходила.
Можно предположить, что у нее уже просто не было
свободного времени ни на что, кроме науки. И службы
на флоте, где Хоппер блистательно доказала, что давняя
морская примета «баба на корабле – быть беде» – суе-
верие, и ничего больше.
Служить на флоте молодая женщина-математик по-
шла добровольцем уже во время Второй мировой во-
йны. А точнее, в 1943 году – спустя год, как в структу-
ре американского ВМФ было создано специальное
подразделение для женщин-добровольцев – WAVES
(Women Accepted for Volunteer Emergency Service). Нет,
разумеется, капитанские мостики и даже матросские
каюты представительницам слабого пола тогда еще
не доверяли (время воинствующего – во всех смыс-
лах – феминизма было впереди), но на флоте хватало
и «наземной» работы. В частности, в научно-исследо-
вательских центрах, которые у нас назывались «по-
чтовыми ящиками». В один из таких пришла работать
и Грейс Хоппер – после того, как прошла подготовку
в военно-морском училище. Кстати, на флот Хоппер Мар
т 1946 г. Хоппер уже лейтена
приняли в виде исключения: ее вес – чуть более 47 ки- нт
лограммов явно не дотягивал до установленной ниж-
ней планки – 54 кг…
И в 1944 году она уже – младший лейтенант флота Со- ров» обгорелые останки мотыльков и прочей мошкары,
единенных Штатов. А по совместительству – научный со- слетавшейся, как ей и положено, на свет и тепло. Резуль-
трудник Гарвардского университета, в котором разраба- татом такого самоубийственного вторжения насекомых
тывался один из первых в своем роде секретных проектов становились, как и следовало ожидать, короткие замыка-
для нужд обороны. Один из первых, потому что проект ния. Об этом Хоппер не уставала рассказывать в лекциях
был – компьютерным. и многочисленных интервью – и термин прижился! А спустя
короткое время вслед за «жучками» (bugs) в словари ан-
Бизнес-перевод глийского языка перешел и глагол-неологизм «разжучи-
Возглавлял проект ученый-физик Говард Эйкен, под руко- вание» (или «ужучивание») – debugging. У нас известный,
водством которого была создана электромеханическая вы- как «разглючивание».
числительная машина ASCC (Automatic Sequence Controlled А в 2003 году, в день 107-летия Грейс Хоппер компа-
Calculator – Автоматический вычислитель, управляемый ния GOOGLE отметила своей фирменной анимационной
последовательностями). По мнению некоторых историков «заставкой-к-дате» (GOOGLE DOODLE), изобразив Хоп-
компьютерной техники, это и был первый компьютер – в на- пер за компьютером, из которого вылетала… Правильно,
шем сегодняшнем понимании. Впоследствии, из-за тре- мошка!
ний, возникших между Эйкеном и спонсором – компанией Обеим этим сферам деятельности – информатике
IBM, ученый переименовал свое детище в Harvard Mark I, и службе на флоте – Хоппер не изменила до конца дней.
продолжив в Гарварде работу над следующими моделями В самом конце войны она еще порывалась перевестись
«университетской фирменной марки». А первые програм- из резерва (где и числились все эти «яйцеголовые», ра-
мы к «первой марке» написала как раз сотрудница Эй- ботавшие на Пентагон и ВМФ) на действующий флот,
кена – морской офицер Грейс Хоппер. Она же написала но ее туда не пустили. Из-за возраста – рвавшейся в бой
в соавторстве с «шефом» три основополагающие статьи, «математичке с погонами» было тогда 38… Так всю остав-
посвященные архитектуре первого компьютера. шуюся жизнь Хоппер провела в резерве ВМФ, а закончила
Примерно тогда же, с легкой руки Хоппер, пошел гулять службу, как уже говорилось, с адмиральскими погонами
по миру профи-компьютерщиков, а позднее – и «чайников»- (или что там у них, на американском флоте, служит знака-
юзеров, популярный ныне слэнговый термин «bug» («глюк» ми отличия). А параллельно, начиная с 1949 года, занимала
по-нашему). Вообще-то его изобрела не Хоппер, еще рань- профессорскую должность в своей alma mater – коллед-
ше его употребляли английский специалисты, разрабаты- же Вассар, совмещая ее с работами по контрактам с ВМФ
вавшие первые радары во время войны. «Жучками» они в том же Гарварде.
называли непредвиденные сбои в работе электросхем, Впрочем, энергии женщины-математика хватало
однако в первых ламповых компьютерах термин получил и на прочие «совмещения». В том же 1949 году она,
неожиданное буквальное толкование. Хоппер и ее сотруд- не прекращая своей службы на флоте и академической
ники замучились выметать из недр ламповых «динозав- деятельности в колледже, открыла для себя новую сфе-

системный администратор март 2014 93


Карьера/Образование ретроспектива

ру деятельности. На сей раз это был бизнес. Причем, ции по языкам систем обработки данных – CODASYL
не обычный – молодой, компьютерный. Хоппер устроилась (Conference on Data Systems Languages).
на работу в Eckert-Mauchly Computer Corporation (назва- Главным достоинством нового языка была его макси-
ние которой много говорит тем, кто хотя бы в общих чер- мальная приближенность к разговорному английскому –
тах знаком с историей компьютерной техники: ну, конечно, в отличие от тех, что были ближе к машинному коду (на-
Экерт и Мокли – создатели легендарного ENIAC!), где вме- пример, ассемблеров). На этом всегда настаивала Хоппер,
сте с другими создавала первый американский (и третий и COBOL стал венцом творения ее философии програм-
в мире) коммерческий компьютер – UNIVAC I. Эта работа мирования. А его создательница удостоилась прозвища
была завершена в 1951 году – спустя год, как фирма Экер- Grandma COBOL, что можно – с достаточной степенью
та и Мокли была куплена корпорацией Remington Rand, вольности – перевести, как «бабушка-домовая» (добро-
продавшей первый UNIVAC американскому Бюро по пере- душных домовых в северной мифологии звали кобольдами,
писи населения. что созвучно названию данного языка).
Уже будучи сотрудницей Remington Rand, Грейс Хоппер Параллельно продолжался и карьерный рост «морячки»
создала первый в истории компилятор – то есть средство Хоппер. В период с 1967 по 1977 годы она занимала пост
перевода компьютерной программы с «проблемно-ориен- директора группы программирования в департаменте ин-
тированного» языка на «машинно-ориентированный». Пер- формационных систем ВМФ США, дослужившись до чина
вый компилятор носил лаконичное название A, а его первая капитана. Тогда же она разработала валидационное про-
версия, вопреки ожидаемому, – A-0. Тогда это была своего граммное обеспечение для COBOL и его компилятора.
рода маленькая революция. «Никто не верил, – вспомина- А затем «пробила» в Пентагоне свой план децентрали-
ла Хоппер, – что у меня есть такой «переводчик» с одного зации всей оборонной компьютерной техники – переход
машинного языка на другой. Все убеждали меня, что этого от громоздких централизованных систем на базе «боль-
просто не может быть – компьютеры способны произво- ших» машин к децентрализованным сетям распределен-
дить лишь арифметические операции и ничего сверх того». ных компьютеров. Хоппер разработала также первые
стандарты тестирования компьютерных систем и отдель-
Бабушка-домовая – и водяная ных компонентов, а также ранних языков программирова-
Не прошло и двух лет, как – поверили. Выражением «до- ния – того же COBOL, к примеру, или FORTRAN). Позже
верия широких руководящих масс» стало назначение эта система стандартизация была принята на вооружение
Хоппер в 1954 году первым в истории компании начальни- Национальным бюро стандартов США (ныне – Националь-
ком отдела автоматизации и программирования. Из недр ный институт стандартов и технологий).
этого отдела вышли одни из первых т.н. компилируемых А бабушке было уже немало лет, и она все никак не мог-
языков программирова- ла расстаться с полюбившейся
ния – такие, как MATH- ей морской формой! В отставку
MATIC и FLOW-MATIC. По- морской офицер в юбке (пусть
следний, к слову, уже был и форменной) отправлялась
способен «понимать» два не раз. Впервые это произо-
десятка фраз, написанных шло по достижении положен-
на английском – не машин- ного шестидесятилетнего воз-
ном! – языке. раста – то есть, в 1966 году.
А еще спустя пять лет Однако не прошло и года,
под руководством Хоппер как флоту снова понадобилась
был создан новый язык дама-командор (соответствует
программирования – один нашему капитану второго ран-
из первых т.н. «высокоуров- га) с талантами математика,
невых»: COBOL (аббревиа- и Грейс Хоппер вновь призва-
тура от Common Business- ли на службу. Сначала вроде
Oriented Language – Общий бы на полгода, которые в итоге
бизнес-ориентированный обернулись без малого двумя
язык). При разработке десятилетиями…
COBOL были использова- Второй выход в отставку со-
ны как идеи FLOW-MATIC, стоялся в 1972 году – и снова
так и достоинства другого краткосрочный. Уже в сле-
языка – COMTRAN, разра- дующем году Грейс Хоппер
ботанного специалистами снова носила форму, на сей
IBM. Презентация ново- раз – капитанскую (соответ-
го языка, который обещал ствует нашему капитану пер-
стать универсальным «язы- вого ранга).
ком общения» бизнесме- И наконец, в 1983 году тог-
нов с компьютерами, со- дашний президент Рональд
стоялась весной 1959 года Рейган специальным ука-
детище Грейс Хоппер
на двухдневной конферен- COBOL – зом произвел Грейс Хоппер

94 март 2014 системный администратор


ретроспектива Карьера/Образование

в коммодоры – иначе говоря, командую- ди-профессор» с дурацкими


щего уже целой эскадрой (у нас аналога вопросами: почему, мол, при-
этого звания нет, зато существовал ана- ходится так долго ждать от-
лог в дореволюционном российском – ка- ветного сигнала со спутника
питан-командор). Это звание и в амери- на орбите… Тот же, провод,
канском ВМФ просуществовало недолго кстати, хорошо иллюстриро-
и в 1985 году было заменено званием вал один из постоянных те-
контр-адмирала (Rear Admiral). В адми- зисов Хоппер-лектора: чтобы
ральском звании Грейс Хоппер в третий добиться большего быстро-
раз вышла в отставку – на сей раз окон- действия компьютера, его нуж-
чательно. но уменьшать до пределов
возможного.
Жизнь после службы Своим самым главным
Во время торжественной церемонии достижением в жизни, кро-
проводов на пенсию, состоявшейся ме создания компилятора,
в Бостоне в августе 1986 года, на бор- Грейс Хоппер считала сво-
ту крейсера Constitution контр-адмиралу их учеников: «Они подходят
Хоппер была вручена высшая воинская ко мне, спрашивая, получится
награда для американца, не прини- ли у них. А я всегда отвечаю:
мавшего участия в боевых действиях: пробуйте. И, как могу, под-
медаль за заслуги в обороне страны Коммодор Хоппер держиваю их во всех начи-
(Defence Distinguished Service Medal). наниях. Им это необходимо.
Любопытно, что на тот момент «бабуш- Я слежу за своими учениками,
ка-адмирал» была старейшим действующим офицером за их успехами, время от времени подталкивая их на риск,
американского флота! Как заметил экс-сотрудник Apple без которого не ответишь на многие вызовы, которые ста-
и автор книги о Стиве Джобсе Джей Эллиот: «Внешне Хоп- вят перед каждым жизнь и профессия».
пер всегда держалась, как подобает морскому офицеру, Грейс Хоппер закончила свой жизненный путь
но если бы вы копнули вглубь, то под личиной морского в 1992 году, когда заслуженному профессору и адмиралу
офицера сразу же обнаружили бы пирата, умиравшего в отставке шел 86-й год. Похоронили ее со всеми воински-
от желания вырваться наружу». ми почестями на национальном военном кладбище в сто-
Однако, и, выйдя в отставку, «бабушка-адмиральша», личном пригороде Арлингтоне.
судя по всему, на покой уходить не собиралась. Она тут же Список ее почетных дипломов и званий, включений
устроилась старшим консультантом в известную тогда ком- в не менее почетные списки, орденов и медалей и прочих
пьютерную компанию Digital Equipment Corporation (DEC), военных, гражданских и научных наград займет добрых пол-
активно разъезжала по стране с лекциями – бывало, что де- листа. Есть забавные – все эти «человеки года», которые
лала по 200 лекций в год! Неизменно вызывая фурор сво- тогда по-английски звучали совсем не политкорректно (фе-
ей адмиральской формой, которую продолжала надевать министки сказали бы – «гендерно-шовинистически»): «Man
«для особых случаев». of the Year»… Но среди всех наград выделяются две – дей-
Так Грейс Хоппер успела прославиться еще раз – теперь ствующий эсминец ВМФ США и один из серии знаменитых
уже как талантливый лектор-популяризатор. В частности, суперкомпьютеров компании Cray. Оба носят имя Hopper.
пожилая дама-лектор в адмиральской форме поражала ау- В общем, не жизнь – фантастика! Куда там писателю
диторию оригинальным визуальным «подручным материа- Азимову… EOF
лом» – 30-сантиметровым обрезком
телефонного кабеля производства
компании Bell. Именно такое рас-
стояние, поясняла ошеломленным
слушателям Хоппер, свет в вакуу-
ме проходит за одну миллионную
долю секунды (одну наносекунду).
А в проводе, соответственно, чуть
медленнее… Утверждается, что по-
пуляризации самого этого терми-
на – наносекунда – немало поспо-
собствовала как раз Грейс Хоппер.
А наглядный «лекционный матери-
ал» (тот самый обрывок провода)
она впервые успешно испытала
на самой неблагодарной категории
слушателей – высоких военных чи- Эсминец «Хоппер»
нах. Те постоянно приставали к «ле-

системный администратор март 2014 95


Зал славы «СА»

Гарвардская
Издается с 2002 года

Включен в Российский индекс

марка
научного цитирования www.elibrary.ru

Генеральный директор
Владимир Положевец
Главный редактор
Галина Положевец, chief@samag.ru
Очередной экспонат создаваемого на страницах
Исполнительный директор
журнала виртуального музея компьютеров и ИТ Владимир Лукин, maker@samag.ru
стоит в ряду претендентов на звание первого ком- Заместитель главного редактора
Ирина Ложкина, lozhkina@samag.ru
пьютера в истории. Ответ на вопрос, почему разные источники называют «первым компьюте- Заместитель главного редактора,
ром» разные вычислительные машины (с некоторыми читатели уже смогли познакомиться), пря- официальный представитель редакции в Украине
Сергей Яремчук, grinder@samag.ru
мо вытекает из точного наблюдения кого-то из великих: «Все споры начинаются либо потому, Обозреватель
что одну и ту же вещь называют разными именами, либо потому, что разные вещи называют Aндрей Степанов, stepanov@samag.ru
одним и тем же именем». Иначе говоря, корень всех этих приоритетных споров – в определении, Главный бухгалтер
что же считать компьютером. Надежда Кан, buch@samag.ru
Громоздкая вычислительная машина, созданная во время Второй мировой войны (в первый
Главный редактор приложения «Open Source»
год войны для Штатов – 1941-й) специалистами Гарвардского университета и корпорации IBM, Дмитрий Шурупов, osa@samag.ru
весила около четырех с половиной тонн и занимала в указанном университете несколько поме-
Реклама
щений. Первоначально этот компьютерный «динозавр» назывался скучно, но точно: Automatic Лариса Говорченко, govorchenko@samag.ru
Sequence Controlled Calculator (ASCC) – Автоматический вычислитель, управляемый после-
Распространение
довательностями, но позже получил краткое название Harvard Mark I. Под каковым и вошел Олег Иванов, subscribe@samag.ru
в историю. По сути, это был увеличенный до невообразимых размеров и усовершенствованный
Юридический отдел
до пределов, которые ставила тогдашняя техника, арифмометр. Но – и это самое важное! –
Владимир Столяров, stolyarov@samag.ru
программируемый. А отсюда и претензии на право называться первым компьютером. Причем
Дизайн обложки Дизайн-макет
первым американским, так как двумя годами ранее аналогичная машина была создана в стра- Михаил Лебедев Марина Рязанцева,
не-противнице – Германии (о ней и о ее создателе Конраде Цузе – разговор особый). Иллюстрация Дмитрий Бессонов
Виктор Чумачев
В Гарварде работы по созданию этой махины возглавил сорокалетний инженер Говард Хата-
уэй Эйкен, к тому времени работавший в IBM. За два года до того он защитил в Гарварде доктор- Редакционная коллегия
Д. Ю. Гудзенко, кандидат технических наук, директор Центра
скую диссертацию, во время работы над которой столкнулся со всем знакомой (в «докомпьютер- компьютерного обучения «Специалист» при МГТУ
им. Н.Э.Баумана
ную» эру) проблемой – численными решениями дифференциальных уравнений. Эта проблема Д. Ю. Динцис, доктор технических наук, ведущий
и послужила своего рода «триггером» для рождения вычислительной техники – сначала элек- преподаватель Центра компьютерного обучения «Специалист»
при МГТУ им. Н.Э.Баумана
тромеханической, а затем уже и электронной. Одной из первых работающих моделей (электро- А. С. Крюковский, доктор физико-математических наук,
профессор, лауреат Государственной премии СССР, декан
механической) и стал ASCC. факультета информационных систем и компьютерных
технологий Российского нового университета
Помощь в решении поставленной задачи была оказана Эйкену как интеллектуальная (чет- Э. С. Клышинский, кандидат технических наук, доцент,
зам. декана по научной работе факультета информационных
веро коллег, включая Грейс Хоппер – см. о ней статью в этом номере журнала), так и материаль- технологий и вычислительной техники МИЭМ НИУ «Высшая
ная (полмиллиона долларов, выделенных лично президентом IBM Томасом Уотсоном-старшим). школа экономики»
В. Е. Синицын, кандидат физико-математических наук, доцент
По утверждению самого Эйкена, за основу он взял идеи нереализованной «дифференциальной Уральского федерального университета
Д. В. Силаков, кандидат физико-математических наук, старший
машины» английского «компьютерного предтечи» – математика и изобретателя Чарлза Бэббид- архитектор российского Центра разработки решений на основе
СПО «РОСА»
жа. К февралю 1944 года прошедшая первые тесты машина переехала в корпуса Гарвардского С. Р. Тумковский, доктор технических наук, профессор,
университета, где в августе состоялась ее официальная презентация. зав. кафедрой факультета информационных технологий
и вычислительной техники МИЭМ НИУ «Высшая школа
По тем временам компьютерное чудо – первая полностью автоматическая вычислительная экономики»
А. В. Тетюшев, кандидат технических наук, доцент
машина, работавшая без вмешательства человека в рабочий процесс, – казалось чем-то не- Вологодского государственного технического университета
виданным. И великим – во всех смыслах. Корпус из стекла и нержавеющей стали скрывал бо-
Экспертный совет
лее 700 тысяч деталей и около 800 километров проводов. Что касается работоспособности Рашид Ачилов, администратор телекоммуникационных систем
Сергей Барамба, эксперт по системным решениям
лампового «монстра», то ASCC мог оперировать 72 числами (каждое из 23 десятичных раз- Алексей Бережной, эксперт по администрированию и ИБ
Андрей Бирюков, ведущий системный инженер по ИБ
рядов) с быстродействием 3 операции сложения или вычитания в секунду. Операция умножения Алексей Вторников, эксперт по вопросам разработки ПО
занимала 6 секунд, деления – чуть более 15 секунд. А вычисление логарифма или тригономе- Константин Кондаков, старший директор по ИТ
Иван Коробко, эксперт по автоматизации процессов в Windows-
трической функции – вообще целую вечность: более минуты. Все инструкции последователь- доменах
Кирилл Сухов, ведущий специалист направления интернет-
но считывались и выполнялись с перфорированной бумажной ленты, а петли из нее служи- разработки
Леонид Шапиро, эксперт по ИБ и инфраструктурным проектам
ли для выполнения циклических вычислений (по-английски loops – это и «циклы», и «петли»). Сергей Яремчук, эксперт по ИБ
А Mark компьютер был окрещен самим Эйкеном после того, как между создателем и руко-
Издатель
водством IBM возник конфликт. Дело в том, что на церемонии передачи машины в собственность ООО «Синдикат 13»
Гарвардского университета Эйкен в своей речи совсем «забыл» о вкладе IBM. Главу компании Адрес редакции
129075, г. Москва, Шереметьевская ул., д. 85, стр. 2, офис 405,
это сильно покоробило, и Уотсон сразу же прекратил сотрудничество с Эйкеном. И следующую тел.: (499) 277-12-41, факс: (499) 277-12-45
Сайт журнала: www.samag.ru
модель SSEC компания разрабатывала уже без него.
Но и Эйкен не остался без работы. Окрестив свое детище Harvard Mark I, он уже в качестве Отпечатано в типографии
ООО «Периодика» Тираж 17000 экз.
сотрудника вышеозначенного университета разработал собственные «апгрейды» – модели Mark
II, III и IV. В третьей модели уже имелась кое-какая электронная начинка, а «четверка» была Все права на материалы принадлежат журналу «Системный
администратор». Перепечатка и использование материалов в любой
полностью электронной вычислительной машиной (в которой наряду с магнитными бобинами форме, в том числе и в электронных СМИ, без разрешения запре-
щена. При использовании материалов ссылка на журнал «Системный
были и новомодные элементы памяти на магнитных сердечниках). Дело пошло! EOF администратор» обязательна. Материалы отмеченные знаком Adv
публикуются на коммерческой основе. Редакция не несет ответствен-
Собрал Владимир Гаков ности за достоверность информации в материалах, опубликованных
на правах рекламы.

96 март 2014 системный администратор

Вам также может понравиться