<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><title>Заметки ночного программиста</title><link>http://nonp.blogspot.com/</link><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/carc" /><description>Блог о shareware и разработке программного обеспечения</description><language>en</language><managingEditor>noreply@blogger.com (Гоша Мазов aka Carc)</managingEditor><lastBuildDate>Sun, 15 Apr 2012 17:52:23 PDT</lastBuildDate><generator>Blogger http://www.blogger.com</generator><openSearch:totalResults xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/">114</openSearch:totalResults><openSearch:startIndex xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/">1</openSearch:startIndex><openSearch:itemsPerPage xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/">25</openSearch:itemsPerPage><feedburner:info uri="carc" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item><title>Гугл-маркет : корпорация добра vs зла?</title><link>http://feedproxy.google.com/~r/carc/~3/A2nra7nwpTI/vs.html</link><category>Shareware</category><category>Google</category><category>блоги</category><author>noreply@blogger.com (Гоша Мазов aka Carc)</author><pubDate>Thu, 22 Mar 2012 02:34:26 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-9056987873494589234.post-315664538713789642</guid><description>&lt;p&gt;&lt;a href="http://indiepath.blogspot.com/2012/03/blog-post.html" target="_blank"&gt;Любопытный пост про гугл-маркет&lt;/a&gt;. Вот вам батенька и &lt;strike&gt;юрьев день&lt;/strike&gt; гугл маркет. Как только гугл начал активно работать с конечными вендорами, вся корпорация добра сразу как-то и закончилась резко. Полезли проблемы, неотзывчивый саппорт и банальное &amp;quot;сделано через зопу&amp;quot;. А мы всё — “&lt;em&gt;майкрософт маст-дай&lt;/em&gt;”, “&lt;em&gt;плимус=кушать_кактус&lt;/em&gt;”, “&lt;em&gt;PPG+охота на ведьм&lt;/em&gt;”…&lt;/p&gt;  &lt;p&gt;Итого: как только корпорация Икс начинает работать со множеством пользователей или вендоров, а вовсе не с ограниченным числом клиентов – вся сказка про отличный продукт\сервис резко завершается.&lt;/p&gt;  &lt;p&gt;Ибо сказок не бывает. Множество клиентов — это всегда больш&lt;em&gt;е&lt;/em&gt;е число юз-кейзов, вариантов, предпочтений. А на каждый роток, не накинешь платок. Вернее, не накинешь &amp;quot;бесплатно&amp;quot;, беспроблемно. Это требует ресурсов и многих: времени, аналитики, решений, реализаций, тестов – чего угодно. А они так запросто из ниоткуда не берутся. Сказок не бывает, как впрочем и серебрянных пуль.&lt;/p&gt;  &lt;p&gt;PS: такая же картина вспоминается с браузером Google Chrome. От первых версий был просто в восторге! “Ты помнишь, как все начиналось…” ©. А теперь с каждой версией преотличнейший браузер все более и более вырождается в УГ. А жаль :(&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9056987873494589234-315664538713789642?l=nonp.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/carc/~4/A2nra7nwpTI" height="1" width="1"/&gt;</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://nonp.blogspot.com/2012/03/vs.html</feedburner:origLink></item><item><title>2012… Год тихой смерти?</title><link>http://feedproxy.google.com/~r/carc/~3/K3NZDNlTEdw/2012.html</link><category>Веб</category><category>Литература</category><category>пользовательский интерфейс</category><author>noreply@blogger.com (Гоша Мазов aka Carc)</author><pubDate>Sat, 04 Feb 2012 03:20:42 PST</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-9056987873494589234.post-7382832615965620103</guid><description>&lt;p&gt;&lt;img style="border-bottom: 0px; border-left: 0px; margin: 0px 35px 0px 0px; display: inline; border-top: 0px; border-right: 0px" title="И чего же я на Озоне аж 6 лет не появлялся!?!" border="0" alt="И чего же я на Озоне аж 6 лет не появлялся!?!" align="left" src="http://lh3.ggpht.com/-wAZSnBTobe8/Ty0TzATh0DI/AAAAAAAAAL8/HgwyECq5nfM/ozon_history%25255B8%25255D.gif?imgmax=800" width="119" height="186" /&gt; На картинке слева отображена история моих заказов на Озоне… Славный путь, не правда, ли? Только где это я был с 2006-го по 2012-ый?!?&lt;/p&gt;  &lt;p&gt;А был я в &lt;a href="http://www.books.ru" target="_blank"&gt;Books.ru&lt;/a&gt;. Как-то случилось, что в далеком 2006-ом мне пришлось заказать книгу именно на books.ru. Уж не помню почему, но какие-то геморройки вышли с Озоном. Ну пришлось, и пришлось. Суть не в этом. В Books.ru я влюбился с первого взгляда. Мне катило абсолютно всё: отличнейший рубрикатор по книгам, возможность полистать книжку перед покупкой, явно “живые” отзывы, гутно работающая служба доставки и много чего другого. Чего только стоила новостная рассылка, это просто слов нет. Можно подписаться не просто на книги, не просто по разделам “детективы”, “про баб-с” и “профессиональная литература” – а выбрать более чем конкретизированные разделы в computer science: что-то вроде “операционные системы” и “языки программирования”, а вот самоучители по Ворду нафиг. Удобно не правда, ли?&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.books.ru" target="_blank"&gt;&lt;img style="border-right-width: 0px; margin: 0px 15px 5px 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Верните кнопку, всё прощу!" border="0" alt="Верните кнопку, всё прощу!" align="left" src="http://lh4.ggpht.com/-SrAnAQ_7ILY/Ty0Tz7MjaXI/AAAAAAAAAL0/pNPEMnB5240/books_ru_button%25255B4%25255D.gif?imgmax=800" width="244" height="220" /&gt;&lt;/a&gt; Но недавно books.ru учинили редизайн сайта. Много чего работало криво, многое и не работало. Ну да ладно, один переезд стоит трех пожаров. Дело-то житейское. И баг-репорты админам писал, и мнения высказывал, в общем помогал любимому магазину как мог. &lt;/p&gt;  &lt;p&gt;Но отчасти воз и поныне там. Товар есть – кнопка “&lt;em&gt;В корзину&lt;/em&gt;”. Товара нет – картинка “&lt;em&gt;Нет в продаже&lt;/em&gt;”. Где &lt;strike&gt;нафиг блин епрст полгода прошло&lt;/strike&gt; кнопка “Сообщить о поступлении” рядом с товаром?&amp;#160; Ведь раньше на старом сайте была же? Так сложно сделать? Робяты! Books.ru! Вы теряете не просто клиентов, вы начинаете терять уже фан-клуб, а это о чем-то да говорит. Ну прям хоть сам иди прикручивай кнопку к вам на сайт. Верните кнопку, черти!!! Нужна помощь? Нивапрос ©! Все что в силах: код, UX-тестирование, UC-анализ. Просто так. Из симпатии к вам.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;PS&lt;/strong&gt;: а попробуйте угадать, откуда на Озоне появился вдруг заказ в 2012-ом? Ага. Точно, вот у них кнопка “Сообщить о поступлении” была. Они&amp;#160; и сообщили. Поэтому заказ и у них же, а не у books.ru. И это при том, что я с-о-о-овсем, мягко говоря, не в восторге от Озона. Ибо где &lt;a href="http://www.computerra.ru/interactive/420391/" target="_blank"&gt;француз прошел&lt;/a&gt;, &lt;strike&gt;цыг…&lt;/strike&gt; всем остальным делать нечего!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9056987873494589234-7382832615965620103?l=nonp.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/carc/~4/K3NZDNlTEdw" height="1" width="1"/&gt;</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh3.ggpht.com/-wAZSnBTobe8/Ty0TzATh0DI/AAAAAAAAAL8/HgwyECq5nfM/s72-c/ozon_history%25255B8%25255D.gif?imgmax=800" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://nonp.blogspot.com/2012/02/2012.html</feedburner:origLink></item><item><title>Про сериализацию в MFC</title><link>http://feedproxy.google.com/~r/carc/~3/3PZ6dw9j3q8/mfc.html</link><category>Разработка</category><category>Архитектура</category><author>noreply@blogger.com (Гоша Мазов aka Carc)</author><pubDate>Fri, 03 Feb 2012 03:38:56 PST</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-9056987873494589234.post-1829598698651361669</guid><description>&lt;p&gt;Сегодня про сериализацию, в частности в библиотеке MFC. Описанные ниже приемы — мой личный, опробованный на собственной шкуре опыт. О таком в MSDN, да в книгах не пишут. А зря, &lt;strike&gt;мль&lt;/strike&gt;, зря… Почти все приемы выстраданы в конкретном проекте — в частности в &lt;a href="http://www.amlpages.com/Rus/features.htm" target="_blank"&gt;Aml Pages&lt;/a&gt;. И большая их часть в ней и реализована. А некоторые нет, и я искренне весьма дюже сожалею о тяом, что допер до них слишком поздно.&lt;/p&gt;  &lt;p&gt;На КЫВТ.ру &lt;a href="http://www.rsdn.ru/forum/mfc/4540297.aspx" target="_blank"&gt;поднимался вопрос о сериализации&lt;/a&gt;. Отвечал. А теперь рискну оформить наломанные мною копья в виде поста. Основной посыл этого поста, что человеку свойственно ошибаться. Ошибались, ошибаемся и ошибаться будем. И главное, всего в развитии проекта мы предвидеть не можем. Ну и собственно как можно всевозможные грабли обходить с сериализуемыми объектами.&lt;/p&gt;  &lt;p&gt;Итак, MFC поддерживает &lt;a href="http://msdn.microsoft.com/en-us/library/caz3zy5s(v=vs.80).aspx" target="_blank"&gt;класс CArchive&lt;/a&gt; для сериализации, который позволяет писать-читать из файла (хотя и не только), практически любые типы данных. Все стандартные классы MFC легко читаются\пишутся конструкциями вида CArchive&amp;lt;&amp;lt; и CArchive&amp;gt;&amp;gt;. Грабли начинаются уже потом, при развитии проекта. Именно когда объекты абстрактной софтины получают новые сериализуемые поля, или строковые данные могут быть в разных кодировках, или еще как.&lt;/p&gt;  &lt;h4&gt;&lt;strong&gt;1. Используйте номер версии архива&lt;/strong&gt;&lt;/h4&gt;  &lt;p&gt;Используйте версионность CArchive. Смотреть на макрос &lt;a href="http://msdn.microsoft.com/en-us/library/a94da1y0(v=vs.80).aspx" target="_blank"&gt;IMLEMENT_SERIAL+VERSIONABLE_SHEMA&lt;/a&gt;. Суть проста: записывайте в CArchive сначала номер формата архива, а только потом сами данные. В дальнейшем это позволит сделать чтение архивов совместимым снизу вверх. Если в первой версии архива (файла), у нас записывались int+CString, а во второй int+CString+еще_int, то сериализация будет выглядеть так:&lt;/p&gt;  &lt;p &gt; …&amp;nbsp;Serialize(CArchive&amp;amp;&amp;nbsp;ar)&lt;br/&gt; {&lt;br/&gt; 	&lt;span&amp;nbsp;style='color:&amp;nbsp;#000083;&amp;nbsp;font-weight:&amp;nbsp;bold'&gt;if&lt;/span&gt;&amp;nbsp;(CArchive::IsStoring())&amp;nbsp;{&lt;span&amp;nbsp;style='color:&amp;nbsp;#7E7E7E'&gt;//запись&lt;/span&gt;&amp;nbsp;&lt;span&amp;nbsp;style='color:&amp;nbsp;#7E7E7E'&gt;архива&lt;/span&gt;&lt;br/&gt; 		ar&amp;lt;&amp;lt;&lt;span&amp;nbsp;style='color:&amp;nbsp;blue'&gt;2&lt;/span&gt;;&lt;span&amp;nbsp;style='color:&amp;nbsp;#7E7E7E'&gt;//записали&lt;/span&gt;&amp;nbsp;&lt;span&amp;nbsp;style='color:&amp;nbsp;#7E7E7E'&gt;номер&lt;/span&gt;&amp;nbsp;&lt;span&amp;nbsp;style='color:&amp;nbsp;#7E7E7E'&gt;формата&lt;/span&gt;&amp;nbsp;&lt;span&amp;nbsp;style='color:&amp;nbsp;#7E7E7E'&gt;—&lt;/span&gt;&amp;nbsp;&lt;span&amp;nbsp;style='color:&amp;nbsp;#7E7E7E'&gt;в&lt;/span&gt;&amp;nbsp;&lt;span&amp;nbsp;style='color:&amp;nbsp;#7E7E7E'&gt;данном&lt;/span&gt;&amp;nbsp;&lt;span&amp;nbsp;style='color:&amp;nbsp;#7E7E7E'&gt;случае&lt;/span&gt;&amp;nbsp;&lt;span&amp;nbsp;style='color:&amp;nbsp;#7E7E7E'&gt;вторая&lt;/span&gt;&amp;nbsp;&lt;span&amp;nbsp;style='color:&amp;nbsp;#7E7E7E'&gt;версия&lt;/span&gt;&amp;nbsp;&lt;span&amp;nbsp;style='color:&amp;nbsp;#7E7E7E'&gt;архива&lt;/span&gt;&lt;br/&gt; 		ar&amp;lt;&amp;lt;My_int;&lt;span&amp;nbsp;style='color:&amp;nbsp;#7E7E7E'&gt;//понеслась&lt;/span&gt;&amp;nbsp;&lt;span&amp;nbsp;style='color:&amp;nbsp;#7E7E7E'&gt;запись&lt;/span&gt;&amp;nbsp;&lt;span&amp;nbsp;style='color:&amp;nbsp;#7E7E7E'&gt;данных&lt;/span&gt;&lt;br/&gt; 		ar&amp;lt;&amp;lt;myString1;&lt;br/&gt; 		ar&amp;lt;&amp;lt;My_Int2;	&lt;br/&gt; 	}&lt;br/&gt; 	&lt;span&amp;nbsp;style='color:&amp;nbsp;#000083;&amp;nbsp;font-weight:&amp;nbsp;bold'&gt;else&lt;/span&gt;&amp;nbsp;{&lt;span&amp;nbsp;style='color:&amp;nbsp;#7E7E7E'&gt;//чтение&lt;/span&gt;&lt;br/&gt; 		&lt;span&amp;nbsp;style='color:&amp;nbsp;#000083;&amp;nbsp;font-weight:&amp;nbsp;bold'&gt;int&lt;/span&gt;&amp;nbsp;nArchiveFormat;&lt;br/&gt; 		ar&amp;gt;&amp;gt;nArchiveFormat;&lt;span&amp;nbsp;style='color:&amp;nbsp;#7E7E7E'&gt;//читаем&lt;/span&gt;&amp;nbsp;&lt;span&amp;nbsp;style='color:&amp;nbsp;#7E7E7E'&gt;номер&lt;/span&gt;&amp;nbsp;&lt;span&amp;nbsp;style='color:&amp;nbsp;#7E7E7E'&gt;архива&lt;/span&gt;&lt;br/&gt; 		ar&amp;gt;&amp;gt;My_int;&lt;span&amp;nbsp;style='color:&amp;nbsp;#7E7E7E'&gt;//первый&lt;/span&gt;&amp;nbsp;&lt;span&amp;nbsp;style='color:&amp;nbsp;#7E7E7E'&gt;int&lt;/span&gt;&lt;br/&gt; 		ar&amp;gt;&amp;gt;myString1;&lt;span&amp;nbsp;style='color:&amp;nbsp;#7E7E7E'&gt;//первый&lt;/span&gt;&amp;nbsp;&lt;span&amp;nbsp;style='color:&amp;nbsp;#7E7E7E'&gt;CString&lt;/span&gt;&lt;br/&gt; 		&lt;span&amp;nbsp;style='color:&amp;nbsp;#000083;&amp;nbsp;font-weight:&amp;nbsp;bold'&gt;if&lt;/span&gt;&amp;nbsp;(nArchiveFormat&amp;nbsp;&amp;gt;=&lt;span&amp;nbsp;style='color:&amp;nbsp;blue'&gt;2&lt;/span&gt;)&lt;span&amp;nbsp;style='color:&amp;nbsp;#7E7E7E'&gt;//если&lt;/span&gt;&amp;nbsp;&lt;span&amp;nbsp;style='color:&amp;nbsp;#7E7E7E'&gt;мы&lt;/span&gt;&amp;nbsp;&lt;span&amp;nbsp;style='color:&amp;nbsp;#7E7E7E'&gt;читаем&lt;/span&gt;&amp;nbsp;&lt;span&amp;nbsp;style='color:&amp;nbsp;#7E7E7E'&gt;архив&lt;/span&gt;&amp;nbsp;&lt;span&amp;nbsp;style='color:&amp;nbsp;#7E7E7E'&gt;второй&lt;/span&gt;&amp;nbsp;&lt;span&amp;nbsp;style='color:&amp;nbsp;#7E7E7E'&gt;версии,&lt;/span&gt;&amp;nbsp;&lt;span&amp;nbsp;style='color:&amp;nbsp;#7E7E7E'&gt;то&lt;/span&gt;&amp;nbsp;&lt;span&amp;nbsp;style='color:&amp;nbsp;#7E7E7E'&gt;считываем&lt;/span&gt;&amp;nbsp;&lt;span&amp;nbsp;style='color:&amp;nbsp;#7E7E7E'&gt;второй&lt;/span&gt;&amp;nbsp;&lt;span&amp;nbsp;style='color:&amp;nbsp;#7E7E7E'&gt;инт.&lt;/span&gt;&amp;nbsp;&lt;span&amp;nbsp;style='color:&amp;nbsp;#7E7E7E'&gt;Если&lt;/span&gt;&amp;nbsp;&lt;span&amp;nbsp;style='color:&amp;nbsp;#7E7E7E'&gt;архив&lt;/span&gt;&amp;nbsp;&lt;span&amp;nbsp;style='color:&amp;nbsp;#7E7E7E'&gt;второй&lt;/span&gt;&amp;nbsp;&lt;span&amp;nbsp;style='color:&amp;nbsp;#7E7E7E'&gt;или&lt;/span&gt;&amp;nbsp;&lt;span&amp;nbsp;style='color:&amp;nbsp;#7E7E7E'&gt;старше&lt;/span&gt;&amp;nbsp;&amp;nbsp;&lt;span&amp;nbsp;style='color:&amp;nbsp;#7E7E7E'&gt;версии,&lt;/span&gt;&amp;nbsp;&lt;span&amp;nbsp;style='color:&amp;nbsp;#7E7E7E'&gt;то&lt;/span&gt;&amp;nbsp;&lt;span&amp;nbsp;style='color:&amp;nbsp;#7E7E7E'&gt;читаем&lt;/span&gt;&amp;nbsp;&lt;span&amp;nbsp;style='color:&amp;nbsp;#7E7E7E'&gt;второй&lt;/span&gt;&amp;nbsp;&lt;span&amp;nbsp;style='color:&amp;nbsp;#7E7E7E'&gt;int&lt;/span&gt;&amp;nbsp;&lt;span&amp;nbsp;style='color:&amp;nbsp;#7E7E7E'&gt;—&lt;/span&gt;&amp;nbsp;&lt;span&amp;nbsp;style='color:&amp;nbsp;#7E7E7E'&gt;иначе&lt;/span&gt;&amp;nbsp;&lt;span&amp;nbsp;style='color:&amp;nbsp;#7E7E7E'&gt;пропускаем.&lt;/span&gt;&lt;br/&gt; 			ar&amp;gt;&amp;gt;My_Int2;	&lt;br/&gt; 	}&lt;br/&gt; } &lt;/p&gt;  &lt;p&gt;Надеюсь, идея понятна. В зависимости от номера версии архива на лету решаем, какие данные в нем есть и их нужно читать, а каких нет, т.к. архив старой версии. &lt;BR&gt; &lt;p&gt;По крайней мере, используя этот прием можно гарантировать, что новые версии программы будут корректно читать архивы, созданные старой версией программы. Конечно, старые версии программы не смогут читать архивы новых версий, но хоть совместимость снизу вверх будет обеспечена. Берем с полки пирожок.&lt;/p&gt;  &lt;h4&gt;&lt;strong&gt;2. Сериализуйте BOOL-переменные как битовую маску&lt;/strong&gt;&lt;/h4&gt;  &lt;p&gt;Если в сериализуемом объекте у Вас есть набор булевых (BOOL)переменных, некоторых флагов, описывающих какое-то состояние, то не стоит их писать в архив последовательно. Не стоит писать нечто вроде &lt;code&gt;CArchive&amp;lt;&amp;lt;boolFlag1&amp;lt;&amp;lt;boolFlag2&amp;lt;&amp;lt;boolFlag3&lt;/code&gt;; И дело тут вовсе не в экономии байтов.&lt;/p&gt;  &lt;p&gt;Представьте себе, что в следующих версиях какие-то булевые переменные исчезнут из объекта, а какие-то добавятся. Соответственно, должен и измениться формат архива.&amp;#160; Вот блин, досада. И только из-за этой мелочи, как советовал выше, придется городить новый формат архива? Который не прочтут старые версии? Ан фиг! Эту проблему можно обойти. Решение простое: записывайте все флаги единой битовой маской. Нечто вроде такого: &lt;/p&gt;  &lt;p class="prettyprint"&gt; DWORD dwBitMask=0;&lt;br/&gt; enum {FLAG1=1, FLAG2=2… и.т.д.};&lt;br/&gt; if (boolFlag1)&lt;br/&gt; 	dwBitMask|=FLAG1;&lt;br/&gt; if (boolFlag2)&lt;br/&gt; &amp;nbsp;	dwBitMask|=FLAG2; &lt;/p&gt;  &lt;p&gt;и уже именно битовую маску dwBitMask записываем в архив. Какие плюсы? Обратите внимание, что во первых мы обошли проблему версий архивов. Появление или добавление нового флага BOOL не влияет на версию архива — все равно у нас пишется и читается DWORD.&lt;/p&gt;  &lt;p&gt;Во-вторых, есть и еще весьма приятный бонус! Старая версия программы, которая не поддерживает каких-либо флагов из новой версии, не только корректно прочтет архив новой версии, но и запишет его обратно неизменным. Для этого необходимо, чтобы битовые маски не создавались и парсились на этапе записи\чтения, а именно в виде подобной маски и хранились в объекте. Тогда старая версия всегда одинаково прочтет битовую маску. Но булевый флаг, который появился у нас в новой версии она оставит неизменным. Как считает, так и запишет.&lt;/p&gt;  &lt;p&gt;Согласитесь, движение в сторону совместимости сверху вниз это уже неплохо. У этого приема есть пара деталей, но это уже подробности и если нужно опишу их в другом посте. Как использовать битовую маску для хранения в объекте в runtime писать не буду — не об том пост.&lt;/p&gt;  &lt;h4&gt;&lt;strong&gt;3. Не сериализуйте строки как есть&lt;/strong&gt;&lt;/h4&gt;  &lt;p&gt;Не реализуйте сериализацию строк, как предлагает в примерах по MFC. Не используйте в лоб запись и чтение вида CArchive&amp;lt;&amp;lt;myString и CArchive&amp;gt;&amp;gt;myString. Поясню почему. CString в MFC инкапусулирует или Unicode-строку, или ANSI-строку — в зависимости от настроек компиляции (MBCS|Unicode). Поэтому стандартная сериализация полностью полагается на внутренности CString. А оно нам надо? Всё, робяты! 90-ые давно прошли — на дворе 21-век. Нет просто строк, есть последовательности с завершающим нулем. Но вот в какой кодировке могут быть конкретные строки — выбирай на вкус. Хотите ANSI, хотите UTF8, хотите Unicode.&lt;/p&gt;  &lt;p&gt;Простой случай: а допустим в CString у нас хранится HTML-код… HTML-код… Он такой… Он вообще может быть в какой угодно кодировке. Так что имеет смысл делать сериализацию CString ручками, записывать и кодировку, и длину, и только потом непосредственно поток байтов. Зато потом прочтете без проблем, в любой версии софтины. Поверьте на слово, то что кажется неважным в начале проекта, потом в развитии может вызвать очень большую головную боль.&lt;/p&gt;  &lt;p&gt;Ну вот, собственно, некоторые несложные приемы сериализации. Есть конечно и еще детали, и еще подробности. А деталей хватает. Начиная от корректной реакции софта на попытку прочтения новой версии архива, и заканчивая, ситуцией, когда MFC-программа, скомпилированная как MBCS читает архив записанной UNICODE версией, или наоборот. Есть там нюансы, и именно в них весь дьявол. Но о них как-нибудь в другом посте.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9056987873494589234-1829598698651361669?l=nonp.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/carc/~4/3PZ6dw9j3q8" height="1" width="1"/&gt;</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://nonp.blogspot.com/2012/02/mfc.html</feedburner:origLink></item><item><title>Google Code Prettifier : Проверка связи</title><link>http://feedproxy.google.com/~r/carc/~3/pf6XgLP-SqY/google-code-prettifier.html</link><category>Разработка</category><category>Веб</category><category>блоги</category><author>noreply@blogger.com (Гоша Мазов aka Carc)</author><pubDate>Wed, 01 Feb 2012 03:16:04 PST</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-9056987873494589234.post-9075032038551200516</guid><description>&lt;p&gt;Попробуем-ка новую подсветку синтаксиса онлайл. &lt;a href="http://blog.divenvrsk.org/2010/12/google-google.html" target="_blank"&gt;Руководство здесь&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Ну, а теперь код двухплюсовый.&lt;/p&gt;  &lt;pre class="prettyprint lang-c"&gt;#include &amp;laquo;stdio.h&amp;raquo;&lt;br /&gt;&lt;br /&gt;bool condition=true;&lt;br /&gt;while (condition) {//вечно, нах!&lt;br /&gt;	printf(“Hello, Code Prettifier”);//здарова, млин!&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Сработало?&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9056987873494589234-9075032038551200516?l=nonp.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/carc/~4/pf6XgLP-SqY" height="1" width="1"/&gt;</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://nonp.blogspot.com/2012/02/google-code-prettifier.html</feedburner:origLink></item><item><title>Юзабилити. Про трей</title><link>http://feedproxy.google.com/~r/carc/~3/ejNXaDhUpM0/blog-post.html</link><category>Разработка</category><category>usability</category><category>пользовательский интерфейс</category><author>noreply@blogger.com (Гоша Мазов aka Carc)</author><pubDate>Wed, 25 Jan 2012 12:53:01 PST</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-9056987873494589234.post-3782732306592993572</guid><description>&lt;p&gt;Эх, давненько я не брал в руки шашки… Но лучше поздно, чем в штаны!&lt;/p&gt;  &lt;p&gt;Напишу-ка я про не очень-то очевидную фичу в работе с &lt;a title="Что такое трей?" href="http://otvet.mail.ru/question/13574754" target="_blank"&gt;треем&lt;/a&gt;. Для закваски пронзительная история, она же быль. Повадился у меня последнее время падать Проводник Windows. Падает как заведенный, впрочем при определенных обстоятельствах, но ни о них речь. Проводник после креша&amp;#160; сам перезапускается, но по ходу его перезапуска некоторые софтины в трее не восстанавливаются. Если с каким-нить TypeAndRun это пофиг — убил, и запустил заново, то софт с пользовательскими данными убивать через менеджер процессов уже не хочется. &amp;quot;Че-то я ачкую…&amp;quot; ©. Скажем, к примеру, рухнувшая база данных какого-нибудь The Bat может весьма и весьма попортить крови.&lt;/p&gt;  &lt;p&gt;Способов решения проблем с упавшим Проводником, и как следствие, пересоздающейся на лету панели задач есть. Как вариант, ловить &lt;a href="http://social.msdn.microsoft.com/forums/en-US/windowsuidevelopment/thread/f4370108-9cf9-4353-a086-a6f5112947ce/" target="_blank"&gt;сообщение TaskBarCreated&lt;/a&gt; и восстанавливаться в трее, есть и другие.     &lt;br /&gt;Но есть способ элегантнее, надежнее, а главное комфортнее для пользователя. Приложение, свернутое в трей показывается в списке окон по Alt+Tab.&lt;/p&gt;  &lt;p&gt;Это решение зарекомендовало себя просто великолепно.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Даже после пересозданной панели задач приложение в любом случае показывается в Alt+Tab списке. &lt;/li&gt;    &lt;li&gt;В штатном режиме – безо всяких падений Проводника – пользователь в любой момент имеет возможность поднять приложение из трея клавиатурой, а не только мышкой. Выбираем окно из списка&amp;#160; Alt+Tab – приложение поднимается из трея. Для законченных гиков, которые при работе касаются мыша разве что чашкой кофе, это весьма и весьма немаловажный нюанс. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Как показал опыт, для приложений оперирующих пользовательскими данными, возможность подняться из трея с помощью клавиатуры почти обязательна для реализации. Сделал такое в &lt;a href="http://www.amlpages.com/Rus/features.htm" target="_blank"&gt;Aml Pages&lt;/a&gt;. И ох сколько раз оно меня выручало. Нет слов! Про удобство молчу — у меня самого мышь все больше &amp;quot;для комплекту&amp;quot;.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;PS&lt;/strong&gt;: кода вставки в список Alt+tab пока не дам. &lt;strike&gt;Потому как&amp;#160; жмот я.&lt;/strike&gt; Потому как, пока доводил до ума добавление окон в список Alt+Tab, такой херни наворотил, что сам уже с превеликой тоской зрю в свой код. Ревьюить его, ревьюить и еще раз ревьюить.&lt;/p&gt;  &lt;p&gt;Если в двух словах. Для окон верхнего уровня задача решается элементарно: нужно при прятке окна создать для него дочернее WS_OVERLAPPED-окошко, и задвинуть его за края экрана. А по активизации последнего из Alt+Tab-списка уже поднять из трея основное скрытое окно.&lt;/p&gt;  &lt;p&gt;Но заморочки начинаются, когда необходимо добавить в Alt+Tab тул-окно (окно со стилем &lt;a href="http://msdn.microsoft.com/en-us/library/windows/desktop/ff700543(v=vs.85).aspx" target="_blank"&gt;WS_EX_TOOLWINDOW&lt;/a&gt;).Вот пока реализовывал эту возможность и наворотил говно-коду. Теперь сначала причесать код нужно, а уж только потом &amp;quot;в народ&amp;quot;. Так что сорсы как-нибудь позже. А уж если кому невмоготу да срочно — стучите в комменты.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9056987873494589234-3782732306592993572?l=nonp.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/carc/~4/ejNXaDhUpM0" height="1" width="1"/&gt;</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://nonp.blogspot.com/2012/01/blog-post.html</feedburner:origLink></item><item><title>Про BitsDuJour.com: опыт, впечатления, подробности</title><link>http://feedproxy.google.com/~r/carc/~3/0HvgKn2MPvo/bitsdujourcom.html</link><category>Shareware</category><category>Aml Pages</category><category>Aml Maple</category><author>noreply@blogger.com (Гоша Мазов aka Carc)</author><pubDate>Wed, 30 Nov 2011 03:25:48 PST</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-9056987873494589234.post-7227484053771446716</guid><description>&lt;p&gt;Поимел опыт сотрудничества с сайтом &lt;a href="http://www.bitsdujour.com/" target="_blank"&gt;BitsDuJour.com&lt;/a&gt;. Выкладывал там &lt;a href="http://www.bitsdujour.com/software/aml-pages" target="_blank"&gt;Aml Pages&lt;/a&gt; и &lt;a href="http://www.bitsdujour.com/software/aml-maple/" target="_blank"&gt;Aml Maple&lt;/a&gt;. В целом очень приятное впечатление, на пять с плюсом! Итак, как это работает: заводим аккаунт на BDJ, предлагаем софтину, указываем скидку и ждем ревью от администратора. В течении пары дней придет ответ от администратора. И если софтинка принята, то назначается дата акции, обычно через недельки полторы.&lt;/p&gt;  &lt;p&gt;Ну, а теперь поподробнее о некоторых не столь заметных, но немаловажных деталях. Первое: многие ошибочно считают, что двигать софтину нужно через предложения на BDJ &lt;a href="http://www.bitsdujour.com/suggest" target="_blank"&gt;здесь&lt;/a&gt;. В принципе да, но это не совсем так. Эта страница предложений, где посетители голосуют за предложенные софтины. Оно, конечно, хорошо, местами даже ахуенно. Но всплеска голосования там особо не видно. И главное, к админам BDJ эта страница имеет мало отношения.&lt;/p&gt;  &lt;p&gt;Практически нужно идти несколько иным путем. А именно: топаем на сайт &lt;a href="http://www.softwaremarketingresource.com/" target="_blank"&gt;http://www.softwaremarketingresource.com&lt;/a&gt;&lt;u&gt;&lt;font color="#0000ff"&gt;&lt;/font&gt;&lt;/u&gt; и заводим там девелоперский аккаунт. И уже в этом аккаунте добавляем наши софтинки. Вот этот сайт, как раз имеет отношение к админам BDJ. Поясню: после того, как я запостил свои предложения именно туда, ответ от BDJ пришел буквально в течении пары дней, в отличие от голосовалок. Голосовалки, по моему, вообще мало общего имеют с реальной картиной – нужна ли юзерам конкретная программа. Ну что вы хотите!?! Публичная деятельность она и есть публичная деятельность. Понятно, что раскрученные софтины вроде Total Commander, WinRAR и прочий бренд всегда будут хотеть больше желающих, просто потому, что их знают больше народу.&lt;/p&gt;  &lt;p&gt;Теперь подробнее. После того, как предложили софтину, указываем скидку на нее, которая действует в день акции. Имеет смысл не жмотиться, и давать скидку поприличнее в десятки процентов. Все таки BDJ это скорее продвижение продукта, нежели баблостригло, хотя и не без него.&lt;/p&gt;  &lt;p&gt;После того, как будет принято ваше предложение, необходимо дать аффилиатскую комиссию BDJ (они точно работают с Plimus`ом, про остальные лучше поинтересоваться&amp;#160; у них). Один момент: комиссия BDJ достаточно большая – 50 процентов. Итого, если, к примеру, даете скидку в 50 процентов, то получите де факто 25 процентов от нормальной цены минус комиссия регистратора. Формула простая: минус 50 процентов скидки изначально, итого остается 50 процентов. От них уже минус 50 процентов самим BDJ, итого в результате вам остается 25 процентов. Так что, обращаем на это внимание, когда начинаем мышленно подсчитывать сказочные барыши.&lt;/p&gt;  &lt;p&gt;Отдельно про Плимус: 1) ID аффилиата на Плимусе у BDJ хрен найдешь, называется. А именно Iconico. Хотя в скобках видно, что это именно BDJ. Но поначалу на этом можно малехо поспотыкаться. 2) В админке у BDJ есть отдельная видюха, как организовывать промоушн акции на BDJ в админке Плимуса. Видео старое, но многие вопросы снимает. Рекомендую взглянуть.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Желательно&lt;/strong&gt;:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Иметь для софтины шотбокс (изображение коробочки с продуктом) и отзывы пользователей. У меня как-то так и не оказалось. Но если нет шотбокса, то можно из админки BDJ через веб-сервис сделать (один раз точно на халяву). &lt;/li&gt;    &lt;li&gt;Стоит внимательно прочесть лицензионные соглашение, которые указываются в админке. Там масса деталей: манибек, активация софтины, политика апгрейдов, ватермарки с железа, возможность копирования софтины на другой комп и.т.д, и главное где-то стоят галки по умолчанию. Как оказалось, судя по комментариям посетителей к акции, для большинства западных пользователей эти лицензионные детали вовсе не пустой звук. Это не наше ворюшканье – на такие вещи там обращают внимание, и не самое последнее. Так что будьте внимательны. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;Впечатления и опыт&lt;/strong&gt;:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Работать с BDJ более чем приятно. Админ – Constantin Florea – &lt;strike&gt;ахуенский&lt;/strike&gt; отличный профи. Общаться с ним одно удовольствие. К слову, помогает со скриншотами, которые BDJ берет &lt;em&gt;только&lt;/em&gt; в JPEG. Не поленился сам перегнать их из моего GIF. Причем я отправил ему исключительно адрес веб-страницы. Дык Constantin сам все скачал, и перегнал. Это к тому, что не ленивый там народ админы. &lt;/li&gt;    &lt;li&gt;Описание программки BDJ готовит сам. Безусловно, какие-то материалы ссылки, дать им нужно. Но описание реально новое, с нуля. Рекомендую перечитать его до начала акции, иногда появляются неточности, помарки. Правятся оные быстро – просто отпишите свои замечания. &lt;/li&gt;    &lt;li&gt;Отдельное впечатление от стиля общения. Здесь вам не сраный Плимус, и тут вы не услышите “&lt;em&gt;sorry, i dont understand You&lt;/em&gt;”. И это-то несмотря на мой “рязанский” английский! Могут, когда хочут. &lt;a href="http://nonp.blogspot.com/2011/11/plumus.html"&gt;Плимус, ау&lt;/a&gt;? Когда вы выпиздите с работы своих непонятливых сотрудничков, которые явно наняты по часам. “&lt;em&gt;Как размеренно гребет старый лодочник, особенно если он нанят по часам&lt;/em&gt;” (© Дж. К. Джером) &lt;/li&gt;    &lt;li&gt;Аудитория у BDJ в основном западная. Но не скажу что прямо-таки англоязычная. Конечно, Штатов много. Но был приличный процент покупок и из Европы. &lt;/li&gt;    &lt;li&gt;Отдельно удобно: по емейлу вас извещают о ходе подготовки акции. Можно посмотреть, как будет выглядеть страница вашей софтины еще до начала. Не беспокойтесь, до старта эта страница будет доступна только вам и админам. &lt;/li&gt;    &lt;li&gt;Приготовьтесь ко дню акции. В этот день может посыпаться куча комментариев. Я вот первую акцию &lt;strike&gt;пробухал&lt;/strike&gt; пропустил, и отвечал уже пост-фактум. Не лучший вариант с моей стороны. &lt;/li&gt;    &lt;li&gt;Имеет значение: ваша софтина пойдет отдельной акцией или в виде бандла с кучой других софтин. Моя &lt;a href="http://www.amlpages.com/Rus/features.htm"&gt;Aml Pages&lt;/a&gt; шла отдельной акцией. &lt;a href="http://www.amlpages.com/Rus/amlmaple.htm"&gt;Мапля&lt;/a&gt; шла в бандле. Профит что так, что эдак. Но, конечно же, для отдельной акции профит был значительно выше. &lt;/li&gt;    &lt;li&gt;После окончания акции можно просмотреть статистику в админке. Как оно было: кто, откуда, почем конверсия и.т.д. &lt;/li&gt;    &lt;li&gt;Время действия купона нужно выставлять не буквально на один день. Лучше больше, на пару-тройку дней – просто из-за разницы в часовых поясах. А разница приличная, все-таки Штаты. По московскому времени акции стартуют в 12 часов дня, и заканчиваются опять же в 12 дня. &lt;/li&gt;    &lt;li&gt;После окончания акции имеет смысл задать “вечный” купон, но со скидкой поменьше . Ну, скажем,&amp;#160; процентов в 25. Страница самой акции остается доступной для посетителей, и в принципе может что-то приносить и после. Главное: как обещает BDJ, в дни когда у них нет запланированной акции, такие уменьшенные акции могут включаться в анонсы. Ну то бишь: в какие-то дни BDJ крутит конкретные акции, а&amp;#160; в какие-то выталкивает старые, с меньшими купонами. Вышеупомянутая 50 процентная комиссия для BDJ также обязательна и для уменьшенного “вечного” купона. &lt;/li&gt;    &lt;li&gt;Целесообразно задавать вопросы админам, если софтина была отклонена в первый раз. К примеру, мою Маплю в первый раз отклонили, но сразу одобрили Aml Pages. Я так понял, что “Пагесы” произвели лучшее впечатление на BDJ, чем “Мапля”. Но после того, как закончилась первая акция, я поинтересовался у админов, почему отклонили Маплю и предложил варианты. Оп-па и все ОК, согласились. Через неделю, другую запустили в промоушн и Маплю. &lt;/li&gt;    &lt;li&gt;Аудитория у BDJ достаточно сильно, имхо, отличается от &lt;a href="http://ru.giveawayoftheday.com" target="_blank"&gt;GAOTD&lt;/a&gt;. На BDJ – гики и достаточно продвинутые пользователи. На GAOTD, в основном хомячки, частенько малограмотные. Безусловно, есть и исключения. (поклонники GAOTD: не надо матов, и не принимайте близко к сердцу. Такое впечатление от GAOTD складывается из комментов. А сами знаете, кого лучше всех слышно в этих комментах. Проще говоря: кто громче воняет, всем известно). &lt;/li&gt;    &lt;li&gt;Но на BDJ бывают и тролли. Был один пиздабол в акции про Пагесы. Сам задал вопрос, сам на него ответил, а потом еще врал где ни попадя, включая диспуты на Плимусе, что ему обещали такую-то фичу (именно про нее он спросил, сам себе и ответил, что она может быть есть). Ну что сказать!?! Ну куда ж без этих уёпков? Забейте! В семье ни без уродов. Или отклонить ордер, или отрефайндить его если уже прошел, и не тратить себе нервы. Отдельно про Плимус: спасибо вам и низкий поклон! Вы не только не помогли мне в том диспуте, вы еще и проблем добавили. Не зря вас хуями на RSDN регулярно кроют, и уже откровенно обвиняют в мошенничестве). &lt;/li&gt;    &lt;li&gt;Вообще BDJ производит значительно более приятное впечатление чем GAOTD. Всегда ответят, всегда помогут. GAOTD это “партнеры” какие-то – отклика от них дожидаться можно весьма долго. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Ну, как-то вот так. Хотелось рассказать об опыте. Впечатлений много, все сразу расписать не могу, т.к. русские буквы помню уже плохо :). А посему и получилось в несколько телеграфном стиле. Ну да ладно, будут вопросы, интерес у народа&amp;#160; – напишется и еще пост.&lt;/p&gt;  &lt;p&gt;&lt;em&gt;PS&lt;/em&gt;: сори, конечно, за маты в направлении Плимуса. Но а) наболело б) &lt;strike&gt;заебали&lt;/strike&gt; толку от них ноль: поддержка молчит, фрод-чек работает… да никак он не работает (фродов на тыщу баксов в неделю, это как называется?) в) достучаться до них можно только через КЫВТ.ru, когда их там публично кроют г) всерьез задумался, а не послать ли Плимус. А если эмоции в сторону: господа из Плимуса – это не работа! Вы мешаете больше, помощи от Вас ноль. Задумайтесь! Если все, что Вы можете, это процессить кредитки за комиссию, то вы далеко не оригинальны. Это кей-фичей уж точно никогда не будет.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9056987873494589234-7227484053771446716?l=nonp.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/carc/~4/0HvgKn2MPvo" height="1" width="1"/&gt;</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://nonp.blogspot.com/2011/11/bitsdujourcom.html</feedburner:origLink></item><item><title>Get Aml Maple at 50% off Today Only</title><link>http://feedproxy.google.com/~r/carc/~3/wCqWh4CfcqM/get-aml-maple-at-50-off-today-only.html</link><author>noreply@blogger.com (Гоша Мазов aka Carc)</author><pubDate>Fri, 18 Nov 2011 01:31:28 PST</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-9056987873494589234.post-1362441506249951533</guid><description>&lt;a href="http://www.bitsdujour.com/software/aml-maple/"&gt;Get Aml Maple at 50% off Today Only&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9056987873494589234-1362441506249951533?l=nonp.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/carc/~4/wCqWh4CfcqM" height="1" width="1"/&gt;</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://nonp.blogspot.com/2011/11/get-aml-maple-at-50-off-today-only.html</feedburner:origLink></item><item><title>Про Плимус</title><link>http://feedproxy.google.com/~r/carc/~3/V_iFq1UgbPc/plumus.html</link><category>Shareware</category><author>noreply@blogger.com (Гоша Мазов aka Carc)</author><pubDate>Thu, 17 Nov 2011 08:16:09 PST</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-9056987873494589234.post-150280903011720514</guid><description>&lt;p&gt;&lt;a href="http://lh3.ggpht.com/-wZxxLvN_95A/TsUy4JChPMI/AAAAAAAAALU/vig1Hqg7n54/s1600-h/Plimus_Forever%25255B28%25255D.jpg"&gt;&lt;img style="border-right-width: 0px; margin: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Plimus Навсегда!" border="0" alt="Plimus Навсегда!" align="left" src="http://lh3.ggpht.com/-SOoyQjtrDnQ/TsUy5J0xgMI/AAAAAAAAALc/tjYY1rlm-zw/Plimus_Forever_thumb%25255B26%25255D.jpg?imgmax=800" width="291" height="496" /&gt;&lt;/a&gt; Чем больше я последнее время работаю с Plumus, тем больше я люблю собак :(.А то …[текст удален программой анти-мат]… Во-о-о-от!&lt;/p&gt;  &lt;p&gt;PS: © картинки &lt;a href="http://demotivators.ru/" target="_blank"&gt;Демотиваторы&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9056987873494589234-150280903011720514?l=nonp.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/carc/~4/V_iFq1UgbPc" height="1" width="1"/&gt;</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh3.ggpht.com/-SOoyQjtrDnQ/TsUy5J0xgMI/AAAAAAAAALc/tjYY1rlm-zw/s72-c/Plimus_Forever_thumb%25255B26%25255D.jpg?imgmax=800" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://nonp.blogspot.com/2011/11/plumus.html</feedburner:origLink></item><item><title>А жаль…</title><link>http://feedproxy.google.com/~r/carc/~3/p_7KYeMrzOg/blog-post.html</link><category>Разное</category><author>noreply@blogger.com (Гоша Мазов aka Carc)</author><pubDate>Wed, 05 Oct 2011 19:28:36 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-9056987873494589234.post-9181550973287950034</guid><description>&lt;p&gt;&lt;a href="http://www.apple.com" target="_blank"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="steve_jobs_2011" border="0" alt="steve_jobs_2011" src="http://lh6.ggpht.com/-44zwAFYn8iE/To0SU7vdyII/AAAAAAAAALM/KE4yqNvY--c/steve_jobs_2011%25255B4%25255D.gif?imgmax=800" width="644" height="440" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Искренне жаль :(. PS: &lt;a title="Речь Стива Джобса перед выпускниками Стенфорда, 2005 г." href="http://nonp.blogspot.com/2010/03/blog-post.html" target="_blank"&gt;ссылка по теме&lt;/a&gt;.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9056987873494589234-9181550973287950034?l=nonp.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/carc/~4/p_7KYeMrzOg" height="1" width="1"/&gt;</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh6.ggpht.com/-44zwAFYn8iE/To0SU7vdyII/AAAAAAAAALM/KE4yqNvY--c/s72-c/steve_jobs_2011%25255B4%25255D.gif?imgmax=800" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://nonp.blogspot.com/2011/10/blog-post.html</feedburner:origLink></item><item><title>Про email-рассылки</title><link>http://feedproxy.google.com/~r/carc/~3/22L0sZVhp48/email.html</link><category>Shareware</category><author>noreply@blogger.com (Гоша Мазов aka Carc)</author><pubDate>Thu, 29 Sep 2011 09:53:23 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-9056987873494589234.post-619166216372249329</guid><description>&lt;p&gt;&lt;img style="border-bottom: 0px; border-left: 0px; margin: 20px 15px 0px; display: inline; border-top: 0px; border-right: 0px" title="" border="0" alt="" align="left" src="http://lh4.ggpht.com/-cNcOcU3wKoY/ToSg1LRDwPI/AAAAAAAAALI/Ao-3Pfj1h6Y/email_news%25255B4%25255D.gif?imgmax=800" width="132" height="102" /&gt; И э-эх, давненько я не брал в руки шашки. А вот извечный вопрос: что дает новостная email-рассылка по проекту? Понятное дело, что для годного проекта нужен и форум, и RSS, и другие способы продвижения. Но с другой стороны email-рассылки вещь настолько традиционная, что вероятно отказываться от них пока рановато.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Форум&lt;/strong&gt;: сдается мне эффективность форума в первую и пожалуй и единственную очередь будет зависеть от его – форума – удобства. У меня как-то оно мигающе всё – то &lt;a href="http://carc.borda.ru" target="_blank"&gt;форум&lt;/a&gt; работает за пятерых, а то какое-то место исключительно для междусобойчика.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;RSS-лента&lt;/strong&gt;: как оказалось, для большинства моих пользователей достославная аббревиатура RSS и по сей день остается загадкой. До сих пор я так и не могу понять, как работает моя &lt;a href="http://feeds.feedburner.com/AmlPagesAndAmlMapleLastNews" target="_blank"&gt;англоязычная RSS-лента&lt;/a&gt;. Счетчик подписчиков и поныне телепается в районе 2-ух десятков читателей. Хотя логи веб-сервера показывают цифры обращений на порядки больше. Но с RSS вообще не всё так просто.&amp;#160; Но про несложные приемы повышения отдачи от RSS уж в другой раз. Ну, а на &lt;a href="http://www.amlpages.com/Rus/news_ru.xml" target="_blank"&gt;русской RSS-ленте&lt;/a&gt; и вовсе счетчик не ставил. Но ее отдачу как раз таки видно невооруженным взглядом.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Facebook&lt;/strong&gt; и иже с ними: ну я блин, даже и не знаю что сказать… Вот у &lt;a href="http://www.amlpages.com/Rus/features.htm" target="_blank"&gt;Aml Pages&lt;/a&gt; есть две группы: &lt;a href="http://www.facebook.com/group.php?gid=151164338256992" target="_blank"&gt;англоязычная&lt;/a&gt; и &lt;a href="http://www.facebook.com/groups/174342839277458/" target="_blank"&gt;русскоязычная&lt;/a&gt;. Число участников говорит само за себя: более сотни в аглицкой, и менее десятка в русской. ОК, я понимаю, что для наших скорее популярнее будут какие-нить одноклассники да всякие вконтакте, чем Facebook. Но тратить время и еще на одну соцсетку, без четких аргументов, что это выстрелит, уже совсем не хочется.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Блог&lt;/strong&gt;: “а хрен его знает, товарищ полковник“ ©. Отдельных блогов ни по каким проектам не заводил. Плюс отчасти роль русского блога по Aml Pages вполне выполняет и рассылка. Подробнее чуть ниже. Этот блог иногда что-то выдает – но это, скорее, из разряда юмора.&lt;/p&gt;  &lt;p&gt;А вот &lt;strong&gt;емейл-рассылка&lt;/strong&gt;, имхо и поныне остается вполне эффективным путем извещений о новостях. Опять же, в рассылке должна быть исключительно целевая аудитория – подписаться читатель может сам. И только сам. Случайно попасть в подписчики не выйдет.&lt;/p&gt;  &lt;p&gt;Для русской рассылки уже сто лет пользую &lt;a href="http://subscribe.ru/catalog/industry.soft.amlpages" target="_blank"&gt;subscribe.ru&lt;/a&gt;. Для аглицкой сравнительно недавно заюзал сервис новостных писем от Plimus. Итак, что мы имеем с гусей, с обоих. &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Доступность предыдущих новостных писем: на сабскрибе – &lt;a href="http://subscribe.ru/catalog/industry.soft.amlpages" target="_blank"&gt;завсегда пожалуйста&lt;/a&gt; – читай не хочу. На Plimus: что упало (к подписчику) – то пропало. Новый подписчик не имеет возможности полистать предыдущие статьи. &lt;/li&gt;    &lt;li&gt;RSS-лента: сабскриба автоматом генерит по рассылке &lt;a href="http://subscribe.ru/archive/industry.soft.amlpages/index.atom" target="_blank"&gt;RSS ленту&lt;/a&gt;. В Plimus – а нету! :) &lt;/li&gt;    &lt;li&gt;Анализ аудитории: в сабскрибе есть. В Plimus – опять же нет. &lt;/li&gt;    &lt;li&gt;Счетчик подписчиков: в &lt;a href="http://subscribe.ru/stat/industry.soft.amlpages/count.png?color.grey" target="_blank"&gt;сабскрибе есть&lt;/a&gt;, в Plimus – и снова нет. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Вот такая разочаровывающая картина. Хотя, с другой стороны, ну есть какое-то смутное ощущение, что Plimus`овская рассылка работает, и иногда какой-то профит и выдает. Но понять, что, какой, как и когда, ох как не просто.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9056987873494589234-619166216372249329?l=nonp.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/carc/~4/22L0sZVhp48" height="1" width="1"/&gt;</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh4.ggpht.com/-cNcOcU3wKoY/ToSg1LRDwPI/AAAAAAAAALI/Ao-3Pfj1h6Y/s72-c/email_news%25255B4%25255D.gif?imgmax=800" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://nonp.blogspot.com/2011/09/email.html</feedburner:origLink></item><item><title>Отладим?</title><link>http://feedproxy.google.com/~r/carc/~3/WHzqEV0yrSg/blog-post.html</link><category>Разработка</category><category>Юмор</category><author>noreply@blogger.com (Гоша Мазов aka Carc)</author><pubDate>Thu, 07 Jul 2011 02:52:21 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-9056987873494589234.post-4585719645142157309</guid><description>&lt;p&gt;Буду краток (©).&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/-H68JA9AUgkU/ThWB0D_brpI/AAAAAAAAAKo/J3dF3V4dxbg/s1600-h/define_true_null%25255B3%25255D.jpg"&gt;&lt;img title="define_true_null" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="444" alt="define_true_null" src="http://lh5.ggpht.com/-yrQ9zYj-c7c/ThWB1Cp37II/AAAAAAAAAKs/74Gt1en9bK4/define_true_null_thumb%25255B1%25255D.jpg?imgmax=800" width="644" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://demotivators.ru/posters/122879/schastlivoj-otladki-suki.htm" target="_blank"&gt;Оригинал здесь&lt;/a&gt;.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9056987873494589234-4585719645142157309?l=nonp.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/carc/~4/WHzqEV0yrSg" height="1" width="1"/&gt;</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh5.ggpht.com/-yrQ9zYj-c7c/ThWB1Cp37II/AAAAAAAAAKs/74Gt1en9bK4/s72-c/define_true_null_thumb%25255B1%25255D.jpg?imgmax=800" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://nonp.blogspot.com/2011/07/blog-post.html</feedburner:origLink></item><item><title>Юзабилити. Мысли вслух. Правый клик</title><link>http://feedproxy.google.com/~r/carc/~3/wMc6-VLpu5U/blog-post.html</link><category>usability</category><author>noreply@blogger.com (Гоша Мазов aka Carc)</author><pubDate>Sun, 01 May 2011 07:31:45 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-9056987873494589234.post-5839519067884787632</guid><description>&lt;p&gt;В Windows есть такая штука, как &lt;a href="http://otvet.mail.ru/question/22273797/" target="_blank"&gt;безопасное извлечение устройства&lt;/a&gt;: флешек, кард-ридеров и прочей периферийной дребедени. В общем, вещь нужная и годная. Но меня всегда потрясало, что по правому клику по иконке в трее, можно перейти только к диалогу отключения устройства. Скромно умолчим, что этот диалог зачем-то набит и списком жестких дисков… Умолчим и о показе меню с одним-единственным пунктом выбора. Зачем нужно меню, если оно может предложить только одно действие? Почему не показывать тогда диалог сразу?&lt;/p&gt;  &lt;p&gt;Ладно, все это типично виндовые мелочи. Хер с ними! Но дело в другом. Давным-давно, очень очень много лет назад, я узрел, что на иконке удаления можно как-то заполучить и меню с выбором устройств.&amp;#160; Причем безо всякого промежуточного диалога. Это, безусловно, удобнее. О сколько лет&amp;#160; и на скольких Виндах я обкликался &lt;em&gt;правой&lt;/em&gt; кнопкой мыши по иконке, но так и не узрел желанного меню. А тут как-то смотрю, и вижу это вожделенное меню под рукой сборщика моей кухни (мы его фотки на ноуте листали). А поскольку сборщик был человек благодушный и к себе располагал,&amp;#160; то я безусловно спросил КАК ВЫ ЭТО ДЕЛАЕТЕ (полцарства за совет, двойная оплата, рюмаху на раз – нужное подчеркнуть)&lt;/p&gt;  &lt;p&gt;Каково было мое удивление, ибо ларчик просто открывался: это меню доступно по &lt;em&gt;левому&lt;/em&gt;, а вовсе не по &lt;em&gt;правому&lt;/em&gt; клику. Вот оно юзабилити в действии. И это я-то,&amp;#160; программер до мозга костей, годами! не мог понять, что делать. А все только потому, что разработчики Винды &lt;strike&gt;сделали через жопу&lt;/strike&gt; нарушили законы юзабилити. Привычное – должно выглядеть и работать привычно, а не наоборот. Левый клик – управление\выделение объекта, правый клик – контекстное меню и никак не наоборот.&lt;/p&gt;  &lt;p&gt;PS: только не надо комментариев про всякие сторонние утилиты, выполняющие именно через правый клик. Это не утилиты лучше, это в стандартном средстве сделано через одно место.&lt;/p&gt;  &lt;p&gt;PPS: а тот самый сборщик кухнями занимался исключительно для хобби. В прошлом у него с 10-ок лет службы в Генеральном Штабе, а там дураков не держат, а потом еще с десяток лет бизнеса. Но по природе своей он заядлый охотник и рыбак. А поэтому, когда дети выросли, бизнес продал, и на полгода пропадает в пампасах с удочками. А в зимний период занимается сборкой кухонной мебели для души (причем у него это весьма шикарно получается). Так что сборщик мебели все таки оказался несколько &lt;em&gt;не типичный. &lt;/em&gt;Только сути дела – правый-левый клик – это все равно не меняет!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9056987873494589234-5839519067884787632?l=nonp.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/carc/~4/wMc6-VLpu5U" height="1" width="1"/&gt;</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://nonp.blogspot.com/2011/05/blog-post.html</feedburner:origLink></item><item><title>Плагиностроение</title><link>http://feedproxy.google.com/~r/carc/~3/zPT95E_ygXQ/blog-post.html</link><category>Разработка</category><category>Aml Pages</category><author>noreply@blogger.com (Гоша Мазов aka Carc)</author><pubDate>Fri, 08 Apr 2011 04:04:21 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-9056987873494589234.post-4288856547518104021</guid><description>&lt;p&gt;На RSDN.ru в форуме по архитектуре программного обеспечения большой аншлаг. Еще бы! Вечные же вопросы задеты: &lt;strike&gt;что делать и кто виноват&lt;/strike&gt; &lt;a href="http://www.rsdn.ru/forum/design/4220263.aspx" target="_blank"&gt;нужны ли плагины в софтине Икс&lt;/a&gt;, и как вообще организовать интерфейс плагинов. Всё как-то собирался рассказать, как я проектировал Plugin API для &lt;a href="http://www.amlpages.com/Rus/features.htm" target="_blank"&gt;Aml Pages&lt;/a&gt;. А главное рассказать миру, какие ошибки допускал, как их исправлял, и на что именно стоит обращать особое внимание.&lt;/p&gt;  &lt;p&gt;Но, как водится, если я чего задумал, то выпью обязательно (© В.С. Высоцкий). Выпито достаточно, и естественно, о плагиностроении не написано ни строчки до сих пор. А сказать-то есть чего. Основные архитектурные черты моего Plugin API как раз и &lt;a href="http://www.rsdn.ru/forum/design/4224680.aspx" target="_blank"&gt;описал в посте на RSDN.ru&lt;/a&gt;. Но в нем только самые главные черты – взгляд на вещи, а вопросов на самом деле тьма:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Могут ли плагины интегрироваться в пользовательский интерфейс хост-приложения? &lt;/li&gt;    &lt;li&gt;Плагин инициализируется хост-приложением при старте или по требованию? Единожды или многократно? &lt;/li&gt;    &lt;li&gt;Как взаимодействует плагин и хост-приложение в совместно используемой памяти? Или проще говоря: кто и как выделяет память, и кто, как и когда ее освобождает. &lt;/li&gt;    &lt;li&gt;Как обеспечивать обратную совместимость старых плагинов, и новых версий Plugin API? &lt;/li&gt;    &lt;li&gt;Как проектировать основные структуры данных для обмена информацией? &lt;/li&gt;    &lt;li&gt;Какие сервисы должно или может предоставлять хост-приложение? Или иначе: может ли плагин “попросить” выполнить какую-либо работу само хост приложение. &lt;/li&gt;    &lt;li&gt;Нужна ли поддержка событий? Т.е. должно ли хост-приложение извещать плагин о возникновении некоторых событий, изменений. &lt;/li&gt;    &lt;li&gt;Как разруливать ситуацию, если есть две версии хост-приложения Unicode и ANSI? &lt;/li&gt;    &lt;li&gt;Если хост-приложение локализовано на несколько языков, то на каком языке должен быть UI плагина? &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;В общем, вопросов вагон и маленькая тележка. И все они на 99 процентов будут зависеть от архитектурных решений. Именно их придется продумывать в первую очередь. И неправильные решения в таких вопросах вызовут наибольшие проблемы потом. А проблемы будут! Первая версия моего Plugin API, к примеру, и вовсе ушла в помойку – все пришлось переписать с нуля. Но вот начиная со второй версии, архитектуре Plugin API я уделял максимум внимания – и в той или иной степени она осталась в Aml Pages и поныне. О да, архитектура претерпела ряд весьма значительных изменений. Но все они были пожалуй в сторону развития, а не полного переписания с нуля.&lt;/p&gt;  &lt;p&gt;Во-о-о-от, значитъ! Будем считать это первым блин комом. Глядишь, этот пост в последствии и заставит меня все таки рассказать побольше о плагиностроении. Ибо пока сам пишешь, все настолько по полочкам разложишь, что конкретный &lt;strike&gt;мозг просветляется&lt;/strike&gt; Plugin API только улучшается.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9056987873494589234-4288856547518104021?l=nonp.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/carc/~4/zPT95E_ygXQ" height="1" width="1"/&gt;</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://nonp.blogspot.com/2011/04/blog-post.html</feedburner:origLink></item><item><title>Usability. Совет дня – продолжение.</title><link>http://feedproxy.google.com/~r/carc/~3/d8Esa45gJ-8/usability.html</link><category>Aml Pages</category><category>usability</category><category>пользовательский интерфейс</category><author>noreply@blogger.com (Гоша Мазов aka Carc)</author><pubDate>Sat, 26 Mar 2011 03:55:38 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-9056987873494589234.post-609192898016896577</guid><description>&lt;p&gt;С пару месяцев назад &lt;a href="http://nonp.blogspot.com/2010/12/usability.html" target="_blank"&gt;писал про голосование на RSDN на тему использования “читаете ли вы совет дня”&lt;/a&gt;. Если в двух словах, то результаты получились неутешительные. Не читаем! Хм, и странно было бы ожидать чего-то другого. В конце того самого поста я обещал рассказать, как я решил эту проблему. Лениво, конечно, ибо когда сам уже разобрался, то трепаться становиться неинтересно. Но надо раздавать долги. Попробую, но раз лениво, то несколько в декларативном стиле.&lt;/p&gt;  &lt;p&gt;Сначала расскажу почему.   &lt;br /&gt;&lt;strong&gt;Никаких советов дня при запуске&lt;/strong&gt;. Раз пользователь запускает приложение, то у него явно есть какая-то цель, ежеминутная задача. Он попросту не будет читать никаких поучений. В народе это называется проще: “не пизди под руку”.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Никакой модальности&lt;/strong&gt;. Зачем кнопка ОК? Она что-то делает? Пусть совет дня показывается где-то сбоку припеку. Не требуя от пользователя никаких действий. Совет это же всего лишь рекомендация. Вы же не удивляетесь отсутствию кнопки ОК на объявлении на двери подъезда?&lt;/p&gt;  &lt;p&gt;Теперь как сделано в Aml Pages. Скриншот собственно ниже.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_Y5qKVs4edwA/TY3GJVDJp_I/AAAAAAAAAKU/iUc_Ty79f_E/s1600-h/amlpages_tips_bar%5B16%5D.gif"&gt;&lt;img title="Панель советов дня в моей Aml Pages" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="484" alt="Панель советов дня в моей Aml Pages" src="http://lh3.ggpht.com/_Y5qKVs4edwA/TY3GKNK5XUI/AAAAAAAAAKY/LsG6oKw7JJU/amlpages_tips_bar_thumb%5B14%5D.gif?imgmax=800" width="635" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Отдельная панель&lt;/strong&gt;: Итак, в &lt;a href="http://www.amlpages.com/Rus/features.htm" target="_blank"&gt;Aml Pages&lt;/a&gt; я сделал совет дня в виде отдельной панели, a la строки состояния. Такая статусбарного вида панель привычна для пользователя и не требует от него никаких действий, не отвлекает его от работы.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Панель совета&amp;#160; внизу окна: &lt;/strong&gt;т.к. совет дня информация сугубо вспомогательная, то располагаться она должна все-таки внизу. Все в правилах information flow: главное – слева вверху, второстепенное – внизу и справа. А читаем мы в таком порядке…&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Навигация в панели&lt;/strong&gt;: все-таки некоторыми интерактивными возможностями панель советов должна обладать. Какой-нибудь несложной кнопкой “следующий совет”. Главное никакой модальности. Интересно пользователю? Кликнет. Нет, так нет.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Узнать больше&lt;/strong&gt;: неплохой идеей оказалось сделать возможность перейти к расширенной информации по тематике конкретного совета, к большей статье, документации или еще чему-то подобному. Никаких велосипедов. Советы дня, имеющую такую связанную тему, показываются как гиперссылка на тему. Надо – кликнут. Плюс во всплывающей подсказке пояснительная информация, что за ссылка и куда. В Aml Pages это ссылки на статьи на сайте. Заметьте господа, это даже не “реклама” в дурном смысле – это то самое, ненавязчивое предложение для пользователя.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Цветовая схема&lt;/strong&gt;: т.к. все-таки панель советов информационная, то и оформление должно быть в таком же стиле. Не выпендривался – у меня панель советов использует системные цвета всплывающих подсказок (tooltips). Рехех, &lt;em&gt;а)&lt;/em&gt; привычно и узнавабельно для пользователя &lt;em&gt;б)&lt;/em&gt; сама панель несколько отличается от основной цветовой схемы приложения, что в какой-то степени рано или поздно привлечет его внимание.&lt;/p&gt;  &lt;p&gt;Ну, примерно вот так вот. А напоследок один забавный момент. Как я пришел к тому, что панель советов должна быть внизу, и почему в первой версии все-таки панель советов была вверху окна. Однажды, я с грустью заметил и-э-эх, и сколько же пространства у меня пропадает на пустом месте справа от тулбара вверху окна :(. А не херакнуть ли туда какую-нибудь вспомогательно-справочную инфу? С этого и понеслось, и&amp;#160; в конце концов, начав с обычной прорисовки текста прямо на окне, выросло до идеи отдельной панели. Но все-таки вверху окна приложения, с этого ведь все и началось. &lt;/p&gt;  &lt;p&gt;Но потом, несколько пользователей обмолвились, что все-таки отключают панель советов. И это навело на мысли.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Вверху главного окна расположены панели инструментов. Места там и так немного, поэтому если его не хватает, то под нож идут все вспомогательные моменты. Панель советов, естественно, срубали первой. &lt;/li&gt;    &lt;li&gt;Не стоит мешать информационную часть и инструментальную. Там где инструменты (тулбары), пользователь мышью частенько работает практически на автомате: мышь туды-сюды, клик и готово. В этот момент пользователь в активной фазе работы – он просто не будет читать всякие &lt;strike&gt;дурацкие&lt;/strike&gt; советы, какие-бы замечательные они не были. У него в этот момент свои и причем совершенно другие заботы. А вот когда он решит отдохнуть, и глаза его устало опустятся… А тут, ух-ты, йопты, инфа. Может быть и заинтересует. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Вот таким вот макаром панель советов дня и переехала вниз главного окна приложения. К слову говоря, больше отключения панели советов не наблюдалось. По какому только поводу пользователи не слали мне скриншоты (баги там, проблемы всякие) – у всех панель советов дня была включена. Сработало, однако :)&lt;/p&gt;  &lt;p&gt;Всё, уф! Обещал рассказать про советы дня – сделал. Долги кажись раздал… Ну и понятное дело, идею можно развивать, дотачивать, но все это уже будет на 100 и еще 100 процентов зависеть уже от конкретных задач в конкретном приложении.&lt;/p&gt;  &lt;div class="wlWriterEditableSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:846b7833-6756-411a-bf2e-ea569f8ad93b" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Теги: &lt;a href="http://technorati.com/tags/%d0%a1%d0%be%d0%b2%d0%b5%d1%82+%d0%b4%d0%bd%d1%8f" rel="tag"&gt;Совет дня&lt;/a&gt;&lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9056987873494589234-609192898016896577?l=nonp.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/carc/~4/d8Esa45gJ-8" height="1" width="1"/&gt;</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh3.ggpht.com/_Y5qKVs4edwA/TY3GKNK5XUI/AAAAAAAAAKY/LsG6oKw7JJU/s72-c/amlpages_tips_bar_thumb%5B14%5D.gif?imgmax=800" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://nonp.blogspot.com/2011/03/usability.html</feedburner:origLink></item><item><title>Пользовательский интерфейс: виртуальный ListView</title><link>http://feedproxy.google.com/~r/carc/~3/_Da0MtSlHzM/listview.html</link><category>Разработка</category><category>пользовательский интерфейс</category><author>noreply@blogger.com (Гоша Мазов aka Carc)</author><pubDate>Mon, 14 Mar 2011 03:49:04 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-9056987873494589234.post-1041771794886818405</guid><description>&lt;p&gt;Об актуальном. Как-то последнее время начинаю все с большей и большей теплотой относиться к &lt;a href="http://www.rsdn.ru/article/controls/virtlist.xml" target="_blank"&gt;виртуальному режиму списка (ListView)&lt;/a&gt;. Ощущение полного контроля над списком: что, как и когда он отображает – настолько впечатляет, настолько завораживает, что нет слов. Действительно, код поначалу приходится сильно доводить, продумывать, вникать в детали. Но это только поначалу. Зато потом, возникает устойчивое чувство, что все работает как надо, что код “сверкает всеми гранями и бесконечно совершенен в своей продуманности, последовательности, и определенности”.&lt;/p&gt;  &lt;p&gt;А по сути-то, в виртуальном списке всего лишь выполняется старинный программерский завет, она же отчасти &lt;a href="http://ru.wikipedia.org/wiki/%D0%9F%D0%B5%D1%80%D0%B2%D0%B0%D1%8F_%D0%BD%D0%BE%D1%80%D0%BC%D0%B0%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F_%D1%84%D0%BE%D1%80%D0%BC%D0%B0" target="_blank"&gt;первая нормальная форма&lt;/a&gt;: “&lt;em&gt;данные должны быть определены единожды и однозначно&lt;/em&gt;”. Если задаются какие-то значения, то только в одном единственном месте. Какие данные есть в бизнес-слое приложения, те в ListView и отображаются. А не извечный геморрой: что в конкретный момент времени в ListView де-факто, а что в модели, и в какой момент времени данные должны обновляться в пользовательском интерфейсе, и кем это обновление инициируется...&lt;/p&gt;  &lt;p&gt;А уж вкупе с &lt;a href="http://msdn.microsoft.com/en-us/library/bb761817(v=vs.85).aspx" target="_blank"&gt;механизмом CustomDraw&lt;/a&gt; и вовсе наступает окончательный дзэн. Эмулировать из виртуального ListView дерево-подобный элемент управления, с ветками, и прочей дребеденью, но в довесок со всеми преимуществами списка и вовсе становится элементарно. В общем, буду краток (ц) – прёт!&lt;/p&gt;  &lt;p&gt;Все ж прав автор статьи по ссылке выше “&lt;em&gt;Все программисты делятся на тех, кто повсеместно применяет виртуальный режим, и тех…&lt;/em&gt;” Попробовав единожды, отказываться от подобных плюшек уже и вовсе не хочется.&lt;/p&gt;  &lt;div class="wlWriterEditableSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:07947418-61b8-467b-8515-880a575fdaec" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Теги: &lt;a href="http://technorati.com/tags/virtual+ListView" rel="tag"&gt;virtual ListView&lt;/a&gt;&lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9056987873494589234-1041771794886818405?l=nonp.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/carc/~4/_Da0MtSlHzM" height="1" width="1"/&gt;</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://nonp.blogspot.com/2011/03/listview.html</feedburner:origLink></item><item><title>Резервное копирование исходного кода</title><link>http://feedproxy.google.com/~r/carc/~3/LDzl1eEECjM/blog-post_27.html</link><category>Разработка</category><category>Aml Pages</category><author>noreply@blogger.com (Гоша Мазов aka Carc)</author><pubDate>Sun, 27 Feb 2011 12:03:25 PST</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-9056987873494589234.post-3514027000432854731</guid><description>&lt;p&gt;А поговорим-ка о резервом копировании. Началось все с поста “&lt;a href="http://rsdn.ru/forum/shareware/4119534.aspx" target="_blank"&gt;Онлайн Backup-сервис&lt;/a&gt;” на незабвенном RSDN. Благо проблемы бекапа исходного кода стояли давно. И чтобы более-менее надежно, и не очень дорого, без рутины и быстро. Надежность – без комментариев. Цена само собой вопрос не последний. Быстрота и удобство – последнее по списку, но не по значению. Как только появляется геморрой в создании бекапа, начинаем класть с прибором на этот самый бекап… Со всеми рано или поздно вытекающими последствиями. А посему идеал, это когда клик и готово – бекап сделан.&lt;/p&gt;  &lt;p&gt;Заюзал для резервного копирования &lt;a href="http://db.tt/dm5bNbG" target="_blank"&gt;веб сервис Dropbox.com&lt;/a&gt;. Пользуюсь больше месяца. Впечатления отличные: удобно, быстро, надежно и в меру бесплатно. &lt;/p&gt;  &lt;p&gt;Схема использования проста как две копейки. 1) Исходный код в архив. 2) Архив в специальную папку синхронизации на диске. 3) А уж специальная тулза от Dropbox.com видит в папке изменения, и закачивает новые данные на сервер. Само собой, особо критичные исходники&amp;#160; отправляются в&amp;#160; запароленном виде. Приятный сервис, к тому же 2 GB дискового пространства выдаются бесплатно. За большее придется заплатить.&lt;/p&gt;  &lt;p&gt;Заодно пришлось поковыряться с этим автоматическим синхронизатором для сервиса. Пользователи давненько просили изваять какой-нибудь плагин для быстрой отправки документов &lt;a href="http://www.amlpages.com/Rus/features.htm" target="_blank"&gt;Aml Pages&lt;/a&gt; куда-нибудь вовне: е-мейл, внешний сервер и.т.д. А тут все один к одному: и бекап хотелось бы автоматизировать, и пользовательские просьбы, да и всякие фич-реквесты и баг-репорты у меня также и в документах Aml Pages хранятся. Так что в подобном плагине я и сам был заинтересован. Сказано-сделано: изваял &lt;a href="http://www.amlpages.com/Rus/plugins.php#Aml2Dropbox" target="_blank"&gt;плагин Aml2Dropbox&lt;/a&gt;. До идеала конечно не доводил: парсинг настроек синхронизатора, архивация в ZIP, да и по мелочам. Но &lt;strike&gt;пока&lt;/strike&gt; работает как часы. &lt;/p&gt;  &lt;p&gt;В общем, отличный сервис. Рекомендую. &lt;/p&gt;  &lt;p&gt;Ссылка по теме. К вопросу об архивации исходников. Был у меня скрипт для архивации, но больно заточенный под конкретный проект. А вот здесь выложена отличная подборка скриптов для &lt;a href="http://easy-coding.blogspot.com/2009/07/windows.html" target="_blank"&gt;архивации исходников&lt;/a&gt;. Скрипты для Windows, но в соседних постах можно найти и для других ОС. Не в качестве рекламы, а дабы каждый раз не гуглить указанный пост заново. Спасибо &lt;a href="http://easy-coding.blogspot.com/2009/01/blog-post.html" target="_blank"&gt;автору&lt;/a&gt; за скрипты. Толково!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9056987873494589234-3514027000432854731?l=nonp.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/carc/~4/LDzl1eEECjM" height="1" width="1"/&gt;</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://nonp.blogspot.com/2011/02/blog-post_27.html</feedburner:origLink></item><item><title>МГУ или сказки нашего двора</title><link>http://feedproxy.google.com/~r/carc/~3/ueMT-Yvjr2Q/blog-post_26.html</link><category>Жизнь</category><category>Разное</category><author>noreply@blogger.com (Гоша Мазов aka Carc)</author><pubDate>Mon, 28 Feb 2011 15:45:29 PST</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-9056987873494589234.post-2942554604492204732</guid><description>&lt;p&gt;Похоже известное выражение Джордано Бруно “наука есть наилучший путь для того, чтобы сделать человеческий дух героическим” актуально и поныне.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Ссылка по теме&lt;/strong&gt;: &lt;a href="http://www.klim.pro" target="_blank"&gt;сказки нашего двора или как пожили профессора и спасибо&lt;/a&gt;! Обрадовала моя альма-матерь на старости лет. Никак не ожидал, что МГУ им. М.В. Ломоносова в лице именно ее руководства достигнет небывалых высот в такой науке как “обыкновенный развод”… :( Похоже и барон Карл Фридрих Иероним фон Мюнхгаузен был прав, утверждая: “чтобы влюбиться, достаточно мгновения. Чтобы развестись иногда нужно прожить 20 лет вместе”.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_Y5qKVs4edwA/TWlayXOFh1I/AAAAAAAAAKA/4WVvemqOtOU/s1600-h/gzMGU%5B4%5D.jpg"&gt;&lt;img title="Главное здание МГУ им. М.В.Ломоносова. Те самые &amp;quot;башни-невидимки&amp;quot;, которых якобы нет в этом монументальном здании." style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="334" alt="Главное здание МГУ им. М.В.Ломоносова. Те самые &amp;quot;башни-невидимки&amp;quot;, которых якобы нет в этом монументальном здании." src="http://lh3.ggpht.com/_Y5qKVs4edwA/TWlazBdhInI/AAAAAAAAAKE/rLasZjphxQ8/gzMGU_thumb%5B2%5D.jpg?imgmax=800" width="519" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;div class="wlWriterEditableSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:86d3ef5f-b4b0-45bd-8172-1e236fb497ed" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Теги: &lt;a href="http://technorati.com/tags/%d0%9c%d0%93%d0%a3" rel="tag"&gt;МГУ&lt;/a&gt;,&lt;a href="http://technorati.com/tags/%d0%ba%d0%be%d1%80%d0%bf%d1%83%d1%81%d0%b0+%d0%ba%d0%be%d1%82%d0%be%d1%80%d1%8b%d1%85+%d0%bd%d0%b5%d1%82" rel="tag"&gt;корпуса которых нет&lt;/a&gt;,&lt;a href="http://technorati.com/tags/%d0%9a%d0%9b%d0%98%d0%9c" rel="tag"&gt;КЛИМ&lt;/a&gt;&lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9056987873494589234-2942554604492204732?l=nonp.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/carc/~4/ueMT-Yvjr2Q" height="1" width="1"/&gt;</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh3.ggpht.com/_Y5qKVs4edwA/TWlazBdhInI/AAAAAAAAAKE/rLasZjphxQ8/s72-c/gzMGU_thumb%5B2%5D.jpg?imgmax=800" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://nonp.blogspot.com/2011/02/blog-post_26.html</feedburner:origLink></item><item><title>Обратная связь с пользователем</title><link>http://feedproxy.google.com/~r/carc/~3/u0fZQ01uB74/blog-post_10.html</link><category>Shareware</category><category>Feedback</category><author>noreply@blogger.com (Гоша Мазов aka Carc)</author><pubDate>Wed, 09 Feb 2011 16:46:13 PST</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-9056987873494589234.post-2726249944873003961</guid><description>&lt;p&gt;&lt;img title="Обратная связь с пользователями это не просто ВАЖНО, это очень ВАЖНО!" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; margin: 0px 15px 0px 0px; border-right-width: 0px" height="157" alt="Обратная связь с пользователями это не просто ВАЖНО, это очень ВАЖНО!" src="http://lh6.ggpht.com/_Y5qKVs4edwA/TVM0Z5MvzjI/AAAAAAAAAJ8/zaTohVN8YKI/kommunikasjon%5B6%5D.jpg?imgmax=800" width="244" align="left" border="0" /&gt; О важности обратной связи с пользователями для shareware проекта можно говорить бесконечно. Конечно, можно заявить что-то вроде “&lt;em&gt;будьте клиентоориентированы&lt;/em&gt;”… Но нет, &lt;strike&gt;идите в жопу&lt;/strike&gt;, у нас не сто рук, и не 48 часов в каждых сутках. Все и вся успеть не получится, поэтому выбирать и расставлять акценты все равно придется. А на что обратить внимание, и как вот тут и начинаются детали.&lt;/p&gt;  &lt;p&gt;Вопрос как организовать эту пресловутую обратную связь? Чему больше уделять времени? Что и какой полезный выхлоп дает? А что, собственно, вообще можно сделать? &lt;/p&gt;  &lt;p&gt;Если в двух словах, то по большому счету вопрос в организации &lt;em&gt;двунаправленного&lt;/em&gt; канала связи. Так чтобы и пользователь(и) мог сообщить свое мнение, ну и авторы проекта донести свою информацию (новости, релизы, статьи). Расскажу, что пробовал я лично – галопом по европам, ну и отчасти про плюсы и минусы. А подробности уж в других постах, если будет интерес.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;Раздел Новости на сайте&lt;/strong&gt;: это старинный и хорошо проверенный временем пример. Как оказывается, очень многие читают и следят за новостями именно на сайте. И пофиг им все остальные каналы распространения информации. А уважать привычки своих пользователей смысл имеет.&amp;#160; Поисковикам кстати эта информация точно лишней не будет . Из минусов: если посетитель на сайте первый раз, ему эти новости “по боку”, только лишние грузяки большими объемами информации. &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Новостная RSS-лента&lt;/strong&gt;: это вообще как говорится “заобязательно”. Далеко не все, но очень и очень многие предпочитают следить за новостями по RSS-ленте. Как прикручивать RSS ленту к сайту расскажу чуть позже. Несколько простых приемов и польза от ленты возрастает в разы. От себя скажу, что &lt;em&gt;настолько&lt;/em&gt; уделяю внимания RSS-ленте, что не поленился написать под себя любимого собственный WYSIWYG редактор RSS. &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Форум&lt;/strong&gt;: необязательно конечно. Это вообще далеко не всем подходит. Но помогает создавать устойчивое сообщество пользователей. Из минусов: администрирование форума это тоже нехилая работа, а хотя бы и по времени. &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Форма обратной связи: &lt;/strong&gt;по сути это то же самое что и форум, но в отличие от первого позволяет общаться лично с Вами, а не со всеми подряд. Главное в такой форме возможность отправить сообщение анонимно. Из минусов: спам, конечно же. Но несколько взмахов пера, и количества спама снизится на порядки. &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Новостная емейл рассылка&lt;/strong&gt;: кажется один из мощных источников продвижения. Но личное впечатление ну очень двоякое. С одной стороны в &lt;a href="http://www.amlpages.com/Rus/subscribe.htm#prev" target="_blank"&gt;моей рассылке&lt;/a&gt; написано больше сотни постов. Возраст рассылки составляет уже несколько лет. А я как не знал, так и не знаю кто аудитория этой рассылки. Зато, если пользователь на нее подписан, то это точно наш человек. Т.к. случайно получить выпуск рассылки у пользователя ну никак не получится. Он может только сам, и причем вполне осознанно подписаться. Про плюсы и минусы подробнее в другой раз. &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Группа в &lt;a href="http://www.facebook.com/" target="_blank"&gt;Facebook&lt;/a&gt;&lt;/strong&gt;: конкретного мнения пока у меня не сложилось. Но личное впечатление от Facebook более чем положительное. Чем-то вполне может заменять и емейл рассылку, и отчасти RSS, т.к. во многом функции пересекаются. Запостить новость в Facebook дело 2-ух минут. Удобно, быстро. Но пока продолжительного опыта нет, поэтому затруднительно высказать какое-то определенное мнение. Другие социальные сети: что-то пробовал – не понравилось, а что-то просто откровенный отстой. &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Uninstall Feedback&lt;/strong&gt;: это просто святое. И чего только бывало не узнаешь о своей программе, когда пользователь ее удаляет. Даже сам факт вдруг пропажи uninstall-фидбека меня пару раз очень сильно выручал. Важно: 1) просто обязательно давать возможность оставить сообщение анонимно. Никто не будет палить вам свои контакты за здорово живешь. 2) если будете выносить пользователю мозг &lt;a href="http://www.google.com/recaptcha" target="_blank"&gt;ядреными капчами вроде этой&lt;/a&gt;, такую форму просто проигнорируют. Не получите вообще ничего. 3) В программе удаления обязательно оставлять возможность вообще ничего не отправлять. Пусть это будет банальная галочка “оставить отзыв”, пусть эта галочка даже будет включенной по умолчанию . Но возможность отключить ее у пользователя должна быть. Впрочем, как-то я уже &lt;a href="http://nonp.blogspot.com/2009/02/uninstall-feedback-vs.html" target="_blank"&gt;писал про uninstall feedback&lt;/a&gt;. &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Перелинковка&lt;/strong&gt;: выяснилось что это более чем действенный прием. Написали новость на сайте или в RSS? Ткните туда и ссылку на обсуждение в форуме. Вышла статья в новостной рассылке? Разместите ссылку на нее на сайте. Есть форумы, RSS, и прочия? Пусть ссылки на все это хозяйство будут в документации и в самой программе. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Ну, вроде бы ничего не забыл!?! А поподробнее, по полочками уже в будущих постах.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9056987873494589234-2726249944873003961?l=nonp.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/carc/~4/u0fZQ01uB74" height="1" width="1"/&gt;</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh6.ggpht.com/_Y5qKVs4edwA/TVM0Z5MvzjI/AAAAAAAAAJ8/zaTohVN8YKI/s72-c/kommunikasjon%5B6%5D.jpg?imgmax=800" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://nonp.blogspot.com/2011/02/blog-post_10.html</feedburner:origLink></item><item><title>Про документацию</title><link>http://feedproxy.google.com/~r/carc/~3/d_s0OxfJ4q4/blog-post_05.html</link><category>Aml Pages</category><author>noreply@blogger.com (Гоша Мазов aka Carc)</author><pubDate>Mon, 28 Feb 2011 15:23:41 PST</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-9056987873494589234.post-5245237624906643397</guid><description>&lt;p&gt;&lt;img title="Доки и мануалы" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; margin: 0px 20px 10px 0px; border-right-width: 0px" height="244" alt="Доки и мануалы" src="http://lh4.ggpht.com/_Y5qKVs4edwA/TUy4Or_9f3I/AAAAAAAAAJ4/ms8x1gBlgtY/docs%5B6%5D.jpg?imgmax=800" width="187" align="left" border="0" /&gt; Докатился… Впервые, мой пользователь горько, долго и вслух сожалел об отсутствии &lt;em&gt;бумажной&lt;/em&gt; документации по &lt;a href="http://www.amlpages.com/Rus/features.htm" target="_blank"&gt;Aml Pages&lt;/a&gt;, какой-нибудь брошюрки в а-ля-PDF-ном формате, кою бы можно было распечатать. Ему, “видишь-ли те”, значительно проще и комфортнее полистать ее где-нибудь по дороге в метро. “Видишь-ли-те” в кавычках, потому что такая аргументация не в бровь, а в глаз. Я сам такой же. Если мне что-то интересно чуть более чем менее (©), то я предпочитаю бумажный вариант.&lt;/p&gt;  &lt;p&gt;Что на это возразить? А я все по старинке: хелпы, рассылки, форумы, фейсбуки… М-дя! Оказывается Aml Pages доросла до уровня, что людям к ней хочется манулов, хочется полистать, хочется поковыряться в доке. Это что-то в корне новое. Призадумаешься, однако.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9056987873494589234-5245237624906643397?l=nonp.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/carc/~4/d_s0OxfJ4q4" height="1" width="1"/&gt;</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh4.ggpht.com/_Y5qKVs4edwA/TUy4Or_9f3I/AAAAAAAAAJ4/ms8x1gBlgtY/s72-c/docs%5B6%5D.jpg?imgmax=800" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://nonp.blogspot.com/2011/02/blog-post_05.html</feedburner:origLink></item><item><title>Светофорные иконки</title><link>http://feedproxy.google.com/~r/carc/~3/hIk70zWTWtU/blog-post_04.html</link><category>usability</category><category>пользовательский интерфейс</category><author>noreply@blogger.com (Гоша Мазов aka Carc)</author><pubDate>Mon, 28 Feb 2011 15:12:22 PST</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-9056987873494589234.post-3595538101270229283</guid><description>&lt;p&gt;Сегодня немного об иконках. А точнее о главных иконках приложений. Вот посмотрите на скриншот панели быстрого запуска.&lt;/p&gt;  &lt;p&gt;&lt;a href="https://lh5.googleusercontent.com/_Y5qKVs4edwA/TUs2JCOp2LI/AAAAAAAAAJw/vzEN6gfciGA/s1600-h/icons_three_color%5B3%5D.png"&gt;&lt;img title="Долой светофоры-мигалки в главных иконках приложений" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="389" alt="Долой светофоры-мигалки в главных иконках приложений" src="https://lh3.googleusercontent.com/_Y5qKVs4edwA/TUs2NFATlyI/AAAAAAAAAJ0/Wkj7OJLFKHs/icons_three_color_thumb%5B1%5D.png?imgmax=800" width="725" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;Правая группа иконок смешалась практически в неразличимую массу, причем даже не спасают никакие различия в дизайне: круглая ли, квадратная, восьмеркой или простыней. А между прочим это иконки в панели быстрого запуска, которая по замыслу должна максимально ускорять запуск приложений. Ан нет! Каждый раз пользователю придется выискивать нужный ярлык глазами, всматриваясь в детали. &lt;/p&gt;  &lt;p&gt;Насколько в лучшую сторону отличаются иконки слева: Total Commander, любимая 6-ая студия, ну и моя же &lt;a href="http://www.amlpages.com/Rus/features.htm" target="_blank"&gt;Aml Pages&lt;/a&gt;? Справедливости ради, стоит заметить, что с AP это так вышло, я не специально – так “фишка легла”.&lt;/p&gt;  &lt;p&gt;Причем эту картину в панели запуска я наблюдаю каждый день, и каждый раз ломаю глаза, когда нужно что-то стартовать из этой компании. Никогда не задумывался о главной иконке приложения именно в таком контексте… Воистину, настоящий дизайн использует минимум цветов и оттенков. Причем все они образуют единый стиль, а не елку новогоднюю. Вот вам батенька и студии дизайна. Модняво, красиво, но не функционально! &lt;/p&gt;  &lt;p&gt;PS: Это еще что! А вот когда все это сообщество работает, а оно ух как часто работает одновременно, то в списке переключаемых окон, показываемому по Alt+Tab, приходится совсем туго с этим разрисованным семейством. А ведь поди всё бренды… бренды… бренды. Проще надо быть, прощее :)&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9056987873494589234-3595538101270229283?l=nonp.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/carc/~4/hIk70zWTWtU" height="1" width="1"/&gt;</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://lh3.googleusercontent.com/_Y5qKVs4edwA/TUs2NFATlyI/AAAAAAAAAJ0/Wkj7OJLFKHs/s72-c/icons_three_color_thumb%5B1%5D.png?imgmax=800" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://nonp.blogspot.com/2011/02/blog-post_04.html</feedburner:origLink></item><item><title>В стране национальная трагедия</title><link>http://feedproxy.google.com/~r/carc/~3/I6MjywwZoy4/blog-post_02.html</link><category>Веб</category><author>noreply@blogger.com (Гоша Мазов aka Carc)</author><pubDate>Mon, 28 Feb 2011 15:01:32 PST</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-9056987873494589234.post-9047683433814705669</guid><description>&lt;p&gt;В стране национальная трагедия! Нет, нет, на это раз телевизор не сломался, все значительно хуже. Вот что творится с &lt;a href="http://www.rsdn.ru" target="_blank"&gt;RSDN.ru&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_Y5qKVs4edwA/TUlreTiallI/AAAAAAAAAJo/fxUxh5XUsFw/s1600-h/RSDN_DOMAIN%5B5%5D.gif"&gt;&lt;img title="RSDN_DOMAIN" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="417" alt="RSDN_DOMAIN" src="http://lh4.ggpht.com/_Y5qKVs4edwA/TUlrfQiVzsI/AAAAAAAAAJs/BKt_2P9oIXs/RSDN_DOMAIN_thumb%5B3%5D.gif?imgmax=800" width="699" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;В народе такая ситуация имеет меткое название: “&lt;em&gt;срали, срали и упали&lt;/em&gt;”. Тянется это с прошедшей ночи, день кончается, а воз и поныне там. Сам бы и продил бы домен, да куда платить-то!?!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9056987873494589234-9047683433814705669?l=nonp.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/carc/~4/I6MjywwZoy4" height="1" width="1"/&gt;</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh4.ggpht.com/_Y5qKVs4edwA/TUlrfQiVzsI/AAAAAAAAAJs/BKt_2P9oIXs/s72-c/RSDN_DOMAIN_thumb%5B3%5D.gif?imgmax=800" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://nonp.blogspot.com/2011/02/blog-post_02.html</feedburner:origLink></item><item><title>Таня, Танечка не плачь!</title><link>http://feedproxy.google.com/~r/carc/~3/IE4sO1FRwVI/blog-post.html</link><category>Юмор</category><category>Видео</category><author>noreply@blogger.com (Гоша Мазов aka Carc)</author><pubDate>Mon, 28 Feb 2011 15:43:05 PST</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-9056987873494589234.post-6562221738395820861</guid><description>&lt;p&gt;Душевный видео ролик со звонком на радио-станцию от Танюши, что ее машину со спецсигналом не пропускают…&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;div class="wlWriterEditableSmartContent" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:1a1c37d5-8e11-4097-820d-a80235745b74" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;div&gt;&lt;OBJECT width="470" height="353"&gt;&lt;PARAM name="movie" value="http://video.rutube.ru/4010f24e5c46c64eb838a4cd114a59e0"&gt;&lt;/PARAM&gt;&lt;PARAM name="wmode" value="window"&gt;&lt;/PARAM&gt;&lt;PARAM name="allowFullScreen" value="true"&gt;&lt;/PARAM&gt;&lt;PARAM name="flashVars" value="uid=3464295"&gt;&lt;/PARAM&gt;&lt;EMBED src="http://video.rutube.ru/4010f24e5c46c64eb838a4cd114a59e0" type="application/x-shockwave-flash" wmode="window" width="470" height="353" allowFullScreen="true" flashVars="uid=3464295"&gt;&lt;/EMBED&gt;&lt;/OBJECT&gt;&lt;/div&gt;&lt;/div&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;Посочувствуем же, Тане. Люди мы в конце концов или нет! &lt;a href="http://rutube.ru/tracks/4036272.html?v=4010f24e5c46c64eb838a4cd114a59e0" target="_blank"&gt;Оригинал на рутюбе здесь&lt;/a&gt;.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9056987873494589234-6562221738395820861?l=nonp.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/carc/~4/IE4sO1FRwVI" height="1" width="1"/&gt;</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://nonp.blogspot.com/2011/02/blog-post.html</feedburner:origLink></item><item><title>Летайте самолетами Аэрофлота или фотка дня</title><link>http://feedproxy.google.com/~r/carc/~3/R3_XXP9ti4A/blog-post_30.html</link><category>Юмор</category><author>noreply@blogger.com (Гоша Мазов aka Carc)</author><pubDate>Thu, 30 Dec 2010 03:09:01 PST</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-9056987873494589234.post-3099334707869248874</guid><description>&lt;p&gt;&lt;font color="#000000"&gt;Сегодня на Яндексе обнаружил вот такую вот рекламу.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_Y5qKVs4edwA/TRxoSRdnyvI/AAAAAAAAAJM/gyHyXXXAw2Q/s1600-h/Aeroflot%5B6%5D.gif"&gt;&lt;font color="#000000"&gt;&lt;/font&gt;&lt;/a&gt;&lt;a title="Летайте самолетами Аэрофлото" href="http://money.yandex.ru" target="_blank"&gt;&lt;img title="Летайте самолетами Аэрофлота" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="484" alt="Летайте самолетами Аэрофлота" src="http://lh5.ggpht.com/_Y5qKVs4edwA/TRxoTMJ0xsI/AAAAAAAAAJQ/3dDLjXCsX1g/Aeroflot%5B7%5D.gif?imgmax=800" width="482" border="0" /&gt;&lt;/a&gt;&lt;/a&gt;&lt;/a&gt;&lt;font color="#000000"&gt; &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#000000"&gt;&lt;em&gt;Летайте самолетами Аэрофлото!&lt;/em&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#000000"&gt;Угу, точно! Именно сейчас, когда в аэропортах столицы полный пипец и люди кроют Аэрофлот всеми матюгами самое время летать самолетами&amp;#160; именно и исключительно Аэрофлота. Минус тысяча рублей гарантировано (плюс бонус: минус еще с десяток за еду), а в качестве сюрприза заодно встретите и Новый Год в компании всего того же, вы угадали, Аэрофлота.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#000000"&gt;Бу-га-га :))))&lt;/font&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9056987873494589234-3099334707869248874?l=nonp.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/carc/~4/R3_XXP9ti4A" height="1" width="1"/&gt;</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh5.ggpht.com/_Y5qKVs4edwA/TRxoTMJ0xsI/AAAAAAAAAJQ/3dDLjXCsX1g/s72-c/Aeroflot%5B7%5D.gif?imgmax=800" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://nonp.blogspot.com/2010/12/blog-post_30.html</feedburner:origLink></item><item><title>Usability : Совет дня</title><link>http://feedproxy.google.com/~r/carc/~3/ZsuRDS9Js8s/usability.html</link><category>Разработка</category><category>usability</category><category>пользовательский интерфейс</category><author>noreply@blogger.com (Гоша Мазов aka Carc)</author><pubDate>Sun, 27 Mar 2011 02:39:45 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-9056987873494589234.post-3408425315068552960</guid><description>&lt;p&gt;&lt;font color="#000000"&gt;Учинил на RSDN голосование “&lt;span class="Apple-style-span" style="word-spacing: 0px; font: medium &amp;#39;Times New Roman&amp;#39;; text-transform: none; color: rgb(0,0,0); text-indent: 0px; white-space: normal; letter-spacing: normal; border-collapse: separate; orphans: 2; widows: 2; webkit-border-horizontal-spacing: 0px; webkit-border-vertical-spacing: 0px; webkit-text-decorations-in-effect: none; webkit-text-size-adjust: auto; webkit-text-stroke-width: 0px"&gt;&lt;span class="Apple-style-span" style="font-size: x-small; font-family: verdana, tahoma, helvetica, arial"&gt;&lt;font size="2"&gt;&lt;a href="http://rsdn.ru/poll/2790.aspx" target="_blank"&gt;Читаете ли вы диалог &amp;quot;Совет дня&amp;quot; при запуске при запуске приложения&lt;/a&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;”. Результаты вполне репрезентативны – проголосовало уже 132 участника. И вот какая картинка получилась.&lt;/font&gt;&lt;/p&gt;  &lt;table cellspacing="0" cellpadding="2" width="619" border="1"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="507"&gt;&lt;font color="#000000"&gt;Нет, не читаю&lt;/font&gt;&lt;/td&gt;        &lt;td valign="top" width="110"&gt;&lt;font color="#000000"&gt;36%&lt;/font&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="503"&gt;&lt;font color="#000000"&gt;Читаю пару раз, потом выключаю “показывать в дальнейшем”&lt;/font&gt;&lt;/td&gt;        &lt;td valign="top" width="114"&gt;&lt;font color="#000000"&gt;23%&lt;/font&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="500"&gt;&lt;font color="#000000"&gt;Закрываю этот диалог “на автомате”&lt;/font&gt;&lt;/td&gt;        &lt;td valign="top" width="117"&gt;&lt;font color="#000000"&gt;22%&lt;/font&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="497"&gt;&lt;font color="#000000"&gt;Читаю всегда&lt;/font&gt;&lt;/td&gt;        &lt;td valign="top" width="120"&gt;&lt;font color="#000000"&gt;0% (ноль)&lt;/font&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="495"&gt;&lt;font color="#000000"&gt;Читаю иногда, не отключаю&lt;/font&gt;&lt;/td&gt;        &lt;td valign="top" width="122"&gt;&lt;font color="#000000"&gt;6%&lt;/font&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="493"&gt;&lt;font color="#000000"&gt;Читаю полностью первый раз, потом отключаю&lt;/font&gt;&lt;/td&gt;        &lt;td valign="top" width="124"&gt;&lt;font color="#000000"&gt;5%&lt;/font&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="492"&gt;&lt;font color="#000000"&gt;Читаю очень редко&lt;/font&gt;&lt;/td&gt;        &lt;td valign="top" width="125"&gt;&lt;font color="#000000"&gt;1.5%&lt;/font&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="491"&gt;&lt;font color="#000000"&gt;Если есть кнопка следующий, читаю все - потом отключаю&lt;/font&gt;&lt;/td&gt;        &lt;td valign="top" width="127"&gt;&lt;font color="#000000"&gt;1.5%&lt;/font&gt;&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;&lt;font color="#000000"&gt;Результаты&amp;#160; я немного округлил. И выкинул некоторые мало интересные, на мой, взгляд, ответы вроде “Я не знаю что такое совет дня” (ответ не в тему, но “слив засчитан” – ибо сам по себе интересен). Но посмотреть точные результаты можно по ссылке выше.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#000000"&gt;Вот такая вот интересная картина сложилась.&amp;#160; 81 (восемьдесят один!!!) процент, условно говоря, вообще &lt;em&gt;не смотрит&lt;/em&gt; на диалог совета дня. Или не читает, или пару раз (пока не достал), или закрывает на автомате. Впечатляет, не правда ли? Ходишь в школу, ходишь – бац, вторая смена ©! Как не геморройся с советами дня подавляющее большинство их попросту &lt;em&gt;не читает&lt;/em&gt;. Но в любом случае, их никто &lt;em&gt;не читает постоянно&lt;/em&gt;. А между тем, подобные советы могут содержать весьма полезную для пользователя инфу, и обучать его ненавязчиво, постепенно показывая ему “рюшечки” в приложении.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#000000"&gt;А ведь этот пресловутый совет дня должен помогать пользователю, давать ему указания, подсказки. Ан фиг! А почему? Да потому что, &lt;em&gt;не советчик&lt;/em&gt; это вовсе, и не заботливый провожатый по приложению – а абсолютно&lt;em&gt; наглый, безмозглый, и совершенно несвоевременный указчик&lt;/em&gt;, что делать пользователю да эдак. А пользователь всегда лучше знает, что ему нужно. Обычно затруднения возникают не в цели, а в способах достижения этой цели.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#000000"&gt;Элементарно, Ватсон. Приложение стартует, и вероятно не само по себе, а по воле пользователя. Разумно предположить, что у пользователя есть свои собственные цели, причем есть прямо сейчас, сию секунду раз уж приложение стартует. А тут на тебе, наставник появился. Да еще и на отвлеченные темы поруководить решился. Совет при запуске не способен угадать цель пользователя, поэтому в 100 из 100 случаев его советы в момент запуска и вовсе не ту степь.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#000000"&gt;А тем не менее совет дня может быть более чем полезным помощником. Но для этого придется выполнить некоторые условия. Он должен быть ненавязчивым – т.е. не висеть модальным диалогом при запуске, мешая пользователю достичь его сиюсекундной цели. Иначе это не “помощник”, это уже “назойливая поучалка”. Совет должен быть в тему: т.е. быть близким к тематике задачи пользователя – иначе опять не “советчик“, а раздражающий “гуру” на отвлеченные темы. И наконец, совет дня не должен бросаться в глаза, концентрировать внимание пользователя на себе. Это же все таки совет – он не должен отвлекать, он должен помогать.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#000000"&gt;А бывает ли такое? Ну конечно же, посмотрите на любой солидный веб сайт, к примеру тот же &lt;a href="http://www.facebook.com" target="_blank"&gt;Facebook&lt;/a&gt;. Советы расположены рядом с элементами, к которым они и относятся – т.е. ходить далеко за ними нет нужды. Эти подсказки, как правило, сделаны неброским шрифтом. Они не забирают внимание пользователя на себя. Найдется время у пользователя? ОК, прочтет. Нет, так нет – советы ничем и не мешают. И никакой Вам навязчивости, никто не требует закрывать модальное диалоговое окно при входе на сайт!&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#000000"&gt;Немного аж завидно становится обычному &lt;strike&gt;советскому&lt;/strike&gt; десктопному разработчику всем этим веб-два-нольным примочкам. А разве нельзя сделать такое же в десктопе? Варум нихт? Я вот сделал в &lt;a href="http://www.amlpages.com/Rus/features.htm" target="_blank"&gt;Aml Pages&lt;/a&gt;. А как именно, и главное к каким решениям, почему и как пришел, расскажу в продолжении.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;UPDATE&lt;/strong&gt;: &lt;a href="http://nonp.blogspot.com/2011/03/usability.html"&gt;обещанное продолжение здесь&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9056987873494589234-3408425315068552960?l=nonp.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/carc/~4/ZsuRDS9Js8s" height="1" width="1"/&gt;</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://nonp.blogspot.com/2010/12/usability.html</feedburner:origLink></item><item><title>Раздача под настроение</title><link>http://feedproxy.google.com/~r/carc/~3/rGkDW9PjY3A/%D1%80%D0%B0%D0%B7%D0%B4%D0%B0%D1%87%D0%B0-%D0%BF%D0%BE%D0%B4-%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B5%D0%BD%D0%B8%D0%B5.html</link><category>Shareware</category><category>Aml Pages</category><author>noreply@blogger.com (Гоша Мазов aka Carc)</author><pubDate>Mon, 28 Feb 2011 15:39:12 PST</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-9056987873494589234.post-424355924905840800</guid><description>&lt;p&gt;&lt;font color="#000000"&gt;Чего-то раздобрел я сегодня. Видать, последствия отдыха на прошлой неделе наконец-то начали отпускать :). Взращивал и еще немного скидки на &lt;a href="http://www.amlpages.com/Rus/features.htm" target="_blank"&gt;Aml Pages&lt;/a&gt;. &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#000000"&gt;Ну для начала добавил анонс рождественских скидок в демо-документ всех буржуйских дистрибутивов Aml Pages. Затея непосредственна, как ребенок. Демо-документ в Aml Pages открывается автоматически при первом же запуске. В нем содержатся примеры использования, несколько статей, ссылки на ресурсы, ну и т.д., в том же духе. Почему бы в соседнем разделе такого документа и не висеть бы объявлению о скидках? Посмотрим, что из этого выйдет.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#000000"&gt;Во-вторых подарил лицензию одному венгру за &lt;a href="http://www.amlpages.com/video.shtml" target="_blank"&gt;создание видео-ролика об использовании Aml Pages&lt;/a&gt;. А заодно он мне и &lt;a href="http://editandnote.mr-design.hu/index.htm#AmlPages" target="_blank"&gt;махонькое ревью состряпал&lt;/a&gt;. Стоит отметить, что этот венгр сам девелопер – и его мнение, да и ревью может дать любопытный эффект. Теперь заинтриговано жду последствий.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#000000"&gt;Ну и наконец, “Остапа понесло” (С). Для начала приделал в меню на русском сайте ссылку “&lt;a href="http://www.amlpages.com/Rus/register.htm#no_money" target="_blank"&gt;получить бесплатно&lt;/a&gt;“. Ссылка и раньше была, но располагалась она в таких закоулках сайта, что далеко не всякий и найдет. А теперь “бесплатно” соблазнительно красуется аккурат рядом со ссылкой “купить”. Теперь вот жду плодов сей выходки. И что будет? Способов бесплатного получения в русской части сайта поболе будет, да в пару раз .&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#000000"&gt;Ну и напоследок, &lt;strike&gt;во хмелю разошедшись&lt;/strike&gt;, на английском сайте повесил объяву, что &lt;a href="http://www.amlpages.com/free.shtml" target="_blank"&gt;подарю лицензию на Aml Pages на халяву&lt;/a&gt;, если пользователь сообщит мне вескую для этого причину. “&lt;a href="http://beachatm.blogspot.com/2010/08/blog-post_11.html" target="_blank"&gt;Банкоматский пляж” как-то обмолвился&lt;/a&gt;, что и чего только не предлагают в обмен на лицензию, вплоть до “качественного миньета” :) Сдается мне, как-то все кажется, что мощная&amp;#160; порция добротного юмора вполне стоит бесплатной лицензии.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#000000"&gt;Вот такое вот сегодня блин настроение… Поглядим, как фишка ляжет, и до чего доведут подобные игрища :)&lt;/font&gt;&lt;/p&gt;  &lt;div class="wlWriterEditableSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:b3322a75-1455-416c-ad24-98b15cf8044b" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Теги: &lt;a href="http://technorati.com/tags/Aml+Pages" rel="tag"&gt;Aml Pages&lt;/a&gt;,&lt;a href="http://technorati.com/tags/%d1%81%d0%ba%d0%b8%d0%b4%d0%ba%d0%b8" rel="tag"&gt;скидки&lt;/a&gt;,&lt;a href="http://technorati.com/tags/%d0%b1%d0%b5%d1%81%d0%bf%d0%bb%d0%b0%d1%82%d0%bd%d0%be" rel="tag"&gt;бесплатно&lt;/a&gt;&lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9056987873494589234-424355924905840800?l=nonp.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/carc/~4/rGkDW9PjY3A" height="1" width="1"/&gt;</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://nonp.blogspot.com/2010/12/%D1%80%D0%B0%D0%B7%D0%B4%D0%B0%D1%87%D0%B0-%D0%BF%D0%BE%D0%B4-%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B5%D0%BD%D0%B8%D0%B5.html</feedburner:origLink></item></channel></rss>

