﻿<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Violet Tape</title>
	<atom:link href="http://softblog.violet-tape.ru/feed/" rel="self" type="application/rss+xml" />
	<link>http://softblog.violet-tape.ru</link>
	<description>некоторые мысли о разработке на платформе .Net</description>
	<lastBuildDate>Thu, 02 Feb 2012 05:00:04 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Сообщения с таймером</title>
		<link>http://softblog.violet-tape.ru/2012/02/02/self-timetracking-messages/</link>
		<comments>http://softblog.violet-tape.ru/2012/02/02/self-timetracking-messages/#comments</comments>
		<pubDate>Thu, 02 Feb 2012 05:00:04 +0000</pubDate>
		<dc:creator>koissakh kadderah</dc:creator>
				<category><![CDATA[Архитектура]]></category>
		<category><![CDATA[Утилиты]]></category>
		<category><![CDATA[Rx]]></category>
		<category><![CDATA[UI]]></category>
		<category><![CDATA[WPF]]></category>

		<guid isPermaLink="false">http://softblog.violet-tape.ru/?p=1118</guid>
		<description><![CDATA[При работе со многими программами мы не обращаем внимания на множество вещей в интерфейсе, считая это само собой разумеющимся, или же считаем милой забавной штучкой, на которую потратили от силы полчаса. Такие мелочи в интерфейсе, в конечном счете, складываются в ощущение целостности процесса работы, которые не отвлекают от важной информации, а подчеркивают ее, не заставляют [...]]]></description>
			<content:encoded><![CDATA[<p>При работе со многими программами мы не обращаем внимания на множество вещей в интерфейсе, считая это само собой разумеющимся, или же считаем милой забавной штучкой, на которую потратили от силы полчаса. Такие мелочи в интерфейсе, в конечном счете, складываются в ощущение целостности процесса работы, которые не отвлекают от важной информации, а подчеркивают ее, не заставляют делать лишние телодвижения. Всё кажется логичным, простым и доступным для понимания. Наверно не стоит говорить уже, что такие интерфейсы занимают в своей проработке и реализации уйму времени и сил. Об одной из таких приятных «мелочей» я бы хотел сегодня рассказать.</p>
<h1>Задумка</h1>
<p>Я думаю, что если подумать, то все вспомнят о статусной строке в приложении, где часто пишется состояние программы, уведомления о завершении каких-либо фоновых задач, другая интересная информация о работе программы. Еще можно вспомнить о программах, которые показывают информационное сообщение пользователю в каком-либо специальном месте на интерфейсе, а через какое-то время (секунд 5) надпись исчезает. Учитывая последние тенденции к тому, чтобы избавлять пользователя от popup-окон, в которых написано что-то в духе: Данная операция не может быть совершена, так как она в процессе выполнения, - и на всплывшем окне только одна кнопка OK. Раздражает такое поведение неимоверно, так как приводит к лишним действиям! В общем, сегодня я покажу, как можно реализовать набор классов для реализации такого поведения и использовать его в дальнейшем без существенных модификаций.</p>
<p>Неискушенный читатель наверно может воскликнуть: «Что за бредятина, какие еще  <em>наборы классов</em> для того, чтобы сделать два set’a строки? Надо показать сообщение, так присвоил переменной сообщения нужный текст, когда не надо – присвоил пустую строку. Any problem?»</p>
<p>Если кратко, то проблем много! Сейчас попробую перечислить их, как они придут в голову:</p>
<ul>
<li>Много инфраструктурного кода получится, ведь надо будет вводить таймеры, ответы и наверняка что-то еще. И это каждый раз при попытке сменить текст.</li>
<li>Надо запоминать предыдущий текст в сообщении, если он был.</li>
<li>Легко запутаться что, где и зачем реализовано. Скорее всего, будет много копи-пасты, а следовательно больше мест для ошибок.</li>
<li>Некрасиво!</li>
</ul>
<p>Лично для меня хватило только первого пункта из-за моей профессиональной лени.</p>
<p><br/>Читать далее <a href="http://softblog.violet-tape.ru/2012/02/02/self-timetracking-messages/">Сообщения с таймером</a> (1,445 слов) <br/></p>
<hr />
<p><small>© <a href="http://softblog.violet-tape.ru">Violet Tape</a>, 2012. |
<a href="http://softblog.violet-tape.ru/2012/02/02/self-timetracking-messages/">Постоянная ссылка</a> |
<a href="http://softblog.violet-tape.ru/2012/02/02/self-timetracking-messages/#comments">Комментариев пока нет</a> |

<br/>
Тэги: <a href="http://softblog.violet-tape.ru/tag/rx/" rel="tag">Rx</a>, <a href="http://softblog.violet-tape.ru/tag/ui/" rel="tag">UI</a>, <a href="http://softblog.violet-tape.ru/tag/wpf/" rel="tag">WPF</a><br/>
</small></p>
<p><small>Feed enhanced by <a href='http://planetozh.com/blog/my-projects/wordpress-plugin-better-feed-rss/'>Better Feed</a> from  <a href='http://planetozh.com/blog/'>Ozh</a></small></p>
]]></content:encoded>
			<wfw:commentRss>http://softblog.violet-tape.ru/2012/02/02/self-timetracking-messages/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Иерархичные структуры данных и промежуточные расчеты</title>
		<link>http://softblog.violet-tape.ru/2012/01/30/hierarchy_and_rx/</link>
		<comments>http://softblog.violet-tape.ru/2012/01/30/hierarchy_and_rx/#comments</comments>
		<pubDate>Mon, 30 Jan 2012 05:00:02 +0000</pubDate>
		<dc:creator>koissakh kadderah</dc:creator>
				<category><![CDATA[Архитектура]]></category>
		<category><![CDATA[Общее]]></category>
		<category><![CDATA[events]]></category>
		<category><![CDATA[Rx]]></category>
		<category><![CDATA[Structures]]></category>

		<guid isPermaLink="false">http://softblog.violet-tape.ru/?p=1108</guid>
		<description><![CDATA[Традиционной, в плане изучения программирования в школах, университетах, курсах повышения квалификации и так далее – является архитектура, в которой мы явно управляем ходом выполнения программы. Это начинается с фактически процедурного турбо паскаля и идеологически продолжается в «рабочих» для бизнес-программирования языках (С# и Java). Каждое действие программы задается явно, т.е. если надо что-то пересчитать после добавления [...]]]></description>
			<content:encoded><![CDATA[<p>Традиционной, в плане изучения программирования в школах, университетах, курсах повышения квалификации и так далее – является архитектура, в которой мы явно управляем ходом выполнения программы. Это начинается с фактически процедурного турбо паскаля и идеологически продолжается в «рабочих» для бизнес-программирования языках (С# и Java). Каждое действие программы задается явно, т.е. если надо что-то пересчитать после добавления нового элемента в коллекцию, то так и пишут: сервис Х пересчитай мне коллекцию с помощью метода Z. Это – <strong>push</strong> модель, мы толкаем/принуждаем систему сделать определенные действия.</p>
<p>Более интересной является <strong>pull</strong> модель, когда объекты сами говорят о том, что с ними следует сделать. При той же ситуации, что описана выше, надо только добавить объект в коллекцию, а дальше уже коллекция сама может сказать сервису Х пересчитать себя с помощью метода Z. Система реагирует на события внутри себя.</p>
<p>Да, сначала все это может показаться несколько сумбурно и непонятно, однако на следующих примерах, я надеюсь, будут видны и плюсы pull модели и ее отличия от традиционного подхода.</p>
<p><br/>Читать далее <a href="http://softblog.violet-tape.ru/2012/01/30/hierarchy_and_rx/">Иерархичные структуры данных и промежуточные расчеты</a> (1,545 слов) <br/></p>
<hr />
<p><small>© <a href="http://softblog.violet-tape.ru">Violet Tape</a>, 2012. |
<a href="http://softblog.violet-tape.ru/2012/01/30/hierarchy_and_rx/">Постоянная ссылка</a> |
<a href="http://softblog.violet-tape.ru/2012/01/30/hierarchy_and_rx/#comments">Комментариев пока нет</a> |

<br/>
Тэги: <a href="http://softblog.violet-tape.ru/tag/events/" rel="tag">events</a>, <a href="http://softblog.violet-tape.ru/tag/rx/" rel="tag">Rx</a>, <a href="http://softblog.violet-tape.ru/tag/structures/" rel="tag">Structures</a><br/>
</small></p>
<p><small>Feed enhanced by <a href='http://planetozh.com/blog/my-projects/wordpress-plugin-better-feed-rss/'>Better Feed</a> from  <a href='http://planetozh.com/blog/'>Ozh</a></small></p>
]]></content:encoded>
			<wfw:commentRss>http://softblog.violet-tape.ru/2012/01/30/hierarchy_and_rx/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Тестирование событий с помощью Moq</title>
		<link>http://softblog.violet-tape.ru/2011/12/05/moq_and_async/</link>
		<comments>http://softblog.violet-tape.ru/2011/12/05/moq_and_async/#comments</comments>
		<pubDate>Mon, 05 Dec 2011 05:00:43 +0000</pubDate>
		<dc:creator>koissakh kadderah</dc:creator>
				<category><![CDATA[Архитектура]]></category>
		<category><![CDATA[Без рубрики]]></category>
		<category><![CDATA[Утилиты]]></category>
		<category><![CDATA[async]]></category>
		<category><![CDATA[BDD]]></category>
		<category><![CDATA[Fluent Interface]]></category>
		<category><![CDATA[Moq]]></category>
		<category><![CDATA[NBuilder]]></category>
		<category><![CDATA[TDD]]></category>

		<guid isPermaLink="false">http://softblog.violet-tape.ru/?p=1095</guid>
		<description><![CDATA[Вообще название статьи опять очень длинное на самом деле, что-то в духе: Тестирование сложных сценарий с событиями на примере Moq, связыванием StructureMap, построением объектов с помощью NBuilder, и проверки условий с помощью FluentAssertions. Но согласитесь, что это как-то чересчур и надо что-то выбрать одно, а то перечислять все технологии в заголовке плохо. Особенно когда рассматриваешь [...]]]></description>
			<content:encoded><![CDATA[<p>Вообще название статьи опять очень длинное на самом деле, что-то в духе: Тестирование сложных сценарий с событиями на примере <a href="http://code.google.com/p/moq/">Moq</a>, связыванием <a href="http://structuremap.net/structuremap/">StructureMap</a>, построением объектов с помощью <a href="http://nbuilder.org/">NBuilder</a>, и проверки условий с помощью <a href="http://fluentassertions.codeplex.com/">FluentAssertions</a>. Но согласитесь, что это как-то чересчур и надо что-то выбрать одно, а то перечислять все технологии в заголовке плохо. Особенно когда рассматриваешь пример не простого приложения типа Hello World.</p>
<p>При тестировании real-life приложения возникает очень много вопросов по реализации и использовании технологий, которые обычно не рассматриваются в обзорных статьях, которые копипастятся друг у друга блогерами и агрегаторами статей. Надеюсь, данная статья прольет свет на некоторые аспекты использования упомянутых технологий.</p>
<p><br/>Читать далее <a href="http://softblog.violet-tape.ru/2011/12/05/moq_and_async/">Тестирование событий с помощью Moq</a> (1,915 слов) <br/></p>
<hr />
<p><small>© <a href="http://softblog.violet-tape.ru">Violet Tape</a>, 2011. |
<a href="http://softblog.violet-tape.ru/2011/12/05/moq_and_async/">Постоянная ссылка</a> |
<a href="http://softblog.violet-tape.ru/2011/12/05/moq_and_async/#comments">Комментариев пока нет</a> |

<br/>
Тэги: <a href="http://softblog.violet-tape.ru/tag/async/" rel="tag">async</a>, <a href="http://softblog.violet-tape.ru/tag/bdd/" rel="tag">BDD</a>, <a href="http://softblog.violet-tape.ru/tag/fluent-interface/" rel="tag">Fluent Interface</a>, <a href="http://softblog.violet-tape.ru/tag/moq/" rel="tag">Moq</a>, <a href="http://softblog.violet-tape.ru/tag/nbuilder/" rel="tag">NBuilder</a>, <a href="http://softblog.violet-tape.ru/tag/tdd/" rel="tag">TDD</a><br/>
</small></p>
<p><small>Feed enhanced by <a href='http://planetozh.com/blog/my-projects/wordpress-plugin-better-feed-rss/'>Better Feed</a> from  <a href='http://planetozh.com/blog/'>Ozh</a></small></p>
]]></content:encoded>
			<wfw:commentRss>http://softblog.violet-tape.ru/2011/12/05/moq_and_async/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>TFS2011 – Создание проекта и настройка билд-сервера</title>
		<link>http://softblog.violet-tape.ru/2011/11/24/tfs2011-build-server/</link>
		<comments>http://softblog.violet-tape.ru/2011/11/24/tfs2011-build-server/#comments</comments>
		<pubDate>Thu, 24 Nov 2011 05:00:41 +0000</pubDate>
		<dc:creator>koissakh kadderah</dc:creator>
				<category><![CDATA[Процесс]]></category>
		<category><![CDATA[Build Server]]></category>
		<category><![CDATA[TFS]]></category>
		<category><![CDATA[VS]]></category>

		<guid isPermaLink="false">http://softblog.violet-tape.ru/?p=1049</guid>
		<description><![CDATA[После того, как я побывал на TechEd 2011 Russia, я получил заветный купон с промо-кодом для регистрации на http://tfspreview.com, где можно попробовать новый TFS в действии как сервис. По правде сказать, TFS можно теперь поставить себе локально и смотреть на него, и любоваться. Впрочем далее по тексту вы увидите, что TFS придется качать и устанавливать, [...]]]></description>
			<content:encoded><![CDATA[<div>
<p>После того, как я побывал на TechEd 2011 Russia, я получил заветный купон с промо-кодом для регистрации на <a href="http://tfspreview.com/">http://tfspreview.com</a>, где можно попробовать новый TFS в действии как сервис. По правде сказать, TFS можно теперь поставить себе локально и смотреть на него, и любоваться. Впрочем далее по тексту вы увидите, что TFS придется качать и устанавливать, но я задействовал только контроллер сборки.  Про новый TFS можно сказать много слов, но лучше всего описывает характеристика в духе: «Секси-секси!»</p>
<p><a href="http://softblog.violet-tape.ru/wp-content/uploads/2011/11/00.png"><img class="captionimg" class="alignnone size-full wp-image-1082" title="00" src="http://softblog.violet-tape.ru/wp-content/uploads/2011/11/00.png" alt="" width="469" height="88" /></a></p>
</div>
<p>В этот раз я хочу рассказать о практических аспектах настройки Team Foundation Server 2011, от создания проекта до настройки билд-сервера. Вообще я изначально хотел настроить только билд-сервер, так как без него счастье было бы не полным. Дальнейшее повествование не решает каких-то супер-сложных проблем, единственно что порой некоторые моменты не совсем понятны, но для этого статья и пишется.</p>
<p>Далее будет много картинок и совсем немного  текста.</p>
<p><br/>Читать далее <a href="http://softblog.violet-tape.ru/2011/11/24/tfs2011-build-server/">TFS2011 – Создание проекта и настройка билд-сервера</a> (1,162 слов) <br/></p>
<hr />
<p><small>© <a href="http://softblog.violet-tape.ru">Violet Tape</a>, 2011. |
<a href="http://softblog.violet-tape.ru/2011/11/24/tfs2011-build-server/">Постоянная ссылка</a> |
<a href="http://softblog.violet-tape.ru/2011/11/24/tfs2011-build-server/#comments">Комментариев 2 </a> |

<br/>
Тэги: <a href="http://softblog.violet-tape.ru/tag/build-server/" rel="tag">Build Server</a>, <a href="http://softblog.violet-tape.ru/tag/tfs/" rel="tag">TFS</a>, <a href="http://softblog.violet-tape.ru/tag/vs/" rel="tag">VS</a><br/>
</small></p>
<p><small>Feed enhanced by <a href='http://planetozh.com/blog/my-projects/wordpress-plugin-better-feed-rss/'>Better Feed</a> from  <a href='http://planetozh.com/blog/'>Ozh</a></small></p>
]]></content:encoded>
			<wfw:commentRss>http://softblog.violet-tape.ru/2011/11/24/tfs2011-build-server/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Dapper – micro-ORM &#8212; II</title>
		<link>http://softblog.violet-tape.ru/2011/11/16/dapper-micro-orm-ii/</link>
		<comments>http://softblog.violet-tape.ru/2011/11/16/dapper-micro-orm-ii/#comments</comments>
		<pubDate>Wed, 16 Nov 2011 05:00:29 +0000</pubDate>
		<dc:creator>koissakh kadderah</dc:creator>
				<category><![CDATA[SQL]]></category>
		<category><![CDATA[Процесс]]></category>
		<category><![CDATA[ORM]]></category>

		<guid isPermaLink="false">http://softblog.violet-tape.ru/?p=1026</guid>
		<description><![CDATA[Продвинутые возможности К продвинутым возможностям можем отнести выполнение пакетной вставки данных, получение и разбор нескольких запросов за раз, множественный маппинг. Пакетная вставка данных как пример использования списка параметров С помощью Dapper можно осуществлять пакетную вставку данных передав  список данных. Т.е. у нас есть список людей для внесения в базу данных, и с помощью единственной команды [...]]]></description>
			<content:encoded><![CDATA[<h1>Продвинутые возможности</h1>
<p>К продвинутым возможностям можем отнести выполнение пакетной вставки данных, получение и разбор нескольких запросов за раз, множественный маппинг.</p>
<h2>Пакетная вставка данных как пример использования списка параметров</h2>
<p>С помощью Dapper можно осуществлять пакетную вставку данных передав  список данных. Т.е. у нас есть список людей для внесения в базу данных, и с помощью единственной команды можно это провернуть. Лучше сразу на примере показать:</p>
<pre class="brush: sql">    public void ExecuteNonSelectBulkCommand() {
        con.Open();

        var list = new List();
        for (var i = 1; i &lt; 5; i++) {
            list.Add(new Person {
                                    PersonId = Guid.NewGuid(),
                                    Birth = new DateTime(1980, i, i),
                                    Name = "Pers " + i,
                                });
        }

        con.Execute("INSERT INTO Person (PersonId, Name, Birth) VALUES(@PersonId, @Name, @Birth)"
                    , list);

        var persons = con.Query("Select * from Person");
        foreach (var p in persons)
            Console.WriteLine("{0} {1} {2}", p.Name, p.Birth, p.Resident);

        con.Close();
    }</pre>
<p>Создаем несколько экземпляров класса Person, и передаем список в качестве параметра в команду Execute. Потом можно визуально проверить результат.</p>
<p>В качестве параметра для пакетной обработки может выступать любая коллекция, которая реализует интерфейс IEnumerable&lt;T&gt;.</p>
<p>Упс!</p>
<p><a href="http://softblog.violet-tape.ru/wp-content/uploads/2011/11/021.png"><img class="captionimg" class="alignnone size-full wp-image-1036" title="02" src="http://softblog.violet-tape.ru/wp-content/uploads/2011/11/021.png" alt="" width="549" height="240" /></a></p>
<p>Ничего же не менялось в коде, и все переменные указаны верно, в чем же дело?</p>
<p><br/>Читать далее <a href="http://softblog.violet-tape.ru/2011/11/16/dapper-micro-orm-ii/">Dapper – micro-ORM &#8212; II</a> (812 слов) <br/></p>
<hr />
<p><small>© <a href="http://softblog.violet-tape.ru">Violet Tape</a>, 2011. |
<a href="http://softblog.violet-tape.ru/2011/11/16/dapper-micro-orm-ii/">Постоянная ссылка</a> |
<a href="http://softblog.violet-tape.ru/2011/11/16/dapper-micro-orm-ii/#comments">Комментариев пока нет</a> |

<br/>
Тэги: <a href="http://softblog.violet-tape.ru/tag/orm/" rel="tag">ORM</a>, <a href="http://softblog.violet-tape.ru/tag/sql/" rel="tag">SQL</a><br/>
</small></p>
<p><small>Feed enhanced by <a href='http://planetozh.com/blog/my-projects/wordpress-plugin-better-feed-rss/'>Better Feed</a> from  <a href='http://planetozh.com/blog/'>Ozh</a></small></p>
]]></content:encoded>
			<wfw:commentRss>http://softblog.violet-tape.ru/2011/11/16/dapper-micro-orm-ii/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Dapper – micro-ORM &#8212; I</title>
		<link>http://softblog.violet-tape.ru/2011/11/14/dapper_micro-orm-i/</link>
		<comments>http://softblog.violet-tape.ru/2011/11/14/dapper_micro-orm-i/#comments</comments>
		<pubDate>Mon, 14 Nov 2011 05:00:43 +0000</pubDate>
		<dc:creator>koissakh kadderah</dc:creator>
				<category><![CDATA[SQL]]></category>
		<category><![CDATA[Процесс]]></category>
		<category><![CDATA[ORM]]></category>

		<guid isPermaLink="false">http://softblog.violet-tape.ru/?p=1025</guid>
		<description><![CDATA[Недавно я рассказывал про легковесную ORM BLToolkit, и при поиске и изучении материала неизбежно наталкивался на сравнение BLT с другими разработками в области мапирования данных на бизнес-объекты. Одним из самых привлекательных вариантов по скорости, а так же по вниманию общественности, оказался Dapper. Dapper – это даже не легковесная, а микро-ORM система для чтения (в основном) [...]]]></description>
			<content:encoded><![CDATA[<div>
<p>Недавно я <a href="http://softblog.violet-tape.ru/2011/11/01/bltoolkit-intro-i/">рассказывал</a> про легковесную ORM <a href="http://bltoolkit.net/default.aspx">BLToolkit</a>, и при поиске и изучении материала неизбежно наталкивался на сравнение BLT с другими разработками в области мапирования данных на бизнес-объекты. Одним из самых привлекательных вариантов по скорости, а так же по вниманию общественности, оказался <a href="http://code.google.com/p/dapper-dot-net/">Dapper</a>.</p>
</div>
<p>Dapper – это даже не легковесная, а микро-ORM система для чтения (в основном) информации из реляционных баз данных. Данная микро-ORM система является разработкой Сэма Сафрона (Sam Saffron) для <a href="http://stackoverflow.com/">Stack Overflow</a>, где она работает в связке с Linq2Sql. Для такого большого и посещаемого ресурса как Stack Overflow очень важно быстро получать информацию из базы данных, так как большинство пользователей просматривает ответы, использует их в своей работе, и сравнительно редко пишет. Для записи информации, что требуется значительно реже, до сих пор самым удобным и быстрым остается Linq2Sql.</p>
<h1>О системе</h1>
<p>Dapper – это по сути один файл с исходным кодом, который надо включить в свой проект. Dapper работает в некотором роде классом помощником, расширяя стандартный интерфейс IDbConnection с помощью extended методов. Т.е. данному фреймворку абсолютно без разницы, с какой базой вы работаете, если соединение с ней построено на указанном интерфейсе.</p>
<p><br/>Читать далее <a href="http://softblog.violet-tape.ru/2011/11/14/dapper_micro-orm-i/">Dapper – micro-ORM &#8212; I</a> (1,354 слов) <br/></p>
<hr />
<p><small>© <a href="http://softblog.violet-tape.ru">Violet Tape</a>, 2011. |
<a href="http://softblog.violet-tape.ru/2011/11/14/dapper_micro-orm-i/">Постоянная ссылка</a> |
<a href="http://softblog.violet-tape.ru/2011/11/14/dapper_micro-orm-i/#comments">Комментариев пока нет</a> |

<br/>
Тэги: <a href="http://softblog.violet-tape.ru/tag/orm/" rel="tag">ORM</a>, <a href="http://softblog.violet-tape.ru/tag/sql/" rel="tag">SQL</a><br/>
</small></p>
<p><small>Feed enhanced by <a href='http://planetozh.com/blog/my-projects/wordpress-plugin-better-feed-rss/'>Better Feed</a> from  <a href='http://planetozh.com/blog/'>Ozh</a></small></p>
]]></content:encoded>
			<wfw:commentRss>http://softblog.violet-tape.ru/2011/11/14/dapper_micro-orm-i/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ClickOnce, WPF, MSBuild и несколько окружений &#8212; II</title>
		<link>http://softblog.violet-tape.ru/2011/11/11/clickonce-wpf-msbuild-envs-ii/</link>
		<comments>http://softblog.violet-tape.ru/2011/11/11/clickonce-wpf-msbuild-envs-ii/#comments</comments>
		<pubDate>Fri, 11 Nov 2011 05:00:13 +0000</pubDate>
		<dc:creator>koissakh kadderah</dc:creator>
				<category><![CDATA[Процесс]]></category>
		<category><![CDATA[Build Environment]]></category>
		<category><![CDATA[ClickOnce]]></category>
		<category><![CDATA[Deployment]]></category>
		<category><![CDATA[MSBuild]]></category>
		<category><![CDATA[TFS]]></category>
		<category><![CDATA[WPF]]></category>

		<guid isPermaLink="false">http://softblog.violet-tape.ru/?p=999</guid>
		<description><![CDATA[Подготовка к трансформации проекта Чтобы у нас все получилось, потребуется скачать и установить на машине билд-сервера MSBuild Community Tasks Project, так же советую его поставить и на своей машине, для экспериментов и быстрого доступа к файлу справки. Данный пакет позволяет обращаться к реализации массы наиболее часто востребованных функций во время преобразований в процессе построения приложения [...]]]></description>
			<content:encoded><![CDATA[<h1>Подготовка к трансформации проекта</h1>
<p>Чтобы у нас все получилось, потребуется скачать и установить на машине билд-сервера <a href="http://msbuildtasks.tigris.org/">MSBuild Community Tasks Project</a>, так же советую его поставить и на своей машине, для экспериментов и быстрого доступа к файлу справки. Данный пакет позволяет обращаться к реализации массы наиболее часто востребованных функций во время преобразований в процессе построения приложения с помощью MSBuild. Пакет устанавливается по адресу C:\Program Files (x86)\MSBuild\MSBuildCommunityTasks, это чтобы вы быстро нашли справку по новым доступным задачам.</p>
<h2>Канон</h2>
<p>Так уж получается, что мы вносим серьезные изменения в процесс сборки приложения, и как все хорошие разработчики будем отделять мух от котлет, т.е. почти все существенные изменения будут производиться в отдельном файле.</p>
<p>MSBuild при сборке проекта руководствуется сложным набором правил и указаний, которые мы можем модифицировать или дополнять. Основные указания о сборке проекта содержаться в файле Common.CSharp.targets – который менять каким-либо образом крайне не рекомендуется. По принятому соглашению, все дополнения и расширения, касающиеся построения приложений должны иметь расширение <strong>.</strong><strong>targets</strong>, по сути это XML файл.</p>
<p><br/>Читать далее <a href="http://softblog.violet-tape.ru/2011/11/11/clickonce-wpf-msbuild-envs-ii/">ClickOnce, WPF, MSBuild и несколько окружений &#8212; II</a> (1,375 слов) <br/></p>
<hr />
<p><small>© <a href="http://softblog.violet-tape.ru">Violet Tape</a>, 2011. |
<a href="http://softblog.violet-tape.ru/2011/11/11/clickonce-wpf-msbuild-envs-ii/">Постоянная ссылка</a> |
<a href="http://softblog.violet-tape.ru/2011/11/11/clickonce-wpf-msbuild-envs-ii/#comments">Комментариев пока нет</a> |

<br/>
Тэги: <a href="http://softblog.violet-tape.ru/tag/build-environment/" rel="tag">Build Environment</a>, <a href="http://softblog.violet-tape.ru/tag/clickonce/" rel="tag">ClickOnce</a>, <a href="http://softblog.violet-tape.ru/tag/deployment/" rel="tag">Deployment</a>, <a href="http://softblog.violet-tape.ru/tag/msbuild/" rel="tag">MSBuild</a>, <a href="http://softblog.violet-tape.ru/tag/tfs/" rel="tag">TFS</a>, <a href="http://softblog.violet-tape.ru/tag/wpf/" rel="tag">WPF</a><br/>
</small></p>
<p><small>Feed enhanced by <a href='http://planetozh.com/blog/my-projects/wordpress-plugin-better-feed-rss/'>Better Feed</a> from  <a href='http://planetozh.com/blog/'>Ozh</a></small></p>
]]></content:encoded>
			<wfw:commentRss>http://softblog.violet-tape.ru/2011/11/11/clickonce-wpf-msbuild-envs-ii/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ClickOnce, WPF, MSBuild и несколько окружений &#8212; I</title>
		<link>http://softblog.violet-tape.ru/2011/11/09/clickonce-wpf-msbuild-envs-i/</link>
		<comments>http://softblog.violet-tape.ru/2011/11/09/clickonce-wpf-msbuild-envs-i/#comments</comments>
		<pubDate>Wed, 09 Nov 2011 05:00:43 +0000</pubDate>
		<dc:creator>koissakh kadderah</dc:creator>
				<category><![CDATA[Процесс]]></category>
		<category><![CDATA[Build Environment]]></category>
		<category><![CDATA[ClickOnce]]></category>
		<category><![CDATA[Deployment]]></category>
		<category><![CDATA[MSBuild]]></category>
		<category><![CDATA[TFS]]></category>
		<category><![CDATA[WPF]]></category>

		<guid isPermaLink="false">http://softblog.violet-tape.ru/?p=998</guid>
		<description><![CDATA[Или сказ о том, как сделать публикацию приложений в один клик на разные окружения для тестирования разных версий приложений на WPF с помощью ClickOnce и TFS 2010. На днях мне нужно было решить следующую, на мой взгляд, достаточно распространенную задачу, по размещению двух версий приложения. Одна версия QA – для тестирования текущих наработок, то, что [...]]]></description>
			<content:encoded><![CDATA[<p>Или сказ о том, как сделать публикацию приложений в один клик на разные окружения для тестирования разных версий приложений на WPF с помощью ClickOnce и TFS 2010.</p>
<p>На днях мне нужно было решить следующую, на мой взгляд, достаточно распространенную задачу, по размещению двух версий приложения. Одна версия QA – для тестирования текущих наработок, то, что реализуется каждый день: UI, логика, исправление мелких ошибок. Другая версия – Prod – для тестирования общих алгоритмов на реальных данных. В целом стандартная практика в мире разработки.</p>
<p>Решение этой задачи оказалось не столь стандартное и простое как я ожидал, для такой задачи. Но обо всем по порядку.</p>
<h1>Диспозиция</h1>
<p>В качестве исходных данных мы примем то, что у вас есть работоспособное приложение на WPF (для WinForm будет то же самое, но WPF более сложный случай), которое можно локально собрать в нескольких конфигурациях: Dev, QA(Cons), Prod.  Не важно, что именно у вас зависит от конфигурации, в общем случае, скорее всего это строки соединения с базой данных, оптимизация и логирование ошибок/действий пользователя.</p>
<p>Так же, как дополнительное условие, все конфигурации должны собираться на билд-сервере, в данном случае на TFS и при использовании MSBuild. То, что дальше описывается можно собирать локально, с помощью командной строки. Так что TFS – усложнение задачи, которое будем принимать во внимание.</p>
<p>И еще у вас успешно настроена на публикацию из VisualStudio с помощью ClickOnce хотя бы одна конфигурация приложения.</p>
<p>Еще раз, у нас есть:</p>
<ul>
<li>WPF приложение</li>
<li>У приложения несколько рабочих конфигураций</li>
<li>Все конфигурации компилируются на билд-сервере (TFS)</li>
<li>Хотя бы одна конфигурация публикуется с помощью ClickOnce из VisualStudio</li>
</ul>
<h1>Проблема</h1>
<p>В описанной системе все хорошо, все собирается на TFS, в разных конфигурациях. Т.е. я могу в любой момент получить рабочее приложение с любой конфигурацией. Однако распространение для пользователей идет только по линии QA. До определенного этапа разработки этого хватало. Теперь же надо опубликовать Prod, при этом на одном компьютере должны одновременно стоять как QA версия, так и Prod.<br />
Проблем с физической публикацией не возникло. Т.е. на сервер складываются разные версии приложения, <strong>но при установке пользователю, одна версия затирает другую</strong>.</p>
<p>Кроме этой проблемы вам придется решить еще ряд других, не менее важных задач, как например обеспечение версионности приложения.</p>
<p>Надеюсь, что проблема ясна, но я более подробно покажу еще раз, как приходят к этой ситуации и как ее решить во всех подробностях.</p>
<p><br/>Читать далее <a href="http://softblog.violet-tape.ru/2011/11/09/clickonce-wpf-msbuild-envs-i/">ClickOnce, WPF, MSBuild и несколько окружений &#8212; I</a> (1,392 слов) <br/></p>
<hr />
<p><small>© <a href="http://softblog.violet-tape.ru">Violet Tape</a>, 2011. |
<a href="http://softblog.violet-tape.ru/2011/11/09/clickonce-wpf-msbuild-envs-i/">Постоянная ссылка</a> |
<a href="http://softblog.violet-tape.ru/2011/11/09/clickonce-wpf-msbuild-envs-i/#comments">Комментариев пока нет</a> |

<br/>
Тэги: <a href="http://softblog.violet-tape.ru/tag/build-environment/" rel="tag">Build Environment</a>, <a href="http://softblog.violet-tape.ru/tag/clickonce/" rel="tag">ClickOnce</a>, <a href="http://softblog.violet-tape.ru/tag/deployment/" rel="tag">Deployment</a>, <a href="http://softblog.violet-tape.ru/tag/msbuild/" rel="tag">MSBuild</a>, <a href="http://softblog.violet-tape.ru/tag/tfs/" rel="tag">TFS</a>, <a href="http://softblog.violet-tape.ru/tag/wpf/" rel="tag">WPF</a><br/>
</small></p>
<p><small>Feed enhanced by <a href='http://planetozh.com/blog/my-projects/wordpress-plugin-better-feed-rss/'>Better Feed</a> from  <a href='http://planetozh.com/blog/'>Ozh</a></small></p>
]]></content:encoded>
			<wfw:commentRss>http://softblog.violet-tape.ru/2011/11/09/clickonce-wpf-msbuild-envs-i/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>BLToolkit. Intro &#8212; II</title>
		<link>http://softblog.violet-tape.ru/2011/11/03/bltoolkit-intro-ii/</link>
		<comments>http://softblog.violet-tape.ru/2011/11/03/bltoolkit-intro-ii/#comments</comments>
		<pubDate>Thu, 03 Nov 2011 05:00:38 +0000</pubDate>
		<dc:creator>koissakh kadderah</dc:creator>
				<category><![CDATA[SQL]]></category>
		<category><![CDATA[Общее]]></category>
		<category><![CDATA[Утилиты]]></category>
		<category><![CDATA[BLToolkit]]></category>
		<category><![CDATA[CQRS]]></category>
		<category><![CDATA[L2S]]></category>
		<category><![CDATA[ORM]]></category>

		<guid isPermaLink="false">http://softblog.violet-tape.ru/?p=989</guid>
		<description><![CDATA[Хранимые процедуры Для многих разработчиков является нормой сделать всю работу с базой на хранимых процедурах, лет десять назад это было очень популярно. Впрочем, еще много ситуации когда без хранимых процедур будет тяжело обходиться, так что посмотрим, как же работать с ними с помощью BLToolkit. Начнем с написания хранимой процедуры. Пусть нам требуется выборка людей старше [...]]]></description>
			<content:encoded><![CDATA[<h1>Хранимые процедуры</h1>
<p>Для многих разработчиков является нормой сделать всю работу с базой на хранимых процедурах, лет десять назад это было очень популярно. Впрочем, еще много ситуации когда без хранимых процедур будет тяжело обходиться, так что посмотрим, как же работать с ними с помощью BLToolkit.</p>
<p>Начнем с написания хранимой процедуры. Пусть нам требуется выборка людей старше определенного возраста.</p>
<pre class="brush: sql">create procedure Person_GetOlderThan(
		@Age int
)
as
set nocount on;

select PersonId
      ,Name
      ,Birth
      ,Resident
      ,Gender
      ,Weight
      ,Height
  from dbo.Person
 where datediff(yy,Birth, getdate()) &gt; @Age</pre>
<p><br/>Читать далее <a href="http://softblog.violet-tape.ru/2011/11/03/bltoolkit-intro-ii/">BLToolkit. Intro &#8212; II</a> (1,284 слов) <br/></p>
<hr />
<p><small>© <a href="http://softblog.violet-tape.ru">Violet Tape</a>, 2011. |
<a href="http://softblog.violet-tape.ru/2011/11/03/bltoolkit-intro-ii/">Постоянная ссылка</a> |
<a href="http://softblog.violet-tape.ru/2011/11/03/bltoolkit-intro-ii/#comments">Комментариев пока нет</a> |

<br/>
Тэги: <a href="http://softblog.violet-tape.ru/tag/bltoolkit/" rel="tag">BLToolkit</a>, <a href="http://softblog.violet-tape.ru/tag/cqrs/" rel="tag">CQRS</a>, <a href="http://softblog.violet-tape.ru/tag/l2s/" rel="tag">L2S</a>, <a href="http://softblog.violet-tape.ru/tag/orm/" rel="tag">ORM</a><br/>
</small></p>
<p><small>Feed enhanced by <a href='http://planetozh.com/blog/my-projects/wordpress-plugin-better-feed-rss/'>Better Feed</a> from  <a href='http://planetozh.com/blog/'>Ozh</a></small></p>
]]></content:encoded>
			<wfw:commentRss>http://softblog.violet-tape.ru/2011/11/03/bltoolkit-intro-ii/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>BLToolkit. Intro &#8212; I</title>
		<link>http://softblog.violet-tape.ru/2011/11/01/bltoolkit-intro-i/</link>
		<comments>http://softblog.violet-tape.ru/2011/11/01/bltoolkit-intro-i/#comments</comments>
		<pubDate>Tue, 01 Nov 2011 05:00:18 +0000</pubDate>
		<dc:creator>koissakh kadderah</dc:creator>
				<category><![CDATA[SQL]]></category>
		<category><![CDATA[Общее]]></category>
		<category><![CDATA[Утилиты]]></category>
		<category><![CDATA[BLToolkit]]></category>
		<category><![CDATA[CQRS]]></category>
		<category><![CDATA[L2S]]></category>
		<category><![CDATA[ORM]]></category>

		<guid isPermaLink="false">http://softblog.violet-tape.ru/?p=982</guid>
		<description><![CDATA[Уже достаточно давно меня интересует тема CQRS, но пока что все останавливалось на изучении документов, примеров и самому написать что-то используя подход CQRS не доводилось. В последние дни работа в этом направлении активизировалась с новой силой, и пошлел процесс по исследованию инструментов более всего пригодных для реализации этой концепции. Наверно так повлияла конференция Patterns’n’Practices, когда [...]]]></description>
			<content:encoded><![CDATA[<div>
<p>Уже достаточно давно меня интересует тема CQRS, но пока что все останавливалось на изучении документов, примеров и самому написать что-то используя подход CQRS не доводилось. В последние дни работа в этом направлении активизировалась с новой силой, и пошлел процесс по исследованию инструментов более всего пригодных для реализации этой концепции. Наверно так повлияла конференция Patterns’n’Practices, когда было объявлено что к концу года команда выпустит гайдлайны по реализации CQRS на практике.</p>
</div>
<p>Одной из ключевых вещей является непосредственное получение информации из базы данных без промежуточных программных слоев. Такое получение данных должно быть быстрое и простое. Простое и быстрое. По многочисленным источникам и по результатам сайта <a href="http://ormbattle.net/">ORM Battle</a> был выбран для экспериментов <a href="http://bltoolkit.net/">BLToolkit</a>.</p>
<p>Насчет скорости работы есть диаграмма сравнения с другими фреймворками на 30 июля 2011 года:</p>
<p><a href="http://softblog.violet-tape.ru/wp-content/uploads/2011/10/01.png"><img class="captionimg" class="alignnone size-full wp-image-983" title="01" src="http://softblog.violet-tape.ru/wp-content/uploads/2011/10/01.png" alt="" width="764" height="636" /></a></p>
<p>Не могу не вспомнить фразу с презентации на NDC2011 по поводу Kill your ORM, где ведущий высказался в таком духе: «Linq2Sql вышел слишком простым и быстрым, поэтому придумали EF. Больше абстракций!».</p>
<p>Первой фазой я решил проверить легкость использования и различные нюансы построения классов для маппинга, так как обычно уже на этой фазе начинают вылезать разные неприятные моменты использования.</p>
<p>На официальном сайте есть что-то в духе вводного курса, но как обычно это и бывает, многие вещи писатели держали в уме и считали само-собой разумеющееся. Разобраться можно, но последовательность повествования надо поменять, что я и попробую сейчас сделать, надеюсь, что получится яснее.</p>
<p><br/>Читать далее <a href="http://softblog.violet-tape.ru/2011/11/01/bltoolkit-intro-i/">BLToolkit. Intro &#8212; I</a> (1,073 слов) <br/></p>
<hr />
<p><small>© <a href="http://softblog.violet-tape.ru">Violet Tape</a>, 2011. |
<a href="http://softblog.violet-tape.ru/2011/11/01/bltoolkit-intro-i/">Постоянная ссылка</a> |
<a href="http://softblog.violet-tape.ru/2011/11/01/bltoolkit-intro-i/#comments">Комментариев пока нет</a> |

<br/>
Тэги: <a href="http://softblog.violet-tape.ru/tag/bltoolkit/" rel="tag">BLToolkit</a>, <a href="http://softblog.violet-tape.ru/tag/cqrs/" rel="tag">CQRS</a>, <a href="http://softblog.violet-tape.ru/tag/l2s/" rel="tag">L2S</a>, <a href="http://softblog.violet-tape.ru/tag/orm/" rel="tag">ORM</a><br/>
</small></p>
<p><small>Feed enhanced by <a href='http://planetozh.com/blog/my-projects/wordpress-plugin-better-feed-rss/'>Better Feed</a> from  <a href='http://planetozh.com/blog/'>Ozh</a></small></p>
]]></content:encoded>
			<wfw:commentRss>http://softblog.violet-tape.ru/2011/11/01/bltoolkit-intro-i/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

