Собственно, сам shell. В простейшем случае оболочка, приняв строку от пользователя, находит в системе соответствующую программу, выполняет ее и выводит результат в виде обычного текста. Примерами для Unix являются bash, csh, tcsh, zsh, psh и т. д. Продвинутые оболочки облегчают ввод данных, предлагая выбор из ограниченного количества вариантов команд и их параметров.
   Язык сценариев программной оболочки. Команды, которые пользователь вводит в командной строке, — это не просто названия программ, а прежде всего — управляющие конструкции языка программирования, оболочка же является его интерпретатором. Таким образом, в командной строке можно задать достаточно сложный сценарий (скрипт) с условными операторами, циклами, функциями и т. д.
   Композиционная модель системы: большое количество слабо связанных друг с другом простых программ-утилит (awk, sed, grep, sort, …). Объединяя команды в цепочку (pipeline), можно реализовать весьма сложные процессы обработки данных и управления системой.
   Клавиатура, с которой он давно сросся.
   Повторяемые действия легко сохраняются в виде файлов, и через некоторое время администратор имеет в своем распоряжении библиотеку сценариев, которые позволяют ему мгновенно решать типовые задачи в достаточно сложной инфраструктуре.
   До недавнего времени все это относилось в основном к Unix-системам. Ни для кого не секрет, что, несмотря на наличие некоторой командной строки в Windows, управлять продуктами Microsoft с ее помощью не слишком удобно. Графический интерфейс де-факто является стандартным средством управления в операционных системах Windows, и зачастую функции GUI не имеют аналогов командной строки, даже для серверных продуктов. И наоборот, функционал текстовых утилит не всегда реализован в GUI. Так было до появления проекта под кодовым названием Monad. О нем и пойдет речь в этой статье.
 
Проверка орфографии
   Вовсе не обязательно каждый раз открывать текст в редакторе Word, если нужно проверить правильность написания слов в нескольких десятках файлов. Достаточно скрипта, использующего программный интерфейс Microsoft Word, который отобразит все ошибки.
 
   C:\ > echo «Mother washes winsodsdsd» > text.txt
   C:\ > $wordApp = new-object —com Word.Application
   C:\ > get-content (dir *.txt) | foreach { $_.Split(‘ ‘) } | where { !$wordApp.CheckSpelling($_) } | sort -Unique
   winsodsdsd
   C:\ >
   Более подробный код находится на сайте разработчиков Monad. Существует бесконечное множество способов использовать функции продуктов Office в своих программах и тем более скриптах.
Предыстория
   Нельзя сказать, что невеселое положение дел на «командном» фронте устраивало Microsoft — на всем протяжении развития Windows предпринимались попытки улучшить ситуацию в этой области (см. табл. 1). Однако имеющиеся недостатки не позволяли командной строке стать полноценным инструментом.
   В command.com и его потомке cmd.exe команды не являлись отдельными программами, как в Unix, а были реализованы непосредственно в самой оболочке. Эта особенность, по-видимому, препятствовала расширению функциональности системы. Команды command.com и cmd.exe оставались плохо документированными и бедными по возможностям, тогда как программы-утилиты Unix-систем активно развивались сообществом пользователей. Кроме всего прочего, обе оболочки не соответствовали стандарту POSIX, разработанному для Unix-оболочек. Следовательно, сценарии, написанные для POSIX-оболочек, не могли быть адаптированы под cmd.exe — равно как и опыт администраторов.
   Services For Unix (SFU), разработанные еще для Windows NT, предназначались для упрощения задач по интеграции Windows— и Unix-систем. По сути, SFU — это Unix-система, которая запускается под управлением Windows. В ее состав входят ключевые Unix-сервисы, POSIX-совместимые программные оболочки и более трехсот утилит.
   Поначалу продукт не был включен в состав операционной системы — его нужно было приобретать отдельно. И хотя сейчас SFU свободно распространяется и даже входит в Windows Server 2003 R2, коммерческое распространение не способствовало ее популярности. Кроме того, чуждая для Windows модель POSIX оказалась плохо совместимой с большинством продуктов, изначально делавшихся для Windows.
   Windows Scripting Host (WSH), разработанный для всех версий Windows, предоставляет доступ к управлению системой с использованием сценариев, написанных на Jscript или VBscript. Однако он не был интегрирован с командной строкой. Непрозрачная документация, сложность в изучении и большое количество вирусов, использующих WSH, не позволили технологии получить широкое распространение.
   Несмотря на то что в Windows явно ощущается дефицит полнофункционального консольного интерфейса, программный интерфейс управления системой существует давно: это Windows Management Instrumentation (WMI). История Monad начинается в 2000 году, когда Джеффри Сновер (Jeffrey Snover), архитектор продукта, приступил к созданию пользовательского интерфейса командной строки для WMI, названного WMIC. Пользователи Windows XP и Windows Server 2003 могут ознакомиться с ним, набрав в стандартной командной строке «wmic.exe», и получить справку о командах с помощью команды «/?». Интерфейс получился недостаточно стройным, ориентированным прежде всего на функциональные особенности WMI, а не на пользователя. Этот факт еще мог устроить корпорацию Microsoft, чьи продукты поддерживали WMI, но вряд ли обрадовал разработчиков сторонних компаний, не использующих этот интерфейс. Функциональность WMIC расширялась плохо, поскольку реализована была точно так же, как и в cmd.exe. В то же время инструменты управления продуктами Microsoft подвергались критике Главного Архитектора (Билл Гейтс) из-за слабого использования .NET-языков. Было решено переписать WMIC на C#. В определенный момент Сновер понял, что не обязан ограничиваться классами WMI и может использовать в своем продукте любые классы .NET, получая в распоряжение всю мощь платформы.
   Был создан прототип интерфейса, а затем сформирована команда проекта Monad.Знакомство
   Итак, Monad (она же Microsoft Shell, или MSH) — это будущая платформа для администрирования операционной системы и программных продуктов Microsoft. Cамая важная идея, заложенная в MSH, состоит в том, что в знакомой нам командной строке вывод результатов команды представляет собой не текст (в смысле последовательности байтов), а объект (данные вместе со свойственными им методами). Все! Остальное так или иначе вытекает из этой идеи.
   Вот главные цели, преследуемые разработчиками Monad:
   командная строка как основной интерфейс администрирования;
   реализация ObjectFlow (элементом обмена информации является объект);
   переработка существующих команд, утилит и оболочки;
   интеграция командной строки, COM— и .NET-объектов;
   работа с произвольными источниками данных в командной строке по принципу файловой системы.
   По словам разработчиков, сильное влияние на Monad оказали следующие продукты:
   BASH, KSH — композиционность;
   AS400/VMS — стандарт синтаксиса именования команд, облегчающий изучение;
   TCL/WSH — поддержка встраиваемости и нескольких языков;
   PERL, PYTHON — выразительность и стиль.
   Участники команды оценили разные аспекты администрирования систем и попытались собрать все лучшее в одном продукте.
 
Маэстро, музыку!
   В качестве примера я написал плагин, который позволяет управлять воспроизведением музыки в Monad (полный код можно найти в [4]). Ниже приведена реализация команды play-nextsong на языке C#, которая переключает воспроизведение на следующую композицию:
 
   [Cmdlet(«play», «nextsong»)]
   public class PlayNextSongCommand : Cmdlet
   protected override void EndProcessing()
   Media.Player.controls.next();
   Этого достаточно чтобы пользователь смог найти команду и узнать, как с ней работать:
 
   Media:\Slayer\Reign In Blood> get-command play*
   Command Type Name Definition
   — — —
   Cmdlet play-nextsong play-nextsong [-Verbose…
   Cmdlet play-previoussong play-previoussong [-Ver…
   Cmdlet play-song play-song [[-MshPath] S…
   Можно усложнить команду, добавив к ней несколько параметров. Даже если разработчик не позаботился о документации, пользователь сможет получить автоматически генерируемую справку о формате ее вызова и типах параметров:
 
   Media:\Slayer\Reign In Blood> get-command play-nextsong —Synopsis
   play-nextsong [[-SkipSongCount] Int32] [-Verbose] [-Debug] [-ErrorAction ActionPreference] [-ErrorVariable String] [-OutVariable String] [-OutBuffer Int32]
   А вот так выглядит листинг содержимого текущей директории. Директория не обязательно файловая, это может быть контейнер любых объектов, в нашем случае это альбом, а содержимое — композиции:
 
   Media:\Slayer\Reign In Blood> ls
   Number Name AlbumName ArtistName Year
   — — — —
   1 Angel of Death Reign In Blood Slayer 1986
   2 Piece By Piece Reign In Blood Slayer 1986
   3 Necrophobic Reign In Blood Slayer 1986
Новые возможности
   Что же дает Monad различным категориям пользователей? Программисты, например, смогут ускорить реализацию интерфейсов управления к разрабатываемым системам. Для того чтобы создать новую команду, достаточно унаследовать свой класс от класса Cmdlet и вызвать из него специфичную функцию системы (см. врезку). Отметим, что, реализовав интерфейс управления к своей программе таким образом, разработчик не ограничивается только командной строкой. Стандартная графическая консоль управления Microsoft Management Console (MMC), используемая в Windows XP и Vista, будет понимать модули, написанные для Monad.
   Администраторам разнородных сетей, безусловно, будет удобнее управлять Windows-системами, с помощью привычного интерфейса командной строки. Инструменты управления DNS и Active Directory с навигацией, реализованной в виде иерархической структуры, тоже разрабатываются, и их можно найти в Интернете.
   Администраторы смогут скомпоновать из разных блоков командную оболочку для определенных типов задач. Ее можно указать в качестве сценария запуска (login shell) при входе определенной группы пользователей в систему — локально или удаленно. Тем самым можно ограничивать функции, доступные пользователям, а требования к пропускной способности канала в случае распределенной системы будут минимальными, достаточными для протокола telnet.
   Ну а продвинутые юзеры, знающие .NET или использующие готовые скрипты (см. ссылки в конце статьи), получают мощный инструмент управления системой и повышения эффективности работы. Не должно вызвать трудностей и освоение команд и синтаксиса нового языка, так как их именование стандартизовано.
 
SH vs MSH
   Не могу удержаться от соблазна сразу же привести пример. Людям, знающим предметную область, он многое объяснит.
   Требуется написать скрипт, принудительно завершающий в системе три процесса, которые отъедают наибольшее количество процессорного времени и у которых значение этого параметра больше трех.
   Я попросил специалиста Unix shell быстро, не зарываясь в man, написать такой скрипт.
   Решение SH:
 
   %>ps -A -sort ‘%cpu’ -format ‘%cpu,pid’ | egrep -v ‘^ (0|1|2).’ | grep -v ‘%CPU’ | tail —n3 | gawk ‘{print $2;}’ | xargs -r kill
   Скрипт написан за семь минут, работает, и я его привожу как есть — без исправлений. Не буду объяснять, как он работает, отмечу лишь, что главной проблемой является необходимость выделения из набора строк, возвращаемых командой ps, нужные нам параметры процессов (в данном случае — процессоное время).
   Я уверен, что есть более правильные варианты, но они потребуют детального знания возможностей большого числа утилит.
   Решение Monad:
 
   C:\> get-process | where-object { $_.cpu -gt 3 } | sort-object -property cpu | select-object -Last 3 | foreach-object { $_.Kill() }
   get-process — функция, возвращающая массив объектов типа System.Diagnostics.Process;
   where-object — функция условия, которая сравнивает значение свойства с тройкой;
   $_ — переменная, содержащая элемент массива — объект класса Process;
   sort-object, select-object — сортировка и фильтрация массивов;
   foreach-object — выполнить код для каждого элемента, в нашем случае — вызвать метод объекта — Kill()
   Эту же строку можно написать с использованием алиасов:
 
   C:\> ps | where { $_.cpu -gt 3 } | sort cpu | select -Last 3 | foreach { $_.Kill() }
   Читаемость варианта Monad даже не имеет смысл сравнивать с SH-скриптом. Написано за минуту.
Когда?
   Не будет преувеличением сказать, что Monad — это качественный скачок, переосмысление накопленного опыта в области управления операционных систем. В заключение несколько слов о том, когда же наступит светлое будущее.
   Релиз Monad должен появиться в составе Microsoft Exchange Server 12. Он работает на системах Windows XP, Windows Server 2003 или других системах, поддерживающих .NET Framework 2.0. Beta 3 находится в свободном доступе (download.microsoft.com).
   Ссылки
   [1]blogs.msdn.com/monad/de-fault.aspx (сайт разработчиков Monad).
   [2]www.microsoft.com/tech-net/scriptcenter/hubs/msh.mspx
   [3]www.reskit.net/monad.
   [4]blogs.gotdotnet.ru/perso-nal/beerbong (блог автора статьи).
   [5] Издательство O’Reilly в декабре 2005 года выпустило книгу «Monad» (ISBN: 0-596-10009-4), написанную одним из авторов платформы Энди Оукли (Andy Oakley). Это, пожалуй, самый лучший способ познакомиться с продуктом.
   Автор благодарит Константина Беляева за доклады на GotDotNet User Group.

www.crazybrowser.com
   Версия: 3.0 beta
   Размер: 700 Кбайт
   Язык: английский
   Цена: бесплатно
   Как и большинство современных браузеров, Crazy Browser основан на вкладках, что позволяет удобнее организовать параллельную работу с несколькими страницами. С помощью заданного сочетания клавиш можно тому или иному слову поставить в соответствие адрес конкретного веб-ресурса и заменять, например, слово computerra на www.computerra.ru.
   Интересным решением является группировка: страницы одной группы можно открывать одним кликом. Браузер умеет блокировать всплывающие окна и флэш-ролики, фильтровать контент, а также поддерживает плагины.

WinDjView
   ОС: Windows (для Mac ОS X есть программа MacDjView того же автора)
   Адрес:windjview.sourceforge.net
   Версия: 0.4
   Размер: 480 Кбайт
   Интерфейс: мультиязычный (в том числе на русском)
   Цена: бесплатно
   Программа WinDjView служит для просмотра файлов в формате DjVu. Среди ее возможностей — непрерывный и одностраничный режимы просмотра, группировка соседних страниц, вывод списка страниц в виде иконок, создание закладок, поиск и копирование текста, экспорт в BMP, настройка яркости, контраста и гаммы и многое другое. Особенно следует отметить удобный полноэкранный режим. Напомним, что формат DjVu позволяет сохранять документы и картинки высокого качества в файлы небольшого размера.
ShowMe
   ОС: Windows
   Адрес:www.photo-slideshow-showme.com
   Версия: 1.9.1.6
   Размер: 4,3 Мбайт
   Язык: английский
   Программа ShowMe предназначена для создания слайд-шоу из фотографий и музыкальных файлов. Имеется минимальный набор инструментов для правки изображений: их можно поворачивать, зеркально отражать, кадрировать, изменять контраст и яркость, а также устанавливать фоновый цвет и рисунок. Поддерживается прозрачность в формате PNG. Результат можно сохранить в виде хранителя экрана, исполняемого exe-файла, VCD, DVD и ASF или в виде веб-галереи.
WebSite-Watcher
   ОС: Windows
   Адрес: www.aignes.com
   Версия: 4.06
   Размер: 3 Мбайт
   Интерфейс: мультиязычный (в том числе на русском)
   Цена: 29,95 евро (для персонального использования)
   WebSite-Watcher предназначен для регулярной проверки избранных сайтов на обновление. Если будет обнаружено, что контент изменился, программа запишет последние версии на диск и выделит в тексте изменения. Можно вести поиск по ключевым словам. Кроме того, Watcher имеет разнообразные варианты автопроверки: как часто проверять, по каким дням недели и пр. В случае обновления сайта «часовой» может подать звуковой сигнал, открыть сайт собственным или внешним браузером, экспортировать страницу в файл, отправить e-mail-уведомление, запустить внешнюю программу и т. д. Наконец, поддерживаются фильтры (какой фрагмент текста игнорировать, а какой отслеживать) и RSS.

Нехорошая квартира") я писал о поисках качественных беспроводных наушников. Перерыв Интернет, я пришел к выводу (как позже выяснилось — ошибочному) об отсутствии на сегодняшний день удобных универсальных конструкций, использующих протокол Bluetooth: либо их не оказывалось в доступном окружении, либо они требовали специальных источников — вроде отдельных КПК или некоторых моделей iPod. Но едва «Огород» успел выйти в свет, как я получил письмо от Антона Каменского, обращавшего мое внимание на Bluetooth-наушники Creative CB2530 (ru.europe.creative.com/welcome.asp — и далее найти страничку по названию). Так я и не понял: то ли прочесывал Интернет недостаточно густым гребнем, то ли они появились уже после написания мною статьи. Что, впрочем, неважно.
   Важно, что, обратившись в российское представительство фирмы (которую издавна очень люблю и продуктами которой пользуюсь уже больше десяти лет), я (правда, не сразу — понадобился почти месяц, что подтверждает вторую версию) получил наушники на тестирование, коим с огромным аппетитом и занялся. Скажу больше: пока не получил, заранее, руководствуясь только описаниями в Интернете, уже мучился — а ну как они понравятся мне заметно больше описанного в «Нехорошей квартире» аналогового «мерлина» от AKG, — и куда мне тогда его девать? Одно дело, что, чтобы его купить, надо в очередь записаться, другое — попробовать продать после месяца юзанья.
   Скажу сразу: «мерлина» оставляю. Хотя... хотя с удовольствием оставил бы и CB2530. Хотя бы потому, что концептуально они гораздо прогрессивнее. А пользовался бы... Ну, когда слушаю музыку хорошего качества, — наверное, «мерлином». А когда смотрю телевизор или слушаю mp3-плейер — «креативом». Хотя — по субъективному ощущению (а других вроде и не бывает), — даже wma-звук с iRivera в «мерлине» выглядит живее и полнее. В общем, главный недостаток «мерлина» рядом с «креативом» — это время от времени возникающие шумы. Ну и двукратная цена (которую, впрочем, я все равно уже заплатил): за «креативы» на price.ru просят сегодня от 112 до 126 долларов.
   Итак: и те и другие внешне очень схожи. Практически тот же размер, комплект и даже питание: маленький, с зажигалку, передатчик (у «мерлина» — раза в полтора шире и может липучкой клеиться к чему-нибудь портативному), того же размера «уши» (правда, креативовские не складываются, и к ним не идет в комплекте поясной футлярчик), и то же самое питание от одного элемента ААА передатчика и от двух — наушников. Причем и в тех и в других эти два элемента расположены почему-то в левом «ухе». Впрочем, мерлиновский передатчик изящнее: его входной штекер укреплен на прорезиненной вилке, тогда как из креативовского просто выходит обычный проводок со штекером на конце. И вообще, в исполнении «мерлина» чувствуется эдакая... «хайэндность»... Но это, как вы понимаете, пустое...
   А вот разные регуляторы громкости — это уже разный уровень удобства. У аналогового «мерлина» громкость регулируется аналоговым же колесиком, которое и после выключения наушников остается в том положении, в которое вы его поставили. У цифрового «креатива» громкость регулируется цифровым образом, ступенчато (хотя, конечно, ничто не помешало бы применить аналоговый регулятор), с помощью эдакого двуплечего рычажка, — и после каждого выключения громкость оказывается в положении по умолчанию — на мой вкус, слишком тихом. Так что всякий раз после включения приходится ее добавлять. (Ровно та же система установлена на креативовских карманных колонках TravelSound.) Пустяк, конечно, однако раздражает. С другой стороны, колесико на моих старых «Пионерах» с течением времени начало потрескивать.
   Следующее раздражающее различие: после включения наушников вы должны нажать кнопку на передатчике и подержать ее десяток секунд, после чего индикаторная полоска загорается голубым (а каким же иначе: зуб-то голубой!) цветом. Что сигнализирует пока лишь о включении передатчика. В тот же момент загорается синяя полоска и на правом «ухе», а потом в течение 20 (!) секунд происходит процедура спаривания, об окончании которой свидетельствует начало голубого мигания обоих индикаторов и появившийся в наушниках звук. Сказать честно, после «мерлина», оживающего при включении едва ли даже с секундной задержкой, эти суммарные почти полминуты — раздражают тоже. Но если вы налаживаетесь слушать надолго — можно их и простить.
   Кстати заметить, наушники и передатчик настроены строго одни на другой, так что выловить ни то ни другое устройство ни с компьютера, ни с Palm’а, ни с телефона мне не удалось.
   А сейчас пора перейти к качеству звука. Повторюсь — измеренному вполне субъективно (хотя и не мной одним; Анатолий Левенчук, например, сказал, что звук примерно одинаковый, но если слушать музыку через «мерлин» он готов весь день, на «креативе», скорее всего, устанет к концу первого часа). Разница в звуке «мерлина» и «креатива» приблизительно такая же, как разница между музыкой с CD и SACD или девяносто/стадевяностодвухкилогерцового DVD-A. Или, если угодно, как между CD и винилом. Цифровую деревянность «креатива», по-моему, не отметить невозможно.
   Впрочем, я не прав: не цифровую, а 48-килогерцовую (с нигде не указанной разрядностью). Я уже не раз писал (особенно после близкого знакомства с SACD и DVD-A), что цифровая запись музыки (или цифровое представление картинки) могут с лихвой превысить чувствительность человеческих органов чувств и стать совершенно неотличимыми от аналоговых, — дело только в том, чтобы дискретизация проводилась с достаточной частотой и глубиной (а число и плотность пикселов превышало нынешнее стандартное раза хотя бы в четыре). По моему уху, на частоте дискретизации в районе 120-150 кГц звук становится вполне «аналоговым». А вот сорока восьми килогерц (нижнее качество DVD-A-музыки) — для идеала не хватает. С другой стороны, протокол Bluetooth 2 (согласно Wikipedia) предоставляет максимальный поток в 2,1 Мбит/с, — а он ведь должен включить в себя еще и корректирующую информацию, объем которой может быть сравним с объемом полезной. А двухканальный 48-килогерцовый звук занимает (например, на DVD-диске) около 1,6 Мбит/с. То есть способности канала использованы полностью и, возможно, внатяг. У меня даже есть подозрение, что, чтобы уложить в Bluetooth-канал 48-килогерцовый стереозвук, производителям пришлось ограничиться 16— (если не 12-битной) глубиной, — в связи с чем я нигде и не нашел точной цифры. Не исключено, что для передачи «настоящего» звука больше подошел бы толстый канал Wi-Fi, — но Wi-Fi требует гораздо больше настроек, и запустить их на автомате, как позволяют Bluetooth-устройства, заметно сложнее, если возможно в принципе.
   Правда, когда я изложил свою теорию Сергею Блохнину, он задал озадачивший меня вопрос: а, может, дело не в оцифровке, а просто сами «уши» похуже качеством, чем мерлиновские? И впрямь, такое возможно, и, главное, непонятно, как это проверить. Однако, чисто интуитивно, я полагаю, что дело все же именно в оцифровке: эдакий деревянный (я бы, скорее, употребил слово «пластмассовый») привкус звука весьма характерен именно для оцифровки с недостаточной частотой дискретизации.
   Зато!.. Зато — никакого шума, никаких аналоговых помех. Всё на удивление чистенько! Еще бы: цифра с коррекцией!
   Относительно же радиуса действия... Он заявлен — согласно Class 2 (2.5 mW) — десятиметровым. Правда, оговорено, что «в зависимости от окружающей обстановки». Про мою окружающую обстановку я уже довольно написал в «Нехорошей квартире», — так вот, когда я ухожу в ванную (едва три метра плюс гипсовая перегородка), при некоторых положениях головы начинаются легкие сбои связи. Когда выхожу на площадку и прикрываю железную дверь — связь прерывается вовсе. В четырех метрах, на кухне, связь можно прекратить напрочь, попросту прикрыв наушники ладонями. Это все же не восемьдесят мерлиновских метров, пробивающих и железные двери, и межэтажные перекрытия. Хотя, когда я притащил «мерлина» в «Компьютерру», весьма сильные помехи шли в любом месте редакции, а выход на лестницу за железную дверь тоже прерывал вещание полностью. С другой стороны, когда машина стоит во дворе «Компьютерры», чтобы открыть или закрыть дверцы с помощью радиобрелка (дома я это делаю даже через весь двор, с балкона, с высоты четвертого этажа), приходится подносить его прямо к антенне, да еще нажимать на кнопку три-четыре раза.
   Последнее, о чем, полагаю, стоит упомянуть: время работы «креативов» от аккумуляторов. Заявлено оно осторожно: «до 7 часов», — тем не менее этих самых семи часов мне получить не удалось ни разу. Я понимаю: время работы зависит и от громкости, и от расстояния, и, возможно, от силы входного сигнала, однако... По ощущению, батарейки в «креативах» садятся примерно вдвое быстрее, чем в «мерлине», причем «креативы» в отличие от «мерлина» не снабжены гнездами для работы от сети или подзарядки аккумуляторов. Впрочем, так, наверное, и должно быть: во-первых, микросхема оцифровки требует дополнительной энергии, во-вторых — информация в «креативах», в отличие от «мерлина», передается в обе стороны, так что и приемники, и передатчики должны стоять на обоих концах.
   Напомню, однако, что «креативы» первые, сколько мне известно, цифровые универсальные наушники, и лиха беда — начало. Они и сейчас, думаю, у менее придирчивого, чем я, слушателя могут не вызвать никаких претензий.