понедельник, 13 апреля 2009 г.

Конверсия – девушка капризная… и загадочная

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

Обычно у меня сабмитерские расходы отбиваются примерно через пару-тройку недель. Иногда чуть быстрее, иногда чуть медленнее. В этот же раз все вернулось буквально за 5 дней. И продолжалось в том же духе и дальше. Тьфу-тьфу-тьфу через левое плечо :). И несмотря что заказывался сабмит только английской версии, покупки более-менее равномерно распределились по всем основным регионам: США, Европа (и в основном немцы), ну и Россия с Украиной.

Вот и гадай теперь что именно “выстрелило” в этот раз? Пользовательский интерфейс, который перетряхивался аж три целых месяца с ноября по февраль и который действительно преобразился? Или то самое “Beschreibung” (по немецки “описание”), которое было специально размещено аккурат рядом с традиционным английским “Features” именно в расчете на немцев, которые у меня покупают чаще? Или быстрый выпуск следующей версии, буквально через месяц: 9.08-ая в начале февраля, и 9.09-ая в начале марта? Обычно у меня ну никак не получается выпустить следующий релиз раньше чем через два, а то и три месяца, и изменений в Changelog несмотря на минорные версии более чем хватает… А может быть основательно переписанное английское описание с выделенными кейвордами? И почему наши пользователи, несмотря на значительно более низкие цены в ВебМанях да ЯДеньгах, чем в Avangate и Plimus все равно покупают через западных представителей, не морочась со всякими нашими е-деньгами? А может все дело в длинных, зимних вечерах, за которые было исчеркан далеко ни один лист выпуск новостной рассылки со статьями по использованию Aml Pages?

М-да… Вопросов много – и здесь Вам не Си здесь Вам не моя МГУ-шная география, и вовсе уж не треп о WinAPI на RSDN.ru. Здесь “паниматьнада”. А что-то не хочется! Каждому свое: кесарю кесарево, а косарю косарево. Кому весь этот маркетинг-и-тьфу-на-него-мерчендайзинг, а кому код и юзабилити.

Ох что-то не хочется во всей этой экономической муре ковыряться! И как-то кажется мне, как-то мерещится, что решение о выпуске очередного релиза во многом навеяно мыслями поскорее выпустить и побыстрее перейти к разработке следующего. А под сим благовидным предлогом, похерить всю эту “экономику”.

Ай ведь не стоит. Ай ведь полезное же это дело, остановиться и оглянуться. Вопрос за малым, как без “уоллстритского” образования, и не тратя на это часы и сутки, хоть немного, но попробовать все-таки разобраться со всей этой “экономикой”. Остановиться, оглянуться – всегда полезно!

PS: конверсия – она вообще-то женского рода, и сооветственно загадочна по своей изначальной родовой же сути. А фидбек – как раз-таки мужского, и соответственно понятен, прогнозируем и просчитываем “до копейки” :). Теперь, по прошествии двух с лишним месяцев можно подвести некоторые предварительные итоги моего эксперимента с Uninstall Feedback.

Итак, если после фразы: “Type Your reason here, please” написано “No Reason”, но обратный email тем не менее указан, не вопрошайте “а хера ли?”! Или сообщается нечто вроде “I dont understand it”, не восклицайте что же ты “донтандестендыт”! И уж точно  на whois с IP`шником наперевес можете не бежать – ни к чему это. И так всё понятно.  Нивапрос – в 9 из 10 это Индия, Индия и только Индия. Более того, это скорее всего New Delhi. Со всей ответственностью заявляю, как теперь уже бывалый, причем дважды бывалый AND бывалый – и в фидбеках, и в географии :)

суббота, 11 апреля 2009 г.

Навеяло…

На улице все-таки весна – время молодости и перемен, вот и навеяло.

Оригинал здесь: http://plushev.com/2009/04/08/4147/

PS: а вообще-то за последние дни это уже второй Цой и один Кобейн. К чему бы это?!?

пятница, 10 апреля 2009 г.

Avangate

  • Avangate завел блог
  • Причем автор блога небезызвестный Bob Walsh
  • К тому же блог еще и на русском языке…
  • К тому же и с содержательным контентом для шароварщиков, а не банальными анонсами новостей.

Конечно, пока не ахти что – всего лишь пара статей за пару месяцев, но вполне полновесных статей. А это безусловно весьма приятное и обнадеживающее явление! Ход, конечно, маркетинговый, но старый как мир – предложить клиенту то, что ему нужно, что интересно, что восстребовано. Посмотрим что будет дальше…

воскресенье, 5 апреля 2009 г.

Регистрация за “борзого щенка” или бог не Тимошка…

С недельку так назад – еще до “потери родины” – на RSDN развивалась дискуссия на тему: давать бесплатный регистрационный ключ инвалидам или нет, если таковая просьба имеет место быть в е-почте. Или “да”, или “нет”. “Да” потому что… думаю пояснять не надо. А вот “нет” говорят частенько только потому, что это запросто может быть и вовсе не инвалид, а банальный мошенник. И “подаренный ключ” уже через пару дней Вы найдете на варезных серверах. Но есть способы и разобраться “ху есть ху”: можно предложить простенькую работенку a la пруфридинг, статья, отзыв и.т.д. В общем, примерно вот так вот.

Но Бог не Тимошка – видит немножко! И через пару дней высказанные мысли начали материализовываться.

Только в Aml Pages начал на всю катушку работать код для выборочной кастомизации отдельных тулбаров кульными true-color иконками, как в почте объявился дизайнер… Этот дизайнер давным-давно пользуется старинной бета-версией Aml Pages (когда она еще была бесплатной), а теперь он хотел бы получить новую версию. Он наваял новые логотипы, и спрашивал не нужен ли редизайн сайта с соответственно получением бесплатной регистрации. До дизайна сайта мне как-то сейчас не до сук не досуг, а уже логотипы такого размера, что их в таком виде просто некуда воткнуть.

На ловца и зверь бежит. Конечно же, я тут же предложил ему подумать надо созданием некоторых иконок, благо в его портфолио оные и были. Расписал что к чему, предложил выбрать какие иконки ему не нравятся и какие он хочет изменить, написал, что можно легко распараллелить его работу и мою – я курочу код, он спокойно занимается иконками… Отправил мылом ответ…
Ни ответа, ни привета  пятый день. Ладно, ждем-с!

Буквально через день приходит просьба от другого пользователя, с предложением сделать описание программы в рассылке на subscribe.ru. Если в моей рассылке про Aml Pages, которой уже не год и не два, число подписчиков стабильно колеблется где-то между 430-450, то в его 1400 в одной рассылке и 500 в другой. В общем, предложение для меня небезыинтересное. Но закон бутерброда вечен! В письме он указал неверный URL рассылки, и соответственно оценить целевую аудиторию я не смог. Но предложение все равно заинтриговало. Надо сказать, что я конкретно уже так патзаёпси устал  писать статьи в свою рассылку. Поэтому помощь, да еще и толковая более чем нужна.

Ну что!?! Написал ему ответ, спросил правильный адрес его рассылки на subscribe.ru…
Что думаете?
Ага! “Дорогие товарищи, Вы конечно будете смеяться, но нас опять постигла тяжелая утрата!” (© анекдот времен смертей Брежнева, Андропова, Черненко).
Опять ни ответа, ни привета который день!

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

PS: чуть спустя, заподозря неладное, я проверил даты обоих писем в тех.поддержку… Не-а! Не первоапрельские! Уф! :)

четверг, 2 апреля 2009 г.

RSDN и Родина – оба с большой буквы “Рэ”

Вот, что сегодня было обнаружено на входной странице любимейшего RSDN.ru

rsdn_under_construction

Вот когда в Москве горела Останкинская телебашня и из-за отсутствия телевещания обезбашенные (башня-то не работает, сгоре-е-ела башня-то) старушки начали митинговать – что вы, что вы! в стране национальная трагедия: “сламалси теливизер” – как-то я себя ощущал совершенно нормально (ну, кроме обычных человеческих переживаний что где-то в опасности люди), более-менее в спокойном, в стандартном ритме жизни.

А вот неработающий RSDN, даже когда понимаешь, что это ненадолго, что это на денек, не больше, все равно вызывает смутное ощущение тревоги и потерянной Родины… :)

 

вторник, 31 марта 2009 г.

True-color иконки в тулбарах

Для любого GUI-приложения не последнее значение имеет внешний вид – дизайн интерфейса.  Мысль не новая. Но далеко не каждое приложение имеет не то, что достойный, а хотя бы минимально приемлемый дизайн. И полагаю, причина тут кроется не только в том, что разработчики не самые замечательные дизайнеры [пользовательских интерфейсов]… Но иногда дизайн-то может быть и есть, но вот интегрировать его в приложение не так-то просто.
- “У вас дизайн еззь?
- Езззь!
- За?ебизззь!” (© )
Но на этом собственно всё: дизайн, конечно, “езь”! Но интегрировать его в приложение никто не спешит.

Почти в каждом приложении есть тулбар (toolbar). И причем занимает он весьма значительное место на экране, и поэтому во многом именно он и определяет внешний вид приложения. Так что, уж если редизайнить, то начиная с тулбаров.

Первым делом, при таком раскладе хочется сменить иконки в тулбарах на truecolor. Вот об этом и пойдет речь. Недавно Begemot выдал мега-полезный пост “Где брать бесплатные иконки”, и это только сподвигнуло к давно откладываемому редизайну иконок в Aml Pages.

Но тут же нарисовалось маленькое, но весьма существенное препятствие. Тулбары в Aml Pages набиты кнопками под завязку, просто в силу того, что и возможностей в Aml Pages немало. А посему перетасовываются кнопки тулбаров у меня чуть-ли не каждую версию – регулярный такой  в общем редизайн GUI.

В Visual Studio я постоянно пользуюсь встроенным редактором тулбаров . И отказываться от этой привычки нет ни малейшего желания – несмотря на всю ограниченность этого редактора, создавать в нем кнопки, перемещать их, редактировать подписи ну и так далее достаточно просто, быстро и удобно. Но есть одно “но”. Даже в не самой старой VS 2005, и уж тем более в моей любимой VS6 сам редактор иконок поддерживает всего 16 (шестнадцать!!!) цветов. Это означает, что редактировать сами изображения нельзя, в противном случае при первом же сохранении измененного изображения вместо кульной true-color иконки получите “кастрированный” вариант в “шашнадцать” цветов.

Ну лиха беда начало – айда в Google в поисках более продвинутого редактора тулбаров. Гуглящий да обрящет! В первых же строках  нашелся искомый редактор для 7-ой студии. Но и он был не лишен недостатков: частенько привирал с фоновыми цветами, не всегда корректно импортировал тулбары из RC-файла, да и нацелен он был все-таки на то, что каждый тулбар переделывается полностью.

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

Собственно было найдено следующее решение. Редактор изображений в Visual Studio из-за своей намертво-прошитой 16-цветности отпадает как класс . Но тем не менее, сам компилятор ресурсов абсолютно корректно собирает в конечный exe-шник иконки из ico-файлов, не изменяя при этом сами изображения.

ОК! То, что нужно.

  1. Глубину цвета “модных” иконок не нарушаем. Т.к. иконки расположены в отдельных ico-файлах.
  2. Можем на лету заменить только некоторые кнопки тулбаров, ручками загрузив изображение из ресурсов (через LoadImage).
  3. Ничто не заставляет редактировать весь тулбар, да причем еще “ах раз, да еще раз, еще много, много раз” в каждой новой версии.

Дизайнеры, вероятно возмутятся, читая про эти “художества”. Что ж – вы правы! Но я не дизайнер. У меня несколько иная задача: заменить только некоторые иконки в кнопках на лету, причем чтобы не приходилось править код и иконки при малейшем изменении исходников, ресурсов, расположения кнопок и.т.д. Чтоб мухи отдельно, котлеты отдельно.

Сам алгоритм решения прост до неприличия: после загрузки стандартного ресурса тулбара, наш код создает новый ImageList с более “глубокими” цветами. После чего копируют все иконки из старого ImageList`а в новый, заменяя нужные более симпатишными из включенных в ресурсы ico-файлов. И наконец, этот новый ImageList просто-напросто назначается тулбару. Упс! Всё готово! Этот код примерно выглядит так:

tb_icons_code

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

tb_badgray

Но это уже на вкус и на цвет. Google легко выдает несколько примеров преобразования иконки в градации серого – как этот или этот. Но  эксперименты показали, что при использовании этих примеров в реальном коде, получается все равно далеко не идеально. Код примеров еще дотачивать и дотачивать до идеала напильником . Но,  хозяева-барины: можно сяк, а можно эдак, в конце концов можно вообще создать отдельный Disabled ImageList из модных иконок… Вовсе не обязательно переделывать весь тулбар снова и снова, как только понадобится улучшить всего лишь пару иконок на кнопках.

суббота, 14 марта 2009 г.

Как таблицы в текст пихались

В ОС Windows в RichEdit-контроле - который отвечает за форматированный текст RTF - поддержка таблиц реализована… да никак она, собственно, и не реализована. И девелоперском кругу бытует мнение, “что великий чешский писатель Карел Чапек был карелом”… тьфу ты… что поделать с таким “отсутствием” таблиц ничего нельзя. Однако на самом деле, чем старше версия RichEdit, тем больше возможностей работы с таблицами. Правда, иногда до них не так-то просто добраться, но все же они есть. Ты видишь суслика? Нет… Но суслик есть!” © – как именно добраться – разговор отдельный.

А за прошедшие зимние месяцы распространился было слушок, что новейшая версия RichEdit 6.0 (RE) не только умеет создавать и показывать таблицы – экая невидаль, это давным-давно “взятая высота”! Но и изменять размеры ячеек. Ну, а такой функционал меняет дело. Одно дело генерировать таблицы да любоваться на них, совсем другое предоставить пользователю возможность и самому порезвиться. А раз есть разница для пользователя, то скорее всего должна быть разница и для нашего кармана.

Оказывается эта версия RE есть в составе Microsoft Office 2007 (и не только). Не долго размышляя, скачал 2007-ой офис, поставил, с тоской посмотрел на него… и незамедлительно выпил © снёс.

Офис то снесен, но вот файлы системные от него остались. А вот именно они-то мне и нужны. Иду в папку %COMMON_FILES%\Microsoft Shared\OFFICE12 и с любопытством копаюсь в ее содержимом. Все привычно, серая скука и до боли знакомые файлы. Но посредь папки гордо красуется файл RichEd20.DLL, который вообще говоря, есть почти в любой даже Win98\2K, не то что в XP. Ага, думаю, очередная заглушка для совместимости… Но нафига же новейшему офису совместимость с древним RE 2.x-3.x – уж эти “заглушечные” DLL есть вообще практически в любой XP. Да и офис немаленький, на кой ему таскать заглушки, если он сам ими и вовсе не пользуется…

В общем, есть над чем призадуматься. Сигаретку, еще кофейчинского (ну какой девелопер без кофейчиского!?!) и начинаем, неспеша, эдакой “археологической метелкой” сметать пыль с нижних пластов “офисных” недр – ковыряться в подробностях.

Смотрите, экая штука! А размер-то RichEd20.DLL – аж почти цельный метр мегабайт – многова-а-ато - это уже вообще на заглушку никак не тянет.  И… о-п-п-па, смотрим в детали и вот оно: описание – “Microsoft RichEdit 6.0”, да и номер версии файла аж 12.xxx. Вообще в RichEd20.DLL содержится реализация RichEdit версии 3.0. Но размер самой DLL в версии 3.0 значительно меньше – что-то около 400 килобайт. И уж точно major-номер версии ну никак не 12 (имеется ввиду версия файла, если RichEdit 6.0 это версия продукта вообще, то версия файла несколько иное. Вы можете всё это увидеть в свойствах файла).

Ну, точно судя по всему это и есть новая версия. Долго сказки блоги сказываются, да быстро код пишется. Фтоппку все эти дот.нет`ы. Стартую старинную подружку 6-ую студию, генерю визардом простейшее MFC-приложение на основе СRichEditView и начинаю колдовать над “визардовым” кодом.

Элементарно, Ватсон! Ручками загружаем в адресное простраство необходимую DLL. На этапе создания вида CRichEditView подменяем имя класса окна… Компилируемся, с предыханием запускаем… И у-у-упс! Все сработало!  Рихтеровским Spy`ем проверяем класс окна. Отлично! Это RichEdit60W – приложение создало именно то, что просили. Затаив дыхание, открываем любой rtf-файл c таблицей… Подтаскиваем мыша к границе таблицы… Курсор меняется на стрелку! Нажали левую кнопку и перетаскиваем границы ячеек. Вуаля!

Получили приложение с поддержкой таблиц в тексте ака в не самой старой Висте. Но созданное аж в древнем Visual C++ 6, причем безо всяких там VS2008, WPF, SilverLight и иже с ними. Не так страшен черт, как его малюют, если только чуть-чуть спуститься с заоблачных высот абстракций к старому доброму WinAPI. Ну не люблю я, хоть режьте меня, все эти похотливые до вычислительных ресурсов модные новинки: постоянно пытающиеся подкачать очередной Дот.Нет в десяток метров, требущие пары гигов памяти, очередных service pack`ов…  А если можно несколькими простыми штрихами создать приложение, весящее первые сотни килобайт,  то зачем, пожалуйста скажите мне, за-а-ачем платить больше?