Связывание и внедрение объектов не работает
Вспомним времена Windows 3.1, когда буквально в каждой книге по консумерским приложениям описывалась замечательная технология Object Linking & Embedding. OLE казалась частью светлого будущего — того времени, когда отдельных приложений в мире существовать больше не будет.
OLE и в самом деле весьма продвинутая технология. Она позволяет в документ одного приложения вставить контент, создаваемый другим приложением. Хитрые OLE-контейнеры (единственным экземпляром которых являлся Microsoft Binder) могли даже этот чужой контент разбивать на свои страницы и делать ему сквозную нумерацию.
Теперь же я об OLE вспоминаю, только когда пытаюсь вставить диаграмму в презентацию. На маке ничего аналогичного OLE нет, поэтому приходится экспортировать диаграмму OmniGraffle в картинку и вставлять эту картинку в Keynote.
Но и под Windows OLE почти мертво — его больше не продвигают. Причина в том, что он слишком сложен, а пользователю меньше всего на свете хочется сюрпризов.
Вставка картинки в презентацию — совершенно понятное действие, картинка останется там и ровно такая, какая была.
Вставка в презентацию объекта, который ведет себя как картинка, но на самом деле является сложной штукой, что проявляется только в редкие моменты, создаёт ощущение непонимания. Теперь у тебя не просто документ, состоящий из того, что ты в него добавил — теперь в нем живет сложная своенравная штука.
Своенравность штуки, кстати, не только суеверие — встроенные (embedded) объекты порой действительно ведут себя неожиданно (например, при попытке их resize'ить, что выполняется масштабированием метафайла без активации OLE-сервера), а контейнеры зачастую начинают больше глючить.
Теперь о том, как можно сотворить более простой функциональный аналог OLE. Хитрости здесь две:
1. Сделать в OmniGraffle опцию «при каждом сохранении экспортировать диаграмму в картинку и класть рядом».
2. Сделать, чтобы Keynote проверял, не изменились ли на диске картинки, которые были вставлены в документ, и, если да, ненавязчиво предлагал опцию быстренько обновить их с диска.
Эффект такой же, ощущение предсказуемости процесса в разы выше. Заодно такие возможности полезны и для других применений.
Золотое правило: интерфейс не должен содержать сложных концепций.
Второе золотое правило: если из-за какой-то функции программа начинает больше глючить, пользователь свяжет эту функцию с мистикой и начнет её бояться.
Сложные функции больше подвержены ошибкам. Не пугайте ваших пользователей.
2 comments:
Можно еще проще, используя другую очень полузную концепцую windows множественого представления буфера обмена.
И скопировав диаграмму в экселе, ее без проблем через меню-специальная вставка, можно вставить в word.
Ну да, вспоминается байка на тему того, как проходила презентация OLE 2.0. Какой-то там инженер M$ сказал, что простейшее приложение с использованием OLE 2.0 состоит примерно из 20k LOC. Все выпали в остадок и забили. :)
Насчёт картинок. Не знаю. По-моему проще сделать в том же OO что-нибудь типа вставки с возможностью конвертации. И возможность выставить необходимость конвертации в картинку всяких левых объектов. Это будет удобно уже хотя бы потому, что если над документом работают несколько человек, один из которых включил автоимпорт в картинки, а другой нет, то произойдет разсинхронизация.
Post a Comment