<<<предыдущий список следующий>>>

Это - копия документа, находившегося на http://dz.ru. Авторские права, если не указано иначе, принадлежат Дмитрию Завалишину и/или Евгении Завалишиной. Все изменения, внесенные мной, находятся в этой рамочке.Пожалуйста, прочитайте disclaimer.


17 декабря 1998 года

Глядя в очередной раз на внутренности BeOS, я незаметно для себя сделал вывод, что эта система чем-то напоминает Юникс в год его рождения. Даже знаю, чем. Обе системы для своего времени как бы подвели черту и явились чистенькой и ровненькой реализацией известных к этому времени идей, не привнося, по сути, в мир ничего принципиально нового. Все просто и аккуратно. Читаешь описание интерфейса драйвер-ядро, и ни одна функция не вызывает вопросов - все как из книжки "драйвер - это очень просто", или "написание драйверов для идиотов". :-)

Что вы думаете при слове "репликант"? Я вспоминаю фильм "Blade Runner", в котором этим соловом назывались эдакие искусственные люди, с виду ничем не отличавшиеся от настоящих.

Этой ассоциации, видимо, суждено уступить место новому претенденту на то же имя. В Be OS репликантом называется некая сущность, способная быть "представителем" одного приложения в другом - нечто подобное концепции OpenDoc или OLE.

Как говорят о системе репликации в самой Be, задачи повторить OpenDoc отнюдь не ставилось. репликанты - это "мягкий" подход к проблеме, попытка малой кровью создать механизм, для использования которого не придется удваивать объем кода вашей программы и утраивать необходимую для ее работы память. "С репликантами вы получите лишь часть функциональности OpenDoc, зато пользоваться ими на несколько порядков проще". Это утверждение не лишено оснований и подтверждено практикой - в разделе BeWare (Be ShareWare) все больше и больше программ поддерживают репликацию.

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

В чем тут идея. Программируя под BeOS, вы можете унаследовать свой класс от некоторого стандартного класса BArchivable, который позволяет (при некоторой помощи со стороны программиста) "сливать" состояние объекта на диск или еще куда-либо с возможностью последующего восстановления. Репликация - это просто механизм, который с помощью BArchivable позволяет "упаковать" некоторый объект в сообщение и послать его другой программе с тем, что бы она "надула" хранящийся в сообщении объект и "поселила" его у себя.

Что это значит? Если объект был одним из тех, что реализуют какой-либо пользовательский интерфейс, он появится в окне "получателя" как визуальный компонент. Если нет - он будет присутствовать в адресном пространстве получателя как компонент программный, способный взаимодействовать с приютившим его "хостом" и решать его задачи. Ничто не мешает и объединить эти функции.

Интересно, что сделать ваше приложение способным принимать в себя репликанты удивительно просто - достаточно добавить в него одну строку кода:

BShelf *shelf = new BShelf(some_view);

clock_replica.jpg (16690 bytes)

Стрелка 2 указывает на репликанта часов, встроенного в десктоп.

После этого some_view будет пригоден для "кидания" в него репликантов, и будут они в этом шелфе жить-поживать.

Как это выглядит? См. "фото" слева - это часть десктопа BeOS. Отметим, что десктоп системы обучен принимать к себе "на постой" репликантов.

Стрелка 1 указывает на окно запущенной программы "clock" - стандартных часиков, каких миллионы. Однако если схватить эти часики за стрелочку в правом нижнем углу и кинуть получившуюся "тень" на стол, в этом месте стола "вырастут" еще одни часы, причем будут вырастать там же в том же самом состоянии при каждой загрузке ОС.

К репликации способен и стандартный веб-броузер BeOS, так что если вы хотите интегрировать свой десктоп с вебом, то достаточно схватить броузер за репликационную стрелочку и швырнуть его в нужное место десктопа. Теперь он будет здесь жить, показывать ту URL-ку, которая была открыта в момент швыряния, хотя и к другим вполне готов - броузер как броузер, только "врезанный" в "стол".

browser_replica_sm.jpg (46129 bytes)

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

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

Отметим еще пару фактов.

1. Такая интеграция броузера в десктоп не требует покупки четырехпроцессорной Альфы с 256 Мб памяти. Репликация никаких особенных ресурсов не жрет. Кстати, своппинга от BeOS я в своих 80М еще не видал. У NT он начинается уже в процессе загрузки, при этом я не использую активный десктоп, с которым все еще медленнее.

2. Такая интеграция не заставляет вас пользоваться броузером от Микрос... нет, то есть от Be Inc. :-) Любой броузер от любого производителя может быть встроен в десктоп или в любую программу, которая поддерживает репликацию. И не только броузер, очевидно.

Поговорив о плюсах, скажем пару слов и о минусах репликации в ее текущем виде.

1. Чтобы конкурировать с OLE, репликация должна поддерживаться какими-либо word-процессорами, электронными таблицами, а лучше - и e-mail-системой. Этого пока нет. То есть и принципиальных причин этого не сделать не существует, но...

2. Концептуально в технике репликации есть спорные моменты. Например, если породить от реплицируемого класса подкласс, то его реплицируемость будет под вопросом. Я, правда, не вникал сильно в этот аспект, и, возможно, решение тут уже найдено. Не знаю.

Тем не менее, механизм интересный, а позиция авторов ОС на упрощение работы с ним радует - монстроидальность надоела, право. :-(

Кстати, BeOS поразила меня еще двумя вещами. Первое - когда я открыл меню, а под этим меню приложения задумали проявлять активность, это меню не пропало у меня из-под носа, как это бывает в Windows. Надо сказать, что такое поведение меню в Windows раздражает неимоверно - попытка что-нибудь запустить из Start menu, пока система не позапускала все стартапы, провалится со 100%-ной вероятностью, да еще и обозлит этот процесс пытающегося изрядно. В BeOS я обнаружил, что загрузка еще не завершилась, только по факту выскакивания сообщения о том, что система не понимает мою видеокарту. Я к этому моменту давно уже позапускал приложений и делал свое дело.

И второе, о видеокарте. Как я уже говорил, система мою карту не знает и гоняет ее в дефолтном режиме - как 640*480 mono SVGA. Mono. То есть на экране - только оттенки серого. Как же я был удивлен, когда получил в скриншотах (см. выше) полную гамму цветов! :-)

К этому медку добавим дегтя - в разделе BeWare сайта be Inc. полно софта, но он весь скомпилирован пока лишь под BeOS R3 и под R4 не пашет.

Реклама.

  • Skazka! Сделайте новогодний подарок себе любимому :-)
    На сэкономленные деньги купите подарок любимой подруге!

    "Зимняя сказка на PRICE.RU" - это отличная возможность получить скидки на покупку различных компьютерных товаров. Вам достаточно зайти на WWW.PRICE.RU, загрузить и распечатать купон, дающий вам право на специальные скидки ИСКЛЮЧИТЕЛЬНО для посетителей WWW.PRICE.RU. Зачем упускать такую возможность?

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

Зато сам рисунок радует. Загляните при случае. Техника классическая, но хуже от того не стала.

Играть уровни Half Life, действие которых проходит "у врагов" рекомендуется под 6-й трек Pink Floyd-овского диска Meddle. Уникальное попадание - кажется, или уровень рисовали под эт музыку, или музыку писали, глядя на уровень. Учитывая, что Meddle выпущен в 71-м, скорее, первое. :-)

На http://www.metro.ru открылся раздел "станции", пока еще не слишком наполненный, но всему свое время. Пока доступна информация лишь по десятку с гаком станций. Зато и среди этих встречаются уникальные фотографии.

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

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

Вывод? Хорошо пропараноидованному :-) государству не нужен прибор для искривления пространства, чтобы "закуклить" себя. Было бы желание и деньги, а пространство свернется с помощью палки и веревки.

Рубль 4.54 доллара бережет - (C) я и редакция. :-)

Цитата месяца: "Не так страшен Кастанеда, как тот, кто его прочитал.". (C)  трансцедентальная скамейка.