Notification Bar Overview Video

Сегодня я хочу для затравки показать функционал визуального компонента, который позволяет отображать внутрипрограммные уведомления в системном стиле. Причем для включения функционала не потребуется переработки моделей в общем случае. Но все подробности потом, а обзорное видео подкатом!

Notification Bar Overview

App Crash Handler

Может быть, вы замечали у себя в системе процесс GoogleCrashHandler.exe, который постоянно работает, появляясь в системе с установкой браузера Chrome. Долгое время где-то в подкорке постоянно крутилась мысль о том, как же он может работать. Интуитивно мне было понятно, что это относится к браузеру, что этот процесс отслеживает падения браузера и отсылает отчеты с параметрами падения, чтобы инженеры в Гугл могли оценить причины прекращения работы и принять какие-то решения по улучшению работы. Я не поддерживаю конспирологические теории на счет того, что с помощью этого процесса собирается приватная информация о пользователе.

Скриншот не с моей машины.

Основное назначение такого сервиса – собрать и сохранить данные об ошибке в единое место для последующего анализа.

Исходя из названия и общей идеи мне стало интересно сделать свой «велосипед», так как коммерческие решения на рынке существуют, а вот о бесплатных я как-то не слышал. Да, есть программы у Microsoft (бесплатно) или у RedGate (платно), по которым тебе будут высылаться все отчеты об ошибках, которые возникли во время работы, но для этого нужно, чтобы пользователь нажал на кнопку «отправить данные». Зарегистрировать свою программу у вендора для участия в таком сборе. В корпоративном секторе, когда разработка внутренняя и градус паранойи повышен, такие варианты слабо прокатывают – все должно быть внутри и за пределы компании не выходить из соображений безопасности.

Идея

Почему это может быть важно для вас?

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

  • анализировать частоту возникновения ошибок
  • тип ошибок
  • можно сразу реагировать на ошибки, так как не требуется письма или звонка пользователя
  • писать автоматизированные отчеты о критических ошибках на основе данных в БД

В нашем случае надо будет подключить библиотеку, и вызвать только один метод. Остальное будет сделано программой, т.е. вам не придется описывать конфигурации того как ошибки будут писаться в базу или куда-то еще.

Подробнее

TFS Aggregator

Или как автоматизировать некоторые действия в TFS 2010.

Сразу скажу, что для TFS 2012 автор обещает быстро выпустить обновленную версию, однако, на мой взгляд, с учетом того, что API не поменялось или мало поменялось, то данный небольшой проект вполне может завестись и на новом TFS 2012 RC.

Идея

Последние статьи повествуют о настройке шаблонов процессов для TFS, но данные шаблоны оторваны друг о друга, по сути, хотя и связываются в работе связями типа: Child, Parent, Related To и так далее. Было бы логично использовать эту связь, для добавления интерактивности во всю схему, чтобы элементы действительно были связанны, чтобы они действительно реагировали на состояния друг друга в зависимости от типа связи и состояния. Чтобы можно было делать некоторые аккумулирующие подсчеты в метриках, ведь все эти данные доступны и их можно использовать в автоматическом режиме, сокращая время рутинных действий.

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

Например, представим себе ситуацию, когда пользовательская история имеет полный набор артефактов и готова к работе, созданы конкретные задания для реализации этой истории. В данной ситуации история находится в состоянии Ready For Development, а все задачи в состоянии Proposed. Разработчик берет задачу в работу, меняет ее состояние на Active. Далее он должен поменять состояние истории на WIP (Work In Progress). Однако этот шаг ведь можно автоматизировать! А автоматизация в свою очередь ведет к большему порядку и красоте. Т.е. как только разработчик взял задачу в работу, состояние всей истории поменялось автоматически!

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

Так же полезным функционалом было бы, когда все задачи решены, то статус истории автоматически переходит в состояние Resolved.

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

Подробнее

SQL Change Master Download

Скачать SQL Change Master Free версию. В данной версии есть ограничения на окружения (2 штуки) и на базы (2 штуки). Для апробации и для своих проектов этого вполне достаточно. База боевая и для тестов, окружение боевое и локальное.

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

Установщик возможно будет позже. Использование смотри в статьях раз и два

SQL Changes Master

В данном видео (подкатом) я рассказываю о программе для итеративного обновления баз данных.

Различные интересные, на мой взгляд, подходы и находки я расскажу в следующих постах по теме.

Подробнее

Win7 Jump List — II

В прошлый раз мы остановились на том, что у нас есть программа, которая может «группировать» иконки из таскбара. Если вы ее запускали и разбирались, то заметили, что у программы есть один неприятный юзабилити недостаток. Когда вы задали программу для запуска по умолчанию – это никак не видно. Требуется полагаться на свою память и привычки. Так что будем исправлять данный недостаток.

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

Подробнее

Win7 Jump List

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

Итак, будем решать следующую проблему: У меня дочерта иконок прикреплено в таскбаре. 2 студии, SQL сервер, Expression  studio, офисные приложения, браузеры – все это было бы полезно сгруппировать и чтобы по умолчанию запускались основные приложения.

Подробнее

ObjBin Cleaner Service

Давно хотел сдеалать программку, которая бы на регулярной основе проверяла папку с проектами и удаляла оттуда автогенеренные папки типа obj и bin, дополнительно все, что нагенерит там ReSharper и папки TestResults. Для кого-то это может и не проблема, но при наличии в разработке нескольких достаточно крупных проектов это становится проблемой, все это может занимать до 2 гигов, к примеру, как у меня. Можете себе еще представить ситуацию, когда на одной машине работает несколько человек, у каждого своя папка с проектами и после завершения сеанса работы не происходит очистки этих папок. Как-то раз, чистя такие вот станции мы обнаружили, что в таких папках было 60 гигов! Таким образом полезность утилиты, которая бы все это каждодневно удаляла – очевидна.

Для этой цели я задумал использовать Windows Service. Некоторые говорят, что легче написать батничек, но я этой магией не владею и ковыряться не хотелось, Windows Service мне показалось более заманчивой перспективой в плане получения новых знаний.

Подробнее