<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:copyright="http://blogs.law.harvard.edu/tech/rss" xmlns:image="http://purl.org/rss/1.0/modules/image/"><channel><title>Прочее</title><link>http://spass.name/category/7.aspx</link><description>Прочее</description><language>ru-RU</language><copyright>Anton Spass</copyright><managingEditor>anton@spass.name</managingEditor><generator>Subtext Version 1.4.1.0</generator><image><title>Inter nos</title><url>http://spass.name/RSS2Image.gif</url><link>http://spass.name/Default.aspx</link><width>77</width><height>60</height><description /></image><item><title>Microsoft Virtual Server: как увеличить размер VHD-диска</title><link>http://spass.name/archive/2006/05/16/1619.aspx</link><description>
		&lt;p&gt;
				&lt;img alt="virtual server r2 logo" hspace="5" src="http://spass.name/images/virtualserverr2.jpg" align="baseline" vspace="5" border="0" /&gt;Работающим с &lt;a href="http://http://www.microsoft.com/windowsserversystem/virtualserver/default.mspx"&gt;Microsoft Virtual Server &lt;/a&gt;(он, кстати, теперь абсолютно бесплатен!) известно, что динамически расширяюшиеся виртуальные диски (Dynamically expanding virtual hard disk) являются наиболее рациональным способом распределения дискового пространства. &lt;/p&gt;
		&lt;p&gt;Однако как быть, если предел расширения диска (maximum virtual hard disk size) достигнут? К сожалению, Virtual Server Administration Website не предлагает out-of-the-box функциональности увеличения размера диска. &lt;/p&gt;
		&lt;p&gt;Задача решается в два приема&lt;/p&gt;
		&lt;ul&gt;
				&lt;li&gt;создать новый, более емкий виртуальный диск 
&lt;/li&gt;
				&lt;li&gt;находясь в виртуальной машине, скопировать в него содержимое исходного диска, используя Disk Imaging software &lt;/li&gt;
		&lt;/ul&gt;
		&lt;p&gt;Norton Ghost, например, справляется с задачей на "ура"&lt;/p&gt;
&lt;img src="http://spass.name/aggbug/1619.aspx" width="1" height="1" /&gt;</description><author>anton@spass.name</author><guid>http://spass.name/archive/2006/05/16/1619.aspx</guid><pubDate>Tue, 16 May 2006 03:01:00 GMT</pubDate><wfw:comment>http://spass.name/comments/1619.aspx</wfw:comment><comments>http://spass.name/archive/2006/05/16/1619.aspx#feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://spass.name/comments/commentRss/1619.aspx</wfw:commentRss><trackback:ping>http://spass.name/services/trackbacks/1619.aspx</trackback:ping><body xmlns="http://www.w3.org/1999/xhtml">
		<p>
				<img alt="virtual server r2 logo" hspace="5" src="http://spass.name/images/virtualserverr2.jpg" align="baseline" vspace="5" border="0" />Работающим с <a href="http://http://www.microsoft.com/windowsserversystem/virtualserver/default.mspx">Microsoft Virtual Server </a>(он, кстати, теперь абсолютно бесплатен!) известно, что динамически расширяюшиеся виртуальные диски (Dynamically expanding virtual hard disk) являются наиболее рациональным способом распределения дискового пространства. </p>
		<p>Однако как быть, если предел расширения диска (maximum virtual hard disk size) достигнут? К сожалению, Virtual Server Administration Website не предлагает out-of-the-box функциональности увеличения размера диска. </p>
		<p>Задача решается в два приема</p>
		<ul>
				<li>создать новый, более емкий виртуальный диск 
</li>
				<li>находясь в виртуальной машине, скопировать в него содержимое исходного диска, используя Disk Imaging software </li>
		</ul>
		<p>Norton Ghost, например, справляется с задачей на "ура"</p>
<img src="http://spass.name/aggbug/1619.aspx" width="1" height="1" /></body></item><item><title>Official release: Subversion commandline client working with _svn system dir in working copies</title><link>http://spass.name/archive/2006/01/17/1085.aspx</link><description>
		&lt;p&gt;(В продолжение &lt;a href="http://spass.name/archive/2004/10/05/157.aspx"&gt;этого поста&lt;/a&gt;)&lt;/p&gt;
		&lt;p&gt;
				&lt;strong&gt;Свершилось! &lt;/strong&gt;
		&lt;/p&gt;
		&lt;p&gt;Отныне &lt;a href="http://subversion.tigris.org/"&gt;Subversion&lt;/a&gt; &lt;strong&gt;официально&lt;/strong&gt; поддерживает параметризацию имени служебного каталога в рабочих копиях. Для изменения дефолтового имени каталога (i.e. ".svn") требуется установить удобное значение (e.g. “_svn“) в переменную окружения SVN_ASP_DOT_NET_HACK.&lt;/p&gt;
		&lt;p&gt;Имя переменной окружения, надо сказать, попахивает humiliation-ом по отношению к Microsoft-ориентированным разработчикам. Я думаю, вполне можно было подобрать имя покороче и поэлегантнее. Однако полезность фичи неоспорима.&lt;/p&gt;
		&lt;p&gt;Подробнее в &lt;a href="http://subversion.tigris.org/svn_1.3_releasenotes.html"&gt;Release notes&lt;/a&gt; к версии 1.3.0&lt;/p&gt;
		&lt;p&gt;Обновляемся &lt;a href="http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=91"&gt;тут&lt;/a&gt;&lt;/p&gt;
		&lt;p&gt; &lt;/p&gt;
&lt;img src="http://spass.name/aggbug/1085.aspx" width="1" height="1" /&gt;</description><author>anton@spass.name</author><guid>http://spass.name/archive/2006/01/17/1085.aspx</guid><pubDate>Tue, 17 Jan 2006 20:01:00 GMT</pubDate><wfw:comment>http://spass.name/comments/1085.aspx</wfw:comment><comments>http://spass.name/archive/2006/01/17/1085.aspx#feedback</comments><wfw:commentRss>http://spass.name/comments/commentRss/1085.aspx</wfw:commentRss><trackback:ping>http://spass.name/services/trackbacks/1085.aspx</trackback:ping><body xmlns="http://www.w3.org/1999/xhtml">
		<p>(В продолжение <a href="http://spass.name/archive/2004/10/05/157.aspx">этого поста</a>)</p>
		<p>
				<strong>Свершилось! </strong>
		</p>
		<p>Отныне <a href="http://subversion.tigris.org/">Subversion</a> <strong>официально</strong> поддерживает параметризацию имени служебного каталога в рабочих копиях. Для изменения дефолтового имени каталога (i.e. ".svn") требуется установить удобное значение (e.g. “_svn“) в переменную окружения SVN_ASP_DOT_NET_HACK.</p>
		<p>Имя переменной окружения, надо сказать, попахивает humiliation-ом по отношению к Microsoft-ориентированным разработчикам. Я думаю, вполне можно было подобрать имя покороче и поэлегантнее. Однако полезность фичи неоспорима.</p>
		<p>Подробнее в <a href="http://subversion.tigris.org/svn_1.3_releasenotes.html">Release notes</a> к версии 1.3.0</p>
		<p>Обновляемся <a href="http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=91">тут</a></p>
		<p> </p>
<img src="http://spass.name/aggbug/1085.aspx" width="1" height="1" /></body></item><item><title>Coding4Fun 2005 Holiday Gift Guide</title><link>http://spass.name/archive/2005/12/09/944.aspx</link><description>&lt;p&gt;В преддверии предстоящих праздников данное &lt;a href="http://msdn.microsoft.com/coding4fun/holiday/giftguide/default.aspx"&gt;руководство&lt;/a&gt; вполне может оказаться полезным. Особенно впечатлил &lt;em&gt;Coding Bumper Sticker ;-)&lt;/em&gt;&lt;/p&gt;&lt;img src="http://spass.name/aggbug/944.aspx" width="1" height="1" /&gt;</description><author>anton.spass@offshorecreations.com</author><guid>http://spass.name/archive/2005/12/09/944.aspx</guid><pubDate>Fri, 09 Dec 2005 11:20:00 GMT</pubDate><wfw:comment>http://spass.name/comments/944.aspx</wfw:comment><comments>http://spass.name/archive/2005/12/09/944.aspx#feedback</comments><wfw:commentRss>http://spass.name/comments/commentRss/944.aspx</wfw:commentRss><trackback:ping>http://spass.name/services/trackbacks/944.aspx</trackback:ping></item><item><title>How Much Is My Blog Worth</title><link>http://spass.name/archive/2005/10/27/683.aspx</link><description>&lt;BR&gt;
&lt;DIV style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 0px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 0px; PADDING-BOTTOM: 10px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 115px; PADDING-TOP: 0px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: white; TEXT-ALIGN: center"&gt;
&lt;P style="MARGIN: 0px"&gt;&lt;IMG style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" src="http://static.flickr.com/23/25822676_789bf55448_t.jpg"&gt;&lt;BR&gt;&lt;SPAN style="FONT-SIZE: 11px"&gt;My &lt;A href=""&gt;blog&lt;/A&gt; is worth &lt;B&gt;$2,258.16&lt;/B&gt;.&lt;/SPAN&gt;&lt;BR&gt;&lt;SPAN style="FONT-SIZE: 10px"&gt;&lt;A href="http://www.business-opportunities.biz/projects/how-much-is-your-blog-worth/"&gt;How much is your blog worth?&lt;/A&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;A style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" href="http://www.technorati.com/"&gt;&lt;IMG style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" src="http://technorati.com/pix/tech-logo-embed.gif"&gt;&lt;/A&gt;&lt;/P&gt;&lt;/DIV&gt;&lt;img src="http://spass.name/aggbug/683.aspx" width="1" height="1" /&gt;</description><author>anton.spass@offshorecreations.com</author><guid>http://spass.name/archive/2005/10/27/683.aspx</guid><pubDate>Thu, 27 Oct 2005 10:08:00 GMT</pubDate><wfw:comment>http://spass.name/comments/683.aspx</wfw:comment><comments>http://spass.name/archive/2005/10/27/683.aspx#feedback</comments><slash:comments>24</slash:comments><wfw:commentRss>http://spass.name/comments/commentRss/683.aspx</wfw:commentRss><trackback:ping>http://spass.name/services/trackbacks/683.aspx</trackback:ping></item><item><title>One year online !</title><link>http://spass.name/archive/2005/06/26/272.aspx</link><description>
		&lt;p&gt;
				&lt;font color="#ff0000"&gt;
						&lt;font color="#008000"&gt;Чуть было не пропустил дату... Так вот, блогу исполнился&lt;/font&gt;
						&lt;strong&gt;1 ГОД&lt;/strong&gt;
				&lt;/font&gt;
				&lt;font color="#008000"&gt;!!! &lt;/font&gt;
				&lt;img src="/images/smile_party.gif" /&gt; &lt;font color="#008000"&gt;Не ахти какой юбилей, но вы меня понимаете :)&lt;/font&gt;&lt;/p&gt;
&lt;img src="http://spass.name/aggbug/272.aspx" width="1" height="1" /&gt;</description><author>anton@spass.name</author><guid>http://spass.name/archive/2005/06/26/272.aspx</guid><pubDate>Sun, 26 Jun 2005 16:55:00 GMT</pubDate><wfw:comment>http://spass.name/comments/272.aspx</wfw:comment><comments>http://spass.name/archive/2005/06/26/272.aspx#feedback</comments><wfw:commentRss>http://spass.name/comments/commentRss/272.aspx</wfw:commentRss><trackback:ping>http://spass.name/services/trackbacks/272.aspx</trackback:ping><body xmlns="http://www.w3.org/1999/xhtml">
		<p>
				<font color="#ff0000">
						<font color="#008000">Чуть было не пропустил дату... Так вот, блогу исполнился</font>
						<strong>1 ГОД</strong>
				</font>
				<font color="#008000">!!! </font>
				<img src="/images/smile_party.gif" /> <font color="#008000">Не ахти какой юбилей, но вы меня понимаете :)</font></p>
<img src="http://spass.name/aggbug/272.aspx" width="1" height="1" /></body></item><item><title>Transact-SQL: Text (ntext) concatenation</title><link>http://spass.name/archive/2005/06/04/212.aspx</link><description>&lt;P&gt;Типы данных text (ntext), строковые по своей природе, теоретически допускают операцию конкатенацию. Однако особенности хранения и доступа к ним в SQL Server не позволяют использовать для конкатенации стандартную операцию "+", применимую для строковый типов (например, varchar).&lt;/P&gt;
&lt;P&gt;Дело в том, что в общем случае поле типа text(ntext) не хранит данные как таковые, а содержит лишь указатель на расположение данных, данные же&amp;nbsp;хранятся за пределами row (подробнее см. документацию по Sql Server 2000).&lt;/P&gt;&lt;p&gt;&lt;IMG src="/images/ntextDataStorage.GIF"&gt;&lt;/p&gt;
&lt;P&gt;И хотя в SQL Server 2000 существует возможность включить опцию хранения данных непосредственно в row (см. sp_tableoption, text in row), механизма доступа к данным через Transact-SQL это не изменит.&lt;/P&gt;
&lt;P&gt;&lt;U&gt;Задача&lt;/U&gt;&lt;/P&gt;
&lt;P&gt;Имеем таблицу, содержащую поле [info] типа ntext. &lt;BR&gt;&lt;/P&gt;&lt;p&gt;&lt;IMG src="/images/txTable.GIF"&gt;&lt;/p&gt;
&lt;P&gt;Необходимо вернуть значение, сформированное из всех [info] для записей, соответствующих заданному [itemId].&lt;/P&gt;
&lt;P&gt;&lt;U&gt;Решение&lt;/U&gt;&lt;/P&gt;
&lt;P&gt;Попробуем осуществить конкатенацию text используя арсенал Transact-SQL для работы с бинарными данными:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;EM&gt;TEXTPTR&lt;/EM&gt; - функция захвата адреса данных из поля типа text (ntext) 
&lt;LI&gt;&lt;EM&gt;UPDATETEXT&lt;/EM&gt; - функция обновления данных в поле типа text c использованием&lt;BR&gt;адресов, полученных через TEXTPTR&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Для формирования выходного значения используем поле [info] временной таблицы #tmpInfoTable. Создадим курсор txCursor для доступа к исходным значениям Transaction.[info].&lt;BR&gt;&lt;/P&gt;
&lt;pre&gt;&lt;span style="color: Black; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;

&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;CREATE&lt;/span&gt; &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;TABLE&lt;/span&gt; #tmpInfoTable
(
 [itemId] &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;int&lt;/span&gt;
 ,[info] &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;ntext&lt;/span&gt;
)

&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;INSERT&lt;/span&gt; &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;INTO&lt;/span&gt; #tmpInfoTable([itemId], [info]) &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;values&lt;/span&gt; (@itemId, &lt;span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;''&lt;/span&gt;)

&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;DECLARE&lt;/span&gt; @ptrDestination &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;varbinary&lt;/span&gt;(16)
&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;DECLARE&lt;/span&gt; @ptrSrc &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;varbinary&lt;/span&gt;(16)

&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;SELECT&lt;/span&gt; @ptrDestination = &lt;span style="color: Fuchsia; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;TEXTPTR&lt;/span&gt;([info]) 
&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;FROM&lt;/span&gt; #tmpInfoTable

&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;DECLARE&lt;/span&gt; txCursor &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;CURSOR&lt;/span&gt; &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;FOR&lt;/span&gt;
&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;SELECT&lt;/span&gt;  &lt;span style="color: Fuchsia; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;TEXTPTR&lt;/span&gt;(tx.info) 
&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;FROM&lt;/span&gt; [&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;Transaction&lt;/span&gt;] tx
&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;WHERE&lt;/span&gt; [itemId] = @itemId
 
&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;OPEN&lt;/span&gt; txCursor
&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;FETCH&lt;/span&gt;  NEXT &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;FROM&lt;/span&gt; txCursor &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;into&lt;/span&gt; @ptrSrc
&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;WHILE&lt;/span&gt;  &lt;span style="color: Fuchsia; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;@@FETCH_STATUS&lt;/span&gt; = 0
&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;BEGIN&lt;/span&gt;
 &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;updatetext&lt;/span&gt; 
  #tmpInfoTable.[info] @ptrDestination 
  &lt;span style="color: Silver; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;null&lt;/span&gt; 
  &lt;span style="color: Silver; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;null&lt;/span&gt;  
  &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;Transaction&lt;/span&gt;.Info @ptrSrc
  
 &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;FETCH&lt;/span&gt; NEXT &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;FROM&lt;/span&gt; txCursor &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;into&lt;/span&gt; @ptrSrc
&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;END&lt;/span&gt;

&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;CLOSE&lt;/span&gt; txCursor
&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;DEALLOCATE&lt;/span&gt; txCursor

&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;SELECT&lt;/span&gt; [info] &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;from&lt;/span&gt; #tmpInfoTable

&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;DROP&lt;/span&gt; &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;TABLE&lt;/span&gt; #tmpInfoTable

&lt;/span&gt;&lt;/pre&gt;&lt;img src="http://spass.name/aggbug/212.aspx" width="1" height="1" /&gt;</description><author>anton.spass@offshorecreations.com</author><guid>http://spass.name/archive/2005/06/04/212.aspx</guid><pubDate>Sat, 04 Jun 2005 21:49:00 GMT</pubDate><wfw:comment>http://spass.name/comments/212.aspx</wfw:comment><comments>http://spass.name/archive/2005/06/04/212.aspx#feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://spass.name/comments/commentRss/212.aspx</wfw:commentRss><trackback:ping>http://spass.name/services/trackbacks/212.aspx</trackback:ping></item><item><title>Refactoring XSLT</title><link>http://spass.name/archive/2005/05/31/211.aspx</link><description>Фанаты рефакторинга оценят (если еще не сталкивались) &lt;a href="http://dev4net.com/blog/archive/2004/11/29/900.aspx"&gt;статью&lt;/a&gt; Дона Смита (Don Smith) о рефакторинге XSLT.&lt;img src="http://spass.name/aggbug/211.aspx" width="1" height="1" /&gt;</description><author>anton.spass@offshorecreations.com</author><guid>http://spass.name/archive/2005/05/31/211.aspx</guid><pubDate>Tue, 31 May 2005 11:00:00 GMT</pubDate><wfw:comment>http://spass.name/comments/211.aspx</wfw:comment><comments>http://spass.name/archive/2005/05/31/211.aspx#feedback</comments><wfw:commentRss>http://spass.name/comments/commentRss/211.aspx</wfw:commentRss><trackback:ping>http://spass.name/services/trackbacks/211.aspx</trackback:ping></item><item><title>Новая книга: Мартин Фаулер UML. Основы. 3-е издание</title><link>http://spass.name/archive/2005/02/01/193.aspx</link><description>&lt;P&gt;Наконец (спустя почти год после выхода оригинала), появился перевод &lt;STRONG&gt;3-го издания&lt;/STRONG&gt; замечательной книги &lt;STRONG&gt;Мартина Фаулера "UML. Основы."&lt;/STRONG&gt; &lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://www.books.ru/img/233379.jpg" align=right border=0&gt;Книга хоть и не является полным справочником по UML, зато прекрасно подойдет в качестве Quick Reference, а также послужит отличным учебником для тех, кто только начинает осваивать этот язык, либо желает ознакомиться с нотациями UML версии 2. А личность автора, думаю, не требует каких-либо дополнительных рекоммендаций.&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;Если вы собираетесь приобрести только одну книгу по UML, то должны купить именно эту.&lt;BR&gt;Энди Кармайкл, BetterSoftwareFaster, Ltd.&lt;/EM&gt;&lt;/P&gt;
&lt;br&gt;&lt;br&gt;&lt;br&gt;
&lt;P&gt;Подробнее о книге на сайте &lt;A href="http://www.books.ru/shop/books/233379"&gt;издательства&lt;/A&gt;.&lt;/P&gt;&lt;img src="http://spass.name/aggbug/193.aspx" width="1" height="1" /&gt;</description><author>anton.spass@offshorecreations.com</author><guid>http://spass.name/archive/2005/02/01/193.aspx</guid><pubDate>Tue, 01 Feb 2005 21:36:00 GMT</pubDate><wfw:comment>http://spass.name/comments/193.aspx</wfw:comment><comments>http://spass.name/archive/2005/02/01/193.aspx#feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://spass.name/comments/commentRss/193.aspx</wfw:commentRss><trackback:ping>http://spass.name/services/trackbacks/193.aspx</trackback:ping></item><item><title>New article published</title><link>http://spass.name/archive/2005/01/10/186.aspx</link><description>&lt;P&gt;Опубликована статья &lt;A href="http://spass.name/articles/185.aspx"&gt;SVN Brief HowTo&lt;/A&gt;&lt;/P&gt;&lt;img src="http://spass.name/aggbug/186.aspx" width="1" height="1" /&gt;</description><author>anton.spass@offshorecreations.com</author><guid>http://spass.name/archive/2005/01/10/186.aspx</guid><pubDate>Mon, 10 Jan 2005 11:48:00 GMT</pubDate><wfw:comment>http://spass.name/comments/186.aspx</wfw:comment><comments>http://spass.name/archive/2005/01/10/186.aspx#feedback</comments><wfw:commentRss>http://spass.name/comments/commentRss/186.aspx</wfw:commentRss><trackback:ping>http://spass.name/services/trackbacks/186.aspx</trackback:ping></item><item><title>.Text: edit post bugfix</title><link>http://spass.name/archive/2004/12/19/180.aspx</link><description>
		&lt;p&gt;
				&lt;u&gt;Проблема&lt;/u&gt;
		&lt;/p&gt;
		&lt;p&gt;При редактировании поста через MetaBlogApi .Text возвращает сообщение об ошибке ‘Specified Cast Not Valid’.&lt;/p&gt;
		&lt;p&gt;
				&lt;u&gt;Workaround&lt;/u&gt;
		&lt;/p&gt;
		&lt;p&gt;Как выяснилось, проблема вызвана багой в текущей stable версии .Text (Dottext 0.95.2004.102). И хотя Скотт подготовил &lt;a href="http://scottwater.com/dottextdownloads/095_tempfix.zip"&gt;фикс&lt;/a&gt; для устранения баги, фикс доступен только в bin версии. Это означает, что если вы собирали приложение из исходных кодов, и вносили туда изменения, изменения будут закрыты фиксом. Как поступить? &lt;/p&gt;
		&lt;p&gt;На помощь приходит &lt;a href="http://www.aisto.com/roeder/dotnet/"&gt;Lutz Roeder’s .Net Reflector&lt;/a&gt; – замечательное свободное приложение, являющее дальнейшим развитием стандартного инструмента ildasm. Примение .Net Reflector к сборкам из фикса Скотта позволило устновить, что для исправления баги требуется внести изменения в файлы DataHelper.cs и SqlDataProvider.cs (проект Dottext.Framework.csproj). Ниже приведены подробности.&lt;/p&gt;
		&lt;p&gt;
				&lt;strong&gt;DataHelper.cs&lt;/strong&gt;
		&lt;/p&gt;
&lt;pre&gt;&lt;span style="color: Black; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt; 
&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;public&lt;/span&gt; &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;static&lt;/span&gt; CategoryEntry 
LoadSingleCategoryEntry(IDataReader reader)
{
   CategoryEntry entry1 &lt;span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;=&lt;/span&gt; &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;new&lt;/span&gt; CategoryEntry();
   &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;if&lt;/span&gt; (reader[&lt;span style="color: #666666; background-color: #e4e4e4; font-family: Courier New; font-size: 11px"&gt;"Author"&lt;/span&gt;] !&lt;span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;=&lt;/span&gt; DBNull.Value)
   {
    entry1.Author &lt;span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;=&lt;/span&gt; (&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;string&lt;/span&gt;) reader[&lt;span style="color: #666666; background-color: #e4e4e4; font-family: Courier New; font-size: 11px"&gt;"Author"&lt;/span&gt;];
   }
   &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;if&lt;/span&gt; (reader[&lt;span style="color: #666666; background-color: #e4e4e4; font-family: Courier New; font-size: 11px"&gt;"Email"&lt;/span&gt;] !&lt;span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;=&lt;/span&gt; DBNull.Value)
   {
    entry1.Email &lt;span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;=&lt;/span&gt; (&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;string&lt;/span&gt;) reader[&lt;span style="color: #666666; background-color: #e4e4e4; font-family: Courier New; font-size: 11px"&gt;"Email"&lt;/span&gt;];
   }
   entry1.DateCreated &lt;span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;=&lt;/span&gt; (DateTime) reader[&lt;span style="color: #666666; background-color: #e4e4e4; font-family: Courier New; font-size: 11px"&gt;"DateAdded"&lt;/span&gt;];
   entry1.DateUpdated &lt;span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;=&lt;/span&gt; (DateTime) reader[&lt;span style="color: #666666; background-color: #e4e4e4; font-family: Courier New; font-size: 11px"&gt;"DateUpdated"&lt;/span&gt;];
   entry1.EntryID &lt;span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;=&lt;/span&gt; (&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;int&lt;/span&gt;) reader[&lt;span style="color: #666666; background-color: #e4e4e4; font-family: Courier New; font-size: 11px"&gt;"ID"&lt;/span&gt;];
   &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;if&lt;/span&gt; (reader[&lt;span style="color: #666666; background-color: #e4e4e4; font-family: Courier New; font-size: 11px"&gt;"TitleUrl"&lt;/span&gt;] !&lt;span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;=&lt;/span&gt; DBNull.Value)
   {
    entry1.TitleUrl &lt;span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;=&lt;/span&gt; (&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;string&lt;/span&gt;) reader[&lt;span style="color: #666666; background-color: #e4e4e4; font-family: Courier New; font-size: 11px"&gt;"TitleUrl"&lt;/span&gt;];
   }
   &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;if&lt;/span&gt; (reader[&lt;span style="color: #666666; background-color: #e4e4e4; font-family: Courier New; font-size: 11px"&gt;"SourceName"&lt;/span&gt;] !&lt;span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;=&lt;/span&gt; DBNull.Value)
   {
    entry1.SourceName &lt;span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;=&lt;/span&gt; (&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;string&lt;/span&gt;) reader[&lt;span style="color: #666666; background-color: #e4e4e4; font-family: Courier New; font-size: 11px"&gt;"SourceName"&lt;/span&gt;];
   }
   &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;if&lt;/span&gt; (reader[&lt;span style="color: #666666; background-color: #e4e4e4; font-family: Courier New; font-size: 11px"&gt;"SourceUrl"&lt;/span&gt;] !&lt;span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;=&lt;/span&gt; DBNull.Value)
   {
    entry1.SourceUrl &lt;span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;=&lt;/span&gt; (&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;string&lt;/span&gt;) reader[&lt;span style="color: #666666; background-color: #e4e4e4; font-family: Courier New; font-size: 11px"&gt;"SourceUrl"&lt;/span&gt;];
   }
   &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;if&lt;/span&gt; (reader[&lt;span style="color: #666666; background-color: #e4e4e4; font-family: Courier New; font-size: 11px"&gt;"Description"&lt;/span&gt;] !&lt;span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;=&lt;/span&gt; DBNull.Value)
   {
    entry1.Description &lt;span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;=&lt;/span&gt; (&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;string&lt;/span&gt;) reader[&lt;span style="color: #666666; background-color: #e4e4e4; font-family: Courier New; font-size: 11px"&gt;"Description"&lt;/span&gt;];
   }
   &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;if&lt;/span&gt; (reader[&lt;span style="color: #666666; background-color: #e4e4e4; font-family: Courier New; font-size: 11px"&gt;"EntryName"&lt;/span&gt;] !&lt;span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;=&lt;/span&gt; DBNull.Value)
   {
    entry1.EntryName &lt;span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;=&lt;/span&gt; (&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;string&lt;/span&gt;) reader[&lt;span style="color: #666666; background-color: #e4e4e4; font-family: Courier New; font-size: 11px"&gt;"EntryName"&lt;/span&gt;];
   }
   entry1.FeedBackCount &lt;span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;=&lt;/span&gt; (&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;int&lt;/span&gt;) reader[&lt;span style="color: #666666; background-color: #e4e4e4; font-family: Courier New; font-size: 11px"&gt;"FeedBackCount"&lt;/span&gt;];
   entry1.Body &lt;span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;=&lt;/span&gt; (&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;string&lt;/span&gt;) reader[&lt;span style="color: #666666; background-color: #e4e4e4; font-family: Courier New; font-size: 11px"&gt;"Text"&lt;/span&gt;];
   entry1.Title &lt;span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;=&lt;/span&gt; (&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;string&lt;/span&gt;) reader[&lt;span style="color: #666666; background-color: #e4e4e4; font-family: Courier New; font-size: 11px"&gt;"Title"&lt;/span&gt;];
   entry1.PostConfig &lt;span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;=&lt;/span&gt; (PostConfig) ((&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;int&lt;/span&gt;) reader[&lt;span style="color: #666666; background-color: #e4e4e4; font-family: Courier New; font-size: 11px"&gt;"PostConfig"&lt;/span&gt;]);
   entry1.ParentID &lt;span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;=&lt;/span&gt; (&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;int&lt;/span&gt;) reader[&lt;span style="color: #666666; background-color: #e4e4e4; font-family: Courier New; font-size: 11px"&gt;"ParentID"&lt;/span&gt;];
   DataHelper.SetUrlPattern(entry1);
   reader.NextResult();
   ArrayList list1 &lt;span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;=&lt;/span&gt; &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;new&lt;/span&gt; ArrayList();
   &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;while&lt;/span&gt; (reader.Read())
   {
    list1.Add((&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;string&lt;/span&gt;) reader[&lt;span style="color: #666666; background-color: #e4e4e4; font-family: Courier New; font-size: 11px"&gt;"Title"&lt;/span&gt;]);
   }
   &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;if&lt;/span&gt; (list1.Count &amp;amp;gt; 0)
   {
    entry1.Categories &lt;span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;=&lt;/span&gt; (&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;string&lt;/span&gt;[]) list1.ToArray(&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;typeof&lt;/span&gt;(&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;string&lt;/span&gt;));
   }
   &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;return&lt;/span&gt; entry1;
}
 &lt;/span&gt;&lt;/pre&gt; &lt;br /&gt;&lt;p&gt;&lt;strong&gt;SqlDataProvider.cs&lt;/strong&gt;&lt;/p&gt;&lt;pre&gt;&lt;span style="color: Black; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt; 
&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;public&lt;/span&gt; &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;bool&lt;/span&gt; UpdateCategoryEntry(CategoryEntry ce)
{

      &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;bool&lt;/span&gt; flag1 &lt;span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;=&lt;/span&gt; &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;this&lt;/span&gt;.UpdateEntry(ce);
      SqlConnection connection1 &lt;span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;=&lt;/span&gt; 
&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;new&lt;/span&gt; SqlConnection(&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;this&lt;/span&gt;.ConnectionString);
      &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;try&lt;/span&gt;
      {
            connection1.Open();
            &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;this&lt;/span&gt;.DeleteCategoriesByPostID
(ce.EntryID, connection1);
            &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;if&lt;/span&gt; ((ce.Categories == &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;null&lt;/span&gt;) 
|| (ce.Categories.Length &amp;amp;lt;= 0))
            {
                  &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;return&lt;/span&gt; flag1;
            }
            SqlParameter[] parameterArray1 &lt;span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;=&lt;/span&gt; &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;new&lt;/span&gt; SqlParameter[3] 
{ &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;new&lt;/span&gt; SqlParameter
(&lt;span style="color: #666666; background-color: #e4e4e4; font-family: Courier New; font-size: 11px"&gt;"@Title"&lt;/span&gt;, SqlDbType.NVarChar, 150), 
SqlHelper.MakeInParam(&lt;span style="color: #666666; background-color: #e4e4e4; font-family: Courier New; font-size: 11px"&gt;"@PostID"&lt;/span&gt;, SqlDbType.Int, 4, 
ce.EntryID), 
&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;this&lt;/span&gt;.BlogIDParam } ;
            &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;string&lt;/span&gt;[] textArray1 &lt;span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;=&lt;/span&gt; ce.Categories;
            &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;for&lt;/span&gt;
(&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;int&lt;/span&gt; num1 &lt;span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;=&lt;/span&gt; 0; num1 &amp;amp;lt; textArray1.Length; num1++)
            {
                  parameterArray1[0].Value &lt;span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;=&lt;/span&gt; textArray1[num1];
                  &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;this&lt;/span&gt;.InsertLinkByCategoryName(parameterArray1, 
connection1);
            }
      }
      &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;finally&lt;/span&gt;
      {
            &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;if&lt;/span&gt; (connection1.State == ConnectionState.Open)
            {
                  connection1.Close();
            }
      }
      &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;return&lt;/span&gt; flag1;
}

&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;private&lt;/span&gt; &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;void&lt;/span&gt; DeleteCategoriesByPostID(&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;int&lt;/span&gt; postID, 
SqlConnection conn)
{
   SqlParameter[] parameterArray1 &lt;span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;=&lt;/span&gt; &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;new&lt;/span&gt; SqlParameter[2] 
{ SqlHelper.MakeInParam
(&lt;span style="color: #666666; background-color: #e4e4e4; font-family: Courier New; font-size: 11px"&gt;"@PostID"&lt;/span&gt;, SqlDbType.Int, 4, postID), 
&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px"&gt;this&lt;/span&gt;.BlogIDParam } ;
   SqlHelper.ExecuteNonQuery(conn, 
CommandType.StoredProcedure, 
&lt;span style="color: #666666; background-color: #e4e4e4; font-family: Courier New; font-size: 11px"&gt;"blog_DeleteLinksByPostID"&lt;/span&gt;, 
parameterArray1);
}

 &lt;/span&gt;&lt;/pre&gt;&lt;img src="http://spass.name/aggbug/180.aspx" width="1" height="1" /&gt;</description><author>anton@spass.name</author><guid>http://spass.name/archive/2004/12/19/180.aspx</guid><pubDate>Sun, 19 Dec 2004 19:46:00 GMT</pubDate><wfw:comment>http://spass.name/comments/180.aspx</wfw:comment><comments>http://spass.name/archive/2004/12/19/180.aspx#feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://spass.name/comments/commentRss/180.aspx</wfw:commentRss><trackback:ping>http://spass.name/services/trackbacks/180.aspx</trackback:ping><body xmlns="http://www.w3.org/1999/xhtml">
		<p>
				<u>Проблема</u>
		</p>
		<p>При редактировании поста через MetaBlogApi .Text возвращает сообщение об ошибке ‘Specified Cast Not Valid’.</p>
		<p>
				<u>Workaround</u>
		</p>
		<p>Как выяснилось, проблема вызвана багой в текущей stable версии .Text (Dottext 0.95.2004.102). И хотя Скотт подготовил <a href="http://scottwater.com/dottextdownloads/095_tempfix.zip">фикс</a> для устранения баги, фикс доступен только в bin версии. Это означает, что если вы собирали приложение из исходных кодов, и вносили туда изменения, изменения будут закрыты фиксом. Как поступить? </p>
		<p>На помощь приходит <a href="http://www.aisto.com/roeder/dotnet/">Lutz Roeder’s .Net Reflector</a> – замечательное свободное приложение, являющее дальнейшим развитием стандартного инструмента ildasm. Примение .Net Reflector к сборкам из фикса Скотта позволило устновить, что для исправления баги требуется внести изменения в файлы DataHelper.cs и SqlDataProvider.cs (проект Dottext.Framework.csproj). Ниже приведены подробности.</p>
		<p>
				<strong>DataHelper.cs</strong>
		</p>
<pre><span style="color: Black; background-color: Transparent; font-family: Courier New; font-size: 11px"> 
<span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px">public</span> <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px">static</span> CategoryEntry 
LoadSingleCategoryEntry(IDataReader reader)
{
   CategoryEntry entry1 <span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px">=</span> <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px">new</span> CategoryEntry();
   <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px">if</span> (reader[<span style="color: #666666; background-color: #e4e4e4; font-family: Courier New; font-size: 11px">"Author"</span>] !<span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px">=</span> DBNull.Value)
   {
    entry1.Author <span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px">=</span> (<span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px">string</span>) reader[<span style="color: #666666; background-color: #e4e4e4; font-family: Courier New; font-size: 11px">"Author"</span>];
   }
   <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px">if</span> (reader[<span style="color: #666666; background-color: #e4e4e4; font-family: Courier New; font-size: 11px">"Email"</span>] !<span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px">=</span> DBNull.Value)
   {
    entry1.Email <span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px">=</span> (<span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px">string</span>) reader[<span style="color: #666666; background-color: #e4e4e4; font-family: Courier New; font-size: 11px">"Email"</span>];
   }
   entry1.DateCreated <span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px">=</span> (DateTime) reader[<span style="color: #666666; background-color: #e4e4e4; font-family: Courier New; font-size: 11px">"DateAdded"</span>];
   entry1.DateUpdated <span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px">=</span> (DateTime) reader[<span style="color: #666666; background-color: #e4e4e4; font-family: Courier New; font-size: 11px">"DateUpdated"</span>];
   entry1.EntryID <span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px">=</span> (<span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px">int</span>) reader[<span style="color: #666666; background-color: #e4e4e4; font-family: Courier New; font-size: 11px">"ID"</span>];
   <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px">if</span> (reader[<span style="color: #666666; background-color: #e4e4e4; font-family: Courier New; font-size: 11px">"TitleUrl"</span>] !<span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px">=</span> DBNull.Value)
   {
    entry1.TitleUrl <span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px">=</span> (<span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px">string</span>) reader[<span style="color: #666666; background-color: #e4e4e4; font-family: Courier New; font-size: 11px">"TitleUrl"</span>];
   }
   <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px">if</span> (reader[<span style="color: #666666; background-color: #e4e4e4; font-family: Courier New; font-size: 11px">"SourceName"</span>] !<span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px">=</span> DBNull.Value)
   {
    entry1.SourceName <span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px">=</span> (<span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px">string</span>) reader[<span style="color: #666666; background-color: #e4e4e4; font-family: Courier New; font-size: 11px">"SourceName"</span>];
   }
   <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px">if</span> (reader[<span style="color: #666666; background-color: #e4e4e4; font-family: Courier New; font-size: 11px">"SourceUrl"</span>] !<span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px">=</span> DBNull.Value)
   {
    entry1.SourceUrl <span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px">=</span> (<span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px">string</span>) reader[<span style="color: #666666; background-color: #e4e4e4; font-family: Courier New; font-size: 11px">"SourceUrl"</span>];
   }
   <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px">if</span> (reader[<span style="color: #666666; background-color: #e4e4e4; font-family: Courier New; font-size: 11px">"Description"</span>] !<span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px">=</span> DBNull.Value)
   {
    entry1.Description <span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px">=</span> (<span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px">string</span>) reader[<span style="color: #666666; background-color: #e4e4e4; font-family: Courier New; font-size: 11px">"Description"</span>];
   }
   <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px">if</span> (reader[<span style="color: #666666; background-color: #e4e4e4; font-family: Courier New; font-size: 11px">"EntryName"</span>] !<span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px">=</span> DBNull.Value)
   {
    entry1.EntryName <span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px">=</span> (<span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px">string</span>) reader[<span style="color: #666666; background-color: #e4e4e4; font-family: Courier New; font-size: 11px">"EntryName"</span>];
   }
   entry1.FeedBackCount <span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px">=</span> (<span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px">int</span>) reader[<span style="color: #666666; background-color: #e4e4e4; font-family: Courier New; font-size: 11px">"FeedBackCount"</span>];
   entry1.Body <span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px">=</span> (<span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px">string</span>) reader[<span style="color: #666666; background-color: #e4e4e4; font-family: Courier New; font-size: 11px">"Text"</span>];
   entry1.Title <span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px">=</span> (<span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px">string</span>) reader[<span style="color: #666666; background-color: #e4e4e4; font-family: Courier New; font-size: 11px">"Title"</span>];
   entry1.PostConfig <span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px">=</span> (PostConfig) ((<span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px">int</span>) reader[<span style="color: #666666; background-color: #e4e4e4; font-family: Courier New; font-size: 11px">"PostConfig"</span>]);
   entry1.ParentID <span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px">=</span> (<span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px">int</span>) reader[<span style="color: #666666; background-color: #e4e4e4; font-family: Courier New; font-size: 11px">"ParentID"</span>];
   DataHelper.SetUrlPattern(entry1);
   reader.NextResult();
   ArrayList list1 <span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px">=</span> <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px">new</span> ArrayList();
   <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px">while</span> (reader.Read())
   {
    list1.Add((<span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px">string</span>) reader[<span style="color: #666666; background-color: #e4e4e4; font-family: Courier New; font-size: 11px">"Title"</span>]);
   }
   <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px">if</span> (list1.Count &amp;gt; 0)
   {
    entry1.Categories <span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px">=</span> (<span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px">string</span>[]) list1.ToArray(<span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px">typeof</span>(<span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px">string</span>));
   }
   <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px">return</span> entry1;
}
 </span></pre> <br /><p><strong>SqlDataProvider.cs</strong></p><pre><span style="color: Black; background-color: Transparent; font-family: Courier New; font-size: 11px"> 
<span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px">public</span> <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px">bool</span> UpdateCategoryEntry(CategoryEntry ce)
{

      <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px">bool</span> flag1 <span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px">=</span> <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px">this</span>.UpdateEntry(ce);
      SqlConnection connection1 <span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px">=</span> 
<span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px">new</span> SqlConnection(<span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px">this</span>.ConnectionString);
      <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px">try</span>
      {
            connection1.Open();
            <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px">this</span>.DeleteCategoriesByPostID
(ce.EntryID, connection1);
            <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px">if</span> ((ce.Categories == <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px">null</span>) 
|| (ce.Categories.Length &amp;lt;= 0))
            {
                  <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px">return</span> flag1;
            }
            SqlParameter[] parameterArray1 <span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px">=</span> <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px">new</span> SqlParameter[3] 
{ <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px">new</span> SqlParameter
(<span style="color: #666666; background-color: #e4e4e4; font-family: Courier New; font-size: 11px">"@Title"</span>, SqlDbType.NVarChar, 150), 
SqlHelper.MakeInParam(<span style="color: #666666; background-color: #e4e4e4; font-family: Courier New; font-size: 11px">"@PostID"</span>, SqlDbType.Int, 4, 
ce.EntryID), 
<span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px">this</span>.BlogIDParam } ;
            <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px">string</span>[] textArray1 <span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px">=</span> ce.Categories;
            <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px">for</span>
(<span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px">int</span> num1 <span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px">=</span> 0; num1 &amp;lt; textArray1.Length; num1++)
            {
                  parameterArray1[0].Value <span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px">=</span> textArray1[num1];
                  <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px">this</span>.InsertLinkByCategoryName(parameterArray1, 
connection1);
            }
      }
      <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px">finally</span>
      {
            <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px">if</span> (connection1.State == ConnectionState.Open)
            {
                  connection1.Close();
            }
      }
      <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px">return</span> flag1;
}

<span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px">private</span> <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px">void</span> DeleteCategoriesByPostID(<span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px">int</span> postID, 
SqlConnection conn)
{
   SqlParameter[] parameterArray1 <span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px">=</span> <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px">new</span> SqlParameter[2] 
{ SqlHelper.MakeInParam
(<span style="color: #666666; background-color: #e4e4e4; font-family: Courier New; font-size: 11px">"@PostID"</span>, SqlDbType.Int, 4, postID), 
<span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px">this</span>.BlogIDParam } ;
   SqlHelper.ExecuteNonQuery(conn, 
CommandType.StoredProcedure, 
<span style="color: #666666; background-color: #e4e4e4; font-family: Courier New; font-size: 11px">"blog_DeleteLinksByPostID"</span>, 
parameterArray1);
}

 </span></pre><img src="http://spass.name/aggbug/180.aspx" width="1" height="1" /></body></item></channel></rss>