четверг, 29 сентября 2011 г.

Про email-рассылки

И э-эх, давненько я не брал в руки шашки. А вот извечный вопрос: что дает новостная email-рассылка по проекту? Понятное дело, что для годного проекта нужен и форум, и RSS, и другие способы продвижения. Но с другой стороны email-рассылки вещь настолько традиционная, что вероятно отказываться от них пока рановато.

Форум: сдается мне эффективность форума в первую и пожалуй и единственную очередь будет зависеть от его – форума – удобства. У меня как-то оно мигающе всё – то форум работает за пятерых, а то какое-то место исключительно для междусобойчика.

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

Facebook и иже с ними: ну я блин, даже и не знаю что сказать… Вот у Aml Pages есть две группы: англоязычная и русскоязычная. Число участников говорит само за себя: более сотни в аглицкой, и менее десятка в русской. ОК, я понимаю, что для наших скорее популярнее будут какие-нить одноклассники да всякие вконтакте, чем Facebook. Но тратить время и еще на одну соцсетку, без четких аргументов, что это выстрелит, уже совсем не хочется.

Блог: “а хрен его знает, товарищ полковник“ ©. Отдельных блогов ни по каким проектам не заводил. Плюс отчасти роль русского блога по Aml Pages вполне выполняет и рассылка. Подробнее чуть ниже. Этот блог иногда что-то выдает – но это, скорее, из разряда юмора.

А вот емейл-рассылка, имхо и поныне остается вполне эффективным путем извещений о новостях. Опять же, в рассылке должна быть исключительно целевая аудитория – подписаться читатель может сам. И только сам. Случайно попасть в подписчики не выйдет.

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

  • Доступность предыдущих новостных писем: на сабскрибе – завсегда пожалуйста – читай не хочу. На Plimus: что упало (к подписчику) – то пропало. Новый подписчик не имеет возможности полистать предыдущие статьи.
  • RSS-лента: сабскриба автоматом генерит по рассылке RSS ленту. В Plimus – а нету! :)
  • Анализ аудитории: в сабскрибе есть. В Plimus – опять же нет.
  • Счетчик подписчиков: в сабскрибе есть, в Plimus – и снова нет.

Вот такая разочаровывающая картина. Хотя, с другой стороны, ну есть какое-то смутное ощущение, что Plimus`овская рассылка работает, и иногда какой-то профит и выдает. Но понять, что, какой, как и когда, ох как не просто.

воскресенье, 1 мая 2011 г.

Юзабилити. Мысли вслух. Правый клик

В Windows есть такая штука, как безопасное извлечение устройства: флешек, кард-ридеров и прочей периферийной дребедени. В общем, вещь нужная и годная. Но меня всегда потрясало, что по правому клику по иконке в трее, можно перейти только к диалогу отключения устройства. Скромно умолчим, что этот диалог зачем-то набит и списком жестких дисков… Умолчим и о показе меню с одним-единственным пунктом выбора. Зачем нужно меню, если оно может предложить только одно действие? Почему не показывать тогда диалог сразу?

Ладно, все это типично виндовые мелочи. Хер с ними! Но дело в другом. Давным-давно, очень очень много лет назад, я узрел, что на иконке удаления можно как-то заполучить и меню с выбором устройств.  Причем безо всякого промежуточного диалога. Это, безусловно, удобнее. О сколько лет  и на скольких Виндах я обкликался правой кнопкой мыши по иконке, но так и не узрел желанного меню. А тут как-то смотрю, и вижу это вожделенное меню под рукой сборщика моей кухни (мы его фотки на ноуте листали). А поскольку сборщик был человек благодушный и к себе располагал,  то я безусловно спросил КАК ВЫ ЭТО ДЕЛАЕТЕ (полцарства за совет, двойная оплата, рюмаху на раз – нужное подчеркнуть)

Каково было мое удивление, ибо ларчик просто открывался: это меню доступно по левому, а вовсе не по правому клику. Вот оно юзабилити в действии. И это я-то,  программер до мозга костей, годами! не мог понять, что делать. А все только потому, что разработчики Винды сделали через жопу нарушили законы юзабилити. Привычное – должно выглядеть и работать привычно, а не наоборот. Левый клик – управление\выделение объекта, правый клик – контекстное меню и никак не наоборот.

PS: только не надо комментариев про всякие сторонние утилиты, выполняющие именно через правый клик. Это не утилиты лучше, это в стандартном средстве сделано через одно место.

PPS: а тот самый сборщик кухнями занимался исключительно для хобби. В прошлом у него с 10-ок лет службы в Генеральном Штабе, а там дураков не держат, а потом еще с десяток лет бизнеса. Но по природе своей он заядлый охотник и рыбак. А поэтому, когда дети выросли, бизнес продал, и на полгода пропадает в пампасах с удочками. А в зимний период занимается сборкой кухонной мебели для души (причем у него это весьма шикарно получается). Так что сборщик мебели все таки оказался несколько не типичный. Только сути дела – правый-левый клик – это все равно не меняет!

пятница, 8 апреля 2011 г.

Плагиностроение

На RSDN.ru в форуме по архитектуре программного обеспечения большой аншлаг. Еще бы! Вечные же вопросы задеты: что делать и кто виноват нужны ли плагины в софтине Икс, и как вообще организовать интерфейс плагинов. Всё как-то собирался рассказать, как я проектировал Plugin API для Aml Pages. А главное рассказать миру, какие ошибки допускал, как их исправлял, и на что именно стоит обращать особое внимание.

Но, как водится, если я чего задумал, то выпью обязательно (© В.С. Высоцкий). Выпито достаточно, и естественно, о плагиностроении не написано ни строчки до сих пор. А сказать-то есть чего. Основные архитектурные черты моего Plugin API как раз и описал в посте на RSDN.ru. Но в нем только самые главные черты – взгляд на вещи, а вопросов на самом деле тьма:

  • Могут ли плагины интегрироваться в пользовательский интерфейс хост-приложения?
  • Плагин инициализируется хост-приложением при старте или по требованию? Единожды или многократно?
  • Как взаимодействует плагин и хост-приложение в совместно используемой памяти? Или проще говоря: кто и как выделяет память, и кто, как и когда ее освобождает.
  • Как обеспечивать обратную совместимость старых плагинов, и новых версий Plugin API?
  • Как проектировать основные структуры данных для обмена информацией?
  • Какие сервисы должно или может предоставлять хост-приложение? Или иначе: может ли плагин “попросить” выполнить какую-либо работу само хост приложение.
  • Нужна ли поддержка событий? Т.е. должно ли хост-приложение извещать плагин о возникновении некоторых событий, изменений.
  • Как разруливать ситуацию, если есть две версии хост-приложения Unicode и ANSI?
  • Если хост-приложение локализовано на несколько языков, то на каком языке должен быть UI плагина?

В общем, вопросов вагон и маленькая тележка. И все они на 99 процентов будут зависеть от архитектурных решений. Именно их придется продумывать в первую очередь. И неправильные решения в таких вопросах вызовут наибольшие проблемы потом. А проблемы будут! Первая версия моего Plugin API, к примеру, и вовсе ушла в помойку – все пришлось переписать с нуля. Но вот начиная со второй версии, архитектуре Plugin API я уделял максимум внимания – и в той или иной степени она осталась в Aml Pages и поныне. О да, архитектура претерпела ряд весьма значительных изменений. Но все они были пожалуй в сторону развития, а не полного переписания с нуля.

Во-о-о-от, значитъ! Будем считать это первым блин комом. Глядишь, этот пост в последствии и заставит меня все таки рассказать побольше о плагиностроении. Ибо пока сам пишешь, все настолько по полочкам разложишь, что конкретный мозг просветляется Plugin API только улучшается.

суббота, 26 марта 2011 г.

Usability. Совет дня – продолжение.

С пару месяцев назад писал про голосование на RSDN на тему использования “читаете ли вы совет дня”. Если в двух словах, то результаты получились неутешительные. Не читаем! Хм, и странно было бы ожидать чего-то другого. В конце того самого поста я обещал рассказать, как я решил эту проблему. Лениво, конечно, ибо когда сам уже разобрался, то трепаться становиться неинтересно. Но надо раздавать долги. Попробую, но раз лениво, то несколько в декларативном стиле.

Сначала расскажу почему.
Никаких советов дня при запуске. Раз пользователь запускает приложение, то у него явно есть какая-то цель, ежеминутная задача. Он попросту не будет читать никаких поучений. В народе это называется проще: “не пизди под руку”.

Никакой модальности. Зачем кнопка ОК? Она что-то делает? Пусть совет дня показывается где-то сбоку припеку. Не требуя от пользователя никаких действий. Совет это же всего лишь рекомендация. Вы же не удивляетесь отсутствию кнопки ОК на объявлении на двери подъезда?

Теперь как сделано в Aml Pages. Скриншот собственно ниже.

Панель советов дня в моей Aml Pages

Отдельная панель: Итак, в Aml Pages я сделал совет дня в виде отдельной панели, a la строки состояния. Такая статусбарного вида панель привычна для пользователя и не требует от него никаких действий, не отвлекает его от работы.

Панель совета  внизу окна: т.к. совет дня информация сугубо вспомогательная, то располагаться она должна все-таки внизу. Все в правилах information flow: главное – слева вверху, второстепенное – внизу и справа. А читаем мы в таком порядке…

Навигация в панели: все-таки некоторыми интерактивными возможностями панель советов должна обладать. Какой-нибудь несложной кнопкой “следующий совет”. Главное никакой модальности. Интересно пользователю? Кликнет. Нет, так нет.

Узнать больше: неплохой идеей оказалось сделать возможность перейти к расширенной информации по тематике конкретного совета, к большей статье, документации или еще чему-то подобному. Никаких велосипедов. Советы дня, имеющую такую связанную тему, показываются как гиперссылка на тему. Надо – кликнут. Плюс во всплывающей подсказке пояснительная информация, что за ссылка и куда. В Aml Pages это ссылки на статьи на сайте. Заметьте господа, это даже не “реклама” в дурном смысле – это то самое, ненавязчивое предложение для пользователя.

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

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

Но потом, несколько пользователей обмолвились, что все-таки отключают панель советов. И это навело на мысли.

  • Вверху главного окна расположены панели инструментов. Места там и так немного, поэтому если его не хватает, то под нож идут все вспомогательные моменты. Панель советов, естественно, срубали первой.
  • Не стоит мешать информационную часть и инструментальную. Там где инструменты (тулбары), пользователь мышью частенько работает практически на автомате: мышь туды-сюды, клик и готово. В этот момент пользователь в активной фазе работы – он просто не будет читать всякие дурацкие советы, какие-бы замечательные они не были. У него в этот момент свои и причем совершенно другие заботы. А вот когда он решит отдохнуть, и глаза его устало опустятся… А тут, ух-ты, йопты, инфа. Может быть и заинтересует.

Вот таким вот макаром панель советов дня и переехала вниз главного окна приложения. К слову говоря, больше отключения панели советов не наблюдалось. По какому только поводу пользователи не слали мне скриншоты (баги там, проблемы всякие) – у всех панель советов дня была включена. Сработало, однако :)

Всё, уф! Обещал рассказать про советы дня – сделал. Долги кажись раздал… Ну и понятное дело, идею можно развивать, дотачивать, но все это уже будет на 100 и еще 100 процентов зависеть уже от конкретных задач в конкретном приложении.

Technorati Теги:

понедельник, 14 марта 2011 г.

Пользовательский интерфейс: виртуальный ListView

Об актуальном. Как-то последнее время начинаю все с большей и большей теплотой относиться к виртуальному режиму списка (ListView). Ощущение полного контроля над списком: что, как и когда он отображает – настолько впечатляет, настолько завораживает, что нет слов. Действительно, код поначалу приходится сильно доводить, продумывать, вникать в детали. Но это только поначалу. Зато потом, возникает устойчивое чувство, что все работает как надо, что код “сверкает всеми гранями и бесконечно совершенен в своей продуманности, последовательности, и определенности”.

А по сути-то, в виртуальном списке всего лишь выполняется старинный программерский завет, она же отчасти первая нормальная форма: “данные должны быть определены единожды и однозначно”. Если задаются какие-то значения, то только в одном единственном месте. Какие данные есть в бизнес-слое приложения, те в ListView и отображаются. А не извечный геморрой: что в конкретный момент времени в ListView де-факто, а что в модели, и в какой момент времени данные должны обновляться в пользовательском интерфейсе, и кем это обновление инициируется...

А уж вкупе с механизмом CustomDraw и вовсе наступает окончательный дзэн. Эмулировать из виртуального ListView дерево-подобный элемент управления, с ветками, и прочей дребеденью, но в довесок со всеми преимуществами списка и вовсе становится элементарно. В общем, буду краток (ц) – прёт!

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

Technorati Теги: