<?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>Serge&#039;s Technology View &#187; .net 3.5</title>
	<atom:link href="http://blog.dragonsoft.us/tag/net-35/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.dragonsoft.us</link>
	<description>Talk about Technologies, Software Architecture and Management</description>
	<lastBuildDate>Tue, 20 Apr 2010 14:42:38 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Crystal Reports 2010 &#8211; rumors are out</title>
		<link>http://blog.dragonsoft.us/2010/03/01/crystal-reports-2010-rumors-are-out/</link>
		<comments>http://blog.dragonsoft.us/2010/03/01/crystal-reports-2010-rumors-are-out/#comments</comments>
		<pubDate>Mon, 01 Mar 2010 13:18:16 +0000</pubDate>
		<dc:creator>Serguei Dosyukov</dc:creator>
				<category><![CDATA[Crystal Reports]]></category>
		<category><![CDATA[.net 3.5]]></category>
		<category><![CDATA[64 bit runtime]]></category>
		<category><![CDATA[asp.net]]></category>
		<category><![CDATA[crystal reports 2010]]></category>
		<category><![CDATA[excel 2007 export]]></category>
		<category><![CDATA[new features]]></category>
		<category><![CDATA[sap]]></category>
		<category><![CDATA[visual studio 2010]]></category>
		<category><![CDATA[wpf]]></category>
		<category><![CDATA[wpf viewer]]></category>
		<category><![CDATA[xlsx support]]></category>

		<guid isPermaLink="false">http://blog.dragonsoft.us/?p=1121</guid>
		<description><![CDATA[It has been two years since Crystal Reports 2008 was released. It feels old now &#8211; no support for new .Net technologies, no support for new export formats, etc. So question is &#8211; when we would see any of this? Accordingly to Blair Wheadon,  Product Manager in the Volume Business Unit at SAP, our cries may [...]]]></description>
			<content:encoded><![CDATA[<p>It has been two years since Crystal Reports 2008 was released. It feels old now &#8211; no support for new .Net technologies, no support for new export formats, etc.</p>
<p>So question is &#8211; when we would see any of this?</p>
<p>Accordingly to <a onclick="this.href='http://www.sdn.sap.com/irj/scn/weblogs?blog=/pub/u/251930783';" href="http://weblogs.sdn.sap.com/pub/u/251930783" target="_top">Blair Wheadon</a>,  Product Manager in the Volume Business Unit at SAP, our <a href="http://www.sdn.sap.com/irj/scn/weblogs?blog=/pub/wlg/14514" target="_blank">cries may be answered relatively soon</a>.</p>
<p>Post is a nice summary and I hope features discussed would be in the final product.</p>
<p>Few highlights I pick for myself and with comments:</p>
<ul>
<li><em>Crystal Reports Basic will no longer be included in Visual Studio 2010<br />
</em>Finally! Every time I have to set-up Visual Studio environment, I have to make sure I do not bring CR Basic along since I have a full version instead.<br />
Do not worry &#8220;<em>Crystal Reports for Visual Studio 2010 will be provided by SAP as a free download, no registration required</em>&#8220;.<br />
<em>We are committed to have a beta version at the time that Visual Studio 2010 goes GA. A production release will be no later than Q3 2010</em></li>
<li>There are slight changes in Licensing&#8230; as usual, read it through.</li>
<li><em>64-bit run-time support.<br />
</em>Good! Platform independent code for .Net applications.</li>
<li><em>New WPF Viewer<br />
</em>Even better! No more .Net 2.0 assemblies (I hope)</li>
<li><em>New XLSX export to take advantage of the big grid for data-only Excel exports<br />
</em>Finally! 64K page limit is inconvenient, to say the least.</li>
</ul>
<p>You can read about other more or less important improvements in Blair&#8217;s post, but these are answers for questions I was looking for.</p>
<hr/><span style="font-size: 7pt">Copyright &copy; 2010 <strong><a href="http://blog.dragonsoft.us">Serge&#039;s Technology View</a></strong>. This Feed is for personal non-commercial use only.</span>]]></content:encoded>
			<wfw:commentRss>http://blog.dragonsoft.us/2010/03/01/crystal-reports-2010-rumors-are-out/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Assert is your friend&#8230; not an end-user&#8217;s</title>
		<link>http://blog.dragonsoft.us/2009/01/15/assert-is-your-friend-not-end-users/</link>
		<comments>http://blog.dragonsoft.us/2009/01/15/assert-is-your-friend-not-end-users/#comments</comments>
		<pubDate>Thu, 15 Jan 2009 22:24:22 +0000</pubDate>
		<dc:creator>Serguei Dosyukov</dc:creator>
				<category><![CDATA[Delphi]]></category>
		<category><![CDATA[Fun stuff with C#]]></category>
		<category><![CDATA[.net 3.5]]></category>
		<category><![CDATA[assert]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[debug.assert]]></category>
		<category><![CDATA[delphi]]></category>
		<category><![CDATA[trace.assert]]></category>

		<guid isPermaLink="false">http://blog.dragonsoft.us/?p=777</guid>
		<description><![CDATA[As a long time Delphi and C# programmer one become used to some features of the language and may not go deep into &#8220;philosophical&#8221; thinking about such features. This often happen with Asserts&#8230; What is Assert or Assertion? By its definition Assert: state categorically affirm: to declare or affirm solemnly and formally as true insist: [...]]]></description>
			<content:encoded><![CDATA[<p>As a long time Delphi and C# programmer one become used to some features of the language and may not go deep into &#8220;philosophical&#8221; thinking about such features. This often happen with <strong>Asserts</strong>&#8230;</p>
<h3>What is Assert or Assertion?</h3>
<p>By its definition <strong>Assert</strong>:</p>
<ul>
<li>state categorically</li>
<li>affirm: to declare or affirm solemnly and formally as true</li>
<li>insist: assert to be true</li>
<li>In Computing (<a href="http://en.wikipedia.org/wiki/Assert" target="_blank">wiki</a>): &#8220;an <strong>assert</strong> is a predicate (i.e., a true–false statement) placed in a program to indicate that the developer <em>thinks</em> that the predicate is always true at that place&#8221;</li>
</ul>
<p>In general, using <strong>assert</strong> in the code proven to be useful in many situations because it &#8220;<a href="http://msdn.microsoft.com/en-us/library/aa326827.aspx" target="_blank">checks for a condition and outputs the call stack if the condition is <strong>false</strong></a>&#8221; and it could help to debug some strange situations in the code.</p>
<h3><a href="http://www.codeproject.com/KB/cpp/assertisyourfriend.aspx" target="_blank">Assert is your friend</a></h3>
<p>This method is for programmers to use. But what happen often when something is convenient, it started to be used excessively. Why it is happening?</p>
<p>Let&#8217;s look at the declaration of <strong>Assert</strong> in C# (3.x). There are two versions of the <strong>Assert()</strong>: <a href="http://msdn.microsoft.com/en-us/library/system.diagnostics.debug.assert.aspx" target="_blank"><strong>Debug.Assert()</strong></a> and <a href="http://msdn.microsoft.com/en-us/library/system.diagnostics.trace.assert.aspx" target="_blank"><strong>Trace.Assert()</strong></a>, both in <strong>System.Diagnostics </strong>namespace.</p>
<pre class="brush: csharp;">
// Checks for a condition and outputs the call stack
// if the condition is false

[ConditionalAttribute(&quot;TRACE&quot;)]
public static void Assert(bool condition)

[ConditionalAttribute(&quot;TRACE&quot;)]
public static void Assert(bool condition, string message)

[ConditionalAttribute(&quot;DEBUG&quot;)]
public static void Assert(bool condition)

[ConditionalAttribute(&quot;DEBUG&quot;)]
public static void Assert(bool condition, string message)</pre>
<p>As we can see from above code, Assert is to be used for <span style="text-decoration: underline;">Testing</span> and <span style="text-decoration: underline;">Debugging</span> and therefore should not be used as a way to present any information to the <strong>end-user.</strong></p>
<h3>Helping yourself</h3>
<p>As useful as it seems, even then Assert infrastructure may not be used to full extend. In the sample declarations above we can see that logic can be invoked with and without providing any additional information.<br />
Imagine how useful is a message &#8220;Project raised an Assert in line X&#8221; compare to &#8220;Project raised an Assert with the Message in line X&#8221;.<br />
First option gives you idea where something failed, where second actually tells you what went wrongand where. Let&#8217;s use power of the tool-set and provide ourselves with useful information.</p>
<h3>Assert is NOT for an end-user</h3>
<p>I was asked recently (this seems to be a ongoing discussion) &#8211; &#8220;Why a programmer should not be using asserts as a regular approach in code conditions validation even when it comes to a production code?&#8221;</p>
<p>By default, Assert would show a message box with some information and the current Call Stack. This information, while being helpful to the developer, would not tell much to the user.</p>
<p>With custom <span><a id="ctl00_rs1_mainContentContainer_ctl73" onclick="function onclick() { function onclick() { function onclick() { function onclick() { Track('ctl00_rs1_mainContentContainer_cpe285485_c|ctl00_rs1_mainContentContainer_ctl73',this); } } } }" href="http://msdn.microsoft.com/en-us/library/system.diagnostics.tracelistener.aspx"><span style="color: #0033cc;">TraceListener</span></a></span> introduced, message can be hidden from the user and information could be stored, but it is not how it should be used by definition.</p>
<p>If information is expected to be presented to the user in any form, it could be achieved in a form not an exceptional, intended for debugging, situation, but by using regular methods: message box, application log, Windows event log, etc.<br />
Even in the case of component development it is desired to use exceptions (<strong>raise/throw</strong>) to &#8220;bubble&#8221; proper message to the error handling layer.</p>
<blockquote><p>The <span><span class="input">throw</span></span> statement is used to signal the occurrence of an anomalous situation (exception) during the program execution.</p></blockquote>
<h3>Assert is a conditional logic</h3>
<p>Last, final and probably major concern here is that in Release environment Debug and even Trace functionality would be disabled and therefore, any code/logic which depend on Assert() would be suppressed and all the nice validations became worthless (see declaration above)&#8230; and Access Violation errors starting pop up unexpectedly.</p>
<hr/><span style="font-size: 7pt">Copyright &copy; 2010 <strong><a href="http://blog.dragonsoft.us">Serge&#039;s Technology View</a></strong>. This Feed is for personal non-commercial use only.</span>]]></content:encoded>
			<wfw:commentRss>http://blog.dragonsoft.us/2009/01/15/assert-is-your-friend-not-end-users/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
