суббота, 29 марта 2008 г.
Жизнь в 100 словах
Слово. Шаг. Простуда. Врач.
Беготня. Игрушки. Брат
Двор. Качели. Детский сад.
Школа. Двойка. Тройка.Пять.
Мяч. Подножка. Гипс. Кровать.
Драка. Кровь. Разбитый нос.
Двор.Друзья. Тусовка. Форс.
Институт. Весна. Кусты.
Лето. Сессия. Хвосты.
Пиво. Водка. Джин со льдом.
Кофе. Сессия. Диплом .
Романтизм. Любовь. Звезда.
Руки. Губы. Ночь без сна .
Свадьба. Теща. Тесть. Капкан.
Ссора. Клуб. Друзья. Стакан.
Дом. Работа. Дом. Семья.
Солнце. Лето. Снег. Зима.
Сын. Пеленки. Колыбель .
Стресс. Любовница. Постель.
Бизнес. Деньги. План. Аврал.
Телевизор. Сериал.
Дача. Вишни. Кабачки.
Седина. Мигрень. Очки.
Внук. Пеленки. Колыбель .
Стресс. Давление. Постель.
Сердце. Почки. Кости. Врач.
Речи. Гроб. Прощанье. Плач.
пятница, 28 марта 2008 г.
Обработка ссылок в системе
Как одно из решений - написание расширений для браузеров, которое будет отрезать обращение к серверу для ссылок определенного формата и обрабатывать их самостоятельно.
- IE: решением для IE было бы создание Asynchronus Pluggable Protocol, но такое решение сталкивается с несколькими проблемами. Такое решение будет работать только если браузером по умолчанию стоит IE. Сложно писать (все таки ActiveX). Проблемы при установке. Проблемы при открытии ссылок из сторонних приложений.
- Firefox: для firefox все несколько проще. можно навеситься на событие ввода адреса в строку адреса и на событие загрузки браузера. А с помощью XUL можно запустить произвольное прилоджение
- Opera: Для этого браузера сделать подобный перехват не удастся. браузер конечно поддерживает пользовательские скрипты и плагины, но навеситься на перехват перехода по ссылке я не смог, кроме того, я не смог из пользовательского скрипта запустить внешнее приложение или обратиться к COM классам.
Как я понял, в Windows обработкой гиперссылок занимается модуль urlmon.dll. Он же вызывает методы интерфейса IInternetProtocol и IInternetProtocolSink для Asynchronus Pluggable Protocol.
Универсального решения проблемы я так и не нашел. Если кто нибудь знаешь в какую сторону копать - подскажите плз.
вторник, 25 марта 2008 г.
Подписка на события
Однако, порой нужно уметь подписываться на нестандартные события. Например недавно встретился с задачей: при записи в лог файл десятого сообщения, соответствующего определенному формату нужно отправлять письмо администратору.
Для такой задачи очень бы пригодилась система, способная генерировать сообщения, в зависимости от происходящих событий.
Что такая система должна делать:
- Уметь определять момент возникновения события системы(как ОС, так и прикладной системы, причем во втором случае может возникнуть необходимость или в периодическом опросе или в жесткой интеграции)
- Генерировать события подписки (рассылать почту, вызывать внешние методы, обращаться к веб-сервисам, издавать звук и т.д.)
Vista Aero и Web
Менюшки потрясные, полупрозрачные png'шки очень неплохо смотрятся, но очень уж тяжело это все. Да и без картинок это будет выглядеть не совсем красиво.
ЗЫ: Кстати, на этом же блоге живет удивительный крысомамонт(замена RSS :) ). Улыбнуло.
Мониторинг состояния системы
Откуда вы обычно узнаете что ваша система не работает? От разгневаных клиентов? Или от неменее разгневаного руководства?
А как вы узнаете о причине неполадки? Используя собственный опыт и знание системы? Или долго и продолжительно изучаете логи, выискиваете ошибку, определяете причины?
А может не стоит дожидаться когда пользователь наткнется на отказ системы? Может этот процесс можно автоматизировать?
Только представьте, некоторая служба, регулярно проверяющая работоспособность системы(или нескольких систем). Она отслеживает работоспособность основных элементов системы (база, подключение, доступность, основной функционал), автоматически исправляет некоторые ошибки, и выдает подробный удобочитаемый сводный отчет о состоянии системы в целом и ее элементов.
И так, что требуется от службы мониторинга:
- Иметь базовый набор тестовых методов для проверки базового функционала системы(здесь очень пригодятся автоматические тесты, написанные на этапе разработки или тестирования)
- Уметь запускать мониторинг состояния системы в определенное время, проверять базовый функционал, логи и т.д.
- Уметь формировать сводный отчет и отправлять его ответственному(администратору или разработчику)
- Уметь устранять некоторые неисправности(например, перезапускать веб-сервер)
- Жестко связана с обследуемой системой.
- Низкая гибкость, малая универсальность. Для каждой новой функциональности нужно писать свой метод для его мониторинга.
- Большие накладные расходы на полный мониторинг(трафик, время, загрузка сервера).
- Использовать автоматические тесты, созданные на этапе разработки или тестирования.
- Проводить мониторинг эпизодически (по требованию) для устранения неполадок.
вторник, 4 марта 2008 г.
Веб-сервисы. Xml серелизация COM объектов.
Решение проблемы может быть одним из следующих:
- Выдирать из класса необходимые данные и записывать в свою структуру данных, которая уже будет серелизоваться. Достоинства: можно просто управлять серелизацией класса, можно также манипулировать полученными данными в классе, можно сделать свою систему хэширования данных на основе данных структур данных. Недостатки: необходим механизм преобразования COM класса в нашу структуру данных, причем такой механизм необходимо организовывать для каждого класса, сам же механизм представляет из себя лишь перенос данных из полей COM объекта в поля данных нашего класса.
- Организовать "универсальный" механизм серелизации необходимых нам COM классов в виде, скажем, фабрики. Достоинства: общий механизм для серелизации, нет накладных расходов на хранение "промежуточных" классов с данными - вся работа ведется непосредственно через COM. Недостатки: данные COM объектов могут быть в спецефическом формате, и общий механизм серелизации его некорректно обработает.
- Организовать "обертку" для COM, свойства которой серелизуются. Достоинства: Нет накладных расходов на хранение данных COM объектов, обертка просто серелизуется. Недостатки: Для каждого COM класса нужна своя обертка.
Возможно для этих целей уже есть стандартное решение и я на него пока(!) не натолкнулся.
