суббота, 14 декабря 2013 г.

О сборке C++ проектов в Visual Studio 2013 при наличии зависимостей от библиотек собранных в предыдущих версиях

Пару дней назад, ко мне обратился Brandousov с проблемой. При сборке проекта заточенного по Visual Studio 2010 в 2013 студии падает толпа ошибок вида:

Причем этих ошибок "error LNK2038: mismatch detected for '_MSC_VER': value '1600' doesn't match value '1800'" падают сотни.
На С++ я не пишу, но т.к. ошибка похожа на несовместимость версий, то я решил поискать, что делать. Достаточно быстро нашел вот здесь как в VS 2013 собирать под версию компилятора 2010 студии. И отправил это все Brandousov. Ему решение помогло и он любезно предоставил описание действий для решения этой проблемы на русском. Вдруг кому пригодится:
1. Скачал и поставил VS 2010 Express, потом следуя рекомендациям по ручной сборке Chromium накатил на него сервис пак 1, поставил вин СДК 7.1 (ставится легко и быстро, ссылка: http://www.chromium.org/developers/how-tos/build-instructions-windows, патчить ничего не надо, главное сначала поставить VS 2013, потом остальное).
2. Открыл проект для VS2010 в VS2013, на предложение автоматически обновить компилятор и либы ответил отказом.
Не забудьте посмотреть в свойствах проекта, что у вас стоит правильный Platform Target:

3. Rebuild.

 

пятница, 6 декабря 2013 г.

О KPI-ях

История от начала до конца выдумана, все совпадения с реальностью случайны.

В одной компании столкнулись с проблемой большого количества ошибок, пропускаемых в operation. На 10 ошибок, обнаруженных в процессе разработки, приходилось 10 ошибок, обнаруженных в процессе эксплуатации. Для борьбы с этой проблемой было принято решение об организации специального подразделения для проведения приемочного тестирования. Одним из KPI в рамках проекта создания такого подразделения, было требование снизить количество ошибок, всплывающих в процессе эксплуатации до 10% от суммарного количества ошибок. Т.е. 18 ошибок будет обнаруживаться в тестировании, и всего 2 будут приходить из эксплуатации.

четверг, 14 ноября 2013 г.

Почистить transaction log в случае его переполнения

Ситуация не стандартная, но если recovery mode стоит в full, то почистить переполнившийся transaction log не получится, потому что в него не получится записать информацию о чистке transaction log-а. Т.к. все время забываю, пусть скрипт для этого здесь полежит.
USE ИмяБазыДанных

ALTER DATABASE ИмяБазыДанных SET RECOVERY SIMPLE

DBCC SHRINKFILE (ЛогическоеИмяФайлаСЛогом, РазмерВмегабайтах);

ALTER DATABASE ИмяБазыДанных SET RECOVERY FULL

понедельник, 14 октября 2013 г.

AutomationProperties при тестировании пользовательского интерфейса

При использовании Microsoft Test Manager (MTM ) для тестирования пользовательского интерфейса есть два варианта ручное и автоматизированное тестирование. Автоматизированное, от ручного, отличается тем, что выполнив ручной тест, мы можем записать последовательность действий и запускать эту последовательность действий для выполнения регрессионного теста, или для проверки воспроизводится ошибка или нет. При записи, особенно когда идет выбор элемента в списке у MTM возникает проблема с идентификацией. Например, когда мы записывали тест, у нас сотрудник Иванов был третьим в списке, а сейчас, он второй. О том, как облегчить жизнь тестировщикам и улучшить определение элементов я сегодня и расскажу.

Выгрузка файлов из ASP .Net приложения

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

воскресенье, 29 сентября 2013 г.

Показ дочерних View в рамках патерна MVVM

Время от времени, участвую в обсуждениях, как правильно в рамках паттерна MVVM показывать дополнительные (дочерние View) в отдельных окнах. Т.е. когда смотришь на диаграмму иллюстрирующую паттерн, все ясно: View знает про ViewModel только на уровне имен свойств указанных в биндинге, ViewModel вообще ничего не знает про View. Но вот, пользователь нажимает на кнопку и нам надо создать новые View и ViewModel для того, чтобы показать это все в отдельном окне... Что делать? Вот об этом сегодня и пойдет речь.

четверг, 19 сентября 2013 г.

Что делать, если запуск потоков зависит от событий, которые не реализуют уведомления?

Сегодня будет небольшой пример на многопоточность, в ответ на вопрос с форумов MSDN.
Задача состоит в том, что есть внешний источник информации, который говорит нам сколько потоков запускать, также там есть информация о том, готово ли все для запуска или нет. Если таким источником данных является MS SQL сервер, то узнать о том, что там поменялась информация мы можем только обратившись за ней сами. Все, перехожу к примеру.

пятница, 13 сентября 2013 г.

О чем молчит диаграмма Ганта или почему проекты всегда опаздывают

Каждый раз, когда я смотрю на диаграммы Ганта, меня мучает один и тот же вопрос. Как? Вот как можно быть уверенным, что ресурс А, выполнит задачу Б за 5 дней? Нет, я понимаю, что есть исторические данные, есть, не побоюсь этого слова, статистика. Но вот как можно на основе всего этого делать уверенные прогнозы? Я не понимаю.
Если для вас термины «взаимозависимость событий» и «статистические отклонения» говорят что-то не только по отдельности, но и в совокупности, то статья вас вряд ли заинтересует. А вот если эти термины, употребленные в одном контексте, не говорят вам в чем проблема диаграмм Ганта, то приглашаю под кат, где на простом примере мы это и обсудим.
Продолжение статьи на Хабре.

четверг, 5 сентября 2013 г.

"Медленные" свойства

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

воскресенье, 4 августа 2013 г.

Еще раз о шаблонах элементов

Я уже пару раз писал про шаблоны. Вот здесь, о том, как поменять внешний вид кнопки. А вот здесь, как в зависимости от свойств компонента можно подгружать разные шаблоны. Сегодня предлагаю посмотреть натягивание шаблонов на более сложный элемент управления, а именно на TreeView.

четверг, 18 июля 2013 г.

Об автоматизации в отдельно взятой стране

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

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

пятница, 21 июня 2013 г.

Как сделать страницу со своим меню в Windows Store приложении

Как и многие из последних статей, эта является ответом на вопрос с форумов MSDN. Стоит задача сделать пункты, выбрав один из которых пользователь будет переходить на нужную страницу. Говорят, так сделано приложение твиттера, ну и таким подходом предполагается воспользоваться, т.к. верхний и нижний AppBar уже заняты.

воскресенье, 16 июня 2013 г.

Поездка

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

понедельник, 10 июня 2013 г.

Использование Nuget Packages на примере NLog

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

Радуют меня в последнее время журналисты

Вот новость на одном из агрегаторов:
Вчитайтесь, каждый час за ТВ увеличивает потребление газировки на 50%. Т.е. просмотрел телевизор 8 часов, стал пить газировки в 4 раз больше, да и то, если 50% к начальному потреблению, а не нарастающими процентами.
А теперь, оригинал этой новости с АИФ-а:
Блин, ну где у людей находится мозг, когда они рерайтят?

четверг, 18 апреля 2013 г.

Выделить элемент в дереве или развернуть его из кода

Сегодня статья будет не очень большая, но охватывать будет много всего.
1. Как из кода выбирать элемент в дереве (для тех кто не в курсе, у TreeView свойство SelectedItem доступно только для чтения).
2. Как получить информацию о том, что в некоторой ноде происходит сворачивание и разворачивание.
3. Посмотрим на паттерны "обертка" (декоратор) и на MVVM (что это за паттерн, можно почитать здесь).
4. Применение "ленивой" загрузки.
Интересно? Тогда начинаем.

Цитата дня

Все модели ошибочны, некоторые модели полезны.
-- Джордж Бокс

понедельник, 15 апреля 2013 г.

Книга по физика

Один блоггер, которого я постоянно читаю (eduardk), выложил книжку. Порекомендовать ее как однозначно замечательную, я пока не могу, т.к. не читал. Но то что я читаю в блоге мне нравится. Очень надеюсь, что и книга будет на уровне.
Собственно книга:
Более подробно про книгу  можно прочитать здесь. 

воскресенье, 14 апреля 2013 г.

Пример на сборку мусора

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

среда, 10 апреля 2013 г.

О чем молчит разработчик...

Написать сегодняшний опус меня подтолкнуло замечательное выступление Zenegment, которое у него выложено в блоге IT Spring: Взгляд с другой стороны контракта. Там все видео интересное, если что, то рекомендую. А вот вторым толчком стало объявление, увиденное в поликлинике сегодня днем. Фото этого объявления будет подкатом.
Итак, ссылку на видео дал, фото показать обещал, поехали.

понедельник, 18 марта 2013 г.

ОБЪЯСНИТЕЛЬНАЯ ВЕЖЛИВОГО ЧЕЛОВЕКА

Не мое, но очень понравилось. Дочитав до конца, не пожалеете.

Я, ФИО, двигался __.__.2013 года в__.__в сторону пр.Красной Армии на скутере Gilera Fuoco 500. Правил не нарушал, за дорожной ситуацией следил.
На перекрестке с ул.Бероунская неожиданно для меня и прочих участников ДТД на красный свет выехал а/м Hummer черного цвета без должным образом установленного госномера. Я, земетив опасность и избегая ДТП был вынужден в торможении выехать на полосу встречного движения, где и остановился на обочине.
В процессе торможения, маневра и остановки услышал сильный удар сзади. Обернувшись увидел, что а/м Hummer ударил следующий со мной в одном направлении а/м Suzuki Jimny госномер ______, практически оторвав ему капотное пространство. Заметив за рулем пострадавшего а/м Suzuki Jimny девушку, я отправился оказывать ей возможную первую помощь.

воскресенье, 3 марта 2013 г.

Упрощения жизни в примере показа всплывающих сообщений


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

воскресенье, 24 февраля 2013 г.

Показ MessageBox-а в Windows Store приложениях

По умолчанию, возможности показа всплывающих сообщений в Windows Store приложениях достаточно ограниченны. Открыв MSDN, мы увидим, что существует всего 2 перегрузки. Про него можно почитать здесь. Причем, среди этих перегрузок нет ни одной, которая позволяет показать хотя бы стандартную картинку. Не говоря уж о том, чтобы при удалении картинки, задавая вопрос, точно ли удаляем эту картинку, показать ее уменьшенное изображение.
Как сделать свой компонент для показа всплывающего сообщения, причем с возможностью указать картинку, мы и поговорим подкатом.

четверг, 21 февраля 2013 г.

Fakes Framework при тестировании методов использующих Entity Framework

Название получилось длинное, но как сказать короче, про что сегодня пойдет речь, я не придумал. Итак, под катом, будет:
1. Как создать Fakes Assembly для System.Core.dll (как не странно это звучит, но методы First, Where и другие, да и все пространство System.Linq находиться именно в этой сборке).
2. Как сделать Fake методы для присоединенных методов типа Single и Include.
3. Как вынести инициализацию FakeContext-а и переопределение методов которые не меняются от тестового метода к тестовому методу в отдельный метод, который будет вызываться автоматически.

воскресенье, 10 февраля 2013 г.

Проигрывание GIF-ок в WPF приложении

Классически, на форумах MSDN, в одном из топиков, задали фопрос, как в WPF приложении заставить gif-изображение показывать не только первый кадр, а всю анимацию. Ответ под катом.

четверг, 31 января 2013 г.

Программа, для сниффа http трафика

Достаточно редко, но приходиться работать с внешними системами по SOAP. И как всегда, начинаются проблемы с тем, что данные передаются неправильно. Вот в таких случаях, истина в последней инстанции - передаваемый сервису XML. А его надо получить. Ну и вот небольшая утилитка, которая позволяет анализировать http трафик: http://www.fiddler2.com/fiddler2/version.asp
Простая и удобная, по крайней мере, мне нравится. Ставим, запускаем и смотрим, какие такие данные у нас передаются.

среда, 30 января 2013 г.

Книга "Иллюстрированный ITSM"

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

понедельник, 28 января 2013 г.

О "всплывании" события изменения свойств

Итак, сегодня статья, опять навеяна форумами MSDN, а конкретно вот этим вопросом. Кто лениться ходить по ссылкам. Есть два класса, и один включается во второй. Если оба реализуют INotifyPropertyChanged, как сделать так, чтобы при измененнии свойств включенного класса, вызывалось событие изменения свойств класса включающего.

Понедельник

вторник, 22 января 2013 г.

Книга “Разработка приложений для Windows 8 на языке C#”

Пока сижу дома, в связи с единственным днем больничного, когда получилось никуда не идти, давайте напишу впечатление от вот этой книжки.
Книга оставляет странное впечатление. Часть глав вызывает четкое чувство дежавю, например, глава 23, это немного переформатированная вот эта статья с хабра. Нет, все понятно, в авторах этой книги - автор статьи. Но странно, в новой книге натыкаться на то, что уже читал несколько месяцев назад.
Ладно, по остальному. Прочитав всю книгу, я так и не смог понять, на кого она рассчитана. Для тех, кто только знакомиться с разработкой на C#+XAML, книга недостаточно подробна. Т.е. взять java или php программиста, дать ему в руки эту книгу и ждать удобоворимого Windows Store приложения - нереально. Для справочника, книга слишком поверхностна... Ну только если вы уже программируете на WPF (Silverlight) и быстренько хотите пробежаться по платформе. Наверно, это единственное применение этой книги. Хотя MSDN и примеры скачиваемые в Visual Studio для этого даже более интересны.
Опять же, с выпуском торопились. В книге много опечаток. Причем, в одном месте перепутаны даже картинки.
Как то так.

понедельник, 14 января 2013 г.

Заседание MCP клуба 14.01.2013

Доброго всем вечера.
Сегодня состоялось третье заседание MCP клуба, который мы зарегистрировали в прошлом году. Если кто не в курсе, есть такой сайт http://ineta.ru/, на нем регистрируются User Group и MCP клубы со всей России. Наш клуб здесь http://ineta.ru/kalugamcp. Сегодня выступал с докладом, который приведен вот здесь, презентацию можно скачать здесь.
Встречу проводили в нашем офисе:

Модульные тесты в Visual Studio 2012

Под катом можно найти:
 - Что такое модульные тесты?
 - Пример написания модульного теста в VS 2012
 - TDD
 - Fakes Framework

вторник, 8 января 2013 г.

Цитата дня

Программист — это профессиональный конвертер галлюцинаций заказчика в жесткую формальную систему.
 -- Аноним

понедельник, 7 января 2013 г.

Анимация в WPF

Перед тем, как поговорить об анимации в Windows Store приложениях, давайте немного посмотрим, как можно воспользоваться анимацией в обычный WPF приложениях. Я как то уже приводил пример анимации в статье про триггеры. Но он там был один, к тому же на самый простой.