outcoldman


Unit тестирование в Silverlight 4

Наша команда настроила свою среду для тестирования Silverlight приложений еще год назад для Silverlight 3. Потом, со временем, просто обновляли библиотеки и приложения. Я бы хотел с вами поделиться теми удобными утилитами, которыми мы пользуемся для тестирования кода Silverlight приложений, как для запуска на локальном компьютере, так и для автоматизированного запуска на интеграционном сервере. Я буду говорить именно о Unit тестировании (блочном тестировании), а не о UI тестировании (тестирование интерфейсов). В нашей компании у нас есть команда QA, которая занимается UI тестированием, мы же просто пишем тесты для кода моделей представления и моделей. Для того, чтобы настроить среду для тестирования, мне понадобились: Silverlight Toolkit, Moq, R#, AgUnit, StatLight. А теперь обо всем по порядку.

Читать дальше... (redirect to http://outcoldman.ru)

читать дальше...
добавлено: 23 май 11 просмотры: 1513, комментарии: 0



Рекомендации для начала карьерного роста

По мотивам недавно прошедшей конференции в ЯрГУ 25 марта, на которую пришло уж очень не много народу, решил я написать небольшой мотивирующий пост для студентов и начинающих программистов/IT специалистов. Мою презентацию с доклада можно посмотреть на skydrive. Здесь же я постараюсь вкратце, на сколько это возможно, осветить этот доклад.

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

Ну и до нас не раз еще поднимали эту тему. Рекомендую читать и заряжаться всеми этими топиками.

Читать дальше... (redirect to http://outcoldman.ru)

читать дальше...
добавлено: 07 май 11 просмотры: 1563, комментарии: 0



Реализуем сами простой IoC контейнер

Думаю, что даже уже начинающий разработчик должен быть знаком с понятием Inversion of Control (сокращают как IoC). Любой проект сейчас начинается с выбора фреймворка, при помощи которого будет реализован принцип внедрения зависимостей. Если взять русскую википедию, то там определение для IoC выглядит следующим образом:

Инверсия управления (Inversion of Control, IoC) — важный принцип объектно-ориентированного программирования, используемый для уменьшения связанности в компьютерных программах и входящий в пятерку важнейших принципов SOLID.

IoC решает очень простую, но и очень важную задачу, он уменьшает зависимость между компонентами системы. В случае использования, например, внешних библиотек вы делаете так, что ваше приложение зависит только от некоторого интерфейса (абстракции), сама же реализация скрыта, и в любой момент может быть заменена другой. Простой пример: нравится log4net, но не уверены, что он останется с вами навсегда; делаете свой интерфейс ILogger, во всех классах используете именно эту абстракцию, получая ее из IoC контейнера, реализуете класс, который использует log4net и регистрируете его для этой абстракции в IoC, и в случае перехода на другую библиотеку вам достаточно поменять реализацию ILogger и просто регистрировать в IoC именно теперь новую реализацию использующую что-то другое.

Для .NET платформы, как и для любых других платформ, есть огромное разнообразие библиотек, которые можно использовать в проектах: Unity, StructureMap, Ninject, Castle W...

читать дальше...
добавлено: 11 мар 11 просмотры: 2891, комментарии: 3



Проверяем наличие подписчиков у событий при помощи Reflection

Передо мной встала задача, нужно было бы собрать все события объекта и подписаться на них (подписать определенный метод), только в том случае, если на это событие не подписан кто-то еще. Я могу даже больше сказать, делал я это для классов-оберток, которые генерирует Visual Studio на Add Reference Service…. Используем мы их по стандартному, как и все, наверное. Используем в коде не сами классы-обертки, которые генерирует Visual Studio, а используем свои реализации, которые нам предоставляют возможность тестировать наши модели, подставляя Mock и Stub объекты вместо самих реализаций. Давайте лучше покажу на примере.

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

Читать дальше... (redirect to http://outcoldman.ru)

читать дальше...
добавлено: 23 фев 11 просмотры: 1523, комментарии: 0



Обновляем приложение с MVC 2 до MVC 3

Уже год мой сайт (блог) живет на самописном движке, который я сделал при помощи ASP.NET MVC 2. Конечно же я мог пользоваться бесплатными площадками для блогов, но мне пока интересно развиваться по многим направлениям. И если моя основная специальность сейчас Silverlight/WPF, то я все равно стараюсь не забыть про старый добрый веб, без него никуда в нынешнее время. Ну и нужно быть на гребне волны, потому я и решил что пора бы проапгрейдить свой сайт с MVC2 до MVC3. Зачем? А просто, чтобы было. Чтобы в будущем, когда захочется что-то допилить или доделать, а у меня уже была последняя версия, и я мог использовать последние фичи технологии.

Читать дальше... (redirect to http://outcoldman.ru)

читать дальше...
добавлено: 08 фев 11 просмотры: 2347, комментарии: 0



Silverlight: Байндинг коллекции элементов на TabControl.ItemsSource

Раньше я как-то обходился без подобного в Silverlight. Всегда размещал TabItem в XAML коде, а не байндил коллекцию объектов, и при помощи DataTemplate настраивал вид того, что находится в TabItem.Content. Просто не было необходимости байндить коллекцию моих объектов (неких BindingModel) на TabControl.ItemsSource, а тут, буквально недавно, захотелось немного отрефакторить код, так как коллекция табов все росла, и управлять ею уже было сложно, и как раз придумал как это возможно сделать через описанный выше способ. Сказано – сделано. Потратил пару часов, переписал код, запускаю, и обнаруживаю такой вот exception:

System.ArgumentException: Unable to cast object of type 'SilverlightTabControl.Foo' to type 'System.Windows.Controls.TabItem'.

Быстро гуглю, нахожу на форумах Silverlight тему Databinding a TabControl (Я не одинок! Как показало более глубокое угугление, я совсем не одинок), а там

This is because currently TabControl doesn't override PrepareContainerForItemOverride, so it won't automatically wrap your data source in TabItems.

Ну и в качестве решения предлагается написать свой TabConverter. Microsoft, ну я точно помню, что в WPF байндинг на ItemsSource у TabControl’а работает прекрасно. Я это делал. Ладно, терпим, что в Silverlight контролах достаточно много багов, но тут-то просто ребята немного не доделали, а контрол зарелизили, да и сколько версий он уже живет? В реальности на первый взгляд нужно сделать 2 вещи:

Читать дальше... (redirect to http://out...

читать дальше...
добавлено: 02 фев 11 просмотры: 1787, комментарии: 2



Как часто нужно публиковать окончательные версии продуктов?

Думаю, что многие знают про программу Calibre. Я ее использую для конвертации книг для своего Kindle 3 девайса, например, из fb2 в mobi. Не знаю, как часто вы пользуетесь этой программой, а я так один раз в месяц (ну может быть чуть-чуть чаще). Накапливается много рекомендаций о книгах, и я начинаю заливать их на Kindle. Еще важно учитывать мою небольшую гиковатость, если я вижу, что у какого-то ПО вышло обновление, то у меня просто все чешется, что нужно обязательно поставить, не важно есть ли там мне важные исправления или нет. Так вот, если вы знакомы с Calibre, то представляете, что первым делом при каждом запуске программы у меня начинает уже поддергиваться глаз, что опять обновление? Релизы выпускают каждую неделю.

Читать дальше... (redirect to http://outcoldman.ru)

читать дальше...
добавлено: 31 янв 11 просмотры: 1571, комментарии: 0



071-506/070-506–“TS: Silverlight 4, Development” Passed

Посмотрел на сайте Prometric в разделе Candidate History наконец-то проверили бета экзамен по Silverlight 4, который я еще сдавал 23 октября прошлого года. Пока с сайта mcp.microsoft.com письмо не пришло с уведомлением об успешной сдаче экзамена, думаю, будет в ближайшие дни. Как писал Сергей Лутай в своем блоге, уже 3 дня назад стало возможным зарегистрироваться на этот экзамен 070-506 Silverlight 4 (бета экзамены имеют номер, начинающийся с 071, потом заменяется номер на 070).

Capture

Кто сдавал экзамен, думаю, так же могут посмотреть у себя в Candidate History информацию и обрадовать себя. Честно, на сколько я помню из экзамена, он был достаточно простым (правда помню я не многое), так что сдать должны все.

Если есть вопросы, готов ответить, но в рамках NDA, которую подписывает человек перед сдачей экзамена.

Читать дальше... (redirect to http://outcoldman.ru)

читать дальше...
добавлено: 28 янв 11 просмотры: 1468, комментарии: 0



IIS Express 7.5 & WebMatrix & SQL Server CE 4

На днях вышли в свет несколько новых продуктов от Microsoft, среди которых были IIS Express 7.5, WebMatrix и SQL Server CE 4, я так нашел применение уже для них всех.

Читать дальше... (redirect to http://outcoldman.ru)

читать дальше...
добавлено: 20 янв 11 просмотры: 1588, комментарии: 0



Используем Silverlight DataPager без WCF RIA

Может я как-то не правильно подошел к DataPager, но, как оказалось, заставить его нормально работать без DomainDataService не так уж и просто. Идея у меня была простая, думал найти свойство, вроде ItemCount (оно есть, но только для чтения), туда поставить то количество элементов, которое у меня есть, сделать байдинги на PageSize и PageIndex и все должно быть готово. Но пришлось делать все совершенно по-другому.

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

Читать дальше... (redirect to http://outcoldman.ru)

читать дальше...
добавлено: 30 дек 10 просмотры: 1728, комментарии: 0