8/24/2004

  баги при работе со временем в C runtime и C# - (General) 2:52 pm

В данный момент работаю над плагином к ActiveRefresh, умеющим мониторить GMail.  При обращении к GMail нужно создавать cookie, которые зависят от текущего времени и временной зоны.

1. mktime. В документации написано, что минимальная дата - “полночь, 1 января 1970 года". Не работает. Но если запустить “2 часа ночи, 1 явнаря 1970 года” - работает. У меня GMT+2. Думаю все ясно…

2. В C# неправильно работает GetUtcOffset. Возвращает на 1 час больше чем надо. В моем случае возвращает 180 минут, хотя нужно 120.

8/23/2004

  №10 - Закон Деления( #10: The Law of Division) - (22 закона маркетинга) 7:01 pm

(Продолжение серии  Эрика Синка по следам The 22 Immutable Laws of Marketing.)

(This entry is part of a series I am writing on The 22 Immutable Laws of Marketing.)

Закон Деления узаканивает следующее наблюдение - по прошествии некоторого времени категория склонна разделиться на две или более.

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

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

Этот закон хорош тем что не дает нам забыть о том что Ries и Trout в основном консультируют такие компании как Pepsi, McDonalds, и General Motors, а не мелких производителей программного обеспечения. Наши миры сильно отличаются. Эти конпании ведут свой бизнес в устоявшихся отрослях, производя и продавая продукты для массового пользования. И эти продукты сильно взаимозаменяемы. Я могу переключиться с Пепси на Коку с очень небольшими издержками. Категории такого рода разбитые на подкатегории не так уж и отличаются в восприятии рядового покупателя. А построение брэнда является критичным. General Motors понимает что некоторые покупатели хотят чувствовать что они покупают что-то “спортивное", а некоторые наоборот предпочитают “классические” подели. И поэтому, продавая Pontiac и Buick, они продают почти одну и ту же машину. Но очень тщательно диферринцируют каждый из этих брэндов. Начинка по большому счету одинаковая, но вот посыл этих бржндов сильно отличается.

Ситуация с программным обеспичением обычно отличается. Когда пользователи выбирают между Dundas Chart и Chart FX, брэнд конечно имеет значение, но это не главное. Эти два продукта в принципе не идентичны. И не полностью взаимозаменяемые. Есть большая разница в предоставляемых возможностях.

Та что Закон Деления имееь некоторое значение, но не такое уж и важное. В программном обеспечении категории не делятся с такой легкостью как на обычных рынках.

Но хотя категории в программном и не склонны делиться только исходя из маркетингового сообщения, они могут деляться исходя из разницы в функциональности. Рынок, на котором я работаю, тому пример. В начале это был просто “контроль версий".  Теперь у нас есть несколько подкатегории, поделивших рынок исходя из критерием платформы, процесса, интеграции, ….

8/7/2004

  Expose для Windows - ну не писать же свое - (General) 4:33 pm

Я долго работал на маке. Window все равно является для меня более родной системой. Windows я люблю больше, причем как с точки зрения пользователя, так и безусловно с точки зрения программиста. Но вот внешний вид мака мне приятен и любим, так что время от времени я перетаскиваю на свою рабочую машину разные маковские примочки.

Expose довольно приятная фича MacOS X (по крайней мере начиная с версии 10.3). Суть ее заключается в том что когда мышка попадает в какой либо угол экрана на экране высвечиваются маленькие “снимки” приложений. Ткнув в какой-то можно переключиться на другое приложение. Есть еще разные режимы работы, но мне интересен именно этот. Я благосклонно отношусь к подобным примочкам, а потому задумал завести подобную и себе.

Поиск в интернете дал несколько вариантов.

WinPLOSION - платная. Стоит 10$. Скорость работы удовлетворительная. Качество - нет. При активном FAR-е углы не отрабатывают. Показывается только одна копия FAR-а. Окно ActiveRefresh с аткивным окном блог-клиента показывается неправильно. Почему то в основном режиме работы между окнами нельзя переключаться клавишами, хотя горячая клавиша для перехода в этот режим есть. Размер инсталляции 800K. Не позволяет настраивать размер “минимизированных” окон. Анимация есть, есть и настройка ее скорости. В общем для бесплатной программы было бы неплохо. Для платной - скверно.

iEx - требует Visual Basic Runtime files. Размер инсталляции ~400K. Работает не в полноэкранном режиме, думаю традиционно глючит с FAR. Работает медленно. Инсталляции как таковой нет. Вообщем меня не впечатлило, снес ее практически сразу.

Exposer for Windows. Версия 1.21. Первое что можно заметить это набронное мелким шрифтом уведомление что программа скачает и установит .NET FrameWork 1.1, есливы еще этим не озаботились. Я честно говоря сразу раздумал ее ставить (как окозалось совершенно правильно), но потом все таки рискнул. Да, программа тоже платная и хотят за нее те же 7$. Размер инсталляции - 930К (на сайте написано 635K) Инсталляция сделана на InstallShield. Ккорость работы просто ужасная, анимации нет, нормальных настроек нет. Убил мнгновенно. 

Entblo. Инсталляция - Windows Installer Package (912kb). Цена (да что с ними со всеми!) - 8$. Меняет окошко, появляющееся по ALT-Tab. Почему thumbnails не показываются когда мышка в углу экрана я не понял. Но показываются по горячей клавише. При первом запуске сильно тормозит. Дальше чуть лучше, так как видимо кеширует данные. Все остальное плохо, маковского L@F нет.

Все

Выводы неутешительны - я остался без Expose.

8/6/2004

  тестируем, тестируем, тестируем - (Syndication) 4:32 pm

тестируем, тестируем, тестируем

8/5/2004

  В ActiveRefresh улучшился popup и прибавил мне работы. - (General) 3:57 pm

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

  продолжение - (General) 3:01 pm

Раньше подобная ситуация случалась достаточно часто на моей машине. Последний час я только и занимаюсь что обновляю всю свою подписку. Баг не повторяется.

  Исправил БАГ - (General) 2:52 pm

Периодически ActiveRefresh и Abilon "подвисали", отбирая 100% процессорного времени. Решалось это просто - нужно было прервать обновления. На низком уровне убивались потоки, которые закачивают странички или rss-каналы. Но это решение хоть и работающее, но сложно обьяснимое пользователям. Хотелось от этого избавиться. Первоначальный поиск  в интернете ничего не дал. После долгой отладки я в конце концов выяснил, что подобное случается, только когда в заголовке ответа сервера есть Transfer-Encoding: chunked. Искать стало легче

В конце концов обнаружился BUG: WinInet Application Stops Responding and Shows 100-Percent CPU Utilization

Суть его сводится к тому что “The problem is caused by a bug in the InternetReadFile API. Under some conditions, InternetReadFile fails to detect a connection closure and still tries to read data from the socket“. 

То бишь в “некоторых” случаях функция InternetReadFile (я использую WinInet) не может определить окончание соединения и пытается читать данные до бесконечности.

Решилось просто - отдельный поток, следит за всеми потоками, которые что-то читают из Интернета и имеют в заголовке ответа chunked. В процессе работы проверяет загрузку CPU и если она (для приложения) превышает 75% - все подобные потоки, читающие в данный момент данные, убиваются.

8/2/2004

  Разный возраст - разные возможности - (Маркетинг) 4:42 pm

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

Для большенства маленьких ISV важно чтобы по крайней мере некоторые из разработчиков понимали азы маркетинга. Однако большенство технарей сторонится маркетинга, ссылаясь на недостаток “креативности” и дизайнерских способностей. Но это не те качества, которые определяют, будет маркетинг успешным или нет. Успех или провал маркетинговых усилих зависят от маркетинговой тактики и стратегии, а не от дизайна. Перед тем, как вы начнете придумывать себе логотипы и прочее, вы обязаны сделать три вещи:

  • Выберите сегмент рынка и убедитесь, что вы подготовлены ко встречи с конкурентами. (см. )
  • Определите, какую позицию вы хотите занять. (см. )
  • Выучите четыре ступении рынка вашего продукта. (см. )

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

(more…)