Тестирование бета-версии Exchange 2007 с использованием Virtual Server 2005 R2

Если бы мир был идеальным, каждое ИТ-подразделение располагало бы специализированной средой для тестирования новых версий программ. Но в действительности не у всех есть возможность выделить системы для тестирования, хотя некоторые ИТ-специалисты не прочь установить бета-версии программ и на производственных компьютерах. Тем не менее, благодаря выходу бесплатной версии Virtual Server 2005 Release 2 (R2) (загрузить ее можно по адресу http://www.microsoft.com/windowsserversystem/ virtualserver/software/default.mspx), совсем несложно подготовить изолированную тестовую установку и запустить бета- или новую версию программы на виртуальной системе (VM). Недавно я создал такую среду для тестирования Exchange Server 2007 Beta 1 и новой версии Outlook Web Access (OWA), и хочу в этой статье рассказать об основных шагах, которые мне потребовалось сделать.

Во врезке «Построение простой виртуальной среды» описан процесс создания виртуальных жестких дисков в Virtual Server и установки операционных систем Windows в VM. На рисунке показана схема тестовой установки. Прежде чем приступить к проекту виртуализации, следует договориться с руководством компании о политике в отношении установки бета-версий программ и запуска тестовых систем, подключенных к производственной сети.

Рисунок. Тестовая среда VM

Выбор аппаратных средств

Преимущество тестирования с использованием Virtual Server 2005 заключается в том, что можно избежать приобретения новых аппаратных средств. Следует провести краткую инвентаризацию всех свободных аппаратных средств и подумать, какую тестовую установку можно построить из имеющихся компонентов.

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

Я использовал списанный HP NetServer LH6000, сервер с четырьмя процессорами P3 550MHz Xenon, который исправно обслуживал несколько баз данных Microsoft SQL Server 2000 в течение четырех лет. Мне пришлось изъять несколько модулей оперативной памяти из другого списанного NetServer, чтобы увеличить память тестовой системы до 4 Гбайт. Для хранения операционной системы и программных файлов использовался 8-гигабайтный SCSI-массив RAID 1, а виртуальные жесткие диски разместились в SCSI-массиве RAID 5 на 170 Гбайт. Технология RAID в тестовой системе необходима для избыточности: обидно провести целый день, устанавливая виртуальные системы, и лишиться их из-за отказа диска. Кроме того, массив RAID обеспечивает более высокую скорость ввода/вывода для VM, чем единственный диск большой емкости.

Рекомендуется полностью изолировать VM как от производственной сети, так и от Internet. В результате устраняется негативное влияние бета-программы на производственную среду и необходимость устанавливать антивирусные программы в виртуальных системах (чем меньше программ, тем выше производительность). Недостаток данного подхода в том, что приходится разворачивать в VM все компоненты с дисков CDROM или DVD. Поэтому тестовую систему необходимо дополнить накопителем DVD-ROM. Предпочтительный вариант — накопитель DVDROM/CD-RW, а идеальным решением будет два накопителя — один для чтения CD/DVD, а другой для записи CD/DVD. Собрав все компоненты для тестовой системы, следует установить необходимые модули памяти, процессоры, накопители и другие аппаратные устройства и настроить аппаратные средства RAID.

Изолировать или подключать?

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

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

  • Можно установить клиент Virtual Machine Remote Control (VMRC) - компонент Virtual Server 2005, который обеспечивает клиенту доступ к VM на виртуальном сервере, на любом числе управляющих рабочих станций в сети, что позволит контролировать VM с офисного компьютера, домашнего компьютера через VPN-соединение или из другого места.
  • Можно получить доступ к тестовой системе через Remote Desktop.
  • Сидя за консолью тестовой системы, можно загружать программное обеспечение из Internet и, если установлено устройство записи CD/DVD, создавать любые нужные копии. Затем можно монтировать только что записанный CD/DVD в виртуальных системах.
  • С помощью средства резервного копирования можно создавать копии виртуальных жестких дисков через сеть.

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

В любом случае на следующем этапе необходимо выполнить чистую установку Windows Server 2003 Service Pack 1 (SP1) на тестовой системе, затем установить на ней Virtual Server 2005 R2. Более подробная информация об установке приведена во врезке «Создание простой виртуальной среды». Если тестовая система подключена к производственной сети, то теперь самое время установить VMRC на управляющих рабочих станциях. Web-узел Virtual Server Administration полезно внести в список «Избранное» в Microsoft Internet Explorer (IE), так как в процессе настройки Virtual Server приходится часто обращаться к этому сайту.

URL-адрес Web-узла Administration обычно имеет вид http://servername:1024/, где servername — имя NetBIOS тестовой системы.

Установка Exchange 2007

После того как были созданы VM и виртуальные жесткие диски и развернуты операционные системы, можно приступать к установке Exchange 2007 Beta 1. Для этого следует вставить DVD-диск Exchange 2007 Beta 1 в накопитель CD/DVD тестовой системы и запустить процесс установки. Также необходимо установить Microsoft .NET Framework 2.0, которая имеется на DVD-диске Exchange 2007 Beta 1.

Программа установки сообщит, что требуется установить консоль Microsoft Management Console (MMC) 3.0. Сначала я решил не инсталлировать MMC 3.0, так как она входит в состав уже установленной версии Windows 2003 R2, но программа установки отказывалась продолжить работу, пока это не было сделано.

После поиска в Google мне удалось найти решение проблемы в Microsoft Exchange Team Blog (http://www.msexchangeteam.com). Программе установки требуется предварительная сборка Release Candidate 1 (RC1) Refresh консоли MMC 3.0. Решить данную проблему можно, установив эту сборку или добавив в реестр новый раздел. Я выбрал обходной путь с разделом реестра; выйдя из программы установки, я создал пустой раздел HKEY_LOCAL_MACHINESoftware MicrosoftWindowsCurrentVersionUn installMMC30Core. После того как раздел был создан, работа программы установки продолжилась, и я установил роли Hub Transport, Mailbox Server и Client Access Server Exchange. Я не тестировал роль Unified Messaging изза отсутствия офисной АТС и роль Edge Transport, так как она неприменима к данной тестовой среде.

После выбора ролей начинаются предустановочные проверки. В моем случае сначала не прошли проверку роли Hub Transport, Mailbox Server и Client Access из-за смешанного режима домена Windows 2000, так как домен Active Directory (AD) не был переведен из смешанного режима Windows 2000 в однородный режим Windows 2003. Я вышел из программы установки и обновил домен. Процедура описана во врезке «Построение простой виртуальной среды».

В ходе предустановочной проверки также выяснилось, что не установлен Microsoft IIS. Вновь покинув программу установки, я устранил этот недостаток с помощью функции Add/Remove Windows Components утилиты Add or Remove Programs, выбрав Application Server (IIS), чтобы установить IIS с параметрами по умолчанию. После этого были успешно пройдены все предварительные проверки и началась установка.

На следующем этапе, Organization Preparation, атрибуты Exchange должны быть добавлены в AD. Мне для этого потребовалось чуть больше часа (на другой тестовой установке время может быть иным). После завершения Organization Preparation начинается установка собственно Exchange 2007.

Процесс установки проходил гладко до тех пор, пока была установлена роль Mailbox Server, а затем появилось сообщение об ошибке: An error occurred while performing operations on atom from exsetdata.dll: Error HRE-SULT E_FAIL has been returned from a call to a COM component.... («ошибка при выполнении операций на элементе из exsetdata.dll: Ошибка HRESULT E_FAIL возвращена при вызове COM-компонента»). Из Web-дневника команды разработчиков Exchange я узнал, что и другие пользователи сталкивались с этой проблемой. Предлагается два решения: повторно установить Windows 2003 SP1 или удалить, а затем повторно установить Exchange 2007. Я выбрал метод удаления/повторной установки. После удаления Exchange 2007 и перезагрузки виртуальной системы EXCH (VM, созданная раньше, как описано во врезке «Построение простой виртуальной среды», в которой содержатся данные и приложение Exchange) я перезапустил процедуру установки и на этот раз не получил сообщений об ошибках. Обратите внимание, что удаление и повторная установка Exchange 2007 приводит к созданию дополнительной группы Universal Security Group (USG) в AD, называемой Exchange Server Administrators(servername)#, где servername — имя NetBIOS тестовой системы, а #, по-видимому, увеличивается на 1 при каждом этапе удаления/установки.

Тестирование Exchange 2007

Конечно, от Exchange без почтового ящика пользы мало, поэтому следующий шаг после установки Exchange 2007 в VM — создать почтовые ящики. Как администратор Exchange, работавший еще с Exchange Server 5.5, я первым делом хотел зарегистрироваться в качестве Administrator в XP1, VM, созданной для Microsoft Office Outlook 2007 и OWA, и попытаться получить доступ к Web-узлу OWA по адресу http://exch.incubator.local/exchange. Но сделать это не удалось. Я подумал, что учетная запись Administrator не готова для работы с почтовым ящиком, поэтому проверил ее через Exchange Management Console (EMC) — новую версию Exchange System Manager (ESM) для Exchange 2007, но мое предположение оказалось неверным. Поиск в Google и изучение Web-дневника команды Exchange тоже не дали результата. Я перечитал сопроводительную документацию, но все равно ничего не нашел. Я предположил, что OWA может быть отключена для данного пользователя, но в EMC Beta 1 нет возможности включать/отключать доступ к OWA для отдельных пользователей. Я заподозрил, что включить/отключить OWA для отдельного пользователя можно в Exchange Management Shell (EMS), но пока не был готов заняться EMS. Наконец, я решил создать нового пользователя и попытаться зарегистрироваться с этой учетной записью.

Я создал пользователя TestUser1 на DC, виртуальной системе, которая является контроллером домена (DC) и содержит AD. Находясь в DC, я создал общий каталог с именем ExDoc Access, чтобы протестировать OWA Document Access, новую функцию для доступа к файлам, хранящимся в общих каталогах внутренней сети без VPN-соединения или подключения через Terminal Services. Я также подготовил текстовый файл и поместил его в этот каталог. Затем в EXCH я спокойно подготовил учетную запись нового пользователя к работе с почтовыми ящиками и смог зарегистрироваться в OWA. Щелкнув на кнопке Documents в OWA (экран 1), я мог открыть общий каталог и текстовый файл. Отлично! Как хотелось бы уже сегодня иметь эту функцию в производственной системе.

Экран 1. Доступ к документам в сети через OWA Document Access

Я удалил TestUser1 на DC, и Exchange 2007 автоматически удалил почтовый ящик пользователя. Затем были созданы две учетные записи новых пользователей John Smith и Jenny Jones. В EXCH я подготовил их к работе с почтовыми ящиками (экран 2). Я зарегистрировался в XP1 как John Smith, в XP2 (VM, созданная для OWA и Microsoft Office Outlook 2003) как Jenny Jones и смог посылать сообщения с помощью OWA и Outlook 2003 (экран 3). Настройка Outlook 2007 прошла гладко, с помощью мастера, который начинает действовать при первом запуске Outlook после установки. Чтобы создать профиль Outlook, достаточно было выбрать Microsoft Exchange Server в качестве учетной записи, к которой нужно подключиться; Outlook 2007 автоматически создал профиль. Как показано на экране 4, Outlook преобразовал мое имя пользователя (John Smith) и сервер Exchange и немедленно установил подключение. Эта функция, называемая Auto Account Setup, — новшество Exchange 2007 и Outlook 2007, для которого необходимы оба продукта, — будет отличным дополнением к производственным версиям, так как при этом упрощается весьма сложный процесс создания профиля.

Экран 2. Подготовка пользователей к работе с почтовыми ящиками в Exchange 2007
Экран 3. Просмотр тестовых сообщений в OWA
Экран 4. Использование функции Auto Account Setup для автоматического создания профиля в Outlook 2007

Что дальше?

Если в дальнейшем захочется (или придется) вернуться к прежним версиям Exchange, достаточно будет закрыть виртуальные системы и выполнить восстановление из резервных копий виртуального диска (или разделяемых виртуальных сетей и разделяемых VM), которые нужно сделать после создания VM и установки Windows (см. «Построение простой виртуальной среды»). В остальном ограничений нет. Один из моих коллег оснастил тестовую систему Exchange Server 2003 и Exchange 5.5, чтобы отрабатывать сценарии миграции. Компакт-диски с Exchange 5.5 на такой случай полезно сохранять.

В скором времени на моей тестовой системе разместятся Exchange 2007 Beta 2, SQL Server 2005, System Center Configuration Manager 2007 (в прошлом известный как SMS v4) Beta 1, Windows Vista Beta 2 и Windows Server Longhorn Beta 2. Желаю всем нашим читателям удачи и смелых экспериментов в тестовой системе!

Майкл Драгон - Cистемный инженер страховой компании в Нью-Йорке. Имеет сертификаты MCDST и MCSE. mike@mikerochip.com


Приложения тестовой системы

Необходимо получить Microsoft Virtual Server 2005 Release 2 (R2) Enterprise Edition и приложения, которые предполагается установить в виртуальных системах (VM) тестовой системы. У подписчиков TechNet Plus уже есть все, что требуется. Им следует открыть голубые папки и собрать нужные CD и DVD. У подписчиков TechNet Plus также имеется лицензия на установку демонстрационных версий программ в непроизводственной среде. Подписчикам Microsoft Developer Network (MSDN) предоставляется аналогичный доступ к демонстрационным версиям программ. Остальные пользователи могут обратиться на Web-узел Microsoft и загрузить пробные версии программ, которые нужно установить.

Для тестовой системы потребуются по крайней мере следующие базовые операционные системы:

  • Windows Server 2003, Standard Edition Service Pack 1 (SP1);
  • Virtual Server 2005 R2 Enterprise Edition;
  • драйверы для тех аппаратных средств, у которых нет их в Windows.

Также потребуются экземпляры устанавливаемых приложений. Для среды, описанной в данной статье, понадобятся:


Построение простой виртуальной среды

После установки Microsoft Virtual Server 2005 Release 2 (R2) на тестовой системе необходимо выполнить несколько предварительных операций по настройке: создать виртуальные системы (VM) и виртуальные жесткие диски. Подготовив виртуальную среду, на тестовой системе можно установить любые операционные системы. Я расскажу, как были выполнены обе процедуры, завершить которые необходимо перед развертыванием Exchange Server 2007 Beta 1 на тестовой системе.

Создание VM и виртуальных жестких дисков

Чтобы создать виртуальные системы, следует сначала обратиться на Web-узел Virtual Server Administration на системе, на которой установлен Virtual Server 2005. Не стоит поддаваться соблазну щелкнуть на кнопке Create в разделе Virtual Machines; предварительно требуется создать и настроить виртуальные сети и виртуальные диски. В разделе Virtual Networks нужно перейти к Configure и щелкнуть на Internal Network. Затем следует щелкнуть на ссылке Network Settings и убедиться, что параметру Physical network adapter присвоено значение None (Guests Only). В результате виртуальные системы, подключенные к этой виртуальной сети (см. рисунок в основной статье), будут изолированы от производственной сети.

В процессе настройки Internal Network нужно щелкнуть на ссылке DHCP Server и блокировать его. Спустя некоторое время предстоит создать виртуальные системы, одна из которых будет работать со службой DHCP. Завершив подготовку виртуальной сети, можно создать несколько виртуальных жестких дисков. В разделе Virtual Disks следует указать на Create, а затем щелкнуть Fixed Size Virtual Hard Disk. Для создания динамически развертываемого виртуального жесткого диска требуется меньше времени, но быстродействие виртуального жесткого диска с заранее выделенным пространством выше, так как не приходится тратить ресурсы на развертывание диска «на ходу».

Затем нужно ввести путь и имя для виртуального жесткого диска. Я подготовил виртуальные диски по 16 Гбайт, но их емкость может быть любой в рамках ограничений операционной системы, установленной на VM. Потребуется несколько виртуальных дисков, поэтому следует осмотрительно выбирать размеры, иначе пространства на диске может не хватить. Я даю дискам названия в соответствии с ролью системы, например, DC для контроллера домена (DC), EXCH для Exchange, но имя может быть любым. Выбрав все необходимые параметры, следует щелкнуть на кнопке Create.

Virtual Server обеспечивает создание множества виртуальных жестких дисков в фоновом режиме, поэтому данную процедуру нужно повторять до тех пор, пока не будут готовы все виртуальные жесткие диски. Процесс создания может занять некоторое время в зависимости от аппаратных средств: на моей системе создание 16-гигабайтного виртуального жесткого диска занимало от 10 до 15 минут.

После того как будут готовы виртуальные жесткие диски, нужно щелкнуть на ссылке Create в разделе Virtual Machines и дать имя новой VM; я всегда называю свои так же, как соответствующий жесткий диск. Следует решить, какой объем оперативной памяти потребуется для VM, и выделить, сколько необходимо. На моих тестах производительность была приемлемой при оперативной памяти объемом 512 Мбайт для каждой VM. В разделе Virtual Hard Disk следует выбрать один из виртуальных дисков, который будет использоваться в качестве текущего, и указать соответствующий заранее созданный .vhd-файл (.vhd-файл «содержит» виртуальный жесткий диск). Из раскрывающегося меню Bus нужно выбрать пункт SCSI (но не IDE); виртуальный жесткий диск будет работать быстрее через интерфейс SCSI. Наконец, в разделе Virtual network adapter следует убедиться, что новая VM подключена к Internal Network, и щелкнуть на кнопке Create. Для создания VM требуется всего несколько секунд, независимо от аппаратных средств тестовой системы.

Процедуру следует повторить для каждого виртуального диска, и несколько VM можно подготовить за короткое время. Чтобы построить копию моей тестовой системы, потребуется создать четыре VM. Каждая из них должна располагать 16-гигабайтным виртуальным жестким диском, оперативной памятью объемом 512 Мбайт и подключаться к виртуальной сети с именем Internal Network. Вот эти VM:

  • DC для Directory (AD), т. е. DC, созданного ранее;
  • EXCH для Exchange 2007;
  • XP1 для Microsoft Outlook Web Access (OWA) и Microsoft Office Outlook 2007;
  • XP2 для OWA и Microsoft Office Outlook 2003.

На рисунке в основной статье показана структура тестовой среды.

Установка Windows 2003

Наконец сбылась мечта администратора о возможности идентично устанавливать Windows несколько раз в течение дня. Достаточно вставить компакт-диск Windows Server 2003 Release 2 (R2) в накопитель тестовой системы, запустить клиент Virtual Machine Remote Control (VMRC) и щелкнуть на системе, на которой нужно начать установку.

При первом запуске VM выглядит как «чистый» компьютер. На экране появляются сообщения POST, в том числе объем установленной памяти и сообщения SCSI BIOS, как на настоящем компьютере. Вскоре после этого запускается программа Windows Setup. Операционную систему можно устанавливать одновременно на нескольких VM; достаточно щелкнуть в VMRC на любой другой VM, которую необходимо запустить.

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

Процедура установки Windows Server — привычная. Я настроил DC и EXCH на лицензирование для каждого пользователя (10 соединений) и удалил драйвер Network Load Balancing (NLB) во время установки. Адрес моей тестовой сети 192.168.100.0/24, поэтому я назначил DC IP-адрес 192.168.100.1 без шлюза по умолчанию, а EXCH — IP-адрес 192.168.100.2 со шлюзом по умолчанию 192.168.100.1. После завершения установки Windows выдается запрос о диске Windows 2003 R2 Additions CD-ROM. Следует вставить его и установить компоненты R2. Рабочие характеристики (например, разрешение экрана, чувствительность мыши, общий отклик системы) довольно невысокие, поэтому на данном этапе рекомендуется установить VM Additions. VM Additions — компонент Virtual Server 2005 R2, который добавляет в VM специальные драйверы и программы, чтобы повысить производительность и управляемость. При этом не только достигается 10-кратное ускорение VM, но и появляется возможность увеличить разрешение экрана и глубину представления цвета и избавиться от необходимости щелкать мышью при нажатой клавише Alt, чтобы вывести курсор из VM, вернув его в локальную систему. В частности, с помощью Additions можно просто ввести и вывести мышь из окна VMRC, как в обычном приложении Windows. Без Additions требуется щелкнуть в окне VMRC, чтобы «захватить» курсор мыши, затем щелкнуть при нажатой клавише Alt, чтобы освободить курсор мыши, и использовать его вне окна VMRC.

Чтобы установить VM Additions, следует указать на Configure в разделе Virtual Machines Web-узла Virtual Server Administration и щелкнуть на системе, на которой нужно установить VM Additions. Затем необходимо щелкнуть на ссылке Virtual Machine Additions, установить флажок Virtual Machine Additions и нажать на кнопку OK. Программа установки должна быть автоматически запущена в VM.

После установки VM Additions и обязательной перезагрузки VM настоятельно рекомендуется скопировать каталог i386 с компакт-диска Windows 2003 R2 на виртуальный жесткий диск. Наличие каталога i386 на виртуальном жестком диске позволит сэкономить много времени, так как он понадобится для установки дополнительных компонентов Windows на следующем и более отдаленных этапах.

Установка дополнительных программ: AD, DNS, XP и Outlook 2007

На данном этапе имеются два чистых экземпляра Windows 2003 R2 и предстоит установить AD и DNS на виртуальной системе с именем DC. Мое имя домена — incubator.local, но можно выбрать любое другое. Я также установил WINS и DHCP с одним диапазоном, который начинается с 192.168.100.100. После этого я поднял функциональный уровень домена со смешанного Windows 2000 до однородного Windows 2003, а функциональный уровень леса — с Windows 2000 до однородного Windows 2003. Домены смешанного режима Exchange 2007 не поддерживает.

В ответ на запросы двух различных CD-ROM (Windows 2003 SP1 и Windows 2003 R2) при запуске утилиты Add/Remove Windows Components для установки AD, DNS, WINS и DHCP достаточно направить программу установки на скопированный каталог i386. Обратите внимание, что после установки Windows на виртуальных системах необходимо присоединить EXCH VM к вновь созданному домену.

Затем следует установить клиентские системы Windows XP, которые будут получать IP-адреса от вновь созданного DHCP-сервера. Их нужно присоединить к домену на этапе установки и установить VM Additions. Затем разворачиваем Outlook 2007 Beta 2 на VM с именем XP1, а Outlook 2003 — на VM с именем XP2. Единственной проблемой, с которой я столкнулся при установке Outlook, было сообщение программы установки Outlook 2007 о необходимости закрыть приложение перед продолжением установки. Из текста сообщения невозможно понять, какое именно приложение вызвало проблему. Сначала у меня было открыто окно Windows Explorer; после того, как я закрыл его и нажал кнопку Retry, сообщение появилось снова, поэтому я нажал кнопку Ignore. Сообщение об ошибке закрылось, и никаких проблем в дальнейшем не возникло.

Начальную страницу Microsoft Internet Explorer (IE) в каждой VM удобно сделать пустой по умолчанию, так как виртуальные системы не подключены к Internet. Такой прием сэкономит время, если будет по ошибке открыт IE или установленная программа попытается обратиться на Web-узел.

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

Завершающие действия

После завершения всех процедур установки следует закрыть все виртуальные системы и сделать резервную копию. Рекомендуется скопировать все виртуальные жесткие диски и общие сети, а также общие виртуальные системы. Они находятся в каталоге in Documents and SettingsAll UsersDocuments тестовой системы. Следует сделать на резервной копии пометку «Исходная конфигурация». Впоследствии ее всегда можно восстановить, если требуется повторить какие-нибудь действия, выполнить эксперименты или исправить случайные промахи. В этом и состоит привлекательность данного решения: оно прощает ошибки.

Поделитесь материалом с коллегами и друзьями