А вот это вот - отраслевой стандарт на создание "Автоматизированных систем"
вторник, 26 февраля 2008 г.
понедельник, 25 февраля 2008 г.
Сколько трафика съест Joost?
На этот раз возник вопрос, сколько трафика будет захавано видео-аналогом ластфм-а - Joost-ом. Для ответа на этот вопрос, я решил не использовать никакого внешнего софта, а просто посмотреть на трафик при помощи встроенного в Windows XP менеджера задач (вызывается через ctrl-shift-esc, или из контестного меню task bar-а). В task manager-е я открыл закладку "network" и добавил через меню туда колонки bytes received и bytes received per interval.
После запуска joost-а мы видим следующую картину:
Поскольку интервал у меня был 1 секунда, то трафик можно условно посчитать как 72 Кб/сек.
Таким образом - 8 часов смотретнья Joost-а в день обойдется нам в 72*3600*8 ~ 1.98G
Почти 2 гигабайта. В месяц, соответственно, 60 гигабайт. Мораль - переходите на анлим или помните, что час работы Joost-а - это 260 мегабайт трафика. :)
воскресенье, 24 февраля 2008 г.
Office Fast Save или еще одно различие между умом пользователя и разработчика
Вкратце - начиная с 95 офиса в нем была функция быстрого сохранения файлов, которая позволяла очень быстро сохранять документы Word и Excel за счет того, что при записи документ целиком не перезаписывался, а в его конец просто добавлялись все правки, которые пользователь внес со времени последнего сохранения.
Программисты баз данных сразу же увидят сходство SQL серверами - там создается
файл transaction log, в котором так же записываются операции изменения данных в основной базе.
Красивое, элегантное решение. Но почему же его пришлось убрать из системы? Ответ очевиден - в файле сохранялась история его редактирования, которую потом можно вытащить на свет божий. И ваш клиент может, к примеру, узнать, что в коммерческом предложении которое вы ему прислали изначально стояла сумма в 3 раза меньше.
Могу себе представить, что пользователи действительно жаловались на производительность функции save и программисты придумали хороший трюк. Но оказалось, что лекарство было хуже болезни. Подозреваю, что какой-то пользователь однажды почувствовал это на своей шкуре, и это было довольно неприятно.
Вспоминается история про Гугль, который не хотел добавлять кнопку delete в своем почтовом клиенте gmail, потому что она "была не в концепции системы" и потому что "пользователям в нашей почте не нужно будет удалять письма"
И они долго не хотели понять, что иногда пользователи хотят удалить письмо если оно им по какой-то причине неприятно.
GWT-Ext 2.0
Посмотреть можно здесь: http://www.gwt-ext.com/demo/
из минусов - секунд 15 загружается в первый раз...
среда, 20 февраля 2008 г.
15 тезисов о юзабилити тестировании веб-сайтов (UsabilityLab)
"Эффективная разработка веб-сайтов (включая дизайн, эстетику, навигацию по сайту и его содержание) предполагает получение обратной связи от пользователей. Обратную связь можно организовать различными способами и на разных этапах жизни веб-сайта. Однако получение обратной связи нельзя рассматривать как универсальное средство для улучшения его эффективности. Только юзабилити тестирование с реальными пользователями может показать, отвечает ли сайт поставленным целям"
понедельник, 18 февраля 2008 г.
Нельзя держать пользователя в неведении
"Hello Yury,Thank you for your interest in Microsoft Office Live Workspace beta.
We haven’t forgotten about your pre-registration and appreciate your patience.
We’re still gathering feedback from thousands of early testers in the United
States to fine-tune the user experience before releasing the service worldwide.
Over the next few months you should receive an e-mail invitation to the English
version of Office Live Workspace, and later this year we will make other
languages available too. "
Вот как надо (tm). Я с месяц назад написал им просьбу дать мне тестовый доступ на office live workspace. Я так понимаю, они его еще не доделали :-) и мне сразу после регистрации пришло письмо о том, что "мы вам скажем, когда можно будет получить доступ".
А сейчас они присылают мне письмо о том, что они меня не забыли и что через несколько месяцев они обязательно дадут мне посмотреть на это чудо инженерной мысли.
Посмотрите, как этим письмом они убивают сразу несколько зайцев:
1. Показывают, что ценят меня. "Юра, мы тебя не забыли и спасибо что интересуешься нами". Это приятно тешит самолюбие и оставляет хорошее впечатление от компании.
2. Делают ненавязчивое промо. Я уже и забыл про этот Office Live Workspace. А они подогревают во мне интерес и через это повышают узнаваемость бренда.
Мораль - потратьте немного времени, подумайте, как сделать хорошо [потенциальным] пользователям для вашего продукта. Не поступайте, как роботы: заявка->подтверждение заявки->{while not product.isReady(); sleep();} ->письмо-оповешение о готовности продукта.
Всегда есть место человечности :)
воскресенье, 17 февраля 2008 г.
суббота, 16 февраля 2008 г.
GWT + ASP.NET + JSON + MVC и все-все-все. Часть первая, вступительная
Часть первая, идея
Вот так сидишь, пьешь чай в третьем часу ночи, и неожиданно понимаешь, что тебе хочется рассказать всему миру, как можно сделать хорошее, добротное GWT-приложение, да еще и по-честному интегрированное с Microsoft-овским стеком веб-технологий. Что ж, начнем.
Тема это довольно большая, увесистая, поэтому рассказывать будем по частям. Начнем, как водится, с постановки задачи.
Постановка задачи
Задачу мы поставим не очень сложную, но вместе с тем не совсем тривиальную – написать компонент для просмотра и ограниченного редактирования списка контактов, на манер skype. Сам компонент должен быть встроен в приложение на ASP.NET.
Список контактов выглядит в скайпе вот как:
Как видите, это список, каждый из элементов которого снабжен индикатором состояния, псевдонимом и подписью.
Если кликнуть мышкой по контакту, выбранный элемент раскроется и покажет нам более детальную информацию о контакте, фотографию и другую скайповую специфику.
Мы, в нашем редакторе контактов, повторим идею «разворачивания» выбранного элемента и немного модифицируем набор операций – мы дадим возможность скрыть некоторые из контактов с возможностью их показать потом.
Требования
Итак, сформулируем требования к нашему Контакт-листу:
1. Системные требования
1.1. Редактор контактов должен быть выполнен с использованием Google Web Toolkit (GWT)
1.2. Веб-приложение должно быть написано на C# и «бегать» под управлением Microsoft ASP.NET 2.0
1.3. GWT-шный модуль с ASP.NET-овской частью будут взаимодействовать по протоколу JSON-RPC
1.4. GWT часть должна без проблем запускаться как изнутри ASP.NET, так и в hosted mode, для того, чтобы не иметь проблем с отладкой.
2. Требования к интерфейсу контакт-листа
2.1. Контакт лист должен отображать список контактов
2.2. Контакт лист должен показывть кол-во отображаемых контактов
2.3. Контакт лист должен позволять выбирать одного из показанных контактов
2.4. Выбранный контакт отображается в развернутом виде, остальные контакты – в свернутом.
2.5. «Свернутый» контакт показывает
2.5.1. Состояние контакта – онлайн или офлайн в виде иконки
2.5.2. Псевдоним (nickname) контакта
2.6. «Развернутый» контакт показывает
2.6.1. Псевдоним контакта
2.6.2. Состояние контакта – онлайн или офлайн в виде разного цвета его псевдоним – зеленый (онлайн) или серый (офлайн)
2.6.3. Кнопку «скрыть»
2.7. «Развернутый» контакт можно скрыть по нажатию соответстующей кнопки и тогда он пропадает из списка контактов.
2.8. Для того, чтобы показать список контактов, на странице должна быть кнопка «показать все контакты»
Для разнообразия, кнопку «показать все контакты» мы поместим за пределам GWT-модуля, чтобы продемонстрировать возможности модуля по интеграции с «внешим миром»
Прототип контакт-листа
Потратив 5 минут с Microsoft Visio, делаем вот такой прототип нашего приложения:
Когда мы кликаем на имя в списке контактов, информация о контакте разворачивается, показывая детали. Контакт можно временно скрыть из списка (в возможностью вернуть обратно), кликнув на соответствующую ссылку . Картинки для проекта мы возьмем… ну сами догадайтесь, где J
Пока все просто и ясно, huh? Теперь нам нужно сделать заготовку для нашего проекта.
Структура приложения
Если грубыми мазками – то приложение будет выглядеть вот так:
На ASP.NET-овском сайте расположена страница default.aspx, в которую встроен модуль GWT ContactListModule. Модуль общается с веб-приложением через JSON-RPC интерфейс, опубликованный на странице cl_service.ashx.
Вам понадобится
Чтобы собрать приложение своими руками, вам понадобятся клей,ножницы,бумага следующие инструменты:
- Microsoft Visual Studio 2005 (можно Express Edition - http://www.microsoft.com/express/vwd/)
- Eclipse IDE - http://www.eclipse.org/downloads/
- Google Web Toolkit - http://code.google.com/webtoolkit/gettingstarted.html
Первые шаги
Итак, перво-наперво создадим структуру приложения
- Создаем модуль GWT с поддержкой Eclipse как указано в этой инструкции: http://code.google.com/webtoolkit/gettingstarted.html#NewEclipse. Назовем наш проект «ContactListModule» а наше приложение – org.acme.client.ContactListModule.
mkdir ContactListModule cd ContactListModule |
- При помощи Visual Studio 2005 создаем пустой веб-сайт. Назовем его «ContactListSite»
- Создаем на веб-сайте пустую страницу default.aspx – место, где затем разместится наш GWT модуль
- Подключаем какую-нибудь JSON-RPC библиотеку. Я для примера буду использовать JayRock JSON-RPC. Взять ее можно здесь: http://jayrock.berlios.de/. Вам нужно добавить к сайту ссылки на сборки Jayrock.dll и Jayrock.JSON.dll, как сказано в инструкции: http://jayrock.berlios.de/#quick-start. Также создайте заготовку для JSON-RPC service и назовите ее cl_service.ashx. Пусть этот сервис лежит в корне сайта, рядом с default.aspx
Я думаю, со всеми этими операциями вы справитесь без труда. Но на всякий случай я сделал шаблон проекта, который вы можете скачать по ссылке ниже.
На этом вступительная часть закончена. В следующей серии - дизайним GWT модуль в духе Model-View-Controller.
среда, 6 февраля 2008 г.
Что работает и что не работает:: Здравый смысл - это здорово
Здравый смысл – это такая тонкая возможность отличить то, что на самом деле, от того, что хочется увидеть. Например, есть задача, которую можно решить за 10 часов. А за 5 часов ее решить нельзя – об этом говорит весь предыдущий опыт, например. Но очень хочется Так вот, здравый смысл – это оценить задачу в 10 часов, а не в 5. Звучит смешно, да?
А вспомните теперь желание заказчика «резать косты», только потому, что «дорого». И вспомните врожденный оптимизм программиста, из-за которого он запросто назовет сроки реализации задачи раза в 2-3 меньшие, чем получается.
Здравый смысл – это способность в лесу видеть и каждое дерево, и весь лес. И не видеть в лесу, например, пустыни. Это когда ты не обманываешься словами «процесс», «методология», а просто тихонько смотришь и замечаешь, какая идея работает, а какая-не работает. И используешь чужие, хорошо систематизированные советы, которые кто-то назвал методологией, по назначению – как некий reference, с которым сверяешься периодически – все ли учел? Ничего не забыл?
вторник, 5 февраля 2008 г.
Полезная утилита
http://webo.sunnybear.ru/
суббота, 2 февраля 2008 г.
DllMain это особое место. Это Зона
"Точка входа в DLL, так же как и точка входа в программу, - это очень специальное место. Зона. В Зоне действуют свои правила касательно того, что можно делать, а что делать нельзя. В Зоне можно инициализировать локальные данные DLL, можно создавать критические секции. В Зоне нельзя динамически загружать другие Модули или создавать потоки. Любой Сталкер знает и следует правилам Зоны. Все остальные рано или поздно нарушают правила и расплачиваются за это."
Читаем и радуемся :-)
пятница, 1 февраля 2008 г.
Программирование и монотеизм, с примерами на Java
Монотеизм
Религия, основанная на вере в единого Бога. Аналог в программировании это, естественно, синглтон:
Lord myLord = Lord.ohMyLord();
Во многих монотеистических религиях единого Бога наделяют полной властью и силой. Точно так же и в синглтон, бывают, запихивают кучу методов. В этом случае, на вопрос, что тут вообще происходит, почему и как остается лишь воскликнуть - "неисповедимы пути синглтоновы!"
...