№05(162)
май 2016
Шаблоны контейнеров
в Virtuozzo
Технология Cucumber
Автоматизируем отчетность
ES Декораторы
Разбираемся в деталях
Защита от DDoS-атак
подручными средствами
Минобрнауки РФ
Журнал входит в перечень ВАК
Только полезная
№05(162)
май 2016
информация
Шаблоны контейнеров
в Virtuozzo
ES Декораторы
Разбираемся в деталях
версии!
5440 руб.
Защита от DD oS-атак
вами
подручными средст
Все подробности проведения
Наука и технологии Наука и технологии акции – на сайте журнала:
Наука и технологии
Взаимосвязь отраслевой Создание ботов для Telegram:
Исследование воздействия
некоторых параметров теста специфики бизнеса и уровня
решаемых для него
с использованием языка
программирования Python
http://samag.ru/solutions2masses
LINPACK для гибридного кластера и облачной ОС Corezoid
на производительность вычислений ИТ-подразделением задач
Подписывайтесь
и продвигайте свои решения!
samag.ru/subscribe
В номере
12 52 56
22 Защита от DDoS подручными средствами. Часть 1. 44 Пишем мобильные приложения быстрее. Паттерн
DNS Amplification. Чтобы сделать свой вклад в защиту Наблюдатель и реактивное программирование.
62 Нина Романчева: «Совместная подготовка ИT- 90 Создание ботов для Telegram: с использовани-
специалиста в паре вуз – предприятие – это тре- ем языка программирования Python и облачной
бование сегодняшнего дня». В гостях у «Системного операционной системы Corezoid.В наше время бурного
администратора» – декан факультета прикладной математики и вы- развития ИТ-технологий огромную популярность набирают мессен-
числительной техники МГТУ ГА, кандидат технических наук, доцент джеры для телефонов и планшетов. Одним из самых совершенных
Нина Романчева. и технологически продвинутых мессенджеров является Telegram
Ирина Ложкина Messenger, который получает все большее распространение в рус-
скоязычной части интернета. Одна из особенностей этого приложе-
Лабораторная работа ния, отличающая его от конкурентов, – это боты, или «умные по-
мощники». В данной статье описывается процесс создания ботов
67 Лабораторная работа. Исследуем сокеты. Часть 2 для Telegram с помощью языка программирования Python и опера-
(продолжение).В предыдущем номере были описаны цели ра- ционной системы Corezoid. В начале работы рассматривается про-
боты, схема исследований, устройство и подготовка лабораторного цесс регистрации бота и некоторые простейшие команды. Заканчи-
стенда, ход проведения работы и отдельные компоненты. В данной вается статья рассмотрением преимуществ и недостатков двух этих
части познакомимся с оставшимися компонентами стенда. способов разработки.
Владимир Закляков Колосков В.Л., Павлов И.Ю., Иванов Е.Б.
Визитка
АЛЕКСЕЙ БЕРЕЖНОЙ,
независимый консультант, системный архитектор, специалист по системам виртуализации
и резервного копирования, alexey.berezhnoy@tech-center.com
В предыдущей статье [1] шла речь о системах прямого под- функцией которого является хранение данных, полученных
ключения – Direct-attached storage (сокращенно DAS). от других участников информационного процесса.
В том числе разбирали и их недостатки – трудности при ор- По сути, NAS представляет собой сочетание системы
ганизации совместного доступа к файлам, а также низкую хранения информации (например, массив жестких дисков)
эффективность при управлении ресурсами. При дальней- и специальной программно-аппаратной платформы, позво-
шем развитии СХД эти недостатки компенсировались появ- ляющей подключить эту систему в локальную компьютер-
лением новых систем хранения данных. ную сеть (см. рис. 1).
В основном NAS используют в качестве носителя инфор-
Определение NAS мации жесткие диски. На это есть множество причин. Глав-
NAS – аббревиатура английского термина Network Attached ные из которых:
Storage. Дословно означает – «подключенное к сети сете- >> простота доступа к информации;
вое хранилище». На самом деле данное выше определение >> высокое быстродействие;
не совсем точное. Строго говоря, любой сервер подключен >> относительно невысокая стоимость хранения инфор-
к сети. Каждый компьютер имеет внутри себя некое храни- мации, которая при этом постоянно снижается благо-
лище данных, хотя бы данных для загрузки и работы опера- даря научно-техническому прогрессу.
ционной системы.
Для более точного описания NAS лучше подходит опре- Примечание. Не всегда Network Attached Storage стро-
деление «сетевой накопитель данных». То есть это не- ится только на жестких дисках. Например, существующие
кий узел локальной сети, главной и зачастую единственной аналогичные устройства могут быть построены на базе
ленточных накопителей с применением файловой системы решение, на котором уже не один десяток лет системные
LTFS разработки IBM. Данная файловая система позволяет администраторы строили структуру обмена данными.
взаимодействовать с ленточным накопителем аналогично Для полного понимания идеологии Network Attached
работе с жестким диском. Storage рассмотрим обычный File Server на базе универ-
сальной операционной системы.
Отличие NAS от других систем СХД Существуют два варианта использования файловых сер-
Есть множество признаков, характерных для Network веров: в выделенном и невыделенном режиме. В последнем
Attached Storage, – это и наличие LAN-интерфейсов, и раз- случае компьютер представляет собой рабочую станцию,
витый стек сетевых протоколов, и программное обеспече- на которой работает пользователь, и одновременно на этом
ние, специализированное для работы в локальной сети. компьютере хранятся файлы других участников работы
Наверное, главным из отличительных факторов является в сети. Такая схема до сих пор применяется в небольших
обязательное присутствие сетевой файловой системы со- компаниях и домашних офисах (см. рис. 4 и 5).
вместного доступа [2]. К одному и тому же сетевому ресурсу Но даже файл-сервер используется в выделенном ре-
в составе NAS могут обращаться различные пользователи, жиме, его все равно можно приспособить для дополнитель-
серверные службы и даже другие NAS. ных функций. Например, компьютер можно использовать
Разумеется, для других систем хранения данных DAS как внутренний прокси-сервер, терминальный сервер, об-
и SAN такой совместный подход трудноосуществим, рабатывающий центр системы мониторинга и так далее.
так как это классические системы блочного типа, рассчи- Постоянное увеличение объемов хранимой и передава-
танные на подключение к серверу-клиенту в режиме внеш- емой информации потребовало их жесткой оптимизации.
него диска. Универсальная операционная система с множеством со-
путствующих программ требует дополнительных систем-
Составные NAS ных ресурсов. Кроме того, такая конструкция небезопасна.
В предыдущей статье [1], посвященной устройствам DAS, Универсальная система, позволяющая устанавливать бес-
говорилось о том, что сетевой серверный узел с прямым численное множество различных программ, более уязвима
подключением дискового хранилища (Disk Enclosure), для вирусов и атак со стороны злоумышленника, а также
по сути, является основой для построения более сложных ошибок со стороны ИТ-персонала.
устройств. Это в полной мере справедливо в отношении Помимо всего прочего, первоначальная настройка, за-
Network Attached Storage. Очень часто промышленные моде- пуск и последующая эксплуатация ПК-сервера на основе
ли NAS представляют собой головной компьютер (Controller традиционных серверных ОС требует значительной ква-
Enclosure), подключенный к локальной сети, работающий лификации, а порой и существенных временных затрат.
с внешним дисковым хранилищем (Disk Enclosure). Такая Все это неизбежно отражается на стоимости владения та-
схема имеет как свои положительные, так и отрицательные кими системами.
стороны (см. рис. 3). Это и потребовало создания систем хранения данных
Положительная сторона состоит в возможности легко на- нового типа, построенных на базе файловых серверов,
растить объем дискового хранилища, просто добавив еще но с существенными отличиями.
одно хранилище. В отличие от файловых серверов Network Attached
Еще один довод в пользу составных NAS – попытка по- Storage не допускает подобного творчества.
высить ремонтопригодность. Достаточно заменить голов- Главное отличие NAS от файловых серверов на основе
ную часть в случае выхода ее из строя, не затрагивая Disk универсальной операционной системы – оптимизация ап-
Enclosure. паратной платформы и всего программного обеспечения
Плохая новость заключается в том, что такую бесшовную
замену Controller Enclosure трудно реализовать на практи-
Рисунок 3. Схема NAS с внешним дисковым хранилищем
ке. Нужно, чтобы элементы управления дисковой системы,
такие как RAID-контроллер, операционная система и спе-
циальные драйверы, умели распознавать критически важ-
ную информацию: конфигурацию дисковых томов, уровень
RAID [3], наличие дисков в режиме Hotspare и так далее.
Поэтому крайне важно, чтобы вновь установленное про-
граммно-аппаратное обеспечение управляющей части уме-
ло полностью без ошибок распознавать такие тонкости.
Или должна существовать возможность заранее сохранить
конфигурацию с работающей системы, чтобы впоследствии
восстановить настройки при замене системы. В противном
случае можно легко потерять данные со всего хранилища,
и дополнительная мера по ремонтопригодности превратит-
ся в новую возможность уничтожения данных.
инфраструктуру на этапе становления, впоследствии будет выносятся за периметр предприятия, а основная масса ра-
труднее мигрировать на другую платформу. бочих резервных копий хранится именно на Network Attached
Противостоять такой политике компаниям, сразу пред- Storage. Такая схема хранения обходится значительно де-
лагавшим строить иерархическую сеть и использовать шевле и позволяет быстрее восстановить данные, потерян-
выделенные файл-серверы, было очень затруднительно ные в результате мелких сбоев.
из-за более высоких затрат на начальном этапе. О том, в ка-
кую сумму выльется дальнейшая миграция, обычно мало Вместо заключения. Будущее NAS
кто задумывается. Строить прогнозы в мире информационных технологий –
Примечание. Типичный кошмар сисадмина, когда поль- дело весьма неблагодарное. Вспомним хотя бы знаменитое
зователи сети хранят рабочие файлы на своих компьютерах утверждение Билла Гейтса о достаточном размере в 640 ки-
и обмениваются данными через локальные общие папки, лобайт оперативной памяти.
получил такое распространение именно благодаря марке- Но существуют некоторые общие тенденции, на базе
тинговой политике Microsoft по продвижению одноранговых которых можно сделать кое-какие предположения. Очень
сетей и невыделенных серверов. хочется верить, что человечество все-таки придет к более
Однако впоследствии рост объемов данных заставил цивилизованному способу хранения данных – от флешек
более критично взглянуть на уже сложившуюся практику и локальных жестких дисков к специализированным устрой-
хранения данных на файл-серверах, так усиленно продви- ствам, обеспечивающим высокую надежность и безопас-
гаемую со стороны Microsoft, и снова перейти к специализи- ность хранения.
рованным сетевым устройствам хранения данных. Рано или поздно такие системы появятся не только в сер-
Но, несмотря на очевидное, NAS на заре своего появ- верных и крупных дата-центрах, а и в небольших офисах,
ления в виде законченных устройств для конечного потре- жилых пространствах, везде, где люди используют компью-
бителя не смогли уверенно утвердиться на рынке в силу теры. EOF
достаточно высокой на тот момент стоимости и, что еще
более важно, в силу факта идеологического опереже- [1] Бережной А. Системы хранения данных. Часть 1. DAS. //«Си-
ния времени. На тот момент развития техники и техноло- стемный администратор», №4, 2016 г. – С. 4-7 (http://samag.ru/
гии превалирующим решением были файловые серверы archive/article/3163).
на основе ПК, а доверие к альтернативным платформам [2] Бережной А. Некоторые вопросы построения СХД. Термино-
было весьма зыбким. логия. Часть 1. //«Системный администратор», №3, 2016 г. –
С. 16‑20 (http://samag.ru/archive/article/3143).
Современные системы NAS [3] Бережной А. Меры отказоустойчивости в дисковых массивах.
Если на рубеже ХХ-ХХI веков сетевые системы хранения //«Системный администратор», №10, 2015 г. – С. 30-36 (http://
данных еще были чем-то вроде экзотики, то теперь область samag.ru/archive/article/3043).
их применения заметно увеличилась. [4] Бережной А. NETGEAR ReadyNAS Pro – сразу в работу.
Этому способствуют следующие факторы: //«Системный администратор», №9, 2012 г. – С. 54-55 (http://
>> Стремительный рост хранимой информации. samag.ru/archive/article/2273).
>> Развитие такого направления, как Big Data. [5] Описание системы Novell Netware – http://www.tadviser.ru/
>> Стремление к оптимизации затрат на обслужива- index.php/Продукт:Novell_NetWare.
ние систем хранения и содержание ИТ-персонала. [6] Artisoft, Inc. LANtastic v6.0 Руководство по установке и управле-
(При этом основная потребность заключается не толь- нию – http://citforum.ru/nets/limg.
ко в попытке сэкономить на заработной плате, а в боль- [7] Официальный сайт, посвященный архитектуре ARM – http://
шей мере в дефиците грамотных ИТ-специалистов.) www.arm.com.
>> Возможность гибкого расширения уже существующей [8] MIPS Architecture and Assembly Language Overview – http://logos.
системы. cs.uic.edu/366/notes/mips%20quick%20tutorial.htm.
>> Унификация и взаимозаменяемость используемого [9] Озеров С. Архитектура процессоров. MIPS, Sparc, ARM
оборудования. и PowerPC – http://old.computerra.ru/terralab/platform/235565.
[10] Официальный сайт проекта FreeBSD – http://www.freebsd.org.
Растущая потребность в сетевых системах хранения дан- [11] Домашняя страница проекта FreeNAS – http://www.freenas.org.
ных вызывает спрос не только на продукцию таких извест- [12] Сайт проекта – http://www.openmediavault.org.
ных брендов, как NetApp, но и на более простые решения, [13] Сайт, посвященный Illumos, OpenIndiana, Nexenta, SmartOS
а также сетевые хранилища «ручной сборки» на базе про- и другим Solaris-системам – http://os-solaris.ru.
граммных NAS. [14] Страница Community проекта NexentaStor – https://community.
Отдельное слово стоит сказать о системах резервного nexenta.com.
копирования, главное, о системах резервного хранения. [15] Бережной А. Создаем интегрированный в Active Directory файл-
Ленточные носители большого объема стоят недешево, сервер на базе Samba во FreeBSD. //«Системный администра-
и все больше администраторов резервного копирования тор», №2, 2007 г. – С. 12-20 (http://samag.ru/archive/article/761).
подходят к мысли о том, что хранить резервные копии на лен- [16] Бережной А. Сохранение данных: теория и практика.
точных картриджах становится достаточно дорого. ISBN: 978-5-97060-185-3. Издательство ДМК-Пресс, 2016 г. –
Например, новая формула хранения при схеме ротации http://samag.ru/news/more/2213.
«дед-отей-сын» предполагает, что на ленточные носители
записываются только ежемесячные копии («дед»), которые Ключевые слова: устройства хранения, NAS.
Визитка
ДЕНИС СИЛАКОВ,
к.ф.-м.н., старший системный архитектор Virtuozzo,
dsilakov@virtuozzo.com
Клонирование позволяет только копировать виртуальное Такие различия в именах носят не только косметический
окружение целиком, и назвать это решение гибким нельзя. характер, но находят отражение в структуре файлов, из ко-
Например, если вы хотите иметь возможность быстро раз- торых состоит шаблон, о чем мы узнаем немного позже.
вертывать контейнеры с одной и той же ОС, но отличающие-
ся только набором приложений, то под каждый такой набор Управление
вам придется подготовить отдельный «эталонный» контей- Управление шаблонами осуществляется с помощью утили-
нер. Шаблоны Virtuozzo предоставляют более элегантное ты vzpkg. Для установки шаблона ОС необходимо дать ей
решение, позволяя отдельно хранить образ базовой ОС, команду install template:
а отдельно – образы с наборами приложений, которые могут
накладываться на ОС в различных сочетаниях. # vzpkg install template centos-6-x86_64
Однако по крайней мере удаление лучше производить через # vzpkg list --available centos*
vzpkg, ведь yum не в состоянии проверить, не используется
ли шаблон в каком-то из контейнеров, а также может оста- Учтите, что на момент написания статьи эта команда
вить следы пребывания шаблона (в частности, кэш его па- в Virtuozzo 7 смотрела на имена доступных пакетов и не уме-
кетов) в системе. ла распознавать шаблоны приложений, включенные внутрь
После установки шаблона ОС желательно сразу создать пакетов с шаблонами ОС.
кэш входящих в него пакетов и образ диска с установлен-
ными пакетами, иначе все эти операции будут произведены Использование
при первой попытке использовать шаблон. Вы наверняка Использование шаблонов – дело нехитрое. Для создания
заметили это, если создавали контейнеры по примерам контейнера на основе шаблона ОС достаточно указать имя
из нашей первой статьи [3] – именно из-за скачивания шаблона в опции --ostemplate:
и установки пакетов процесс развертывания первого кон-
тейнера может занять заметное время (а может и вовсе за- # prlctl create c1 --vmtype=ct --ostemplate=centos-6-x86_64
вершиться неудачей, если возникнут проблемы с доступом
к репозиториям). Заметим, что в этом заключается главное Для установки шаблонов приложений контейнер необхо-
отличие шаблонов Virtuozzo от шаблонов OpenVZ, которые димо сначала запустить, а затем воспользоваться командой
представляли собой архивы с готовой к использованию vzpkg install:
файловой системой [4]. Создается кэш командой:
# prlctl start c1
# vzpkg create cache # vzpkg install c1 mysql
Можно указать ей в качестве параметра имя шабло- Утилита vzpkg также позволяет обновлять и удалять паке-
на, а можно ничего не указывать – тогда она создаст кэши ты, входящие в состав шаблона ОС приложения, «снаружи»
для всех установленных шаблонов ОС, у которых этих кэшей контейнера. Например, вот так можно обновить все паке-
еще нет. Пакеты, скачанные для установки, помещаются ты, входящие в базовый шаблон ОС (в нашем примере –
в директорию /vz/template/<ОС>/<версия>/<архитектура>/ centos‑6-x86_64):
pm, а сжатый архив с установленными пакетами помещается
в /vz/template/cache. Если заглянете внутрь одного из таких # vzpkg update c1 centos-6-x86_64
архивов, вы увидите образ диска root.hds и его дескриптор
DiskDescriptor.xml. Этот образ будет автоматически исполь- Если не указать имя шаблона, то будут обновлены пакеты
зоваться при создании контейнеров на основе шаблона. всех шаблонов, используемых контейнером.
Просмотреть список шаблонов, установленных на серве- А вот так можно удалить все пакеты, установленные
ре, можно с помощью команды: при добавлении шаблона mysql:
без аргументов. Опция --os для этой команды ограничит вы- Таким образом, шаблоны могут сослужить вам хорошую
вод шаблонами ОС. Если же передать команде в качестве службу не только при создании контейнеров, но и на про-
аргумента имя контейнера, то получите список шаблонов, тяжении всего их жизненного цикла.
используемых данным контейнером. Ввод команды:
Структура
# vzpkg list –available Файлы шаблонов хранятся в директории /vz/template,
здесь же находятся закэшированные данные. Файлы рас-
покажет список доступных, но неустановленных шаблонов. полагаются в директориях, структура которых соответству-
В запросе можно использовать шаблоны подстановки – на- ет имени, версии и архитектуре ОС шаблона – например,
пример, вот так можно получить перечень доступных шабло- centos/6/x86_64.
нов, начинающихся с centos: Конфигурация базового шаблона ОС хранится в файле
config/os/default, настройки кастомизированных шаблонов –
в файлах config/os/<суффикс>. Конфигурационные фай-
Рисунок 1. Структура подкаталогов /vz/templates отражает набор доступных шаблонов File
лы для шаблонов приложений, предназначенных для дан-
ной ОС, хранятся в файлах config/app/<имя_приложения>/
default.
Внутри каталогов config можно найти набор файлов с го-
ворящими названиями:
>> packages– набор пакетов;
>> package_manager – используемый системой пакетный
менеджер;
>> repositories – репозитории, подключаемые внутри кон-
тейнеров на основе шаблона и используемые для уста-
новки пакетов;
>> mirrorlist– список зеркал для репозиториев; Для начала установите пакет vztt-build из репозиториев
>> distribution– тип дистрибутива Linux; Virtuozzo:
>> summary и description– краткое и подробное описания;
>> environment – предопределенные переменные окруже- # yum install vztt-build
ния для контейнеров;
>> ...и многое другое. Теперь создайте новый каталог с именем шаблона, а в нем
метафайл с инструкциями по развертыванию шаблона (обыч-
Из не очевидных вещей следует отметить формат, но этот файл называют просто «metafile» либо добавляют
в котором указывается пакетный менеджер, – для Debian- «metafile» как суффикс к имени шаблона). Сюда же следует
систем необходимо указать dpkg для 32-битных архитектур положить pre- и post-скрипты, которые включаем в шаблон.
и dpkg64 для 64-битных, а для дистрибутивов, использующих Метафайлы проще всего создавать на основе примеров,
rpm, возможны варианты – например, rpm43x86 для 32-битных располагающихся в каталоге /usr/share/vztt/samples. Мета-
ОС, использующих rpm версии 4.3, rpm41s9x64 для 64-бит- файл состоит из набора секций, каждая из которых начина-
ного SLES-9 и ряд других значений, полный перечень кото- ется с символа процента («%»). Имена секций соответствуют
рых можно найти в справке по команде: файлам шаблона, которые будут помещены в директорию
config, как мы это видели в предыдущем разделе. Внутри ме-
# man vzpkg.metafile тафайла можно оставлять комментарии начиная их с симво-
ла решетки («#»). Детальное описание формата метафайла
Менеджер пакетов, репозитории и списки зеркал обяза- можно найти в соответствующей справке по команде:
тельны только для базовых шаблонов ОС. Для кастомизи-
рованных шаблонов и шаблонов приложений эти значения # man vzpkg.metafile
берутся из параметров базовой ОС, но можно указать и до-
полнительные настройки в их собственных конфигураци- Когда метафайл готов, необходимо его передать команде
ях – они будут добавлены к значениям базовой ОС. Для шаб- vzmktmpl. Если будете использовать какие-либо pre- и post-
лонов приложений можно указывать перечни совместимых скрипты, то надо их явно указать в соответствующих опциях,
и необходимых шаблонов. например:
Помимо статических файлов конфигурации, шаблоны
ОС могут содержать скрипты, выполняемые на определен- # vzmktmpl --pre-cache pre-cache --pre-upgrade ↵
ной стадии их развертывания. Более точно: скрипты можно pre-upgrade metafile
Визитка
АЛЕКСАНДР ПИЧКАСОВ,
сертифицированный специалист Microsoft, VMware, apichkasov@gmail.com
Многие предприятия обладают филиальной сетью, часто (TCO). Необходимо отметить, что для правомерного исполь-
довольно разветвленной, но состоящей из небольших офи- зования MDOP предприятие должно иметь действующую
сов. При этом размеры филиалов предъявляют специфиче- подписку Software Assurance (SA), а также оплатить годовое
ские требования к их ИТ-поддержке. Можно выделить две использование самого пакета. Крупные предприятия часто
главные особенности: это, во-первых, необходимость обе- пользуются возможностями подписки SA, если же этот воп-
спечить техподдержку пользователей и, во-вторых, поста- рос находится на стадии рассмотрения, детальную инфор-
вить на должный уровень информационную безопасность мацию по пакету MDOP можно получить на сайте постав-
филиала в условиях физической удаленности и отсутствия щика [1]. Прежде чем перейти к теме статьи, необходимо
постоянного ИТ-персонала. Часть задач возможно решить раскрыть, что представляет собой пакет MDOP в целом.
совместным использованием встроенных средств настоль- С точки зрения конечного потребителя, он состоит из ше-
ных и серверных ОС, но задействование для этих целей па- сти независимых компонентов:
кета MDOP предоставит ряд дополнительных возможностей. >> виртуализации приложений Microsoft App-V;
>> виртуализации пользовательской среды Microsoft UE-V;
Пакет MDOP, состав и особенности >> виртуализации настольных систем MED-V;
Пакет Microsoft Desktop Optimization Pack (MDOP) предназна- >> расширенного управления групповыми политиками
чен для повышения эффективности управления настольны- Microsoft AGMP;
ми системами и снижения совокупной стоимости владения >> средства администрирования и мониторинга BitLocket
MBAM;
>> набора средств диагностики и восстановления
Рисунок 1. Состав набора инструментов DaRT
Microsoft DaRT.
что такой вариант работы должен быть предварительно нас- >> анализатор аварийных дампов (Crash Analyzer);
троен с помощью групповых политик (для выбранного объ- >> утилита восстановления удаленных файлов (File
екта ГП – Computer Configuration → Policies → Administrative Restore);
Templates → System → Remote Assistance → Configure >> утилита восстановления дисков, разделов и томов (Disk
Offer Remote Assistance, добавить предварительно соз- Commander);
данную группу техподдержки, например, <Domain_name>\ >> утилита надежной очистки диска (Disk Wipe);
HelpDesk). При таком варианте запуск предложения удален- >> утилита управления компьютером (аналог встроенной
ной помощи может быть выполнен из командной строки: оснастки с тем же названием, Computer Management);
>> файл справки(Help);
msra /offerra <computer_name | ip_address> >> файловый менеджер (аналог встроенного проводника,
Explorer);
Для реализации варианта техподдержки в нештатной си- >> утилита выбора подходящего инструмента (Solution
туации удобно использовать набор инструментов диагности- Wizard);
ки и восстановления (Diagnose and Recovery Toolset, DaRT), >> утилита конфигурации сетевого соединения (TCP/IP
в состав которого входят следующие элементы (см. рис. 1): Config);
>> редактор реестра (Registry Editor); >> утилита деинсталляции исправлений (Hotfix Uninstall);
>> утилита сброса пароля локальных пользователей >> утилита восстановления системных файлов (SFC Scan);
(Locksmith); >> утилита поиска файлов (Search);
>> антивирусная утилита (Defender); После этого можно приступить к созданию загрузочно-
>> утилита удаленного подключения (Remote Connection). го образа, используя мастер DaRTImage.exe (находится
в каталоге установки DaRT). Для его успешного завершения
Реализован DaRT в виде загрузочного образа на плат- необходимо предоставить дистрибутивный носитель, соот-
форме Windows Preinstallation Environment, генерацию ко- ветствующий версии установленного пакета WADK. Шаги
торого проводит администратор системы в соответствии мастера позволяют задать расположение дистрибутивного
со своими потребностями. При этом конкретный вариант носителя, выбрать инструменты, настроить параметры уда-
DaRT может содержать сокращенный список инструментов, ленного подключения (см. рис. 2), добавить драйверы обору-
определяемый на этапе его создания. дования, отсутствующие в дистрибутиве (см. рис. 3), а также
Для получения возможности генерации загрузочных задать путь для сохранения генерируемого файла. Резуль-
образов необходимо последовательно установить пакет татом работы мастера в соответствии с вашим выбором
Windows Assessment and Deployment Kit (WADK) наиболее будут загрузочный образ в формате WIM, такой же образ,
свежей версии, соответствующей последнему выпуску подготовленный к записи на сменный носитель, и скрипт
MDOP [2, 3], а затем, собственно, компонент DaRT пакета PowerShell для повторной его генерации. Последний опцио-
MDOP. При развертывании пакетов значения параметров нальный шаг мастера дает возможность записать подготов-
принимаются по умолчанию. ленный файл на сменный носитель.
Созданный образ может быть использован для запуска
обслуживаемых компьютеров в разных вариантах. Это, на-
Рисунок 4. Настройка ответа на запросы клиентов сервера WDS
пример, их непосредственная загрузка с использованием
сменного носителя (оптического диска или флеш-накопите-
ля). Другой вариант – замена файла Winre.wim среды вос-
становления (Recovery Environment), расположенного в ОС
Windows 8/Windows 2012 на отдельном томе с меткой System
Reserved, в каталоге Recovery/WindowsRE. Однако наиболее
удобно воспользоваться вариантом сетевой загрузки, учи-
тывая, что подавляющее большинство материнских плат,
выпущенных в последние годы, снабжены встроенными се-
тевыми адаптерами, позволяющими выполнять сетевую за-
грузку по протоколу PXE.
Для реализации последнего варианта наиболее простой
способ – установка роли серверной операционной сис-
темы, а именно служб развертывания Windows (Windows
Deployment Services, WDS). Главное предназначение данных
сервисов – автоматизация развертывания операционных
систем, однако входящий в их состав сервер PXE позволя-
ет организовать загрузку произвольных образов в формате
WIM. Стоит отметить, что в случае, если службы WDS уже
Рисунок 5. Запрос сетевой загрузки при старте компьютера
установлены и используются по прямому назначению, до-
бавление образа DaRT нисколько не повлияет на их работу,
поскольку конфигурационные средства дают возможность
сформировать список выбора загрузки. Далее подразуме-
вается, что в назначенном филиале присутствует компью-
тер или виртуальная машина с серверной ОС семейства
Windows и работающим сервером DHCP.
Роль WDS может быть установлена, например, средства-
ми PowerShell:
по умолчанию.
На этом этапе сервер готов обрабатывать запросы се- После подключения на целевом компьютере блокируют-
тевой загрузки по PXE-протоколу. Настройка клиентских ся клавиатура и мышь, но пользователь может отслеживать
компьютеров заключается в установке в BIOS Setup приори- на экране действия администратора.
тета сетевой загрузки. Поскольку параметры по умолчанию Необходимость присутствия пользователя при запуске
сервера WDS предусматривают подтверждение сетевой удаленной поддержки составляет некоторые неудобства,
загрузки нажатием клавиши <F12> (см. рис. 5), сделанные в действительности такое требование соответствует иде-
изменения не повлияют на обычную загрузку настольных ологии информационной безопасности. Это объясняется
компьютеров. тем, что конечный пользователь как владелец информации,
хранящейся на локальных дисках компьютера, должен при-
Запрос поддержки в нештатной ситуации нимать решение, когда и кому предоставлять доступ. EOF
Получение помощи в нештатной ситуации при описанных
настройках потребует следующих действий пользователя: [1] Описание MDOP на сайте производителя – https://technet.
>> нажатие клавиши <F12> при загрузке компьютера; microsoft.com/ru-ru/windows/mdop.aspx .
>> выбор загрузочного образа из списка; [2] Загрузка пакета Windows ADK 8.1 – http://www.microsoft.com/en-
>> переход по дереву меню к инструментам DaRT после us/download/details.aspx?id=39982.
загрузки образа Windows PE; [3] Загрузка пакета Windows ADK 10 – https://msdn.microsoft.com/
>> запуск инструмента Remote Connection; en-us/windows/hardware/dn913721.aspx.
>> передачи сотруднику техподдержки номера тикета, IP-
адреса и порта подключения (см. рис. 6). Ключевые слова: Windows, MDOP, WADK, техподдержка.
Визитка Визитка
В первой части статьи [1] мы обратили внимание на историю существующие в ней механизмы безопасности и опреде-
происхождения таргетированных атак, привели описание ленные продукты, вовлечь во взаимодействие ключевых
применяемых методов и инструментов, которые использу- сотрудников (чаще всего обманом). Такая операция обыч-
ются в процессе достижения целей, и подробно разобрали но управляется организованной группой профессио-
шаги подготовительной фазы. По статистике «Лаборатории налов, порой международной, вооруженной изощренным
Касперского» доля целевых атак составляет 1% от обще- техническим инструментарием. Деятельность группы часто
го числа мировых угроз, но, несмотря на низкую распро- похожа на многоходовую войсковую операцию, следую-
страненность, целевые атаки наносят больше ущерба, чем щую четко подготовленной стратегии, обычно состоящей
оставшиеся 99% угроз совокупно, каждый раз увеличивая из четырех фаз.
этот антирекорд. Продолжая аналогию, можно сказать, что происходит во-
оруженная схватка между людьми: одни нападают, другие
Что же представляет собой отражают хорошо подготовленное нападение, учитывающее
таргетированная атака? слабые стороны и особенности систем противодействия.
Таргетированная атака – это непрерывный процесс не- И статистика в этом противостоянии неутешительна:
санкционированной активности в инфраструктуре атакуе- по данным проведенного «Лабораторией Касперского»
мой системы, управляемый киберпреступником в режиме опроса российских предприятий, практически каждая чет-
реального времени. Процесс всегда строится под жертву, вертая компания (23%) считает, что уже становилась жерт-
являясь некой продуманной операцией, а не просто разо- вой целевых атак.
вым техническим действием, он направлен для работы в ус- Таргетированная атака включает в себя четыре основные
ловиях конкретной инфраструктуры, призван преодолеть фазы (см. рис. 1).
Загрузчик (Downloader)
Инструмент загрузки используется
в целях быстрого заражения с приме-
нением техники фишинга через вло-
жения в письмах либо с фишинговых
веб-сайтов. При запуске выкачивает
основной модуль Payload либо Dropper
в зависимости от целей и планов ки-
берпреступников.
сформированный аналогично швейцарскому ножу, может со- в инфраструктуру жертвы. Дело в том, что первичной точкой
держать большой набор уязвимостей и применять их после- проникновения являются, как правило, компьютеры сотруд-
довательно. При этом часть инструментов по проникновению ников с фиксированным рабочим графиком, а это означает,
могут сочетаться с легальным ПО, что позволяет минимизи- что время доступа в инфраструктуру для злоумышленников
ровать обнаружение атаки, так как доверенные программы будет ограниченным.
внесены в «белые списки» систем безопасности. Для нагляд- Лучше всего этапы закрепления проиллюстрируют при-
ности приведем несколько примеров таких программ: меры из реальных кибератак, расследованных экспертами
>> Продукты удаленного администрирования, RDP, VNC. «Лаборатории Касперского»:
>> Программы переключения языков клавиатуры, имею- >> Duqu 2.0. В этой кампании киберпреступники исполь-
щие возможность легитимно использовать логирова- зовали подписанный компанией Foxconn сертификат
ние клавиатуры. (Foxconn – известный производитель оборудования). Ха-
>> Сетевые сканеры и т.д. керы создали клон библиотеки DLL, которая присутство-
вала на компьютере жертвы и после модификации стала
выполнять роль загрузчика Payload. Это позволяло за-
Среди российских компаний гружать вредоносный модуль при включении компьютера
ключевыми рисками внутри и выгружать его при выключении. Тем самым злоумыш-
ленники не оставляли следов на жестких дисках зара-
по-прежнему остаются женных машин, но при этом сохраняли свое присутствие
уязвимости в ПО (их отметили внутри, распространяя такой метод внутри инфраструк-
туры. Для основной точки входа использовался главный
48% от общего числа контроллер домена компании.
опрошенных компаний), >> Carbanak.Закрепление происходило методом копирова-
ния Payload в системную папку %system32%\com с име-
а также незнание правил ИТ- нем svchost.exe, назначая файлу следующие атрибуты:
безопасности сотрудниками, системный, скрытый, только для чтения. Для автозапуска
использовался специально созданный сервис со схожим
приводящее к утечкам данных системным именем, отличающийся одной точкой.
(отметили 37% респондентов) Шаг 2. Распространение
Значимым аспектом является наличие постоянных актив-
Инвентаризация сети ных точек входа, обычно для этого используются серверы
После выполнения автоматических уклонений от обнару- с малым временем простоя, хорошо подходящие для выпол-
жения и системных тестов на соответствие операционной нения одного из правил целевой атаки Persistent. На таком
среде Payload активирует основные функциональные мо- уровне для заражения достаточно подключиться в выбран-
дули, устанавливая закрытое шифрованное соединение ной машине удаленным RDP-клиентом и запустить вредо-
с командными центрами и сигнализируя о своем активном носный модуль, предварительно скопировав его одним кли-
статусе. На этой стадии киберпреступники приступают ком мыши.
к консольной работе, используя терминал подконтрольной
машины. Им очень важно быстро сориентироваться внутри, Шаг 3. Обновление
чтобы сохранить свое присутствие и закрепиться в сети. Случается, когда определенная функция отсутствует в ар-
Первоочередным по важности является поднятие уровня сенале уже задействованного в атаке основного модуля,
доступа до привилегированного, после чего сразу же начи- например, такой функцией может являться запись звука
нается изучение топологии сети. Для выполнения этой за- с внешнего микрофона. Возможность обновить модуль за-
дачи обычно применяют свободно распространяемое ПО, ранее предусмотрена разработчиком атаки и может быть
например Netscan. активирована при необходимости.
Дело в том, что киберпреступники не обладали опытом ра- на жестких дисках рабочих компьютеров были стерты, ки-
боты с платежными системами. Помимо вычисления и рас- берпреступники грозились опубликовать информацию,
пространения на машины кассиров-операционистов, ими если компания не подчинится их требованиям.
был применен метод записи экранов их работы в целях об-
учения. Это заняло довольно продолжительное время и уве-
личило по срокам подготовительный этап. В организациях наиболее
Фаза четвертая. Достижение целей серьезными последствиями
киберинцидентов признаются:
Шаг 1. Выполнение вредоносных действий
В завершающей фазе мы подходим к ключевой точке целе-
потеря доступа к критически
вой атаки. На этом этапе киберпреступники уже могут вы- важной для бизнеса
полнить любое действие, направленное против атакуемой
компании. Перечислим основные типы угроз:
информации (59%),
Пример 1. Хищение ключевой информации. Чаще репутационный ущерб (50%)
всего компании сталкиваются с хищением информации.
В коммерции это целый бизнес, основанный на конкуренции
и потеря важных деловых
и больших деньгах. В государственных структурах это шпио- контактов или бизнес-
наж, реже получение информации, содержащей конфиден-
циальные данные, для последующей перепродажи. В финан-
возможностей (34%)
совом секторе это информация о платежных и биллинговых
системах, счетах крупных клиентов и другая финансовая ин- Уничтожение данных – другой не часто встречающийся
формация для проведения незаконных транзакций. пример развития целевой атаки: в августе 2012-го поряд-
Само хищение происходит максимально незаметно ка 30 тысяч персональных компьютеров, принадлежащих
для систем мониторинга компании, маскируя сетевую актив- крупнейшей в мире нефтедобывающей компании Saudi
ность под работу известного интернет-сервиса с наимено- Aramco, были выведены из строя. Киберпреступники пре-
ванием домена, сильно напоминающего реальный. Обычно следовали две цели: первая – хищение закрытой инфор-
это выглядит как активная шифрованная сессия, где веб- мации, вторая – полная остановка бизнес-процессов ком-
адрес часто похож на популярные сетевые ресурсы (напри- пании. В результате атаки компания была вынуждена почти
мер, почтовые сервисы, поисковики или новостные сайты). на месяц прекратить свою операционную деятельность, от-
Пример 2. Изменение данных. Пример целевой атаки ключив филиалы от сети Интернет.
Metel, от которой пострадали сотни финансовых организа-
ций: киберпреступники, используя контроль над платежной Шаг 2. Сокрытие следов
системой, изменяли доступный кредит на балансе кредит- На протяжении всей целевой атаки киберпреступники ста-
ной карты, тем самым позволяя сообщнику несколько раз раются маскировать свое присутствие под легитимный
обналичивать средства с одной и той же карты. процесс, в крайних случаях, когда это невозможно, хакеры
А в случае киберограбления Carbanak хакеры, изучив ра- вручную очищают журналы событий. Как правило, большая
боту операционистов, действовали от имени сотрудников, часть активности протекает под административным досту-
используя онлайн-банкинг для перевода средств на подкон- пом, не вызывая подозрения.
трольные киберпреступникам счета. Также они удаленно
управляли конкретными банкоматами, отправляя команды Шаг 3. Точка возврата
на выдачу наличных средств, в то время как сообщник даже На финальном этапе атаки многие киберпреступники стара-
не вставлял в банкомат никаких карточек. ются оставить внутри средство, позволяющее им в случае
При этом если смотреть со стороны самих компаний, необходимости вернуться обратно в инфраструктуру. Таким
то статистика «Лаборатории Касперского» говорит о том, средством обычно является управляемый загрузчик, спо-
что в организациях наиболее серьезными последствиями собный по команде закачать исполняемый модуль.
киберинцидентов признаются потеря доступа к критически
важной для бизнеса информации (59% российских компа-
ний отметили этот фактор), репутационный ущерб (50%) В завершении статьи еще раз подчеркнем три основных от-
и потеря важных деловых контактов или бизнес-возможно- личия целевой атаки:
стей (34%). >> адресность; >> результативность.
Пример 3. Манипуляции с бизнес-процессами >> скрытность;
и шантаж. Наглядный случай произошел с компанией
Sony Pictures, которая подверглась таргетированной атаке В третьей части цикла статей «Анатомия целевой атаки»
в 2014 году. В результате были похищены тысячи файлов мы рассмотрим актуальные способы профилактики и проти-
и документов, финансовых данных, а также к киберпре- водействия процессу, именуемому целевой атакой. EOF
ступникам в руки попали фильмы, готовящиеся к прокату.
В компании рассказали, что большинство ее компьютеров [1] Левцов В., Демидов Н. Анатомия таргетированной атаки.
вышло из строя, а на экранах рабочих станций отобража- Часть 1. //«Системный администратор», №4, 2016 г. –
лась фраза «мы завладели вашими секретами». Все данные С. 36‑39 (http://samag.ru/archive/article/3170).
Визитка
АНДРЕЙ ДУГИН,
инженер по защите информации, CCNP Security, andrew_dugin@ukr.net
Чтобы сделать свой вклад в защиту всемирного киберпро- google.com. 271 IN A 173.194.122.230
странства от DDoS, совсем не обязательно покупать до- google.com. 271 IN A 173.194.122.225
google.com. 271 IN A 173.194.122.226
рогостоящее оборудование или подписываться на сервис. google.com. 271 IN A 173.194.122.232
Любой администратор сервера может поучаствовать без до- google.com. 271 IN A 173.194.122.231
<skipped>
полнительных материальных вложений, используя только
;; MSG SIZE rcvd: 204
знания и немного времени.
Еще с 2000 года документы BCP38 и RFC2827 дают ре- и выполнив команду:
комендации, как противодействовать DDoS. Рассмотрим
их практическую реализацию. $ sudo sysctl -p /etc/sysctl.conf
Response Rate Limiting (RRL) для рекурсивных носят поведенческий неселективный ха-
Функционал EDNS0 спасает не всегда. Например, если рактер и должны определяться самостоятельно, что чревато
DNS-запросы рекурсивно перенаправляются открытыми влиянием на легитимный трафик.
резолверами наших клиентов либо сетевым оборудовани-
ем уровня доступа, на котором доступен всем функционал 2. Рекурсивный сервер
DNS-relay. В этом случае сам клиент является легитимным, Для рекурсивных серверов подойдет другое решение обес-
а принудительный переход на TCP только увеличит потре- печения RRL. Логично, что большинство запросов к DNS-
бление ресурсов сервера в случае атаки. серверам имеют тип A либо CNAME. Интенсивность query
type ANY, TXT, RRSIG, DNSSEC в норме, на порядки ниже.
1. Авторитативный сервер Значит, частоту их обработки необходимо контролиро-
Чтобы не давать возможности использовать авторитативный вать. Предположим, разрешить одному клиенту выполнять
DNS-сервер как источник для атаки, необходимо настроить за 10 секунд не более трех запросов type ANY. Несмотря
ограничение на количество ответов в секунду, которые сер- на то что подобная фильтрация более характерна для спец-
вер предоставит одному IP-адресу. Подобное ограничение ифических решений класса Application Firewall, задача аб-
позволит сэкономить ресурсы сервера и снизить интенсив- солютно выполнима с помощью всем известного инструмен-
ность атаки. Для использования Response Rate Limiting (RRL) та iptables.
данная функция должна быть активирована при компиляции Любой DNS-запрос может быть идентифицирован как не-
DNS-сервера (--enable-rrl). кая последовательность символов в пакете. Главное – понять
В конфигурационном файле BIND необходимо прописать вид последовательности, в каком месте искать и как указать
как минимум такие параметры применимо к одному клиенту: это iptables. Рассмотрим пример запроса.
>> slip – количество пакетов, ответные пакеты на которые Из рис. 1 видно, что запрос типа ANY идентифицируется
отправляются усеченными (truncated); двухбайтовой последовательностью символов 00ff, идущих
>> responses-per-second– количество ответов в секунду. под номерами 63-64 в данном пакете. Iptables считает по-
следовательность символов с IP-заголовка, поэтому искать
Например: данную последовательность в этом случае нужно будет на-
чиная с 49-го байта. Соответственно, смещение для iptables
slip 2 будет равняться 48.
responses-per-second 5 В соответствии с RFC 1034 и 1035 под query type выде-
лено 2 байта с максимальным десятичным значением 255.
Данный функционал рекомендуется использовать толь- Значения типов DNS-запросов:
ко для авторитативных серверов, поскольку значения >> ANY– 255 (0x00FF)
Рисунок 1. DNS-запрос
>> RRSIG– 46 (0x002e) интенсивность, для правил iptables вместо 0000FF00 выби-
>> DNSKEY– 48 (0x0030) раем следующие последовательности:
>> TXT– 16 (0x0010) >> RRSIG– 00002E00
>> DNSKEY– 00003000
Следующим в пакете идет класс запроса. Согласно RFC >> TXT– 00001000
это также 16-битная величина, значения которой находятся
в диапазоне от 0x0001 до 0x00FF. То есть байт, следующий uRPF-check. В случае когда зараженный клиент, ини-
после типа запроса, будет также равен 0x00. циирующий трафик с поддельных IP-адресов, на уровне
Сам по себе байт, предшествующий query type, также L3 терминируется на вашем оборудовании, защититься
всегда будет равен двум нулям (0x00), поэтому для более от спуфинга из этой подсети можно, используя технологию
четкого описания последовательности символов для поиска Unicast Reverse Path Check (uRPF). Суть ее для подобных
возьмем 0000FF00. подключений в том, чтобы обрабатывать пакеты, влетающие
Самым коротким будет DNS-запрос к зоне root (.), где query на определенный интерфейс, только в случае присутствия
type будет идти в 55-56-м байтах, и фрагмент 0000FF00 нуж- IP-адреса в таблице маршрутизации через этот же интер-
но считать начиная с 40-го байта для iptables. Ограничение фейс.
на размер query name – 63 байта и зона. Предположим, в схеме подключения, обозначенной
Если выполнить: на рис. 2, необходимо выпускать в интернет только пакеты
из «честных» подсетей клиента 192.0.2.0/24 и 198.51.100.0/24,
$ dig -t ANY qwertyuiopqwertyuiopqwertyuiopqwertyuiopq ↵ не пропуская адреса из других подсетей.
wertyuiopqwertyuiop123.northwesternmutual
3. Подключение клиента
то в нем байты, обозначающие query type, будут идти под но- Соответствующая команда Cisco IOS будет выглядеть следу-
мером 138-139, и поиск 4-байтного 0000FF00 нужно начи- ющим образом:
нать с 123-го байта. Не самый большой запрос, но и вероят-
ность подобных запросов очень невелика. CE(config-if)# ip verify unicast source reachable-via rx
Соответственно, чтобы минимизировать возможный
DDoS, нужно сконфигурировать iptables следующим обра- и может быть применена как на интерфейсе Gi0/1 маршру-
зом: тизатора PE (provider edge router – граничный маршрутиза-
>> пропускать за 10 секунд три DNS-запроса типа ANY тор провайдера, к которому подключается нетранзитный
с одного IP; клиент), так и на интерфейсах VLAN2 и VLAN100 маршрути-
>> в UDP-пакетах с портом назначения 53; затора CE (маршрутизатор клиента).
>> считая запросом типа ANY последовательность
0000FF00 в 40-127-м байтах пакета.
Выполнив описанные настройки, мы напрямую не защи-
В итоге искомая последовательность команд iptables бу- тимся от атак на нашу сеть и серверы, но сделаем невоз-
дет иметь следующий вид: можным использование своих ресурсов для атак на других,
а также минимизируем количество оснований для кричащих
iptables -N DNS_ANY заголовков в прессе «Русские хакеры атаковали...».
iptables -v -A DNS_ANY -m recent --name dns_any ↵ Итого: уменьшить количество DDoS-атак типа DNS
--update --seconds 10 --hitcount 3 -j DROP
iptables -v -A DNS_ANY -m recent --name dns_any ↵ amplification и минимизировать участие своего инфраструк-
--set -j ACCEPT турного сегмента можно с помощью следующих действий,
iptables -v -A INPUT -p udp --dport 53 -m string ↵
не требующих дополнительных финансовых вложений:
--from 40 --to 123 --algo bm ↵
--hex-string '|0000FF00|' -j DNS_ANY >> Отключение неиспользуемых сервисов на всех серве-
рах.
При необходимости фильтровать интенсивность запро- >> Управление обновлениями.
сов других типов (TXT, DNSSEC, RRSIG) частота легитимных >> Ограничение рекурсивной обработки запросов только
запросов может варьироваться в зависимости от использую- для клиентов предоставляемого сервиса.
щих их сервисов. Если все же принято решение фильтровать >> Поддержка EDNS0.
>> Ограничение интенсивности ответов (Response Rate
Limiting) на DNS-серверах посредством настроек Bind
Рисунок 2. Схема подключения
либо iptables.
>> Применение проверок uRPF на активном сетевом обо-
рудовании.
Визитка
АНДРЕЙ БИРЮКОВ,
ЗАО «НИП Информзащита», системный архитектор, mex_inet@rambler.ru
Проводим пентест
Часть 2. Сбор необходимой информации
Правильная идентификация версий ОС и ПО является неотъемлемой частью
успешной атаки. В статье мы поговорим о том, как это можно сделать
В предыдущей статье [1] мы провели аудит доступа к бес- Государственные организации обязаны все свои зака-
проводной сети. Теперь будем считать, что злоумышленник зы размещать в открытом доступе, поэтому ресурсы типа
уже проник в корпоративную сеть и ему нужно собрать не- goszakupki.ru являются дополнительным источником ин-
обходимую для взлома информацию. Для этого понадобится формации. Например, среди заказов можно встретить лоты
правильно идентифицировать установленные в сети прило- на продление лицензий на ПО. К лотам должно быть при-
жения и перехватить как можно больше сетевого трафика, креплено техническое задание или аналогичный документ,
из его содержимого узнать о том, какие протоколы исполь- из которого тоже можно почерпнуть массу полезной инфор-
зуются, и постараться перехватить учетные данные пользо- мации.
вателей. Серьезной проблемой для информационной безопас-
Разнообразие приложений, протоколов, ОС и прошивок ности могут стать социальные сети. Конечно, никто не будет
к оборудованию ставит перед потенциальным взломщиком размещать пароли или другую конфиденциальную инфор-
задачу по точной идентификации как самой программы, мацию на своей странице. А вот телефонный номер, ICQ,
так и ее версии, архитектуры и других важных для атаки пара- личную почту очень даже может. Ну и само собой фотогра-
метров. Ведь не бывает универсальных эксплоитов, каждый фия лишней не будет.
из них рассчитан на уязвимости в определенных условиях. Ну а дальше социальная инженерия во всей красе. С по-
мощью полученной контактной информации злоумышлен-
Не забываем о людях ник может связаться с сотрудниками компании и получить
Собирать информацию о целевых сервисах можно не толь- необходимую информацию. Обратите внимание, все приве-
ко техническими средствами, но и с помощью социальной денные выше действия вряд ли можно хоть как-то подвести
инженерии. Основные способы сбора информации (под- под статьи уголовного кодекса.
робнее в [2]): В качестве практической части ко всему вышесказанно-
>> Анализ оборудования и ПО, упоминающихся в ваканси- му можно попытаться собрать информацию о технических
ях организации. специалистах своей компании в социальных сетях. Посмо-
>> Получение данных посредством общения с техниче- треть, какая информация о корпоративной сети есть в от-
скими специалистами организации. крытом доступе. Не лишним будет кому-либо из специалис-
>> Сбор сведений о закупаемом оборудовании и ПО из отк- тов, проводящих аудит, позвонить сотрудникам компании
рытых источников (например, goszakupki.ru). и от имени, например, техподдержки попытаться узнать
>> Анализ информации, которую размещают сотрудники пароль выхода в корпоративную сеть. Подобные экспери-
компании, и особенно технические специалисты, в со- менты позволяют получить представление об общем уровне
циальных сетях. осведомленности об ИБ в компании.
>> Телефонные звонки сотрудникам от имени техническо- На этом, я думаю, с социальной инженерией можно за-
го персонала. кончить и перейти к техническим способам сбора инфор-
мации.
Первый метод позволит злоумышленнику получить базо-
вое представление о тех сервисах, которые могут исполь- Осматриваемся в сети
зоваться в компании. Само по себе это даст мало полезной Для сбора информации нам снова потребуется Kali Linux.
информации, поэтому на следующем шаге хакер под видом Подключившись к сети, первое, что мы можем сделать,
соискателя может попытаться пройти собеседование и по- это посмотреть вывод команды ifconfig. Если мы получи-
лучить более детальные данные по оборудованию и ПО. ли IP-адрес по DHCP, то знаем размер подсети, в которой
злоумышленника, уже проникшего в сеть и пытающегося от 7000-го до 7100-го, которые используют самописное при-
использовать корпоративные ресурсы для осуществления ложение. Также у нас имеется сеть 10.0.0.0/8. Мы хотим най-
атак на другие узлы. ти, на каких из этих машин открыты порт 80 и диапазон пор-
При этом перебор хостов отключен опцией -PN, т.к. по- тов с 7000-го по 7100-й. При этом нам необходимо провести
сылка пары предварительных запросов в целях определе- сканирование как можно быстрее, но с учетом пропускной
ния доступности хоста является нецелесообразной, когда способности каналов связи. Таким образом, нам надо от-
интересует всего один порт на каждом хосте. правлять 100 000 пакетов в секунду. Для этого выполним
команду:
root@kali:~# nmap -v -iR 100000 -PN -p 80
root@kali:~# masscan -p80,7000-7100 10.0.0.0/8 --rate=100000
Если требуется просканировать большое количество
узлов, то имеет смысл сохранять полученные результаты В результате мы получим список машин с обнаруженны-
в файл. К тому же в случае, если злоумышленник будет об- ми открытыми портами (см. рис. 2).
рабатывать полученные результаты с помощью сценариев Для удобства работы с собранной информацией ее не-
в целях автоматизации процесса взлома, вывод в файл так- обходимо сохранять в файл. В следующем примере в файл
же будет необходим. Написание сценариев для автоматиза- будут сохранены приветственные сообщения, которые по-
ции задач аудита мы подробно рассмотрим в одной из сле- казывают узлы при обращении к открытому порту 80.
дующих статей цикла.
Следующей командой будут просканированы 4096 IP-ад- root@kali:~# masscan -p80 10.0.0.0/8 --banners -oB <имя_файла>
ресов (без предварительного пингования), а выходные дан-
ные будут сохранены в формате XML и формате, удобном Еще одной полезной опцией, которая может быть исполь-
для просмотра утилитой grep (grepable-формат). зована при проведении аудита, является возможность ука-
зания IP и MAC-адреса интерфейса, отправляющего пакеты
root@kali:~# nmap -PN -p80 -oX logs/pb-port80scan.xml ↵ для сканирования.
-oG logs/pb-port80scan.gnmap 216.163.128.20/20 Вот пример использования утилиты с заданными IP
и MAC, сканирующей сеть 10.0.0.0/8 на наличие открытых
Когда нужна скорость портов 137-139.
Nmap является, пожалуй, наиболее известным средством
сканирования сети. Однако, помимо него, существуют так- root@kali:~# masscan 10.0.0.0/8 –p137-139 ↵
же и другие средства. Например, в случае если необходимо --adapter-ip 192.168.1.111 ↵
--adapter-mac 00-11-22-33-44-55
просканировать сеть в несколько тысяч узлов на предмет
наличия хостов с открытыми портами, то наиболее подходя-
щим будет массовый сканер портов MASCAN. Для автоматизации и ускорения процесса сканирования
Это приложение способно отправлять до 10 миллионов можно создать конфигурационный файл, в котором указать
пакетов в секунду. По утверждениям разработчиков, он мо- необходимые параметры для IP и MAC-адресов. Например:
жет сканировать весь интернет за 6 минут. Этот инстру-
мент полезен для обзора сетей большого масштаба – таких adapter-ip = 192.168.1.111
как интернет или крупные внутренние сети. Этот сканер adapter-mac = 00-11-22-33-44-55
первого конфигурационного файла или для просмотра спи- сводится к тому, что подменяем в ARP-таблице MAC-адрес
ска параметров. узла, вследствие чего в корпоративной сети становится
На этом, я полагаю, тему идентификации узлов и при- возможным контролировать трафик всех узлов в пределах
ложений с помощью сетевых сканеров можно завершить. доступности ARP-ответов с контролируемого узла вне зави-
Собранная на данном этапе аудита информация нам потре- симости от свойств физической сетевой инфраструктуры.
буется в следующей статье, когда мы будем выявлять уяз- То есть мы сможем получать копии трафика с других портов
вимости и пытаться эксплуатировать их. А теперь перейдем коммутатора.
к сбору информации посредством перехвата сетевого тра- Перейдем к практической части. Для этого воспользу-
фика. емся утилитой Ettercap. Конечно, описанные ниже действия
можно реализовать и с помощью Wireshark, однако Ettercap
Анализируем трафик немного удобнее для реализации данной атаки.
Нам потребуется Wireshark, позволяющий перехватить ин- Запустим утилиту с графическим интерфейсом.
формацию, передаваемую по сети в открытом виде. Напри-
мер, некоторые самописные веб-приложения, работающие root@kali:~# ettercap –G
в корпоративных сетях, до сих пор не используют SSL-
шифрование, вследствие чего передача учетных данных Далее выбираем тип перехвата трафика Unified
и другой информации ведется в открытом виде и легко пере- или Bridged. Первый производит простой перехват трафи-
хватывается. ка, в то время как второй предназначен для вмешательства
Для мониторинга трафика с помощью Wireshark необхо- в процесс передачи трафика. Выберем unified. Далее ука-
димо на активном интерфейсе запустить прослушивание. зываем используемый сетевой интерфейс. Можно указать
Для поиска «интересной» информации в уже собранном как проводной, так и беспроводной варианты.
трафике необходимо остановить перехват и сделать филь- Далее определяемся с тем, у кого мы хотим перехваты-
трацию по интересующему порту или протоколу. Например, вать трафик. Для этого необходимо просканировать сеть
по порту 80. Так как вся информация в HTTP передается на наличие активных узлов. Как видно, функционал Ettercap
в текстовом виде, найти, к примеру, пароль, переданный частично перекликается с описанным ранее сканерами.
формой, можно довольно просто. Достаточно сделать по- Для запуска сканирования выбираем Hosts, далее Scan for
иск в собранных пакетах по тегу hidden. Рядом с этим тегом hosts. Получаем список активных узлов с IP и MAC-адресами.
и будет пароль. Выбираем нужный узел и нажимаем Add To Target 1. В этом
Помимо Wireshark, существуют и другие не менее инте- окне еще имеется кнопка Add To Target 2. В случае если хо-
ресные средства. Одним из них является Driftnet [4]. Эта ути- тим перехватывать только трафик между двумя конкретны-
лита ориентирована на воспроизведение перехваченного ми узлами, необходимо указать второй узел и нажать Add
медийного контента, который передается по сети. Конечно, To Target 2, если планируем перехватывать весь трафик
с точки зрения безопасности нас мало интересует, какие для данного узла, то второй узел выбирать не надо.
видео смотрят пользователи в рабочее время. Хотя исполь- Затем запускаем сканирование, нажав Start, Start Sniffing.
зование корпоративного доступа в сеть Интернет тоже мож- Далее завершаем процесс отравления ARP, выбрав MITM/
но отразить в отчете об аудите, особенно если к нему можно ARP Poisoning. Опция Sniff Remote Connections должна быть
приложить иллюстрирующие доказательства. Однако нас включена.
больше интересует передача по сети сканов различных до- Далее уже в Wireshark можно осуществлять перехват тра-
кументов и других изображений, содержащих конфиденци- фика по аналогии с тем, как мы это делали ранее.
альную информацию. По окончании сбора пакетов в Ettercap необходимо от-
Пользоваться Driftnet довольно просто, для этого до- ключить ARP-poison, нажав Start/Stop sniffing.
статочно запустить Applications → Kali Linux → Sniffing/
Spoofing → Web Sniffers → driftnet. После запуска появится Становимся посредником
небольшое окно, которое желательно растянуть. Злоумышленник, попав в сеть, может осуществить атаку
А дальше просто смотрим, что проходит через сеть. типа «человек посередине» (Man in the middle), то есть попы-
таться стать посредником между легальными узлами. С по-
Боремся с коммутаторами мощью MitM можно реализовать много различных атак, свя-
Что делать в случае, если, подключившись к сети, сниффер занных не только с прослушиванием, но и с модификацией
показывает только пакеты, идущие к или от нашей машины? проходящего трафика. Но в контексте темы данной статьи
В современных сетях такая ситуация достаточно распро- мы реализуем перехват паролей, заодно познакомившись
странена, так как повсеместно используемые коммутаторы еще с парой полезных утилит из состава Kali Linux.
в отличие от концентраторов не ведут широковещательных Итак, мы уже знаем, какие узлы сейчас активны в сети.
рассылок поступающего трафика на все порты. Так как машина злоумышленника выступает в роли по-
Однако эту «защиту» достаточно легко преодолеть с по- средника, для начала разрешаем пересылку IP-пакетов (ip
мощью инструментов, входящих в состав Kali. Но сначала forwarding). Сделать это можно следующим образом:
немного теории для лучшего понимания процесса.
На коммутаторах для преобразования IP-адресов и MAC- root@kali:~# echo 1 > /proc/sys/net/ipv4/ip_forward
адресов используется протокол ARP (Address Resolution
Protocol). Информация о соответствии IP и MAC хранит- Теперь проводим ARP spoofing (подменяем MAC-ад-
ся в ARP-таблицах. Атака ARP-poison (отравление ARP) реса для определенных IP-адресов). Машина злоумыш-
ленника будет посредником между шлюзом по умолчанию а вот про внутреннюю сеть обычно забывают. В результате,
и локальной сетью. Если адрес шлюза 192.168.1.1, а наш если злоумышленнику каким-либо образом удалось проник-
адрес 192.168.1.100, то для подмены нам необходимо вы- нуть во внутреннюю сеть, он может совершенно безнака-
полнить следующее: занно проводить различные атаки, оставаясь при этом не-
заметным для средств защиты.
root@kali:~# arpspoof –t 192.168.1.1 192.168.1.100 В случае если IDS/IPS все-таки что-то обнаружили,
то я рекомендую внимательно посмотреть, какие именно
Утилита arpspoof как раз предназначается для подмены атаки были найдены и какие сообщения были выведены
MAC-адресов. в консоль. Лучше всего по отдельности провести каждую
Для корректной работы ARP spoofing обязательно дела- из атак и посмотреть, реагирует ли на нее IDS, и если ре-
ем подмену и в обратную сторону. агирует, то как именно. Возможно, есть смысл написать
собственные правила или подправить уже существующие.
root@kali:~# arpspoof –t 192.168.1.100 192.168.1.1 Также современные антивирусные системы умеют обнару-
живать некоторые виды сетевых атак, прежде всего скани-
Начинаем перехват трафика. Правда, в отличие от преды- рование портов на хосте. Поэтому нелишним будет прове-
дущих примеров здесь мы будем перехватывать, а вернее, рить журналы событий антивирусных систем.
отображать не весь трафик, а только пароли от различных Что касается активной защиты от описанных атак,
приложений. Для этого мы воспользуемся утилитой dsniff [5]. то здесь лучше всего справится именно система предотвра-
щения вторжений, установленная в разрыв. Если архитекту-
root@kali:~# dsniff ра сети позволяет, то правильно настроенная IPS даст воз-
можность заблокировать большинство описанных в статье
--------------- атак.
05/21/00 10:49:10 bob -> unix-server (ftp) Также межсетевые экраны, блокирующие все, кроме
USER bob
PASS dontlook нужного трафика, будут хорошим средством защиты от ска-
--------------- нирования портов. Бороться с прослушиванием трафика
05/21/00 10:53:22 karen -> lax-cisco (telnet)
достаточно сложно. Конечно, если целевое приложение
karen
supersecret поддерживает шифрование трафика, например SSL, то не-
--------------- обходимо его использовать. Однако если какая-либо старая
05/21/00 11:01:11 karen -> lax-cisco (snmp)
[version 1]
программа работает только по HTTP или FTP, то здесь един-
private ственным решением может стать шифрование на уровне
IPSec.
В результате работы мы перехватили несколько паролей, Но для выявления того, прослушивают ли вашу сеть, мож-
передававшихся в незашифрованном виде. но прибегнуть к помощи узла-приманки (honeypot). Создаем
Dsniff позволяет перехватывать пароли, отправлен- поддельный сервис, на который периодически производит-
ные методом HTTP POST данные, HTTP Basic and Digest ся подключение под как бы административной учетной за-
authentications, FTP,IRC, POP, IMAP,SMTP, NTLMv1/v2 (HTTP, писью по нешифрованному протоколу с одного и того же
SMB, LDAP и т.п.). узла. На узле-приманке настраиваем журналирование всех
На этом, я думаю, практическую часть сегодняшней ста- попыток входа. И ведем регулярный мониторинг журналов
тьи можно завершить и перейти к рассмотрению резуль- приманки. Если обнаруживаются входы с IP-узла, отличного
татов. от того, с которого мы подключаемся, значит, кто-то прослу-
шивает нашу сеть.
Что в результате
Защищаться от социальной инженерии не так просто,
как может показаться на первый взгляд. Необходимо на ре- На этом тему сбора информации о сети и защиты от данного
гулярной основе производить мониторинг той информации, типа атак можно завершить. В следующей части мы начнем
которая есть о компании в интернете, на предмет наличия подробное рассмотрение того, как можно получить доступ
сведений о приложениях, используемых в корпоративной на целевые узлы атакуемой сети. EOF
сети. Особое внимание здесь следует уделить социальным
сетям, так как в них зачастую публикуют «лишнюю» инфор- [1] Бирюков А. Проводим пентест. Часть 1. Проникаем в беспро-
мацию. водную сеть. // «Системный администратор», №4, 2016 г. –
Теперь перейдем к технике. После выполнения тех дейст- С. 40-44 (http://samag.ru/archive/article/3171).
вий, которые описаны в статье, я бы рекомендовал обра- [2] Бирюков А. А. Информационная безопасность: защита и на-
титься к средствам защиты информации и мониторинга падение. ISBN: 978-5-94074-647-8.
событий ИБ, которые установлены в корпоративной сети. [3] Статья по работе с masscan – https://kali.tools/?p=976.
Прежде всего необходимо посмотреть в консоли систем об- [4] Описание утилиты DriftNet – http://goo.gl/x0pZK3.
наружения и предотвращения вторжений, какие атаки они [5] Описание работы с dsniff – http://256bit.ru/Secure/Glava%2010/
увидели. Если IDS не зафиксировал ничего, то, может, он, Index10.html.
конечно, и не настроен, но скорее всего у вас просто не ве- [6] Список всех ключей nmap – http://xgu.ru/xg-ids/ch06.html.
дется мониторинг трафика внутри сети. Очень часто IDS/IPS
контролируют только каналы, ведущие в интернет и DMZ, Ключевые слова: безопасность, пентест, аудит, Kali.
Визитка Визитка
В первой части статьи [1] были рассмотрены вопросы Select u.username, p.profile, p.resource_name, p.limit ↵
распараллеливания DML-операций: Insert, Update, Delete, from dba_profiles p, dba_users u ↵
where u.profile=p.profile ↵
Merge, особенности и ограничения процессов распаралле- and resource_name ='SESSIONS_PER_USER' ↵
ливания обычных (не секционированных) таблиц [1]. Во вто- and u.username='AIF';
рой части разберемся с возможностями Oracle по распа-
раллеливанию DML-операций секционированных таблиц. где в username подставляется имя схемы пользователя.
Также осветим вопросы распараллеливания SQL-запросов При этом на профиль пользователя накладывает ограни-
(parallel query) и распараллеливания DDL-операций (таких чения ресурсов только в том случае, когда параметр иници-
как Create tables, Create index и Rebuild index). Рассмотрим ализации Resource_limit установлен в true. Увидеть значение
возможности использования параллелизма при сборе ста- параметра инициализации можно из запроса:
тистики таблиц и индексов.
На степень параллелизма существенное влияние оказы- Select name,value from v$parameter where name='resource_limit';
вает ряд таких факторов, как число процессоров на серве-
ре, значения параметров инициализации экземпляра базы Параметры параллелизма на уровне сессии
данных, параметры, установленные на уровне сессии, про- (сессионные параметры)
фили пользователей и их параметры ресурсов и т.д. Их можно увидеть из представления v$ses_optimizer_env че-
рез запрос:
Параметры инициализации
Они отвечают за параллелизм во всех сессиях, и их значе- Select name, isdefault, value from v$ses_optimizer_env s ↵
ния можно увидеть по запросу: where sid = sys_context('USERENV', 'SID') ↵
and name like 'parallel%' order by 1;
Как работают эти команды и их особенности описаны зировать параллелизм через указание в таблице фразы
в первой части статьи. Первая команда требует еще активи- parallel, либо через хинт parallel, либо путем выполнения пе-
зации процесса распараллеливания либо через хинт (под- ред запуском сессии команды Alter с фразой force, например:
сказка оптимизатору) Parallel, либо указанием параллелиз-
ма фразой Parallel при создании таблицы командой Create. Alter session force dml
Второй параметр Parallel_ddl_mode сообщает, что в сес- Alter session force dml parallel 32
Число секций, созданных в таблице, можно увидеть Следует учесть также, что для секционированных таблиц
по запросу: распараллеливание поддерживается в том числе для опера-
ций с секциями Move, Split и Coalesce.
Select p.* from dba_tab_partitions p where p.table_owner='AIF' ↵ Замечание. Как показала практика предпочтительнее
and p.table_name=’TARIFF' order by partition_position; указывать DOP во фразе parallel как в таблице, так и в хин-
те, поскольку число параллельных процессов по умолчанию
Если при создании таблицы во фразе parallel не указать может оказаться велико, что может привести к потере про-
степень параллелизма DOP, то в таблице при ее создании изводительности SQL-запроса.
по умолчанию появляется фраза: Увидеть результаты распараллеливания DML-операций
и SQL-запросов позволяет представление Oracle v$px_
PARALLEL (DEGREE DEFAULT INSTANCES DEFAULT) session через запрос запущенный в другой сессии:
При этом DEGREE DEFAULT говорит о том, что степень Select * from v$px_session where qcsid=241
параллелизма DOP автоматически рассчитывается Oracle
на основании параметров инициализации, в первую очередь При этом qcsid – это sid сессии, в которой запущен за-
на основании таких параметров, как Cpu_cout и Parallel_ прос, например 241, где sid можно найти по запросу:
threads_per_cpu.
При этом число задействованных параллельных процес- Select sid from v$session where audsid in ( ↵
сов на основании данных параметров рассчитывается как: select userenv('sessionid') from dual)
ORA-00054:resource busy and acquire with NOWAIT specified or При этом если в таблице есть фраза parallel, то парал-
timeout expired лелизм ввода также произойдет и без хинта со степенью,
указанной во фразе parallel команды Create.
которая сообщает, что убрать параллелизм в структуре та-
блицы пока не представляется возможным в силу работы Создание и перестройка индексов с использованием
с таблицей (надо ждать освобождения ресурсов таблицы параллельных процессов
или выполнить указанную команду, например, в период пе- Активизация параллелизма индекса при его создании и пе-
резагрузки базы данных). рестройке осуществляется либо через хинт parallel, либо че-
Следует заметить, что поддаются распараллеливанию рез указание в индексе фразы parallel при создании индекса
также следующие конструкции внутри одной команды Select: в команде Create. Если индекс уже создан, то изменить сте-
>> Distinct, >> Union и Union all, пень параллелизма в индексе позволяет команда Alter index
>> Group by, >> Cube и Rollup, имя индекса parallel степень параллелизма. При этом уви-
>> Order by, >> агрегатные функции, на- деть степень параллелизма индекса, например aif.x_buh_t,
>> Not in, пример Sum и Max. можно запросом:
Замечание. Установка описанного выше сессионно- Select degree from all_index where owner='AIF' ↵
го параметра parallel_query_mode в режим disable (от- and index_name='X_BUH_T'
Alter session force parallel query parallel 32 где степень параллелизма равна 32. Если индекс уже соз-
дан, то задать режим parallel и степень параллелизма DOP
выполняемой при запуске сессии (в команде указывается в индексе можно командой:
степень параллелизма). Фраза force инициирует паралле-
лизм выполнения запроса, что позволяет распараллеливать Alter index имя индекса parallel 32
запросы в сессии без хинта parallel или фразы parallel в та-
блице. Если после фразы parallel не указывается степень па-
Следует заметить, что при интенсивной работе с парал- раллелизма, то число параллельных процессов равно зна-
лельными запросами целесообразно иметь ненулевой боль- чению Degree default (как вычисляется, описано выше).
шой пул (large pool). Степень параллелизма индекса можно увидеть из запроса
Увидеть, что запрос выполняется в параллельном режиме, в столбце degree:
позволяет Oracle представление v$px_session по запросу:
Select degree, i.* from dba_indexes i ↵
Select count(*) from v$px_session where index_name='X_BUH_T_ISN'
помещается в журнал последовательно. Это может стать степень параллелизма DOP в пакете dbms_stats в поле
узким местом, в силу чего добавление фразы nologging по- degree=>DOP. Например, для индекса aif.x_attrib с процентом
зволяет избежать этой опасности, отказавшись от ведения сбора статистики 20 и степенью параллелизма DOP=32 ко-
журнала при создании индекса. манда сбора статистики выглядит следующим образом:
Ведение фразы parallel при создании индекса дает эф-
фект не только при создании, перестройке и сбору статисти- Execute dbms_stats.gather_index_stats ('aif', 'x_attrib, ↵
ки по индексу, но и ускорению выполнения SQL-запросов, null,20, degree=>32);
Визитка
ОЛЕГ ФИЛИППОВ,
АНТ-Информ, заместитель начальника отдела разработки, comol@mail.ru
После прочтения заголовка хочется спросить: «Зачем мне информационную систему в таких условиях, важно и нужно
это знать? Зачем заглядывать под капот машины?» Действи- понимать, как она устроена внутри.
тельно, если у вас новый автомобиль и вы ездите на нем Сразу оговорюсь, что в данной статье не буду переписы-
в городской среде на небольшие расстояния, – незачем. вать широко известную документацию о структуре таблиц
А теперь представьте, что вы участвуете в ралли: каждая БД. Эту информацию вы легко можете найти в официальных
остановка – путь к поражению, постоянные изменения ре- источниках либо воспользоваться функцией ПолучитьСтрук-
жима эксплуатации, работа в режиме 24x7, особые требова- туруХраненияБазыДанных платформы 1С или ее оформлен-
ния к скоростному режиму и расходу топлива, повышенные ными вариациями [1]. В этой статье постараемся рассмо-
нагрузки, обслуживание должно производиться «на лету». треть детали, о которых обычно не пишут.
Мне лично больше знаком второй режим эксплуатации Для начала стоит сказать, что структура хранения таблиц
информационных систем. Дело в том, что современный в БД у 1С относительно других систем имеет ряд особен-
бизнес больше похож на ралли, поэтому современные ин- ностей:
формационные системы становятся более похожими на го- >> Названия реквизитов и таблиц БД никак напрямую
ночные машины. Тут и экстремальные условия, и тонкий тю- не связаны с названиями реквизитов и таблиц метадан-
нинг, и отсутствие технологических пауз для обслуживания. ных, которые видит прикладной разработчик.
В 1С, к сожалению, для этого достаточно мало штатных >> При создании базы данных на СУБД и загрузке ее сред-
средств. Поэтому для того, чтобы успешно эксплуатировать ствами 1С названия таблиц и реквизитов могут поме-
няться. Названия таблиц и реквизитов вообще могут
поменяться произвольным образом при любых измене-
Рисунок 1 Метаданные платформы 1С
ниях метаданных 1С.
>> Вообще прямое обращение к БД является нарушением
лицензионного соглашения с 1С. Но данный пункт со-
глашения добавлен, конечно же, больше в целях отка-
за от ответственности.
Скорее всего потому, что в этом варианте достаточно лег- гурация или не обновлена и когда было последнее об-
ко адаптироваться под различные СУБД. Привязка логики новление. В 8.3 появились еще копии данных таблиц, со-
к таблицам БД все-таки требует определенной зависимо- держащие «CAS» в названии, но относятся они к работе
сти. В 1С же слой DBMS (работа с СУБД) настолько от- в модели сервиса, поэтому вряд ли кого-то всерьез ин-
делен от интерфейсного, что платформа работает почти тересуют.
(очень почти!) одинаково как на СУБД Oracle Database, >> Таблица _UsersWorkHistory, по сути, позволяет следить
так и в файловом варианте. за всеми действиями пользователя, но в оригинале ис-
Более-менее официальная информация о служебных пользуется для других целей – для удобства.
таблицах 1С содержится в специальном разделе ИТС [2]. >> Таблицы *Settings* – их название пусть вас не обманы-
Но того, что пишет 1С, недостаточно, опыт эксплуатации вает: там хранятся просто пользовательские настройки
систем на платформе 1С подсказывает, что об этих табли- для конкретных объектов, будь то отчет или форма спи-
цах нужно написать еще пару строк: ска. Раньше эти настройки сохранялись в профиле поль-
>> Таблица v8users– список пользователей. Пароли их со- зователя, где-то рядом с кэшем метаданных, но, посколь-
держатся в другом месте в зашифрованном виде. Инте- ку кэш мы периодически чистим, а пользователю очень
ресно то, что банальная очистка данной таблицы будет не нравится терять свои настройки, их вынесли отдельно
означать отсутствие пользователей ИБ, а, следователь- и, надо сказать, весьма удачно.
но, вход без пароля с полными правами любому желаю-
щему. Больше ничего особенного в базе 1С нет. Никаких хра-
>> Таблица Params– в бинарном виде содержит некоторые нимых процедур, триггеров, представлений на стороне
файлы ИБ 1С, знакомые нам еще по платформе 7.7: тут СУБД 1С не использует. Наверное, отчасти поэтому воз-
можно увидеть и users.usr (да, правильно – тот, в котором никает так много проблем со службой регистрации изме-
пароли в «условно зашифрованном» виде), и locale.inf – нений в распределенной базе, которая по сути всей своей
языковые настройки, и log.inf – настройки журнала реги- логики должна бы выполняться непосредственно на СУБД,
страции, и много чего другого. Видимо, что-то «изобре- т.е. от репликации отличаться только сложными правилами
тать» в 1С не очень хотели и по доброй старой традиции фильтрации.
сохранили файлы настроек в бинарном виде. Все прочие таблицы строятся примерно по одному прин-
>> Таблицы Config и ConfigSave. В них, собственно, в би- ципу и неплохо описаны в документации [2], поэтому разо-
нарном виде лежат те самые метаданные, о которых речь браться в них не составит особого труда.
шла выше. Таблицы интересны тем, что «падение базы Теперь, пожалуй, перейдем от просмотра к действию –
при обновлении», как правило, лечится путем манипуля- посмотрим, как 1С обращается к СУБД при запуске.
ции с этими таблицами примерно следующим образом: Для начала не помешает ознакомиться с тем, что про-
»» Очищаем ConfigSave – пробуем. исходит при запуске информационной базы. Удивительно,
»» Удаляем последнюю запись Config – пробуем. как же много всего 1С выполняет только для того, чтобы
»» Восстанавливаем резервную копию и переносим от- просто отобразить диалог выбора пользователя: в профай-
туда таблицу Config. лере MS SQL появляется примерно следующее (см. рис. 2).
»» Обязательно добавляем реквизит в какой-нибудь Вся эта куча запросов содержит примерно один и тот же
объект и повторяем попытку обновления. текст:
Если база поднялась после какого-то из этапов, следу-
ющие можно не повторять. Кроме разве что пункта (d) – exec sp_executesql N'SELECT Creation,Modified,Attributes,
его желательно выполнить в любом случае. Еще по этим DataSize,BinaryData FROM Config WHERE FileName = @P1 ORDER
BY PartNo',N'@P1 nvarchar(128)',N'a4a8693b-dc91-4762-92e6-
таблицам запросто можно определить, обновлена конфи- 35360c8768db'
В принципе из этого можно сделать два вывода: по 45 элементов. Вопрос: почему именно 45? Магическая
>> 1С все запросы выполняет через хранимую процедуру цифра? К сожалению, суть в том, что эта настройка нигде
sp_executesql (т.е. использует так называемые динами- не задается. Но стоит всегда держать в уме, сколько запро-
ческие запросы). сов «полетит» к СУБД, если вы откроете большой список
>> 1С постоянно обращается к таблице Config, нужно на большом экране и попытаетесь его быстро листать.
это или не нужно. При чтении самого элемента происходит еще больше
всего интересного: первое, что сразу бросается в глаза, –
Если пункт 1 – достаточно полезный и правильный путь, при открытии формы элемента справочника выполняется
который тем не менее мало к чему приведет, потому как ди- порядка тридцати (конечно, зависит от справочника) запро-
намически генерируемые запросы в платформе 1С все рав- сов к БД.
но оказываются очень разнообразными, а если в запросе Итак, чтобы открыть форму одного элемента справочни-
участвуют еще ограничения RLS, то шансов случайно нат- ка, 1С отправляет следующие обращения к СУБД:
кнуться на похожий запрос практически нет. >> Читает метаданные конфигурации этого справочника –
А вот пункт 2 выглядит достаточно бессмысленным, с уче- притом разные элементы.
том того, что существует еще и кэш метаданных, такое по- >> Проверяет, не наложена ли на этот справочник тран-
ведение платформы кажется более чем странным. закционная блокировка СУБД.
Таким образом, если вдруг решитесь разнести БД на раз- >> Читает кучу констант, связанных с функциональными
ные файловые группы и на разные диски – размещайте опциями, которые могут примеряться для элементов
таблицу Сonfig 1С на самые быстрые. Весит она немного, данного справочника (да, чем больше функциональных
но обращения происходят постоянно. опций, тем больше обращений к СУБД).
Покопавшись в профайлере, можно найти еще несколь- >> Читает настройки пользователя для открываемой фор-
ко интересных запросов: мы данного справочника.
>> Наконец читает сам элемент справочника.
SET LOCK_TIMEOUT 20000 >> Читает некоторые данные из связанных с ним по ссылке
элементов справочника (в основной таблице есть толь-
Вопросы, каково будет время ожидания, перед тем как «от- ко ссылка, а пользователю на экране нужно отобра-
валится» транзакция, отпали сами собой. зить наименование).
SET TRANSACTION ISOLATION LEVEL READ COMMITTED Если сравнить с логом профайлера по другим системам
(SAP, Dynamics Ax), напрашиваются определенные выводы
Весь основной функционал 1С работает на уровне изо- о неоптимальности обращений к подсистеме хранения у 1С.
ляции Read Committed. Хотя отчеты, которые мы строим Хотя SAP – другая крайность. Число обращений к СУБД ми-
в 1С, выполняются вне транзакции и могут читать Read нимизировано даже в ущерб удобству пользователя.
UnCommitted. Во всем сказанном выше стоит отметить полезный в прак-
тике момент: каждая функциональная опция увеличивает от-
SELECT TOP 2147483647 ID, Name, Descr, OSName, Changed, крытие формы на время чтения соответствующей константы
RolesID, Show, Data, EAuth, AdmRole, UsSprH из СУБД. Пользовательские настройки справочника тоже
FROM v8users WITH(READCOMMITTED)
читаются из СУБД при каждом открытии формы.
Визитка
ТИМУР ШАМИЛАДЗЕ,
руководитель, ООО «БухКонсалтинг», timurshamiladze@yandex.ru
(NS + NT/2)/N
Операция Приоритет Т APDEX
Собираем все данные в таблицу. Это и будет фиксацией Проведение документа 5 3 0.60 Очень
«Заявка на кассовый расход» плохо
исходного состояния системы, которую можно использовать
для оценки проделанных работ. Пример полученной оценки
производительности в таблице 2.
Рисунок 2. Включение и выключение замера производительности
Индекс APDEX позволит:
>> оценить состояние системы в любой момент времени;
>> оценить состояние системы после оптимизации;
>> оценить объем работ по оптимизации и приоритеты.
Воспроизведение проблемы
в однопользовательском режиме
Прежде чем использовать такие инструменты, как «Центр
управления производительностью», чтобы проанализиро-
вать проблемы, необходимо воспроизвести ситуацию в од-
нопользовательском режиме.
производительности 1С – ходимо обратить внимание (см. рис. 4). Без этого инструмен-
та получить интегральную оценку производительности было
очень сложный процесс, бы очень сложно.
но в нем можно выделить Анализ загруженности оборудования
определенные постоянные К апгрейду оборудования необходимо прибегать, только
действия,которые помогут когда точно известно, что оно не справляется с текущей
нагрузкой. Анализируют обычно работу серверов, где рас-
облегчить труд оптимизатора положены СУБД, сервер 1С:Предприятия и терминальный
сервер.
Для определения загрузки оборудования для серверов
В результате будет выдана таблица, показывающая на Windows Server можно применять утилиту Performance
в процентных и абсолютных данных самые медленные опе- Monitor.
рации, выполнявшиеся во время замера производительно- С помощью нее можно проанализировать:
сти и ту строчку кода, которая их вызвала (см. рис. 3). >> недостаток оперативной памяти;
Также при необходимости на данном этапе могут ис- >> недостаточную производительность процессоров;
пользоваться такие инструменты, как технологический жур- >> недостаточную производительность дисковой подси-
нал 1С и SQL Profiler. стемы;
Например: с помощью SQL Profiler удобно анализиро- >> недостаточную пропускную способность сетевого ин-
вать неоптимальные запросы, т.к. можно получать планы за- терфейса.
проса в графическом и текстовом представлении, а также
сами тексты запросов. Если система на 1С очень медленно работает, а обо-
рудование загружено совсем незначительно, то тут точно
Анализ данных с помощью ЦУП можно сказать, что апгрейд сервера не поможет решить
Если ситуация сложная и в однопользовательском режиме проблему.
не воспроизводится, то это проблема, связанная с парал- В таблице 3 приведены описания основных счетчиков
лельной работой пользователей. Performance Monitor и предельные значения для каждого
Так как часто такие случаи трудны для расследования, из них. При превышении этих значений следует рассмо-
то необходимо использовать такой инструмент, как «Центр треть вопрос об увеличении производительности соответ-
управления производительностью» (ЦУП), который входит ствующего компонента.
в «Корпоративный инструментальный пакет» (КИП).
1С ЦУП представляет собой отдельную информацион- Оптимизация кода конфигурации
ную базу, которая подключается, собирает и анализиру- и структуры метаданных
ет «узкие места» в исследуемой системе за выбранный После того как убедились, что выполняются все регламент-
период. ные операции и проблема не в загрузке оборудования, на-
ЦУП анализирует следующие типы проблем: ступает этап, когда необходимо оптимизировать саму кон-
>> неоптимальные запросы; фигурацию.
В этом нам помогут следующие инструменты: >> установка управляемых блокировок и др.
>> центр управления производительности;
>> замер производительности; После изменения кода конфигурации и структуры мета-
>> SQL Profiler; данных делается снова повторный замер индекса произво-
>> технологический журнал и др. дительности для того, чтобы подтвердить, что оптимизация
удалась.
Основными причинами медленной работы 1С являются: С ростом количества данных, добавлением новых пользо-
>> неоптимальная работа запросов; вателей, изменением функциональности системы необходи-
>> ожидания на блокировках; мо постоянно проверять, соответствует ли производитель-
>> взаимоблокировки. ность системы заявленным требованиям. Самое главное
в этой схеме, что она имеет точку входа, но не имеет точки
Кстати, именно поэтому 1С:ЦУП анализирует именно завершения, т.к. оптимизация – это постоянный процесс, ко-
эти параметры. торый необходимо выполнять, чтобы обеспечить и поддер-
Если наша проблема воспроизводилась в однопользова- живать хорошую производительность.
тельском режиме, то скорее всего имеется проблема с не-
оптимальными запросами, и с помощью «Замера произво-
дительности» мы его сможем найти. Хоть оптимизация производительности 1С – очень сложный
Найденный запрос можно проанализировать, посмотрев и разнообразный процесс, но в нем можно выделить опре-
его код либо план этого запроса при выполнении. деленные постоянные действия, которые помогут облегчить
В общем случае рекомендуется начинать разбор про- труд оптимизатора. EOF
блем с производительностью с анализа запросов, потому
что, если исправить неоптимальные запросы, могут исчез- [1] Описание 1С:ЦУП – http://v8.1c.ru/expert/pmc/pmc_overview.htm.
нуть проблемы с ожиданиями на блокировках и взаимобло- [2] Описание APDEX – http://www.apdex.org.
кировки. [3] Описание БСП (библиотека стандартных подсистем) – http://
По результатам анализа всех проблем могут быть приня- v8.1c.ru/libraries/ssl/index.htm.
ты различные решения, например:
>> добавление нового индекса; Ключевые слова: 1C, мониторинг, производительность, оптимиза-
>> изменение запроса в коде конфигурации; ция, запросы.
Визитка
АНДРЕЙ ПАХОМОВ,
Android-разработчик, mailforpahomov@gmail.com
Собственно, именно в целях быстрого создания конечно- придется переписывать практически весь проект с чистого
го продукта было и придумано объектно-ориентированное листа. Такая ситуация не только отодвинет выпуск долго-
программирование. Благодаря возможностям ООП можно жданных обновлений, но и летний отпуск.
за считанные дни создать с нуля приложение, которое за- Разработчики часто сталкиваются с похожими задачами,
няло бы гораздо более длительное время при функциональ- которые уже были успешно решены в предыдущих проек-
ном программировании. тах. Опыт решений однотипных проблем позволил вырабо-
тать своего рода архитектурные шаблоны ООП кода – иначе
Паттерны говоря, паттерны проектирования.
Проблема создания поддерживаемого кода, наверное, Сегодня мы разберем один из самых популярных паттер-
существует столько же, сколько и само программирова- нов – паттерн Наблюдатель. Он настолько удобен, что в не-
ние. Поскольку ООП-разработка существенно упрости- которых ООП-языках доступна его готовая реализация, бо-
ла сам процесс написания кода, основной задачей ста- лее того, во многом благодаря ему появился новый стиль
ло грамотное планирование архитектуры приложения. разработки мобильных приложений.
Использование ООП возлагает на разработчика большую
ответственность за продумывание общей структуры прило- Наблюдатель
жения – того, как будут организованы связи между класса- Наш журнал уже не раз (статьи [1] и [2]) писал о потоках
ми или объектами. и сервисах в Android, которые позволяют параллельно
При написании классов большую роль играет так на- в фоне выполнять какие-то операции. Даже в совсем ма-
зываемая связность кода – то, насколько сильно исходные леньких программах может возникнуть ситуация, когда
коды задействованных классов переплетены между собой. работа одного объекта или группы зависит от состояния
В процессе развития приложения некоторые функции мо- какого-то другого, параллельно выполняющегося процесса.
гут быть существенно переделаны или вообще исключены, К примеру, может возникнуть потребность постоянно сле-
а также добавлен ранее не запланированный функционал. дить за тем, что печатает пользователь, и выводить на экран
В погоне за временными рекордами легко написать Java- дополнительную информацию.
код, который будет практически невозможно поддержи- Именно для такого случая создан паттерн проектирова-
вать в следующих версиях приложения, в худших случаях ния Наблюдатель: он позволяет организовать между объек-
тами связь «один ко многим», то есть при изменении состоя-
ния одного объекта будут вызваны методы других объектов.
Рисунок 1. Схема паттерна Наблюдатель
Объект, данные в котором могут измениться в любой мо-
мент, называется Observable (субъект наблюдения), а один
или несколько объектов, ждущих обновлений, – Observer
(подписчики). Для организации связи субъекту Observable
требуется указать, кто именно будет за ним наблюдать,
и при обновлении данных Observable подаст сигнал подпис-
чикам, и те, в свою очередь, выполнят требуемые действия.
Система мониторинга
Паттерн Наблюдатель может существенно облегчить созда-
ние системы по мониторингу состояния ресурсов. Создадим
При использовании
Теперь приступим к написанию кода подписчиков. Для от-
правки СМС создадим класс SmsSender, а в нем реализуем
паттерна Наблюдатель
интерфейс Observer. нужно внимательно следить
public class SmsSender implements Observer {
за жизненным циклом
объектов,участвующих
Для работы паттерна нам нужно переопределить метод
onUpdate, который вызывается каждый раз, когда в субъек-
в обработке данных
те наблюдения происходят какие-либо изменения.
Остается добавить, что при использовании такого пат-
@Override терна нужно внимательно следить за жизненным циклом
public void update(Observable observable, Object data) ↵ объектов, участвующих в обработке данных: наблюдаемый
{sendSms();}
субъект ничего не знает о состоянии своих подписчиков
и будет рассылать сообщения каждому из них бесконечно.
Отправлять сообщения возможно, используя класс Возможна ситуация, когда какой-либо из подписчиков будет
SmsManager. Он позволяет отправлять SMS и MMS-сообще- уничтожен, а затем создан заново и опять подписан на по-
ния и даже поддерживает отправку SMS на определенный лучение сообщений. В результате у субъекта наблюдения
порт – это был когда-то популярный способ сетевого взаи- будет постоянно расти число подписчиков и, как следствие,
модействия между приложениями. Отправить сообщения со- количество рассылаемых сообщений – такое поведение
всем несложно: достаточно создать объект, а затем вызвать приводит к утечкам памяти и нестабильной работе прило-
нужный метод, указав номер телефона и текст сообщения. жения.
Для отмены подписки требуется вызвать метод delete Но такой подход к разработке требует большого вни-
Observer. Поскольку в языке Java нет деструкторов, то раз- мания к каждому участку кода. Синхронизация состояний,
работчику придется самостоятельно выбрать момент, когда обработка ошибок, контроль утечек памяти – все эти проб-
можно будет отписать объект от получения новых уведом- лемы могут привести к нестабильной работе приложений.
лений. К счастью, в мире мобильной разработки полно энтузиа-
стов, которые создают решения для самых сложных задач.
netRqv.deleteObserver(smsSender);
ReactiveX
Разрабатывать Android-приложение со сложной логикой,
Реактивное программирование большим количеством сетевых запросов, пользовательским
Пользователи мобильных устройств требуют от разработ- интерфейсом и анимацией не так легко. В таких ситуаци-
чиков создавать такие продукты, которые будут работать ях следует внимательно следить за каждым параметром,
плавно, красиво и, самое главное, мгновенно. Связать что может превратить разработку в каторгу. Набор библио-
все эти составляющие возможно только при максимальном тек ReactiveX позволяет скинуть часть проблем на реализо-
использовании ресурсов устройства. ванные в ней классы и заняться творчеством.
Создатели этой библиотеки объединили паттерн Наблю-
датель с многопоточными вычислениями. Вполне вероятно,
Реактивное программирование – что хороший программист сможет самостоятельно генери-
это следствие использования ровать потоки, написав свой вариант Observer и Observable,
но создание вспомогательного кода и его тестирование могут
паттерна Наблюдатель занять приличное время, а по сути в самом проекте практи-
и дополнительных потоков чески ничего не изменится. Использование такого проверен-
ного инструмента, как ReactiveX, позволит существенно сэ-
кономить время, избежать ошибок и повысить качество кода.
В мире разработки мобильных приложений популярность
набрал тренд под названием «реактивное программирова- Библиотека RxJava
ние». Этот подход подразумевает создание клиент-сервер- ReactiveX доступен для всех популярных языков высокого
ного приложения с максимально широким использованием уровня. В статье будут приводиться примеры кода на языке
многопоточного программирования. Вычисления поделены Java, поэтому мы станем говорить об адаптации этой библи-
на блоки, каждый из которых обрабатывается в отдельном отеки под названием «RxJava» [3].
потоке, при этом между блоками организован постоянный RxJava создана для обработки реакций на происходящие
обмен данными. события, а также облегчения взаимодействия между объек-
По сути, реактивное программирование – это следствие тами при многопоточной разработке. Использование этой
использования паттерна Наблюдатель и дополнительных библиотеки во многом упрощает решение проблем, возни-
потоков. Объединение двух этих технологий позволило су- кающих при использовании в Android-проектах многопоточ-
щественно ускорить разработку приложений и задейство- ности и асинхронных запросов. Уже знакомый нам паттерн
вать всю мощность процессоров мобильных устройств. Наблюдатель существенно расширен и дополнен несколь-
кими полезными функциями.
Рисунок 2. Подключение RxJava через Gradle Библиотека RxJava состоит из нескольких классов, раз-
беремся, чем же они могут нам помочь. Разбирать работу
библиотек лучше на практике, поэтому расширим функцио-
нал приложения по мониторингу с помощью новых возмож-
ностей. Но для начала нужно подключить модули библиоте-
ки в Android Studio. Для ее использования через сборщик
Gradle нужно подключить еще один репозиторий.
@Override Observable.just(JsonObject.create()). ↵
public void onNext(Object o) { subscribeOn(Schedulers.newThread())...
notify.showNotification();
smsSender.sendSms();}});
Модуль работы с многопоточностью был разделен
Вообще философия RxJava состоит в организации глу- на несколько частей, требуется также добавить через
бокой обработки данных, поступающих из субъекта наблю- Gradle-библиотеку RxAndroid.
дения. Для этого уже реализовано несколько десятков ме-
тодов, которые помогут организовать фильтрацию данных, compile 'io.reactivex:rxandroid:1.1.0'
поступаемых из Observable.
Продолжим работу над проектом по мониторингу сете- Теперь есть возможность задействовать класс
вых ресурсов и воспользуемся инструментами фильтрации. AndroidSchedulers, который позволит легко вернуть резуль-
Проверку сетевой доступности разумно производить по- таты вычислений в пользовательский интерфейс.
стоянно, и в классе Observable есть все для периодическо-
го запуска субъекта наблюдения. Сервер по адресу server. Observable.just(mathOperation). ↵
addr будет проверяться бесконечно с интервалом в 5 се- subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
кунд – это удалось организовать с помощью методов repeat .subscribe(new Action1<Integer>() {
и delay. @Override
public void call(Integer integer) {
textView.setText(integer.toString());}});
Observable.just(new NetworkFunc(). ↵
isServerOnline("server.addr"))
.delay(5,TimeUnit.SECONDS).repeat(). ↵
subscribe(new Subscriber() {... Популярность мобильных приложений растет с каждым
днем. Все больше людей довольствуются только носимыми
Также тут доступна гибкая предобработка событий, про- устройствами, и, возможно, уже очень скоро традиционные
исходящих с Observable: их возможно частично отбрасы- компьютеры будут востребованы исключительно специали-
вать, объединять или отбирать на основе математических стами.
условий. Если сетевой модуль будет регистрировать время Инструментов для разработки для Android и iOS стано-
ответа от сервера, то мы можем реагировать только на са- вится все больше, главным образом благодаря расшире-
мые длительные паузы в ответах – в этом поможет метод нию количества доступных библиотек. Они существенно
filter. упрощают задачи, которые совсем недавно были под силу
только опытным программистам.
.filter(new Func1<Integer, Boolean>() { Сегодня мы посмотрели набор библиотек ReactiveX, ко-
@Override торый доступен для всех популярных платформ и уже стал
public Boolean call(Integer integer) {
return integer>90;} привычным для большинства разработчиков. Если вам еще
не приходилось работать с RxJava, уверен, теперь вы за-
В некоторых случаях паттерн Наблюдатель требуется ор- хотите воспользоваться этой библиотекой в своих проектах.
ганизовать для проверки выполнения одного-единственного Новые технологии могут сделать жизнь лучше, нужно только
условия, тогда целесообразно использовать класс Single. верить в себя. Удачи! EOF
Синтаксис работы с этим классом одинаков с Observable,
отличие только в обработке событий – реакция на данные [1] Пахомов А. Современное клиент-серверное приложение
из субъекта наблюдения отлавливается всего двумя метода- для Android. // «Системный администратор», №12, 2015 г. –
ми: onSuccess и onError. С. 44-47 (http://samag.ru/archive/article/3096).
[2] Пахомов А. Отображение систематизированных данных
Single.just(new NetworkClient("a").getRequest())... в Android. // «Системный администратор», №10, 2015 г. – С 58-
61 (http://samag.ru/archive/article/3050).
Многопоточность [3] Страница RxJava – https://github.com/ReactiveX/RxJava.
Скорее всего для улучшения производительности при-
ложения вам понадобится запустить все вычисления Ключевые слова: Android, паттерны проектирования, реактивное
в отдельном потоке, а потом вернуть результат обратно программирование.
Визитка
АННА СЕРГЕЕВА,
старший специалист службы обеспечения качества Alloy Software Inc., annserge@rambler.ru
Автоматизируем отчетность
по Cucumber-тестам в ExtentReports
Технология Cucumber позволяет не только совмещать спецификации на разработку
и тестирование продуктов в одном источнике, но и удобно настроить автоматическое
генерирование отчетов о прохождении таких тестов
Cucumber и с чем ее едят дефектов, затрачивая при этом минимум усилий, избегая
В последнее время среди инструментов автоматизации про- ручного труда и высвобождая время высококвалифициро-
ектирования, разработки и тестирования ПО все большую ванных специалистов на решение не менее актуальных,
популярность набирает технология Cucumber. но более сложных рабочих задач.
Главная ее особенность заключается в возможности Вместе с тем для представления текущей ситуации
выражать поведение программы естественным языком по разрабатываемому проекту и принятия управленческих
(gherkin) [1]. Таким образом, легко достигается более высо- решений постоянно возникает необходимость документиро-
кий уровень взаимного понимания и тесного сотрудничест- вания результатов проводимого тестирования. То есть, по-
ва между разработчиками, тестировщиками и заказчиками, мимо настройки запуска автоматических тестов, тестиров-
ведь вся спецификация продукта и его тестовая документа- щики обязаны регулярно формировать производственные
ция, по сути, являются одним и тем же документом. отчеты, которые публикуются на внутренних сетевых ресур-
Регулярная автоматическая прогонка таких тестов дает сах и в качестве официальных внутренних документов ком-
уверенность в непрерывном соответствии кода специфи- пании предоставляются руководству. Разумеется, создание
кации и в отсутствии в нем значительного числа критичных таких отчетов также следует автоматизировать. В данной
статье пойдет речь о том, как генерировать отчеты о про- Тем не менее существует и успешно используется в авто-
хождении Cucumber-тестов в автоматическом режиме. матизации тестирования специально разработанный плагин
CucumberExtentReporter. Его исходный код доступен на ре-
Как вести отчетность для Cucumber-JVM? сурсе [4].
Технология Cucumber имеет ряд реализаций, среди которых
распространение получила Cucumber-JVM [2]. Она предна- Подключение CucumberExtentReporter в проект
значена для наиболее популярных языков виртуальных ма- Если для сборки проектов запуска тестов применяется
шин Java (JVM), таких как Java, JavaScript, Groovy, Jython, фреймворк Apache Maven, то следует добавить в файл
Jruby и т.д. описания проекта pom.xml зависимость от внешней биб-
Каждый тестировщик, работающий с Cucumber-JVM, лиотеки, которая будет генерировать пользовательские
рано или поздно сталкивается с вопросом: как же настроить отчеты:
формирование пользовательских отчетов, например, в од-
ном из самых распространенных форматов – HTML? Можно, <dependency>
конечно, потратить время на изучение и исследование мно- <groupId>com.vimalselvam</groupId>
<artifactId>cucumber-extentsreport</artifactId>
жества деталей и реализовать собственный генератор отче- <version>1.0.0</version>
тов, поместить его в библиотеку и в таком виде подключать </dependency>
к своим тестовым проектам. Однако существуют и готовые
решения, экономящие время и бюджет, поскольку многие Если Apache Maven для сборки проекта не используется,
из них находятся в открытом доступе. можно скачать jar-файл с сетевого ресурса [5] и добавить
путь к нему в значение переменной CLASSPATH.
Готовый вариант – библиотека ExtentReports
Одним из наиболее доступных решений является исполь- Настройка параметров класса запуска
зование готовой совместимой библиотеки с открытым ис- При использовании Cucumber-JVM создается класс запуска
ходным кодом ExtentReports. Она реализует автоматическое тестов (раннер), в который нужно добавить параметры ис-
создание html-отчетов о прохождении тестов на таких плат- пользования плагина.
формах, как Java, .Net и Ruby [3]. По умолчанию без указания аргументов для Extent
Помимо свободного распространения, ее достоинство CucumberFormatter отчеты будут создаваться в директории
еще и в том, что итоговые сгенерированные документы {project directory}/output/Run_{timestamp}/report.html.
включают достаточно детальное описание результатов
обработки. Именно то, что представляет интерес для QA- @RunWith(Cucumber.class)
специалистов. К тому же удобный для восприятия формат @CucumberOptions(plugin = ↵
{"com.cucumber.listener.ExtentCucumberFormatter:"})
отображения данных по достоинству оценят руководители public class RunCukesTest {
продуктов и проектов разработки ПО. }
На рис. 1 приведен пример сгенерированного отчета.
Результаты логически сгруппированы по закладкам Здесь важно следить за указанием символа двоеточия
и отображаются в виде таблиц с настаиваемой фильтраци- в конце значения, поскольку это обязательное требование
ей, а также в виде линейных и круговых диаграмм. Cucumber.
Отображаются данные об общем количестве тестов (Total Также можно размещать генерируемые отчеты в любом
Tests/Total Steps) с разбиением на диаграммы, в зависимо- другом месте, конкретно указав его в значении параметра
сти от статуса результата (общепринятые варианты: Pass/ ExtentCucumberFormatter:
Fail/Fatal/Error/Warning/Info/Skip/Unknown) и с отображением
общего показателя успеха прохождения всего тестового на-
бора (Pass Percentage).
Таблица 1. Набор ключей командной строки для запуска ExtentMerge
Приводятся метрики общего времени суммарного и теку-
щего прогона тестов (Total Time Taken (Overall /Current Run),
время старта и завершения обработки (Start/Stop). Ключ Описание
Дополнительно также доступна информация о тестовой -h, --help Доступ к помощи по работе с приложением
среде (Environment) и об обработанных категориях тестов -v, --version Отображение текущей версии приложения
(Categories). -css Указание встроенного CSS-скрипта
-css-file Путь к пользовательскому CSS-скрипту
Объединяем возможности ExtentReports
и Cucumber -dir Директория размещения набора html-отчетов,
сгенерированных в ExtentReports
На многих профессиональных форумах можно найти об-
суждение специфики использования ExtentReports в качест- -from Начальная дата сбора данных
ве перехватчика (listener) для Java-тестов, обрабатываемых -html Конкретный html-отчет, сгенерированный в ExtentReports
во фреймворке TestNG. -js Указание встроенного JS-скрипта
Что же касается взаимодействия с виртуальной ма- -js-file Путь к пользовательскому JS-скрипту
шиной Java, Cucumber-JVM, применяемой для обработки
-out Путь к итоговому файлу с расширением .html
Cucumber-кода, полезную информацию отыскать значи-
-to Конечная дата сбора данных
тельно сложнее.
java -jar extentmerge.jar -dir "location" -out "extent.html" ↵ тестов и по статусу результата (Reports/Analysys (Last 5 Runs),
-css-file "css.css" и указаны обработанные категории тестов (Categories).
К моменту написания статьи ExtentX Server находится
или: на завершающей стадии реализации и доступен только
для ознакомления [6].
java -jar extentmerge.jar -dir "location" -out "extent.html" ↵ Однако современные темпы разработки ПО, особенно
-js-file "script.js" что касается всевозможных утилит и плагинов с открытым
исходным кодом, позволяют смотреть в будущее с опреде-
Или использовать встроенный скрипт, прописав его не- ленным оптимизмом. Не исключено, что к моменту публика-
посредственно в командной строке: ции данной статьи ExtentX Server уже будет завершен и до-
ступен для полноценного использования.
java -jar extentmerge.jar -dir "location" -out "extent.html" ↵
-css ".tag { display: none; }"
Визитка
АЛЕКСАНДР КАЛЕНДАРЕВ,
РБК Медиа, программист, akalend@mail.ru
Как уже говорилось в предыдущих частях статьи [1, 2], должен быть парный закрывающий, а одиночный тег должен
в Hack запрещен закрывающий скриптовый тег ?>. В ос- включать закрывающий слеш (<br />).
нове современного веб-приложения лежит MVC-концепция Например, следующая конструкция:
(Модель-Представление-Контроллер). За слой Представле-
ние (View) отвечает специальный модуль, который называют echo <p><strong>Hello {$word}</strong>!;
«шаблонизатор». Так как же нам построить шаблонизатор,
если запрещен закрывающий скриптовый тег ?>. (отсутствует закрывающий тег </p>) даст ошибку:
Что за зверь XHP? Fatal error: XHP: mismatched tag: 'p' not the same as 'p' in
Разработчики Hack придумали альтернативный шаблони- test.php on line
echo "<p><strong>Hello $word </strong>!</p>"; В-четвертых, используя объектную модель (DOM), можно
динамически строить необходимые HTML-конструкции.
А вывод, используемый в XHP, будет следующим: И, в-пятых, можно самому придумывать пользователь-
ские теги, вроде пользовательских компонент в ASP.NET.
echo <p><strong>Hello {$word}</strong>!</p>;
Пользовательские элементы в Hack
С точки зрения грамматики изменения не принципи- Рассмотрим эти элементы более подробно. Первоначально
альны. В синтаксисе РНР при выводе свойств объектов необходимо проинсталлировать XHP-элементы. Это мож-
или элементов массивов присутствуют фигурные скобки. но сделать с помощью composer. Составим composer.json
Здесь при использовании XHP мы видим только отсут- файл:
ствие двойных кавычек. Но разве только в этом разница?
И что дает нам XHP? {
Во-первых, весь ввод/вывод будет автоматически про- "require": {
"facebook/xhp-lib": "~2.2"
верен и все опасные символы будут заменены на escape- }
последовательность и обратно. То есть использование }
для ввода функции htmlspecialchars() будет проходить авто-
матически. и запустим:
Во-вторых, XHP подразумевает построение HTML-стра-
ницы по правилам XHML: на каждый открывающий тег hhvm composer
Некоторые конструкции,
на которых построены
популярные РНР-фреймворки,
в Hack не работают
Если появился каталог vendor/facebook/xhp-lib, то все ком- При запуске наш скрипт сгенерит следующий вывод:
поненты XHP проинсталлированы и готовы к использова-
нию. Включаем классы директивой: <form id="4e496c8eeb" method="post" action="http://www.
example.com" class="postLink"><a href="#" id="4e496c8eeb"
onclick="document.getElementById("4e496c8eeb").
include 'vendor/autoload.php'; submit(); return false;">переход через POST запрос</a></form>
Все элементы XHP являются экземплярами XHP-класса, Что мы видим в этом примере? Во-первых, мы как бы соз-
которые от остальных Hack-классов отличаются тем, что они дали новый HTML-элемент <a:post/>. Данный элемент явля-
должны начинаться с символа двоеточия «:» и являются по- ется потомком класса x:element.
томками базового класса :xhp. Все объекты XHP могут иметь атрибуты:
Рассмотрим такой пример (ex1.php):
echo <input type="button" name="submit" value="Нажми меня" />;
include 'vendor/autoload.php';
final class :a:post extends :x:element { Как мы еще заметили в первом примере, в отличие от РНР
attribute :a;
use XHPHelpers; вывод XHP-элементов не заключается в кавычки, а двойные
кавычки используются для значения атрибутов.
protected function render(): XHPRoot {
В выводе XHP-элементов могут присутствовать методы:
$id = $this->getID();
Построение стандартной веб-страницы может быть раз- Пользовательский элемент <bottom /> содержит ту часть
делено на три пользовательских тега: HTML-тегов, которая отвечает за вывод нижней части веб-
страницы. Как правило, это копирайт, некоторые ссылки
echo на общие страницы, социальные кнопки, счетчики.
<html>
<top description="{$page->description}" ↵
title="$page->title}" /> И немного практики
<body> Самое интересное – это разработка контентной страницы.
<content id="{$page->id}" type="{$page->type}" />
Пусть мы имеем два типа контентной страницы: страни-
<bottom/>
</body> ца каталога и страница товара, и эти типы будут отличать-
</html>; ся частью url: www.host/catalog/category-name и www.host/
goods/goods-name. Это обычная практика использования
Первоначально рассмотрим, как реализован пользова- ЧПУ (человекопонятный url). Пусть где-то в коде мы разби-
тельский тег <top/>. В наиболее простом варианте в верх- раем переменную $_SERVER['REQUEST_URI'] и передаем
ней части страницы находится тег <header>, содержащий в класс page разобранный список в виде массива (разбор
в себе: $_SERVER['REQUEST_URI'] функцией explode).
Визитка
АЛЕКСАНДР МАЙОРОВ,
Tutu.ru, руководитель отдела Frontend-разработки, alexander@majorov.su
В JavaScript появилась
возможность работать
с декораторами
в функциональном стиле
Процесс инициализации в данном примере не очень удо- if (typeof obj != 'function') continue;
бен. Мы могли бы вынести код в некоторую функцию деко- newObj = new obj(newObj);
}
рирования, которая сама создавала новые задекорирован-
ные объекты. Как-то так: return newObj;
}
function decorate<T>(...args) :T { И тут вот есть уже различия, так как синтаксис похож
let target = args.shift(); и вроде бы смысл одинаков, но в Python – это декораторы,
args.map((decor) => decor.apply(target));
return target; а вот в Java – аннотации.
} На сегодня JavaScript тоже не исключение. Данный опе-
ратор есть в стандарте ES. Ранее поддержка синтаксиса
var coffee = new Coffee();
var myCoffee = decorate<Coffee>( декораторов была заявлена в стандарте ES7, который был
coffee, переименован в ES 2016. На сегодня реализация находится
milkDecorator,
whipDecorator,
в стадии stage 1, а это значит, что в стандарт ES 2016 деко-
sprinklesDecorator раторы не попадают. Поэтому мы говорим «ES Декораторы»
); или «ES.Next Декораторы». При этом синтаксис декорато-
console.log(myCoffee.getCost());
ров добавлен в TypeScript, и там они живут своим жизнен-
ным циклом и имеют небольшие отличия от API декораторов
в Babeljs.
Код примера приведен не на чистом JavaScript, Основная задача оператора декорирования – это предо-
а на TypeScript. В принципе пример справедлив ставление удобного инструмента для расширения функци-
и для ES2016 с применением аннотации типов Facebook Flow ональности объекта без использования механизма клас-
и транспайлером Babeljs. сического наследования. Следовательно, декораторы
Получилась универсальная функция декорирования лю- необходимо использовать, когда требуется реализовать
бого объекта. По сути, мы меняем содержимое созданного много независимых расширений и не создавать множество
объекта, не используя наследование. подклассов, что может привести к большой сложности сис-
темы.
Про Angular 2 и не только Так как синтаксис декораторов пока находится в экспе-
Фреймворк Angular получил широкую популярность, и поэ- риментальных стадиях, то в Babeljs их можно включить вот
тому разработчики решили выпустить вторую версию, улуч- таким образом:
шенную. В качестве основного языка для фреймворка вы-
бран, как ни странно, TypeScript. Если зайти в документацию $ npm install babel-plugin-transform-decorators
Angular2 сегодня, сразу бросается в глаза пример «Hello Usage:
{
world!», где мы видим код такого вида: "plugins": ["transform-decorators"]
}
import {Component} from 'angular2/core';
В TypeScript для этого требуется аргумент (или запись
@Component({
selector: 'my-app', в tsconfig.json):
template: '<h1>My First Angular 2 App</h1>'
})
--experimentalDecorators
export class AppComponent { }
С точки зрения синтаксиса выглядит все достаточно про-
Есть некоторый когнитивный диссонанс. У нас есть класс, сто. Каждый вызов декоратора начинается с символа @.
но в нем нет никакой реализации. При этом перед классом
вызов какой-то функции (а это похоже на вызов функции), ES DECOR@TOR
но перед ней стоит символ @. Сразу непонятно, как рабо- Если бы нам надо было дать определение, что такое ES Де-
тает этот код. коратор, то мы могли бы сказать следующее:
Или же открываем документацию на библиотеку Redux ES Декоратор – это выражение, принимающее на вход
и видим там такой пример: аргументы target, key и descriptor и возвращающее дескрип-
тор, функцию или ничего. Оператор декорирования исполь-
import { connect } from 'react-redux'; зуется для:
>> Декорирования.
@connect(mapStateToProps, mapDispatchToProps)
>> Аннотирования.
export default class MyApp extends React.Component {}
Разница заключается в работе с целевым объек-
Опять не совсем понятно, как это работает и почему. том (target). Если декоратор меняет поведение объекта,
то это называется декорирование. Если декоратор исполь-
Оператор декорирования зуется для добавления дополнительных полей и информа-
Пока мы поняли, что декоратор – это удобный способ изме- ции, не меняющих поведение оригинального объекта, то та-
нения поведения некоторой функции, класса или объекта, кое действие называется аннотированием. Сами данные,
а также добавления различных метаданных. Для того чтобы добавляемые таким способом, называются метаданные.
декораторами можно было удобно пользоваться, в некото- Аннотации – способ добавления метаданных к объявле-
рых языках программирования есть специальные операто- нию класса для использования во внедрении зависимостей
ры. К примеру: или директивах компилятора.
>> Java– объявление аннотации; Аннотации были предложены командой разработки языка
>> Python– объявление декоратора. AtScript из Google, но они не входят в стандарт. Декораторы
были предложены в качестве стандарта в ES7 для измене- Возвращает функция дескриптор или ничего. Дескрип-
ния классов и свойств на этапе разработки. тор представляет собой объект конфигурации. Он достает-
С точки зрения разработчика у аннотаций и декораторов ся с помощью метода Object.getOwnPropertyDescriptor.
абсолютно одинаковый синтаксис. Отличие в том, что раз- API декоратора метода одинаково работает как в Babeljs,
работчик не контролирует то, как аннотации добавляют ме- так и в TypeScript.
таданные в код. Примеры декораторов методов. Когда программисты
Декораторы можно рассматривать как интерфейс для по- узнают о новых возможностях языка и новый синтаксис,
строения чего-то, что ведет себя, как аннотации. не сразу понятно, какой можно получить профит. Вроде бы
и без «собачки» могли делать декораторы. Но если взгля-
Что можно декорировать нуть на Java или другие языки, то идей набирается с лихвой.
>> Классы– @decorate class A {} Допустим, в Java есть такая аннотация, как @override.
>> Методы– class A { @decorate foo(){} } Она используется как подсказка компилятору при пере-
>> Свойства– class A { @decorate foo = 1; } определении метода. В JavaScript нет абстрактных классов
>> Аргументы– class A { foo(@decorate a){} } и методов. В TypeScript есть абстрактные классы и методы.
Но не все используют TypeScript. Итак, мы могли бы описать
Декоратор класса декоратор, проверяющий, был ли переопределен метод
Самый простой декоратор. Перед определением класса пи- или он вызывается в родительском классе:
шем имя функции декоратора с символом @:
class BaseComponent {
@classDecorator class A { } @override
render(){}
function classDecorator(target) {} }
Если продолжать идеи для декораторов методов, В примере, как видите, была изменена конфигурация де-
то мы могли бы описать декоратор для мемоизации, обяза- скриптора. Теперь при попытке изменить свойство будет вы-
тельных аргументов и много чего еще. брасываться исключение.
} Фабрика декораторов
Как говорилось мною ранее, декоратор может вернуть
Во-первых, в Babeljs есть метод для получения значения функцию. Это делается в случае реализации фабрики де-
по умолчанию, чего нет в TypeScript. В TS это придется де- коратора:
лать через реализацию геттеров и сеттеров.
Во-вторых, декоратор в TypeScript принимает только два function Factory(...params){
аргумента. Третьего – дескриптора – нет. При этом вы так- // do anything with params
return function Decorator(target, key, descriptor){
же можете вернуть дескриптор из метода, но вам придется // decorate or annotate target
его создать. // or descriptor
В-третьих, в Babeljs нет разницы при работе как со ста- // return any
тическими, так и не статическими свойствами и методами, }
}
в отличие от TypeScript.
В таком случае в декоратор можно передать любое коли- @type mixBar(@cast `int` arg :any) :number {
чество аргументов. При этом фабричная функция возвра- return this.bar + arg;
}
щает функцию декоратор, подчиняющуюся всем правилам,
описанным ранее. @type({
'arguments' : ['string', 'number'],
Пример фабричного декоратора:
'return' : 'string'
})
@Component({ someDo(a :string, b :number) :string {
selector: 'my-app' return a + b;
template: '<h1>My angular :)</h1>' }
})
class MyComponent {} // return type string
@type `string` static someDo(@tstring a :string, ↵
@tnumber b :number) :string {
В Angular2 почти все декораторы представляют собой return a + b;
фабрики. }
}
Нина Романчева:
«Совместная подготовка ИT-специалиста в паре
вуз – предприятие – это требование сегодняшнего дня»
В гостях у «Системного администратора» – декан факультета прикладной математики
и вычислительной техники МГТУ ГА, кандидат технических наук, доцент Нина Романчева
были представлены результаты двух аспирантских и пяти – Несколько слов о положении со специалистами граж-
студенческих работ, часть которых выполнялась в команде. данской авиации в отрасли. Есть ли проблемы с нехват-
кой/переизбытком специалистов, выпускников вуза. Ка-
– Принято считать, что ИТ-знания, полученные в институ- кой «вес» имеет блок ИТ-специальностей среди прочих?
тах, сильно отстают от требований времени. Так ли это? – Из общения с нашими выпускниками, занимающими в на-
– Не совсем согласна. «Информация устаревает в момент стоящее время руководящие должности в ИT-сфере, можно
ее возникновения» – эту фразу знает каждый студент, об- сказать, что есть проблемы с квалифицированными специ-
учающий по ИT-направлению. Для ИT – это естественный алистами: ИT-технологами авиакомпаний, специалистами
процесс. Быстро меняющаяся часть любой технологии – в области электронной коммерции, аналитиками, архитек-
это средства технологии. Поэтому главное – хорошие ба- торами информационных систем. Сегодня можно говорить
зовые знания и способность к освоению новых технологий. и о необходимости SEO-специалистов.
Ведь невозможно предугадать, с чем именно будет работать В каждой организации определен собственный подход
выпускник, какая именно СУБД, какой язык или система и роль ИТ-службы. ИТ-блок в большинстве случаев позици-
программирования потребуются через год, два. Но все ба- онируется как сервисная организация, предоставляющая
зовые принципы, подходы, методы, на которых построены сервисы по информатизации бизнес-подразделениям ком-
современные технологии, – это неотъемлемая часть обра- пании. Отсюда и вес, и требования к специалистам полу-
зовательного процесса МГТУ ГА. Выпускник должен знать чаются разными. Единой метрики нет. Разрабатываемые
и иметь ключевые навыки. Обращаясь к аллегории: в вузе профессиональные стандарты, в том числе АПКИТ, помогут
учат пользоваться удочкой для ловли рыбы, а не просто по- в решении данной проблемы. EOF
дают рыбу. И не важно, из чего и как сделана удочка, важен
принцип ловли. Вся информация о вузе – на сайте http://www.mstuca.ru.
Борис Елисеев:
«Мы хотим сделать университет «экспертным
институтом» Федерального агентства воздушного
транспорта»
Борис Елисеев, доктор технических наук, доктор
юридических наук, профессор. Почетный профессор
Технологического университета Нинбо (КНР). Член Коллегии
Росавиации. С 1999 по 2007 год – заместитель
генерального директора авиакомпании «Аэрофлот»
по правовым вопросам. С 2007 года и по настоящее время
возглавляет Московский государственный технический
университет гражданской авиации (МГТУ ГА)
Подходя к своему 45-летию, МГТУ ГА числе в форме дистанционного и от- Наша стратегия развития предус-
разработал стратегию развития на пе- крытого обучения. матривает укрепление позиций МГТУ
риод 2016-2030 годов, главная цель ко- МГТУ ГА планирует предоставлять ГА как центра компетенции в области
торой – достижение мирового уровня каждому студенту возможности фор- гражданской авиации, а также в меж-
по основным направлениям деятель- мирования индивидуального профи- дународном образовательно-научном
ности вуза. ля компетенций посредством выбора сообществе. Мы хотим сделать универ-
Стратегия МГТУ ГА предполагает собственной образовательной тра- ситет опорным центром принятия и ре-
развитие инновационного подхода, ектории. Это потребует дальнейшего ализации решений в области граждан-
соединение образовательного и на- развития модульной системы орга- ской авиации на уровне Российской
учно-исследовательского процессов, низации учебного процесса, а также Федерации, своего рода «экспертным
обновление учебной и исследователь- расширения спектра предлагаемых институтом» Федерального агентства
ской лабораторной базы, активное программ дополнительного профес- воздушного транспорта.
использование интенсивных форм сионального образования, в том числе Сильными сторонами университета
обучения на основе компьютерных дистанционных. На старших курсах являются развитая филиальная сеть,
и инфокоммуникационных образо- бакалавриата и магистратуры опре- разнообразие направлений подго-
вательных технологий, расшире- деляющими формами обучения станут товки и специальностей, имидж клас-
ние спектра образовательных услуг научные семинары, различные проек- сического университета, а также вы-
за счет реализации непрерывного ты и мастер-классы ведущих ученых раженный транспортный компонент
многоуровневого образования, в том и практиков. деятельности вуза. EOF
Лариса Павлова:
«Каждый свой рабочий день я с благодарностью
вспоминаю Альма-матер»
Лариса Павлова, преподаватель МГТУ ГА.
Окончила аспирантуру МГТУ ГА в декабре 2015 года.
Сейчас завершает подготовку диссертации к защите
45 лет истории По рейтинговой оценке ВУЗов Государствен- Егорьевске, Иркутске, Рыльске, Кирсанове и Тро-
16 апреля 1971 года было подписано постанов- ным комитетом по высшей школе в октябре ицке – филиалов СПО, вследствие чего проис-
ление Совета Министров СССР «Об организации 1991 года МИИГА занял 3 место среди отрасле- ходит рост числа обучающихся в Университете
Московского института инженеров гражданской вых ВУЗов транспорта России. с почти 4000 до более чем 10000 человек.
авиации». В июле 1993 года приказом Председателя В 2015 году осуществляется переход
В начале июля 1971 года был объявлен пер- Госкомитета по высшему образованию Москов- на ГОС 3+.(федеральные образовательные стан-
вый набор студентов. В институте в первый ский институт инженеров гражданской авиации дарты нового поколения).
год его становления обучалось 2503 студента, (МИИГА) переименован в Московский государ- Сегодня Московский государственный техни-
из них 220 студентов дневного отделения и 2283 – ственный технический университет гражданской ческий университет гражданской авиации – един-
заочного. авиации (МГТУ ГА). С 2011 года Университет ственное учебное заведение высшего образо-
В июне 1981 года МИИГА отметил свое деся- переходит на подготовку бакалавров и магистров. вания, которое готовит специалистов широкого
тилетие. К этому времени институт имел 4 фа- В 2013 году была завершена работа спектра направлений для гражданской авиации
культета и 27 кафедр. по создании филиалов Университета в городах России, ближнего и дальнего зарубежья.
Мария Евинова:
«Основная цель у большинства абитуриентов
одна: получение качественного образования
по интересующей специальности»
София Барткив:
«Учиться на факультете с таким грозным,
по мнению многих моих знакомых, названием
интересно и увлекательно»
София Барткив, студентка 2-го курса факультета
прикладной математики и вычислительной техники
Визитка
ВЛАДИМИР ЗАКЛЯКОВ,
советник налоговой службы 2-го ранга
Лабораторная работа
Исследуем сокеты. Часть 2 (продолжение)
В предыдущем номере [1] были описаны цели работы, схема исследований,
устройство и подготовка лабораторного стенда, ход проведения работы и отдельные
компоненты. В данной части познакомимся с оставшимися компонентами стенда
>> -nn – отключает преобразование номеров портов в сим- >> -a условие_останова_перехвата – указывает условие,
вольные имена; при котором программа завершит своё выполнение; воз-
>> -X – задаёт вывод дампа в шестнадцатеричном и ASCII- можно задание разных условий, например по длительно-
форматах без заголовков канального уровня. Эта опция сти работы, если в качестве параметра в ключе указать
может быть очень удобна при анализе новых протоколов, duration:10, то это укажет программе завершить свою ра-
а также для просмотра передаваемых данных в рамках боту через 10 секунд после её запуска. Например, про-
данной работы; сматривание информации о приходе UDP-дейтаграмм,
>> -s xxx – указывает производить просмотр первых xxx имеющих порт получателя 1234 и адрес отправите-
байт от начала пакета (по умолчанию просматриваются ля 192.168.1.1 на интерфейсе eth0, в течение 30 секунд
лишь первые 68); с момента запуска можно осуществить командой:
>> -w имя_файла – указывает записывать все перехвачен-
ные кадры в файл в сыром (raw) виде. Указанный файл # tshark -i eth0 src host 192.168.1.1 and dst port 1234 ↵
впоследствии можно просмотреть с использованием and udp -a duration:30
Wireshark работает с подавляющим большинством из- $ ss -o state established '( dport = :http ↵
вестных протоколов, имеет понятный и логичный графи- or sport = :http )'
$ ss -o state established '( dport = :80 or sport = :80 )'
ческий интерфейс на основе GTK+ и мощнейшую систему
фильтров.
Использование графического интерфейса интуитивно 4) Отобразить все TCP-сокеты с адресом клиента из под-
понятно. Для начала захвата достаточно в окне Capture най- сети 192.168.1.0/24:
ти в списке Interface List нужный сетевой интерфейс, напри-
мер eth0, и нажать на него. $ ss -t -a src 192.168.1.0/24
После чего и начнётся процесс захвата, причём «при-
летевшие» на сетевой интерфейс пакеты (кадры, дейта- lsof
граммы) будут появляться в реальном времени, подобно Отображает список открытых файлов и псевдофайлов,
получению писем электронной почты. Имеется возможность в том числе и сокетов, как локальных, так и протоколов TCP
«щёлкнуть» на любую из строчек и открыть просмотр со- и UDP.
держимого, подобно письму электронной почты, после чего Примеры использования:
в нижней половине будут показаны структура заголовков, 1) Показать все TCP и UDP-сокеты:
представленная деревом, и побайтовое наполнение пакета,
как в hex-редакторах. $ lsof -i
# iptables -L -v -x -n --line-numbers
3) Отобразить все установленные TCP-соединения с веб-
сервером. (Соответствие названий сервисов их номерам То же самое, но только для цепочки INPUT:
согласно рекомендациям IANA смотрите в файле в /etc/
services): # iptables -L INPUT -v -x -n --line-numbers
Визитка
ИГОРЬ ШТОМПЕЛЬ,
инженер, системный администратор. Сфера профессиональных интересов –
свободное ПО, keepercoder@gmail.com
Образование в сети:
введение в программирование на JavaScript
JavaScript один из популярнейших языков программирования, который используется
в большинстве веб-проектов. С его помощью можно создавать и нативные
приложения, как это предлагает делать Microsoft для ОС Windows. А различные
библиотеки и расширения значительно увеличивают сферы его применения
все уроки последовательно, иначе возникнет «каша в голо- Видеокурс «Введение в JavaScript»
ве». Это понятная установка для вводного курса в програм- Следующий курс от проекта Hexlet (https://ru.hexlet.io), пред-
мирование. Кроме того, предлагается в качестве домашнего лагающего для изучения практические курсы по программи-
задания пройти вебинар «Личные качества успешного про- рованию.
граммиста» [1]. Курс по JavaScript является вводным, отличается ши-
Далее обосновывается выбор JavaScript для изучения ос- роким охватом основных возможностей языка. При этом
нов программирования и показывается пример первой про- курс оставляет за пределами рассмотрения такие темы,
граммы («Hello, World!») на нем. как DOM, эффекты, анимация, библиотеки, фреймворки,
Затем обсуждается работа с переменными и исследуют- AJAX, взаимодействие с серверной частью, отладка, тести-
ся типы данных. рование и т.п. Всего в курсе семь лекций.
Далее изучаются все базовые инструменты и конструк- Слушатели начнут со знакомства с JavaScript (нестрогая
ции (алгоритмы, блок-схемы, оператор if, логические опера- типизация, прототипно-ориентированный язык, сценарный
ции, циклы do, while, for, массивы, функции). и т.п.), его истории.
Заключительные лекции посвящены созданию неболь- Вторая лекция посвящена строкам и объектам, прототи-
шой игры и обсуждению карьеры программиста. пам. В ней же уделяется внимание множеству сопутствую-
Лекции сопровождаются домашним заданием. Его вы- щих проблем (экранированию, различию между строками
полнение не контролируется, но, конечно, для лучшего по- и символами, конкатенации, работе со строками и числами,
нимания материала его необходимо выполнить. Кроме того, сравнению строк). Кроме того, рассматриваются операторы
автор уделяет внимание разбору домашних заданий. if, for, while, switch, break.
Интерфейс курса удобен. В центре экрана расположе- Следующие две лекции посвящены функциям и замыка-
но окно воспроизведения видео, для которого используется ниям, а также наследованию.
собственный движок. Он позволяет осуществлять стандарт- В заключительных лекциях рассматриваются массивы,
ные операции (воспроизводить/останавливать видео, регу- регулярные выражения и сравнения.
лировать громкость звука, показывать оставшееся до кон- В целом материал в уроках подается интересно и снаб-
ца время воспроизведения, разворачивать видео на весь жен хорошими иллюстрациями, но о них расскажу чуть
экран или возвращать в исходное состояние). Интересная ниже. Данный курс будет полезен начинающим разработ-
особенность – выбор скорости воспроизведения (от 0.25x чикам.
до 2x). Под окном доступна ссылка для скачивания видео.
Справа от окна с видео доступен выбор любой лекции кур-
Таблица 1. Рейтинг курса «Основы программирования»
са. Что очень удобно в плане навигации. Стоит отметить,
что пройденные лекции помечаются. Поставим интерфейсу
курса максимальный балл. Оценка Коэффициент Итоговый
«Содержание» (С) балл
Иллюстрации к курсу демонстрируются в видео лек-
ции, для самостоятельной загрузки отдельно от видео они Содержание 5 5 25
не доступны. Хотя доступно для загрузки само видео лек- Интерфейс 5 4 20
ций. Кроме того, в видео лекций демонстрируется работа Иллюстративный материал 5 3 15
с кодом, показывается результат выполнения его работы Сертификация 4 3 12
и т.п. Таким образом, за иллюстративный материал – мак-
72
симальный балл.
Несколько слов о сертификации.
После успешного прохождения кур-
Рисунок 1. Курс «Основы программирования»
са слушатели получают сертификат.
Он выдается только в электронном
виде. При просмотре сертификата
отображается ссылка на него, а также
ссылка на его PDF-версию.
Говоря о статусе сертификации не-
обходимо отметить, что в ИТ-секторе
широкого признания пока не полу-
чили различные сертификаты, вы-
данные не в результате успешного
освоения авторизованных курсов.
Но тем не менее они характеризуют
своего владельца как способного
к самообучению, пунктуального спе-
циалиста.
Итак, особенность курса в том,
что он ориентирован на освоение ос-
нов программирования на базе языка
программирования JavaScript.
Визитка
ВЛАДИМИР ГАКОВ, писатель, специалист по научной фантастике, журналист, лектор. Окончил физфак МГУ. Работал в НИИ. С 1984 г. на творческой
работе. В 1990-1991 гг. – Associate Professor, Central Michigan University. С 2003 г. читает курс по истории бизнеса в Институте бизнеса и делового
администрирования (ИБДА) Российской академии народного хозяйства и государственной службы (РАНХиГС). Автор 8 книг и более 2000 публикаций
получившее название «машины Тьюринга». А когда началась до того, как к этой же идее пришли ученые и конструкторы,
война, Тьюринга привлекли к самой что ни на есть приклад- описаны дистанционно управляемые электромеханические
ной деятельности – к расшифровке немецких секретных ко- манипуляторы.
дов, передаваемых по радио капитанам субмарин (операция Под конец десятилетия увидело свет еще одно произве-
Enigma). Взломать коды удалось с помощью компьютера дение научной фантастики – одно, но какое! Автор его в от-
Colossus, созданного в Манчестерском университете под ру- личие от энтузиастов-инженеров задумался о неприятных
ководством Тьюринга. В 1944 году появился Colossus Mark II, и даже опасных возможных социальных последствиях,
который использовался при подготовке высадки союзников которые несут человечеству новые информационные тех-
в Нормандии... Наконец, в 1947-м Тьюринг уже опубликовал нологии. Этим автором был английский писатель Джордж
первую из серии статей об «искусственном интеллекте». Оруэлл, предвосхитивший в своей знаменитой антиутопии
«1984» (1949) многие «прелести» тоталитаризма. И среди
Переход в виртуальный режим прочих – всевидящее око Большого Брата: телескрин...
В предвоенное десятилетие перестала быть «литератур-
ной Золушкой» и научная фантастика. Но в интересующей Режим реального времени
нас теме откровения по-прежнему были редки. Тогдашняя Пока в Европе шла война, американские ученые могли срав-
фантастика была увлечена темой роботов, точнее, андрои- нительно спокойно работать над тем, в чем остро нуждались
дов – человекоподобных искусственных существ, о перспек- прежде всего военные: над вычислительной техникой.
тивах же «электронных мозгов» писали редко и неохотно... В 1942 году Ванневар Буш в MIT модифицировал свой
Тем не менее знаменитый цикл Айзека Азимова, завер- «дифференциальный анализатор» (новая модель веси-
шившийся изданием книги «Я, робот» (1950), как и дра- ла 200 тонн), а Атанасов и Берри в Университете штата Айова
матичный рассказ Лестера завершили постройку своей машины ABC. Но то были еще
Дель Рея «Руки твои» (1945) – робкие попытки одиночек,
об Адаме и Еве из «ветхого за- вызывавшие скепсис даже
вета» роботов! – много нового у тех, кому, как говорит-
сказали о психологии, мо- ся, на роду было написано
делях поведения созданных смотреть вперед. Напомню,
в лабораториях «железяк», что вошедшую в анналы про-
однако, явно обладавших ис- гнозов – точнее, «антипро-
кусственным интеллектом! гнозов» – фразу: «Я думаю,
То есть как раз о том, о чем мировой рынок компьюте-
размышляли в своих стать- ров вряд ли превысит пять
ях Тьюринг, Эшби, Винер штук», – произнес в 1943 году
и другие «отцы» кибернети- не кто-нибудь, а тогдашний
ки. По крайней мере своео- глава IBM Томас Уотсон-стар-
бразная этическая доктрина ший!
Азимова – Три Закона Робо- Ждать, когда он пожале-
техники – вполне применима Сотрудники Bell Telephone Laboratories Джон
Бардин, Уильям Шокли и Уолтер Браттейн ет о сказанном, пришлось
к любым формам «нечелове- недолго. И года не прошло,
ческого» интеллекта. как коллега Уотсона – Говард
Зато в рассказе Мюррея Лейнстера «Логик по имени Эйкен, так же не ведая об изобретении Атанасова и Берри,
Джо» (1946) главный «герой» – это самый настоящий ком- построил в Гарвардском университете (совместно с той же
пьютер! Железный ящик с вращающимися бобинами пер- IBM) первый компьютер широкого профиля – Marc 1 (IBM
фолент и мигающими лампочками на панелях, как и поло- ASCC). Первые программы для этой машины написала
жено уважающему себя оракулу, рассказывает людям все, Грейс Марри Хоппер, впоследствии одна из самых ярких
что им хочется услышать. Даже если это неправда... Остает- звезд Компьютерной эры. Хотя самый первый алгоритми-
ся только гадать, откуда писатель узнал о внешнем облике ческий язык программирования – Plancalcul – создал, по-
машин, которые тогда мог наблюдать воочию лишь весьма видимому, все тот же Цузе в 1945-1946 годах.
узкий круг специалистов с высшей формой допуска к во- И, наконец, 1 января 1946-го, как уже говорилось, стар-
енным секретам... товала собственно Компьютерная эра. В США состоя-
Также ясно «зрил в будущее» и Артур Кларк, не толь- лась презентация ENIAC (Electronic Numerical Integrator
ко предсказавший в статье «Внеземные коммуникации» and Computer) Мокли и Эккерта – компьютера, созданного
(1945) геостационарные орбитальные спутники связи, по заказу армии, нуждавшейся в более точных и высокоско-
но и отчетливо увидевший, сколь радикально новые комму- ростных средствах составления таблиц для баллистиков.
никации изменят нашу жизнь. Писатель потом неоднократ- В ином направлении двигалась мысль других первопро-
но пенял себе, что не сообразил вовремя запатентовать ходцев. Английский математик Джон фон Нейман в 1945 году
идею: не пришлось бы всю жизнь зарабатывать научной разработал первую машину, которая могла сохранять про-
фантастикой! Хотя с ним мог бы поспорить за приоритет граммы и базы данных в памяти, – EDVAC (Electronic Discrete
и американец Джордж Смит, также описавший в рассказе Variable Computer). Годом позже Джон Тьюки впервые ис-
«QRM-Межпланетная» (1942) орбитальные спутники свя- пользовал термин «бит», а еще через год англичанин Росс
зи. А в повести Роберта Хайнлайна «Уолдо» (1942) задолго Эшби ввел термин «самоорганизующаяся система».
Переход в виртуальный режим Для решения всех этих задач требовались кадры. На пер-
Первое послевоенное десятилетие не случайно было назва- вых порах главной кузницей их стало отделение прикладной
но критиками Золотым веком англо-американской science математики МИАН (создано в 1953 году, позднее выделилось
fiction: произведения этого жанра, новый взлет которому в одноименный НИИ, который возглавил Мстислав Келдыш,
дало вхождение человечества в три эры сразу – Космиче- впоследствии – президент Академии наук). В 1955 году был
скую, Атомную и Компьютерную, полились бурным потоком. создан Вычислительный центр АН, чуть позже аналогичные
В интересующей нас теме тон по-прежнему задавали центры открылись в Киеве и Ереване.
не компьютеры, а роботы. Они все так же вступают в конф-
ликт с человеком (мучимые извечным «франкенштейновым» Переход в виртуальный режим
комплексом по отношению к Cоздателю) в рассказе «Контур Что касается собственно кибернетики, то чаще всего в фан-
сострадания» (1955) Джона Уиндэма, служат «карательными тастике первой половины 1950-х попадаются на глаза опи-
органами» в тоталитарном обществе – Страж-Птица из одно- сания (или просто упоминания мельком) бортовых ЭВМ кос-
именного рассказа Роберта Шекли (1952) и Стальной Пес мических кораблей. Иногда, впрочем, в роли компьютеров
из романа Рэя Брэдбери «451 по Фаренгейту» (1953). выступают какие-то маловразумительные «управляющие
Есть и более мирные профессии для «стальных братьев на- полетом звездолета роботы», а курс порой прокладывал-
ших меньших»: боксеры (рассказ Ричарда Мейтсона «Сталь- ся с помощью... логарифмической ли-
ной человек», 1956), торговцы (рассказ нейки, после чего расчеты на бумаге
Фрица Лейбера «Дрянной день для тор- отдаются на проверку бортовой ЭВМ!
говли», 1953), актеры (повесть Уолтера Примеры можно выписывать до беско-
Миллера «Рабочий сцены», 1955). нечности: повесть «Поколение, достиг-
И у этих механических созданий – шее цели» (1953) Клиффорда Саймака,
те же проблемы, что и у их творцов. «Сво- романы «Пески Марса» (1951) Кларка,
бодный» робот не может получить ни ра- «Астронавты» (1951) и «Магелланово об-
боты, ни кредита (рассказ Дэниэла Киза лако» (1955) Станислава Лема, трилогия
«Роботов просим не обращаться», 1952), Георгия Мартынова «Звездоплаватели»
в отношении роботов проводится по- (1954-1959). Правда, в дилогии послед-
литика апартеида (рассказ Альфреда него, «Каллисто» (1957) и «Каллистяне»
Коппела «Только для белковых», 1953). (1960), инопланетная цивилизация уже
А в повести Шекли «Билет на планету активно использует «вычислительные
Транай» (1955) домашние роботы наме- машины» в управлении «народным хо-
ренно выпускаются с дефектами, что- зяйством».
бы люди могли выместить на них злость ом Сергея Лебедева строили Кроме того, суперкомпьютеры на-
Под руководств
– МЭСМ
и ощутить собственное превосходство. универсальную ЭВМ с хранимой программой чинают и выигрывают (или проигрыва-
ют – другому «лому», то есть еще более
Режим реального времени мощной ЭВМ!) войны, как это описал Шекли в рассказе
Западные ученые, разумеется, не знали, что и их коллеги «Детский мат» (1953), распутывают преступления (рассказ
за «железным занавесом» тоже не сидели сложа руки. Хотя Фрэнка Райли «Кибер-Холмс», 1955). В худшем вариан-
о первых успехах советских электронщиков понятия не име- те – его описал Курт Воннегут в романе «Механическое пи-
ли и соотечественники: вычислительную технику строили анино» (1952) – человечество добровольно перекладывает
«втихаря», в обстановке строжайшей секретности, а вслух на плечи машины все свои проблемы, включая управлен-
со всех трибун громили «буржуазную лженауку» киберне- ческие и экономические. А Лем в рассказе «ЭДИП» (1954)
тику... предупреждает насчет возможности создания в будущем
Начало Компьютерной эры в СССР относится к первым кибернетического Большого Брата, который через сети
послевоенным годам. В 1947 году под руководством Сергея (Лем есть Лем – 1954 год!) сможет узнавать мысли и настро-
Лебедева начали строить универсальную ЭВМ с хранимой ения граждан и «стучать» куда надо на неблагонадежных!
программой – МЭСМ (Малая электронная счетная машина).
Спустя год в Москве был создан Институт точной механи- Режим реального времени
ки и вычислительной техники (ИТМиВТ) АН СССР, первым Буквально каждый год первого десятилетия Компьютерной
директором которого стал Николай Бруевич. В том же году эры приносил прорыв за прорывом.
вышло Постановление Совмина о создании специального 1947 год. В США основана научно-образовательная Ас-
конструкторского бюро СКБ-245 при московском заводе социация по вычислительной технике (ACM – Association
САМ. Задача перед новым «почтовым ящиком» ставилась for Computing Machinery). Сотрудники Bell Telephone
предельно конкретная: строительство вычислительной тех- Laboratories Уильям Шокли, Уолтер Браттейн и Джон Бардин
ники для нужд обороны. Именно из цехов и лабораторий продемонстрировали свое изобретение, обеспечившее вы-
СКБ-245 вышли первые советские серийные ламповые числительной технике решающий толчок вперед: точечный
машины «Стрела», «Полет» и «Оператор», а также пер- транзисторный усилитель (в следующем году вся троица
вые электронные – М-20, «Урал-1», «Погода», «Кристалл», приобрела патент на его изобретение). И англичанин Рог
М-205 и М-206. И в 1950 году в Энергетическом институте Мурз создал первый радиомикрофон.
АН СССР под руководством Исаака Брука начались работы 1948 год. Том Килберн и Фредди Уильямс в Манчесте-
по созданию первой отечественной ЭВМ – М-1. ре запустили первую программу на компьютере «Малыш»
(Baby). Их коллега Морис Уилкс построил в Кембридже «обеспечивает» выборы (для этого машине хватает мнения
EDSAC (Electronic Delay Storage Automatic Calculator) вычис- лишь одного среднестатистического избирателя!), но и...
лительную машину, почти вшестеро более производитель- останавливает рост энтропии во Вселенной! Наконец, в рас-
ную, чем все предшественницы. сказе «Чувство силы» (1958) обленившееся человечество
1949 год. Джей Форрестер впервые использовал маг- вынуждено заново вспомнить арифметику, чтобы установить
нитные железные сердечники в качестве основной памяти. контакт со своими электронными благодетелями...
(Патент был получен только в середине 1950-х, сама же маг- Суперкомпьютер обнаруживает истинное имя Всевышне-
нитная пленка создана в США в 1942-м.) А создатель теории го в парадоксальной новелле Кларка «Девять миллиардов
информации Клод Шеннон из MIT построил первую в мире имен Бога» (1953). А на вопрос ученых: «Есть ли Бог?» – дру-
машину для игры в шахматы! гая машина отвечает: «Теперь – есть» (рассказ Фредерика
И, наконец, в последний год декады компьютер SEAC Брауна «Ответ», 1954). И уж совсем грустную историю –
(Standards Eastern Automatic Computer) купило для сво- будущее, в котором неразумное человечество уничтожило
их нужд Американское национальное бюро стандартов. себя, а созданная им «умная» техника продолжает функ-
В том же году в США начались разработки одного из пер- ционировать по инерции, – рисуют уже упомянутые Миллер
вых «военных» компьютеров – SAGE (Semi Automatic Ground и Брэдбери в рассказах «Тупой официант» (1952) и «Будет
Environment), предназначенного для сбора и обработки ин- ласковый дождь» (1950) соответственно.
формации с радарных станций. Впрочем, не все были настроены столь мрачно. Напри-
За первое десятилетие Компьютерной эры возникли мно- мер, в рассказе Фрица Лейбера «Бедный супермен» (1951)
гие компании, чьи имена сегодня у всех на слуху, в частнос- за суперкомпьютер, к которому почтительно обращаются
ти Wang Laboratories (1951; в том же году созданная ранее экономисты, ученые, правительство и военные, все ответы
Coronado Corporation стала называться Texas Instruments пишет спрятанный в недрах машины мужичок, употевший
Incorporated) и Commodore (1954). В 1955-м слияние от натуги и охлаждающий себя пивком!
Remington-Rand и Sperry Gyroscope привело к образованию Обозначились и первые серьезные подходы к теме, которая
Sperry-Rand, а еще через два года от нее отпочковалась десятилетиями позже станет одной из магистральных: чудеса
Control Data Corporation. и опасности виртуальной реальности. Это и «говорящие сте-
Почти ежегодно обновлялся парк действующих машин. ны» (нечто вроде «чата» и социальных сетей!) в романе Брэд-
Начало положил запущенный в 1951 году первый коммер- бери «451 по Фаренгейту», и своего рода «виртуальная пор-
ческий компьютер – английский MARK 1 (чтобы не спутали нография» в рассказе Кларка «В ожидании патента» (1954).
с американским «гарвардским» тезкой, британскую машину Потрясающий философский образ «почти живой» электрон-
как только ни называли: Manchester Mark II, MUDC, MUEDC, ной спутницы космических странников (она моделирует «но-
даже MADAM!). В том же году Мокли и Эккерт, продав свою вые реальности», опекает, утешает, ведет философские ди-
компанию фирме Remington (ныне Unisys), завершили по- алоги) в фантастической поэме «Аниара» (1956) шведского
стройку первого американского коммерческого компью- классика, нобелевского лауреата Харри Мартинсона. Коро-
тера – UNIVAC. «Новичка» сразу же проверили: во время че, литературная фантастика приняла вызов ученых.
президентской кампании 1952 года, спустя всего час после
закрытия избирательных участков UNIVAC точно предсказал, Режим реального времени
с каким процентом Эйзенхауэр сокрушит своего конкурента! В первой половине 1950-х увидела свет компьютерная пе-
В том же 1951-м Джей Форрестер и Кен Олсен в MIT построи- риферия. В 1952 году появились накопитель на магнитной
ли первый компьютер, работавший в режиме реального вре- ленте и первый высокоскоростной принтер, разработан-
мени, – Whirlwind («Вихрь»). Годом позже появился EDVAC, ный в Remington-Rand для UNIVAC. Кроме того, в 1954 году
еще через год – первый (если не считать модель SSEC) ком- под руководством Джина Амдала в IBM создали первую
пьютер фирмы IBM с системой хранения команд: модель 701. операционную систему для первой машины с плавающей
Параллельно стремительно развертывалась «кремние- арифметикой. И спустя два года – первый жесткий диск
вая революция». В 1954 году Texas Instruments объявила RAMAC 305 с памятью 5 Mб.
о начале коммерческого производства кремниевых тран- Семимильными шагами шло и развитие «софта». Уже
зисторов, годом позже один из «отцов» полупроводников, в 1952 году упоминавшаяся ранее Грейс Марри Хоппер соз-
Уильям Шокли, основал компанию Shockley Semiconductor. дала язык Assembly и в том же году разработала современ-
А путь от первых экспериментальных моделей ЭВМ на тран- ную концепцию компилятора. И двумя годами позже Джон
зисторах до полностью транзисторного суперкомпьютера Бэкус из IBM начал работу над языком FORTRAN, последняя
CDC 1604, построенного Сеймуром Крэем для Control Data модификация которого увидела свет в 1995-м!
Corporation, занял всего два года, с 1956-го по 1958-й! И еще в 1955 году родились два мальчика, имена которых
говорят сами за себя: Стив Джобс и Билл Гейтс.
Переход в виртуальный режим На дворе стоял «полдень» ХХ века. В 1950 году населе-
Любопытно, что уже в начале 1950-х фантасты задумались ние Земли составило чуть более 2,5 миллиарда человек.
и над такими «фантазиями», как суперкомпьютеры. В три- А совокупный «компьютерный парк» насчитывал лишь не-
логии «Основание» (1951-1954) Азимова ученые могут про- сколько десятков машин – включая экспериментальные мо-
считывать даже ход истории – разумеется, с помощью ЭВМ. дели... Но лиха беда начало! EOF
А в серии азимовских же рассказов о гигантском компьютере
Мультиваке – «Выборы» (1955), «Последний вопрос» (1956), * Продолжение. Начало – см. «СА», №1-2, №3, №4, 2016.
«Все грехи мира» (1958) – электронный «герой» не только Продолжение следует
НАУКА
И ТЕХНОЛОГИИ
81 Исследование воздействия
некоторых параметров теста
LINPACK для гибридного кластера
на производительность вычислений
в зависимости от размерности задачи
Куликов В.А., аспирант кафедры прикладной математики, информатики и вычислительной техники факультета электроники
и системотехники Московского государственного университета леса, Vladimir.Kulikov@rsce.ru
Чернышов А.В., к.т.н., доцент кафедры прикладной математики, информатики и вычислительной техники факультета
электроники и системотехники Московского государственного университета леса, sch@mgul.ac.ru
Одной из важных проблем при решении СЛАУ на гибридном Публикация [3] раскрывает имплементацию алгоритма
вычислительном кластере является подбор параметров рас- LINPACK для систем высокопроизводительных вычислений.
параллеливания алгоритма вычисления, в частности, распреде- Основным автором исходного кода LINPACK для GPU (CUDA-
ление количества вычислительной работы между CPU и GPU. enabled version of HPL 2.0 optimized for Tesla 20-series GPU Fermi
В качестве модельной задачи, позволяющей исследовать эту version 1.5) является доктор Массимилиано Фатика (doctor M.
проблему, хорошо подходит стандартный тест LINPACK, широко Fatica, NVIDIA).
применяемый для оценки производительности вычислительных Основное отличие LINPACK для GPU заключается в том,
кластеров. что в исходном коде HPL 2.0 ядра и CPU, и GPU с небольшими
В статье [1] были описаны исследования производительно- модификациями или без модификаций используются совокупно
сти теста LINPACK в версии для гибридных узлов (CPU + GPU) (эффективность совокупности CPU и GPU превышает сумму
на кластере «Ломоносов» МГУ им. М.В. Ломоносова для разных их индивидуальных эффективностей):
размерностей задачи N (от 20 000 до 60 000) и стандартных (реко- • Библиотека узла прерывает вызовы к DGEMM и DTRSM
мендованных) остальных значений параметров теста. и выполняет их одновременно на ядрах CPU и GPU, где:
В настоящей статье приведены результаты дальнейших иссле- »» DGEMM – Double-precision General Matrix Multiply –
дований, касающиеся эффективности вычислений теста LINPACK умножение матриц с двойной точностью;
при изменении параметров Nb (величина размерности логиче- »» DTRSM – Double-precision TRiangular Solve Multiple
ских блоков Nb × Nb, на которые разбивается исходная матрица) (solution of the triangular systems of linear equations) –
и CUDA_DGEMM_SPLIT (процент работы, загружаемой в GPU решение треугольных систем линейных уравнений
для умножения матриц с двойной точностью), тесно связанных с двойной точностью.
с аппаратной структурой вычислительных узлов кластера. При- • Использование pinned memory для быстрых передач
чем, как и в статье [1], под эффективностью понимается достиже- данных по компьютерной шине PCI Express со скоростью
ние максимальной производительности вычислений, выражаемое до 5.7 GB/s на слотах x16 gen2.
в общепринятых единицах GFlops.
Полученные экспериментальные зависимости могут быть Схема вычислений в LINPACK для GPU показана на рис. 1.
полезны для выбора значений этих параметров при решении Из него видно, что после факторизации текущего блока (красный
реальных систем линейных уравнений конкретных размерно- цвет) обновляются части зеленого и желтого цвета. Чем больше
стей N с максимальной производительностью. значение размерности N, тем больше времени расходуется на об-
В статье сознательно не рассматриваются вопросы обусловлен- новление (DGEMM).
ности самой математической системы, точности решения, выбора • DGEMM – область умножения матриц с двойной точно-
разрядности вычислений, поскольку они должны быть матема- стью;
тически обоснованы и решены постановщиком задачи до выхода • DTRSM – область решения треугольных систем линейных
на вычислитель. уравнений с двойной точностью.
Описание теста В версии теста LINPACK для GPU мы опираемся на два пре-
Тест LINPACK представляет собой задачу решения системы образования с матрицами – DGEMM и DTRSM. Для их ускорения
линейных алгебраических уравнений (СЛАУ) методом LU-разло- мы используем все вычислительные возможности CPU и GPU.
жения и считается на сегодня классическим способом определе- Эффективное распределение расчетной нагрузки и минимизация
ния производительности кластера, поскольку к решению СЛАУ времени обмена данными позволят получить наибольшую произ-
сводятся очень многие реальные расчетные задачи. водительность.
Тест и его основные параметры, а также характеристики Один из разработанных методов оптимизации для получения
кластерного вычислителя «Ломоносов» подробно рассмотрены наибольшей производительности – оптимальное разделение рабо-
в статье [1]. чей нагрузки, которое состоит в следующем.
В работе [2] полностью описываются теоретические основы Если мы имеем матрицы с размерностями A (M , K), B (K , N)
теста LINPACK, а также его возможные варианты для оценки про- и C (M , N) (см. рис. 2), то при выполнении DGEMM-преобразова-
изводительности различных компьютерных систем. ния выполняется 2 × M × K × N операций.
Временно́е равенство вычислений для CPU и GPU:
Рисунок 1. Факторизация текущего блока Tcpu (M , K , N2) = Tgpu (M , K , N1)
N = N1 + N2
где:
• Tcpu – время вычислений на CPU;
• Tgpu – время вычислений на GPU.
Схема метода показана на рис. 2, где: • ALPHA – переменная двойной точности, на входе ее значение
• зеленым отмечена область GPU, а розовым цветом – CPU; определяет скалярную величину α, не изменяется на выходе;
• A, B, C – матрицы; • A – массив двойной точности с размерностью (LDA, ka), где
• M – величина, определяющая число строк матрицы op(A) ka – это k, когда TRANSA = 'N'||'n' или, во всех других случа-
и матрицы C; ях, m. Перед вхождением с TRANSA = 'N'||'n', ведущая часть
• N1 – величина, определяющая число столбцов матрицы массива A размером m на k должна содержать матрицу A,
op(B1) и число столбцов матрицы C1 в области GPU; иначе ведущая часть массива A размером k на m должна со-
• N2 – величина, определяющая число столбцов матрицы держать матрицу A. Не изменяется на выходе;
op(B2) и число столбцов матрицы C2 в области CPU; • LDA – переменная целого типа, на входе определяет первич-
• K – величина, определяющая число столбцов матрицы op(A) ную размерность матрицы A, когда TRANSA = 'N'||'n', то LDA
и число строк матрицы op(B). должно быть не меньше max(1,m), иначе LDA должно быть
не меньше max(1,k). Не изменяется на выходе;
Остановимся на преобразовании DGEMM [4], которое пред- • B – массив двойной точности с размерностью (LDB, kb),
ставляет собой следующую процедуру мультипликации матриц: где kb – это n, когда TRANSB = 'N'||'n' или, во всех других
случаях, k. Перед вхождением с TRANSB = 'N'||'n', ведущая
C := α×op(A)×op(B) + β×C часть массива B размером k на n должна содержать матри-
цу B, иначе ведущая часть массива B размером n на k должна
где op(X) принимает одно из следующих значений: содержать матрицу B. Не изменяется на выходе;
• LDB – переменная целого типа, определяет первичную раз-
op(X,) = X или op(X) = X T мерность матрицы B, когда TRANSB = 'N'||'n', то LDB должно
быть не меньше max(1,k), иначе LDB должно быть не мень-
Здесь: ше max(1,n). Не изменяется на выходе;
• α, β – скалярные величины; • BETA – переменная двойной точности, на входе ее значение
• A, B, C – матрицы; определяет скалярную величину β, когда значение BETA ноль,
• op(A) – матрица с числом строк m и столбцов k; то для C не определяются входные данные. Не изменяется
• op(B) – матрица с числом строк k и столбцов n; на выходе;
• C – матрица с числом строк m и стобцов n; • C – массив двойной точности с размерностью (LDC, n).
• X T – транспонированная матрица X. До входа ведущая часть массива С размером m на n должна
содержать матрицу C, кроме случая, когда значение β ноль
Преобразование DGEMM оформлено в виде функции: и для этого случая для C не определяются входные данные.
На выходе массив C перезаписывается m на n матрицей
DGEMM = (TRANSA, TRANSA, M, N, K, ALPHA, A, LDA, B, LDB, BETA, C, LDC)
(α×op(A)×op(B) + β×C);
Здесь: • LDC – переменная целого типа, на входе определяет первич-
• TRANSA – переменная символьного типа, на входе ее зна- ную размерность матрицы C; LDC – должна быть не меньше
чение определяет формат матрицы op(A), который будет max(1,m). Не изменяется на выходе.
использоваться в мультипликации матриц:
В отличие от классического теста LINPACK в его «кластер-
TRANSA = 'N'||'n' , op(A) = A ном» варианте требуется подбор параметра Nb и ряда других
TRANSA = 'T'||'t' , op(A) = AT параметров в целях достижения максимальной производитель-
TRANSA = 'C'||'c' , op(A) = AT ности [5]. В частности, представляет интерес подбор значения
параметра CUDA_DGEMM_SPLIT (процент работы, загружаемой
Не изменяется на выходе; в GPU для умножения матриц с двойной точностью).
• TRANSB – переменная символьного типа, на входе ее зна-
чение определяет формат матрицы op(B), который будет
Рисунок 2. Оптимальное разделение рабочей нагрузки
использоваться в мультипликации матриц:
Не изменяется на выходе;
• M – переменная целого типа, на входе ее значение опреде-
ляет число строк матрицы op(A) и число строк матрицы C,
не изменяется на выходе;
• N – переменная целого типа, на входе ее значение определя-
ет число столбцов матрицы op(B) и число столбцов матрицы
C, не изменяется на выходе;
• K – переменная целого типа, на входе ее значение опреде-
ляет число столбцов матрицы op(A) и число строк матрицы
op(B), не изменяется на выходе;
Описываемый эксперимент сводился к выполнению теста • Вычисленное значение N = 69511,425. Для «укладки» раз-
LINPACK на выделенных узлах кластера «Ломоносов» для сетки мерности задачи N c использованием Nb = 1024 в начальные
исходных значений, задаваемой параметрами N, Nb, и при реко- условия запуска LINPACK для GPU, с учетом аппаратной кон-
мендованных значениях остальных параметров теста. фигурации узлов, чтобы не происходило переполнение памя-
В частности, значение параметра Nb зависит от характери- ти при работе программы, принимается значение N = 60000.
стик параллельной вычислительной системы в целом и должно
подбираться индивидуально для каждой системы. Для полу- Коэффициент CUDA_DGEMM_SPLIT может определяться
чения результатов, близких к пиковым, М. Фатика [6] рекомен- по различным методикам для запуска теста LINPACK на гибрид-
дует использовать значение Nb = 768 для гибридных кластеров ных узлах кластера CPU + GPU. С ним также тесно связан пара-
CPU + GPU. Также он указывает, что иногда большую производи- метр CUDA_DTRSM_SPLIT (процент работы, загружаемой в GPU
тельность можно достигнуть при Nb = 1024: «…768 typically gives для решения треугольных систем линейных уравнений с двойной
best results, larger values may give better results (1024) if several точностью. Получается вычитанием из CUDA_DGEMM_SPLIT
GPUs share the same PCIe connection…» [7]. значения 0,1):
Максимально допустимое значение параметра N – размерность 1) По эмпирическим значениям, предложенным М. Фатика [6]:
задачи, рассчитывается по формуле:
CUDA_DGEMM_SPLIT = 0,836
CUDA_DTRSM_SPLIT = 0,736
Тогда:
515 × 0, 75
CUDA _ DGEMM _ SPLIT = = 0,8413
515 × 0, 75 + (8 × 4 × 2,53) × 0,9
CUDA _ DTRSM _ SPLIT = CUDA _ DGEMM _ SPLIT − 0,1 =
= 0,8413 − 0,1 = 0, 7413
По графикам на рис.3 можно видеть, что: [5] Petitet, R. C. Whaley, J. Dongarra, A. Cleary. HPL 2.0.Innovate Computer
• наблюдается картина увеличения производительности Laboratory (University of Tennessee, Computer Science Department), 2008. –
для CUDA_DGEMM_SPLIT = 0,8413 при малом значении URL: http://www.netlib.org/benchmark/hpl/tuning.html (дата обраще-
N с Nb = 1024 в сравнении с другими результатами, получае- ния 20.05.2015).
мыми с CUDA_DGEMM_SPLIT, равными 0,81214 и 0,836; [6] E. Phillips, M. Fatica. CUDA-enabled version of HPL 2.0 optimized
• для значения CUDA_DGEMM_SPLIT = 0,8413 скорость for Tesla 20 series GPU Fermi version 1.5. Nvidia Corp., 2012. – URL:
роста производительности с увеличением N по сравнению https://devtalk.nvidia.com/default/topic/500340/cuda-accelerated-
с другими значениями CUDA_DGEMM_SPLIT является LINPACK-code-available (дата обращения 23.05.2015).
максимальной. [7] M. Fatica. Accelerating LINPACK with CUDA on heterogenous clusters.
// ACM International Conference Proceeding Series. Vol. 383.
По верхней огибающей группы построенных графиков была [8] S. Tarleton. Power Efficient LINPACK on GPUs, 2012. – URL: http://
построена рекомендательная таблица (см. таблицу 1) для выбора www.shanetarleton.com/power-efficient-LINPACK-on-gpus (дата об-
параметров Nb и CUDA_DGEMM_SPLIT в зависимости от раз- ращения 17.06.2015).
мера задачи N для получения максимальной производительности
GFlops при решении СЛАУ методом LU-разложения на гибрид- Ключевые слова: графический процессор, кластер, высокопроизводитель-
ных узлах кластера «Ломоносов»: ные вычисления, размерность задачи, гибридный вычислительный узел,
Проведение экспериментов с различными рекомендо- LINPACK, решение СЛАУ, GFlops.
ванными разработчиком значениями размера блока Nb рав-
ным 768 и 1024 и вычисленными по разным методикам значе- The research values of certain parameters of the LINPACK benchmark
ниями CUDA_DGEMM_SPLIT, равными 0,81214, 0,8413, 0,836, for hybrid cluster effects on the compute performance as a function
показало, что максимальной производительности GFlops of the problem sizes
на гибридных узлах кластера «Ломоносов» удается достичь
при выборе значения CUDA_DGEMM_SPLIT = 0,8413, полу- Kulikov V. A., Post-Graduate Student, Department of Applied Mathematics,
ченного с использованием методики Ш. Тарлетон [8]. При этом Computer Science and Computer Engineering Faculty of Electronics
значения параметра Nb изменяются в зависимости от размерности and Systems Engineering of the Moscow State Forest University (MSFU),
поставленной задачи. EOF Vladimir.Kulikov@rsce.ru
Chernyshov A. V., PhD, Tech., Associate Professor, Department of Applied
[1] Куликов В. А. Исследование возможностей GPU в высокопро- Mathematics, Computer Science and Computer Engineering Faculty
of Electronics and Systems Engineering of the Moscow State Forest
изводительных вычислениях. // «В мире научных открытий»,
University (MSFU), sch@mgul.ac.ru
№12.2(60), 2014 г. – C. 639-650.
[2] J. Dongarra, P. Luszczek, A. Petiet. The LINPACK Benchmark: past,
Summary: When solving systems of linear algebraic equations
present and future. // Concurrency and Computation: Practice and
with modern, hybrid (CPU GPU) clusters to the user, there
Experience. 2003. Vol. 15(9). P. 803-820. doi:10.1002/cpe.728.
arises the problem of selecting values of a number of parameters
[3] Petitet, R. C. Whaley, J. Dongarra, A. Cleary. HPL Algorithm. Innovate
that have a significant, but unobvious subjection on computing
Computer Laboratory (University of Tennessee, Computer Science
performance and, as a consequence, on time, and, therefore,
Department), 2008. – URL: http://www.netlib.org/benchmark/hpl/
and technical resources for the solution of the problem. The existing
algorithm.html (дата обращения 20.05.2015).
recommendations on the selection of values for these parameters
[4] J. Dongarra, I. Duff, J. D. Croz, S. Hammarling. Subroutine
are evaluatives and do not guarantee the best performance
DGEMM, 1989. – URL: http://www.netlib.org/lapack/explore-3.2-html/
computing for a given dimension of the system of linear algebraic
dgemm.f.html (дата обращения 20.05.2015).
equations. The purpose of this work is experimental research
of the subjection of the values of the parameters Nb and CUDA_
Таблица 1. Рекомендательная таблица DGEMM_SPLIT LINPACK benchmark, representing a solution
of model system of linear algebraic equations by the method
N CUDA_DGEMM_SPLIT Nb GFlops of LU decomposition, for the performance computing of hybrid
9600 0,8413 1024 128,7
nodes of the cluster «Lomonosov» (Moscow State University,
Moscow, Russia Federation). Recommendatory data of the values
16128 0,8413 768 322,5
of the parameters Nb and CUDA_DGEMM_SPLIT LINPACK
16129 0,8413 768 323,7
depending on the dimension of system of linear algebraic equations
20737 0,8413 768 420,2 for achievement of the maximum performance for solving system
20960 0,8413 768 416,4 of linear algebraic equations are obtained by LU decomposition
23040 0,8413 768 454,3 method on hybrid computing nodes of a cluster «Lomonosov».
25000 0,8413 768 480,6 The recommendatory data table constructed in this research
30000 0,8413 1024 555,4
work for a cluster «Lomonosov» allows to select unambiguously
values of the Nb and CUDA_DGEMM_SPLIT parameters
39000 0,8413 1024 686,5
depending on dimension of system of linear algebraic equations
39007 0,8413 1024 685,8
for achievement of the maximum computing performance.
40000 0,8413 1024 698,5
50000 0,8413 1024 799 Keywords: GPU, cluster, high-performance computing, problem size, hybrid
60000 0,8413 1024 873,3 computing node, solving linear systems of equations, GFlops.
Славин Б.Б., к.ф.-м.н., Финансовый университет при Правительстве РФ, профессор кафедры «Бизнес-информатика»,
bbslavin@gmail.com
Максимова Е.В., Союз ИТ-директоров России, директор, Maksimova@rucio.ru
имплементировать их в существующий бизнес так, чтобы достичь и системой, что позволило классифицировать все трудовые
наибольшей эффективности сейчас и в перспективе, с учетом функции менеджера по ИТ. Такая универсальность взаимосвязи
стратегического развития предприятия. уровней управления ИТ, технологических эпох, сорсинга и систем
Инструменты, позволяющие оценить степень взаимосвязи управления может быть подтверждена исследованиями реальной
стратегического управления ИТ с бизнесом, хорошо описаны практики управления ИТ.
в своде стандартов и рекомендаций CobiT (Control Objectives for
Information and Related Technologies). Однако существует взаимос- Исследование взаимосвязи
вязь на уровне технологии организации труда, которая позволя- Для подтверждения взаимосвязи уровней управления с технологи-
ет понять, как связаны приоритеты ИТ и отраслевая специфика ческими эпохами был проведен опрос ИТ-директоров, в котором
бизнеса. В работе [3] было показано, что все отрасли экономики они выбирали наиболее типичные для своей деятельности методы
можно разделить на четыре группы, соответствующие технологи- решения задач, инструменты планирования, фокус отношений
ческим эпохам: внутри компании, наиболее приоритетные цели. Предлагаемые
• индустриальная эпоха, куда входят промышленность, сель- ответы ранжировались в соответствии с уровнями трудовых
ское хозяйство и добывающие отрасли; обобщенных функций из профессионального стандарта менед-
• постиндустриальная эпоха, куда входят энергетика, торговля, жера по ИТ. С другой стороны, оценивался уровень требований
транспорт; к задачам со стороны бизнеса, связанный как с численностью
• информационная эпоха, куда входят финансы, телеком, организации и уровнем в иерархии управления менеджера по ИТ,
СМИ; так и с отраслевой спецификой в соответствии с четырьмя техно-
• и, наконец, четвертая группа отраслей, соответствующая логическими эпохами, описанными выше.
эпохе знаний, куда входят наука, образование, профессио- В таблице 1 показано, как задачи, решаемые менеджером
нальные сервисы, медицина и социальное обеспечение. по ИТ, связаны с уровнями обобщенных трудовых функций
управления. ИТ-директору предлагалось дать ответы в порядке
Эти же четыре группы отраслей можно сопоставить как с раз- убывания от 4 до 1 (без повторов и пропусков) в четырех во-
личными типами управления (управление ресурсами, услугами, просах:
информацией и знаниями соответственно), так и с соответству- • «в Вашей компании в области ИТ на что Вы тратите боль-
ющими видами сорсинга (инсорсинг, аутсорсинг, краудсорсинг шую часть времени» – (a);
и сорсинг интеллектуальной деятельности). По типам управления • «в Вашей компании в области ИТ Вы планируете работы
можно соотнести и корпоративные информационные технологии, при помощи каких инструментов» – (b);
имеющие различный приоритет, начиная с ERP-систем и MES1 • «в области ИТ Вы обсуждаете планы развития в первую
(управление ресурсами) и заканчивая системами управления зна- очередь с кем» – (d);
ниями. На рис.1 изображены соответствующие взаимосвязи. • «в области ИТ в Вашей компании за что Вы отвечаете в пер-
Предложенная классификация технологических эпох была ис- вую очередь» – (e).
пользована в работе [4] для обоснования классификации уровней
обобщенных трудовых функций менеджеров по ИТ, которая легла Вопросы специально задавались не в том порядке, как они со-
в основу соответствующего профессионального стандарта. В част- ответствуют уровням управления ИТ-менеджера (см. таблицу 1 –
ности, четыре типа управления (ресурсами, сервисами, информа- номера при буквах, обозначающих вопросы), чтобы получить
цией и инновациями) были рассмотрены в разрезе использования наиболее достоверный ответ.
инструментов планирования, управления временем, людьми Показатель уровня решаемых ИТ-директором задач QCIO оцени-
вался по формуле:
1 Здесь и ниже использованы аббревиатуры: MES – Manufacturing
Execution System, ERP – Enterprise Resource Planning, MRP – Requirements
Planning, CRM – Customer Relationship Management, SCM – Supply Chain
Management, B2B – Business to Business, BI – Business Intelligence, CPM – где S = (a1∙1 + a2∙3 + a3∙4 + a4∙2 + b1∙1 + b2∙4 + b3∙2 + b4∙3 + c1∙2 +
Corporate Performance Management, PLM – Product Lifecycle Management, c2∙3 + c3∙4 + c4∙1 + d1∙2 + d2∙3 + d3∙4 + d4∙1) – сумма баллов за от-
KM – Knoweledge Management. веты.
1-й уровень: управление 2-й уровень: управление 3-й уровень: управление 4-й уровень: управление
ресурсами услугами информацией знаниями и инновациями
Основная деятельность планирование задач (a1) планирование сервисов (a4) реализация ИТ-стратегии (a2) развитие бизнес-стратегии
с использованием ИТ (a3)
Инструменты планирования управления временем (b1) управления проектами (b3) управления портфелями инструментарий дорожных
проектов (b4) карт (b2)
Выстраивание отношений с сотрудниками ИТ-службы (c4) с внутренними заказчиками с руководством основных под- с клиентами и партнерами
услуг (c1) разделений (c2) компании (c3)
Приоритеты в управлении поддержка ИТ-инфраструктуры качество услуг пользователям архитектура информационной управление знаниями, идеями
и ПО (d4) (d1) системы (d2) и т.п. (d3)
Величина S меняется от 80 до 120 в зависимости от того, на- логики бизнеса переходит от руководителей бизнес-подразделе-
сколько ответы ИТ-директора совпадают с последовательностью ний к архитектору информационной системы – ИТ-директору.
уровней из стандарта ИТ-менеджера. Уровень требований со сто- К сожалению, не всегда в компании руководитель ИТ-службы
роны бизнеса, связанный как со спецификой, так и с его размера- способен адаптироваться к новой роли, из специалиста по продук-
ми, оценивался как среднегеометрическое значение трех показате- там стать руководителем, понимающим тонкости бизнеса своего
лей (A, B, C), меняющихся от 1 до 4: предприятия, использующим возможности информационных
• численность организации, которую обслуживает ИТ-служба: технологий в той мере, в какой они должны быть востребованы.
менее 1000 человек (A=1); от 1000 до 5000 человек (A=2); Взаимосвязь роли ИТ на предприятии с технологическими эпо-
от 5000 до 30 000 человек (A=3); свыше 30 000 человек хами позволяет сделать еще один вывод. Поскольку доля отраслей
(A=4); первых двух эпох в общей добавленной в экономику стоимости
• уровень руководства в системе управления ИТ-службой: ря- снижается, можно сказать, что на первый план выдвигается новая
довой менеджер (B=1); руководитель подразделения (B=2); культура – умение эффективно использовать информационные
заместитель руководителя (B=3) и CIO (B=4); технологии в инновационном развитии предприятий, органи-
• принадлежность организации к той или иной технологиче- заций, да и всего общества. Эта культура только формируется,
ской эпохе (см. выше): C=1, 2, 3 или 4 (в случае холдинга – носителей ее очень мало, и в реальности ее проводниками часто
средневзвешенный показатель). становятся, увы, не ИТ-директора, а руководители предприятий
или начальники отдельных бизнес-подразделений. Тенденция
На рис. 2 показаны результаты анкетирования ИТ-директоров. ухода от внедрения ИТ-систем к формированию инновационной
Нетрудно видеть, что большинство ответов ложатся в прямоу- ИТ-культуры определит на ближайшие годы основные пути раз-
гольную область, определяющую линейную зависимость уровня вития индустрии высоких технологий. Культура ведения бизнеса
решаемых ИТ-директором задач от уровня задач, связанных с использованием ИТ-инструментов освоена пока только передо-
со спецификой и размерами бизнеса. Больше всего отклонений выми компаниями, которые поняли, что современные инновации
от линейной зависимости наблюдается для предприятий, соот- также основываются на информационных технологиях.
ветствующих технологической эпохе знаний. По всей видимости Проблема заключается в том, что инновации невозможно
низкий уровень реально решаемых задач в области ИТ на пред- запланировать, нельзя научиться их производить массовым
приятиях, занятых исследованиями и разработкой, в вузах и орга- тиражом. Друкер писал: «Инновационные возможности обнару-
низациях социального обеспечения обусловлен тем, что системы живаются не в правилах, с которыми планировщику приходится
управления знаниями, идеями и компетенциями не получили иметь дело в силу необходимости, а в исключениях из правил –
широкого распространения в России, роль ИТ на таких предприя- в неожиданном, в несоответствии, в разнице между «наполовину
тиях явно занижена. полным» и «наполовину пустым» стаканом, в слабой связи, обна-
руживающейся в том или ином процессе. Когда отклонение станет
От управления ресурсами «статистически значимым» и, следовательно, хорошо заметным,
и к управлению инновациями уже слишком поздно планировать инновацию. Инновационные
Один из основоположников методологии процессного управле- возможности не приходят на ураганной волне – их приносит лег-
ния и автор нотации ARIS Август-Вильгельм Шеер, полемизируя кое дуновение ветерка» (см. [5], с. 386).
с Николасом Карром, говорил в одном из своих выступлений пе- В некотором смысле инновации – это вершина творческого
ред CIO, что роль ИТ-директора все больше становится востребо- или мыслительного процесса, когда возникает совершенно новая
вана в сфере, связанной с технологией бизнеса. По мере расшире- идея, способная изменить существующий порядок вещей. Именно
ния области автоматизированных бизнес-процессов, компетенция такие идеи все больше и больше будут востребованы экономикой,
именно они станут аналогами товаров в обществе знаний. Несмо-
тря на то что инновации невозможно запланировать, существуют
Рисунок 2. Соотношение уровней решаемых CIO задач и уровня
требований к задачам, связанным с отраслевой спецификой стандарты на инновационную деятельность. Одним из важных
элементов инноваций является их взаимосвязь с научной дея-
тельностью: «инновация возникает в результате использования
результатов научных исследований и разработок, направленных
на совершенствование процесса производственной деятельности,
экономических, правовых и социальных отношений в области
науки, культуры, образования, в других сферах деятельности
общества» (см. [6], с. 6).
Крупные компании создают у себя исследовательские центры,
но для средних и тем более малых компаний это неподъемно, им
приходится пользоваться внекорпоративными научными лабора-
ториями (как правило, университетами). И такой подход подчас
приносит больший эффект в силу его гибкости. Это свидетель-
ствует о том, что для предприятий становится все больше вос-
требованной взаимосвязь с экспертными сообществами, которые
могут выполнять исследовательскую и инновационную функцию.
И примеров такого сотрудничества уже достаточно много.
Сегодня информационные системы разрабатываются в ос-
новном под те процессы, которые установились на предприятии.
Таких процессов множество, причем доля вспомогательных, [4] Аншина М., Вольпян Н., Олейник А., Славин Б. Разработка
как правило, превосходит долю основных бизнес-процессов. нового профессионального стандарта «Менеджер по информа-
Это несоответствие говорит о несовершенстве деятельности пред- ционным технологиям». // «Качество. Инновации. Образование»,
приятия, и оно сохранится до тех пор, пока все процессы, не свя- Vol. 105, №2, 2014 г. – С. 36-41.
занные с основным бизнесом, не будут выведены на аутсорсинг, [5] Друкер П. Энциклопедия менеджмента. – М.: Издательский дом
а основная деятельность не структурируется так, чтобы ее можно «Вильямс», 2004. – 432 с.
было легко изменять. Но как бы успешно вспомогательные [6] Казанцев А., Миндели Л. Основы инновационного менеджмен-
бизнес-процессы ни передавались партнерам, как бы ни стандар- та. – М.: «Экономика», 2004.
тизировался основной бизнес, всегда останется необходимость ор-
ганизации человеческих ресурсов с учетом их компетенций и тре- Ключевые слова: роль ИТ, управление ресурсами, управление услугами,
бований производства. Необязательно, чтобы эти человеческие управление информацией, управление знаниями, инновации.
ресурсы были постоянными работниками предприятия. Напротив,
в условиях инновационной экономики все чаще компании будут
привлекать профессионалов и экспертов на временной основе
либо вовсе через сетевые экспертные сообщества. Но всем этим The relationship of specific of industry and level IT problems solved
for business
необходимо управлять. Коммуникации с людьми, обеспечивающи-
ми работу предприятия, станут одним из основных приоритетов Slavin Boris, PhD, Financial University under the Government of RF,
в деятельности ИТ-службы в будущем. EOF professor, bbslavin@gmail.com
Maksimova Elena, Russian Union of CIO, director, Maksimova@rucio.ru
[1] Славин Б. Эпоха коллективного разума: О роли информации Summary: In this paper, we show that the level of the IT tasks depends on the
в обществе и о коммуникационной природе человека. – М.: specifics of the business industry in the context of the four eras of technological
(industrial, post-industrial, information age and knowledge), in addition to the
«Ленанд», 2013. size of the organization and management level in it. The results of the survey of
[2] Carr N. IT Doesn’t Matter.//Harvard Business Review. 2003. May. – CIOs of various companies confirm this relationship. The proposed method of
determining the level of requirements to solving IT problems can be used in the
P. 5-12.
organization of IT services companies.
[3] Славин Б. Взаимосвязь этапов развития информационных техно-
логий и экономики. // «Информационное общество», №6, 2015 г. – Key words: the role of IT management, service management, information
management, knowledge management, innovation.
С. 4-13.
Колосков В.Л., студент 4-го курса бакалавриата, НИУ ВШЭ, Москва, vlkoloskov@edu.hse.ru
Павлов И.Ю., студент 4-го курса бакалавриата, НИУ ВШЭ, Москва, pavlov.ilya.y@gmail.com
Иванов Е.Б., студент 4-го курса бакалавриата, НИУ ВШЭ, Москва, ebivanov@edu.hse.ru
/newbot общение из блока Send info about bot и начинает выполняться блок
Location?. Если в ответ бот получит локацию, то в ответ отсыла-
после чего бот попросит придумать имя новому боту. ется погода с учетом вашей локации, в противном случае, если
В принципе ограничений на имя бота не существует, кроме ввести город, будет выслана погода в этом городе.
одного – имя в конце должно заканчиваться на «bot». Вводим Принцип работы блока. В качестве примера возьмем блок нача-
название бота и его имя, к примеру, «Бот для теста» (это сообще- ла работы бота – блок /start. Нужно выбрать тип блока в редакторе
ние-приветствие) и test141bot. блоков. Блок проверяет, пришла ли команда /start от нашего бота,
В случае успеха действий BotFather присваивает боту HTTP для такой проверки потребуется блок Condition. На рис. 4 пред-
API token и возвращает его вместе со ссылкой для быстрого до- ставлен интерфейс выбора типа блока.
бавления бота в контакты, в противном случае нужно подумать Блок создан, теперь в него нужно добавить проверочное
над другим именем для бота. В нашем случае токен, полученный условие и объединить с предыдущим блоком, чтобы он мог
от BotFather, имеет вид: 189563781:AAEgM3Jog39WScLnUTK7fe_ получать информацию для проверки. Для этого выбираем блок
oI2SeSildubI. Condition. Справа в редакторе появится контекстное меню, в нем
Теперь переходим в Manybot и подтверждаем, что API token и будет наше условие. На рис. 5 представлено контекстное меню
скопирован, и получаем подтверждение вместе со ссылкой на бот для настройки блока. Если пришло сообщение /start, значит, блок
@test141bot. Manybot предлагает протестировать вновь создан- выполняется. На рис. 6 показан пример реализации запроса.
ный бот – тестируем его, убеждаемся, что бот реагирует на наши
действия. Выбираем наш бот для теста и «просим» его отправить Создание простого погодного бота с помощью кода
наш первый пост «Hello World!» с помощью команды: Как язык разработки был выбран Python [3]. В связи с его адап-
тивностью алгоритмы, написанные на этом языке, достаточно
/newpost легко переносятся на любой другой язык. В данной работе
для разработки бота будет использована библиотека для Python
и, т.к. мы являемся подписчиками, видим, что он отправляет наше pyTelegramBotAPI, которая существенно упрощает процесс
сообщение всем подписчикам. Убедившись в этом, продолжаем. программирования, взяв на себя все нюансы отправки и полу-
Боты могут автоматически постить из Twitter, YouTube или VK. чения запросов и позволяя сконцентрироваться непосредственно
Для примера продемонстрируем репостинг из VK (все делается на логике. Для написания скрипта используется среда разработки
по аналогии). Посылаем нашему боту команду: PyCharm. Прежде чем приступить к написанию кода, нужно уста-
новить последнюю версию Python, а также компилятор PyCharm.
/autoposting После установки среды разработки необходимо установить две
библиотеки, необходимые для правильного функционирования
и выбираем, откуда мы хотим получать репосты – у нас это VK. бота, – библиотеку pyTelegramBotAPI и библиотеку pywapi [4].
Теперь нужно отправить боту ссылку на человека, сообщество Перейдем к делу. Напишем бот, который будет сообщать нам
или группу. После этого бот начинает «мониторить» эту страницу. погоду в двух столицах – Москве и Санкт-Петербурге. Для начала
создаем новый проект в PyCharm. Внутрь этого проекта помещаем Перейдем к main.py. Для начала импортируем все необходимые
два файла: main.py и constants.py. В первом из них будет находить- нам файлы и создадим объект нашего бота:
ся скрипт нашего бота, а второй, в свою очередь, будет содержать
все константы (такие как приветственное сообщение, сообщение import telebot
для команды /help и другие), чтобы не засорять код в main.py. import constants
import pywapi
Токен позволяет управлять ботом как угодно, а мы не хотим,
чтобы управление нашим ботом случайно оказалось в руках
какого-либо злоумышленника, поэтому лучше не вставлять токен где:
в основной код программы, а вынести его в отдельный файл. В на- • Telebot – файл, который существенно упрощает нам процесс
шем случае мы поместим его вместе с константами в constants.py. создания бота.
Сейчас constants.py имеет следующий вид: • Constants – созданный нами файл с константами и токеном
бота.
# Здесь введите токен бота, который вам вернул botFather • Pywapi – поможет нам получить новостную сводку [4].
token = 'BotToken'
startAnswer = "Ну что же, приступим. Погоду в каком городе вы Для начала создадим объект бота, через который будет
хотели бы узнать?" осуществляться обращение к API Telegram с использованием
helpAnswer = """Доброго времени суток!
методов, о которых рассказано на сайте Telegram в описании Bot
Меня зовут TwoCapitalsWeatherBot! Я – самый лучший погодный
бот во всем Telegram! API. Для создания нужно вызвать его конструктор и в качестве
Я знаю все о погоде, но… только в двух городах… двух параметра передать токен бота.
столицах – Москве и Санкт-Петербурге
Для получения сводки о погоде в Москве нажмите /moscow
Вы хотите знать, что приготовила для вас питерская погода? bot = telebot.TeleBot(constants.token)
Нажмите /piter""
По мере усложнения функций бота код начинает расти,
На этом файл constants.py можно сохранить и закрыть, что становится проблемой. Чтобы не загромождать код огром-
т.к. к нему больше возвращаться не будем. ным количеством циклов и конструкций if-elif-else, в библиотеке
Рисунок 4. Выбор типа блока Рисунок 5. Настройка блока Рисунок 6. Пример работы запроса
Рисунок 7. Пример работы бота Рисунок 8. Пример реализации бота с кастомной клавиатурой
• В этом случае не требуется никаких серверов, [5] Сайт библиотеки pyTelegramBotAPI – https://pypi.python.org/pypi/
так как все хранится в облаке. Облако всегда обработает pyTelegramBotAPI.
нужную информацию, вне зависимости от нагрузки.
• Возможность сбора аналитических данных, в этом случае Ключевые слова: Python, Corezoid, Telegram, bot, бот, разработка.
Corezoid собирает всю статистику по количеству посещений,
а также по переходам от одного блока к другому. Следо- Bot development for Telegram: by using Python programming language
вательно, можно выявить непопулярные блоки и убрать and cloud operating system Corezoid
их или переделать, тем самым оптимизировав бот.
Koloskov V.L., a student of the 4th year undergraduate, vlkoloskov@edu.hse.ru
Недостатком Corezoid является то, что разработчики все же Pavlov I.Y., a student of the 4th year undergraduate, pavlov.ilya.y@gmail.com
хотят зарабатывать. В связи с этим при использовании облачной Ivanov E.B., a student of the 4th year undergraduate, ebivanov@edu.hse.ru
ОС плата взимается за каждый переход от одного блока к другому, Higher School of Economics, Moscow
следовательно, при большой нагрузке на бот сильно возрастает
его цена. Summary: In our time of rapid development of IT technologies,
Главным преимуществом метода «классического» программи- messenger for phones and tablets are gaining immense popularity. One
рования (Python) являются гибкость процесса создания и функции of the most sophisticated and technologically advanced messengers
бота, а недостатком – необходимость установки полноценного is Telegram Messenger, which gained popularity in Runet. The main
веб-сервера на машину с запущенным ботом. Также надо иметь feature of this application are bots, or «intelligent assistant» which
собственный SSL-сертификат, т.к. веб-хуки в телеграмме рабо- distinguishe it from competitors. This article describes the process
тают только по HTTPS. К счастью, сейчас появилась поддержка of bot development for Telegram by using Python programming
самоподписанных сертификатов. EOF language and cloud operating system Corezoid. The process of the
bot registration and some simple commands are considered in the
[1] Сайт с описанием Bot API – https://core.telegram.org/bots/api.
beginning of the work. This paper ends with an information about pros
[2] Сайт облачной операционной системы Corezoid – https://www.
and cons of these two development approaches.
corezoid.com.
[3] Документация Python – https://www.python.org/doc.
Keywords: Python, Corezoid, Telegram, bot, development.
[4] Сайт с библиотекой pywapi – https://pypi.python.org/pypi/pywapi.
и «Наука и технологии».
май 62) аук
2016 и РФ
Шаб
в Vir лон
ык
tuoz
zo онте
йне
Как ров
прил писать
ожен м
ия бы обил
Тех стре ьны
н е
Авт ологи
е
омат я
изир Cucu
ES Д уе м от mber
Раз екор
четн
ато ость
бира
емся ры
в дет
алях
Человек и машина
Издается с 2002 года
«Системный администратор» включен в перечень веду-
щих рецензируемых журналов ВАК Минобрнауки РФ
ролевский колледж в Кембридже. В возрасте 24 лет переформулировал знаменитую теорему Редакционная коллегия
Геделя о неполноте и предложил первую модель компьютера общего назначения – абстракт- Д. Ю. Гудзенко, к.т.н., директор Центра компьютерного
обучения «Специалист» при МГТУ им. Н.Э. Баумана
ную «машину Тьюринга», позволившую формализовать понятие алгоритма. По сути, это была Д. Ю. Динцис, д.т.н., ведущий преподаватель Центра
впервые ясно выраженная идея Универсальной машины, способной вычислить все, что можно компьютерного обучения «Специалист» при МГТУ
им. Н.Э.Баумана
было вычислить в принципе. О.В. Китова, д.э.н., доцент, зав. кафедрой информатики
РЭУ им. Г.В.Плеханова, директор Академического
А когда началась война, талантливого математика привлекли к работе, самой
центра компетенции IBM «Разумная коммерция»
что ни на есть практической. Жизненно важной для британских военных: разгадывать немецкие в РЭУ им. Г.В.Плеханова
А. С. Крюковский, д.ф-м.н., профессор, лауреат
шифры и коды, с помощью которых, в частности, подлодки противника наводились на морские Государственной премии СССР, декан факультета
цели англичан и их союзников. Немецкое командование шифровало свои сообщения с помо- информационных систем и компьютерных технологий
Российского нового университета
щью лучшей на то время шифровальной машины Enigma. И именно Тьюринг предложил взло- Э. С. Клышинский, к.т.н., доцент департамента компьютерной
мать коды немецкой машины с помощью машины же – но собственной. Под его руководством инженерии НИУ ВШЭ
Л.А. Крукиер, д.ф-м.н., профессор, главный научный
такая машина – Bombe – была создана и успешно справилась с поставленной задачей. Начиная сотрудник кафедры высокопроизводительных вычислений
с 1942 года британское Адмиралтейство было в курсе всех намечавшихся морских операций и информационно-коммуникационных технологий
Южного федерального университета
противника. Хотя использовало эту информацию строго дозировано – чтобы ни в коем слу- С. Р. Тумковский, д.т.н., профессор департамента
чае не дать противнику понять, что его секретные радиограммы прочитаны. «Статистическую» компьютерной инженерии НИУ ВШЭ, лауреат Премии
Правительства РФ в области науки и техники
схему контрмер разработал, кстати, тот же Тьюринг – не без моральных колебаний. Потому А. В. Тетюшев, к.т.н., доцент Вологодского государственного
что, следуя его схеме, Адмиралтейство какие-то свои корабли – и жизни находившихся на них технического университета
солдат – спасало (изменив маршруты следования, или усиливая охрану конвоев, или заблаго- Экспертный совет
временно топя вражеские подлодки и сбивая вражеские самолеты), другие же суда продолжали Рашид Ачилов, главный специалист по защите информации
Сергей Барамба, эксперт по системным решениям
следовать своим курсом, попадая под удары немецких субмарин или авиации… Алексей Бережной, эксперт по администрированию и ИБ
Андрей Бирюков, ведущий системный инженер по ИБ
До конца войны Тьюринг успел еще много чего – разработал портативный дешифратор
Алексей Вторников, эксперт по вопросам разработки ПО
Delilah, а также расшифровал еще более сложные коды для немецкой машины Lorentz, пред- Константин Кондаков, старший директор по ИТ
Кирилл Сухов, ведущий специалист направления интернет-
назначенной для шифровки сообщений высшего командования вермахта. Для решения по- разработки
следней задачи Тьюринг привлек в свою команду опытного инженера-электронщика Томаса Леонид Шапиро, эксперт по ИБ и инфраструктурным проектам
Сергей Яремчук, эксперт по ИБ
Флауэрса, с помощью которого была создана одна из первых в мире ЭВМ – Colossus.
А после войны ученый разрабатывал первый в мире компьютер с хранимой в памяти про- Издатель
ООО «Издательский дом Положевец и партнеры»
граммой – ACE, принимал участие в создании компьютера Mark I, опубликовал пионерские Адрес редакции
работы по проблеме искусственного интеллекта (тот самый «тест Тьюринга», позволяющий 129075, г. Москва, Шереметьевская ул., д. 85, стр. 2, офис 405,
тел.: (499) 277-12-41, факс: (499) 277-12-45
ответить на вопрос, может ли машина мыслить) и математической биологии, придумал первую Сайт журнала: www.samag.ru
шахматную программу для компьютера…
Отпечатано в типографии
Он бы еще, наверное, многое успел, если бы не проблемы с собственной «биологией», OOO «Периодика»Тираж 17000 экз.
каковые тогда трактовались исключительно как уголовно наказуемое извращение. Бездушной
Все права на материалы принадлежат журналу «Системный
машиной, лишенной интеллекта и человечности, оказалось британское правосудие. Только администратор». Перепечатка и использование материалов
спустя полвека глава правительства Великобритании официально извинился перед давно в любой форме, в том числе и в электронных СМИ,
без разрешения запрещена. При использовании материалов
умершим человеком, который посмертно был признан «одним из 100 величайших британцев ссылка на журнал «Системный администратор» обязательна.
Материалы отмеченные знаком ADV публикуются на коммерческой
в истории». EOF
основе. Редакция не несет ответственности за достоверность
Владимир Гаков информации в материалах, опубликованных на правах рекламы.
Новый статус
eiN = ⎜ 0, , 0,1, 0, , 0 ⎟
⎜
⎟ eN ( ) RN
журнала
⎝ i N −i ⎠
⎛ 1
⎜N , , N −1 , kN −1
,N ,
1
,N
X {x ( ) x ( N )} ⎝ Ndomv
n
–
N N ША
ε e ( x ) = ∑ eiN χ ( x = x ( i ) )
новые возможности!
domv i =1
ваши SK { }
n1
( ) n 2, 3, 1, 4, 5
ШАГ
www.samag.ru
xn x (i ) pn pn − γ n R ( xn pn n )
N
STAT ε
GR
q πεN q i −1
∑ p ( j) ≤
i
< ∑ pn ( j )
вошел в перечень
S ST рецензируемых научных
S AT
изданий Высшей аттестационной комиссии – ВАК!
ERR
⎧ N
⎫
SεN ⎨p = ( p pN ) p R N , ∑ pi = 1 pi ≥ ε ( i N )⎬
N
⎩ i =1 ⎭
научным сообществом.
e (x ) p
n +1 ε n+1 n n T n
информационных
N технологий. ε ∈ ⎣ 0,
pn +1 πε n+1 pn − n
n R xn pn n
Требования к публикациям научных статей размещены на сайте журнала
n 1, 2,
«Системный администратор»: http://samag.ru/main/part/49
ξn ξ n xn ω n
1 n
Φn = ∑ ξt ;
n t =1
n FGUI
⎧⎪ ⎛ ξ − ξn − Δ ξn − Δ ⎞⎫
) ⎟⎟ ⎬⎪
⎜ e ( x ) p ( n ) eT ( x ) p d ( n − ) eT ( x ) p d ( n
lim Φ n → υ .
pn +1 πεNn+1 pn − γ n ⎜ T n
⎨ e x + e x + e x
⎩⎪ ⎝ n n n n n n ⎠ ⎭⎪
n →∞
→
(− − )
MALINA.KASPERSKY.RU
© АО «Лаборатория Касперского», 2016. Зарегистрированные товарные знаки и знаки обслуживания являются собственностью их правообладателей. Реклама