<?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</title>
	<atom:link href="http://blog.dragonsoft.us/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.dragonsoft.us</link>
	<description>Talk about Technologies, Software Architecture and Management</description>
	<lastBuildDate>Mon, 01 Mar 2010 23:46:06 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<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 be answered [...]]]></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>SQL Server: Tables, Views and missing columns</title>
		<link>http://blog.dragonsoft.us/2010/02/26/tables-views-missing-columns/</link>
		<comments>http://blog.dragonsoft.us/2010/02/26/tables-views-missing-columns/#comments</comments>
		<pubDate>Fri, 26 Feb 2010 13:42:30 +0000</pubDate>
		<dc:creator>Serguei Dosyukov</dc:creator>
				<category><![CDATA[Fun stuff with SQL Server]]></category>
		<category><![CDATA[invalid column]]></category>
		<category><![CDATA[invalid data]]></category>
		<category><![CDATA[refresh metadata]]></category>
		<category><![CDATA[refresh object]]></category>
		<category><![CDATA[refresh view]]></category>
		<category><![CDATA[script]]></category>
		<category><![CDATA[sp_refreshsqlmodule]]></category>
		<category><![CDATA[sp_refreshview]]></category>
		<category><![CDATA[sql server]]></category>
		<category><![CDATA[view schema]]></category>

		<guid isPermaLink="false">http://blog.dragonsoft.us/?p=1109</guid>
		<description><![CDATA[When it comes to non-schema-bound-views (NSB View) it is important to remember that there is no schema bound between objects used in the view and metadata for a view.
Let&#8217;s look at the following scenario:
-- Create Table_1
CREATE TABLE dbo.Table_1 (Col_A int NULL, Col_B numeric(18, 0) NULL, Col_C nvarchar(50) NULL) ON [PRIMARY]
GO;
--
-- Add data
INSERT dbo.Table_1 (Col_A, Col_B, Col_C) [...]]]></description>
			<content:encoded><![CDATA[<p>When it comes to <strong>non-schema-bound-views</strong> (NSB View) it is important to remember that <strong>there is no schema bound between objects used in the view and metadata for a view</strong>.</p>
<p>Let&#8217;s look at the following scenario:</p>
<pre class="brush: sql;">-- Create Table_1
CREATE TABLE dbo.Table_1 (Col_A int NULL, Col_B numeric(18, 0) NULL, Col_C nvarchar(50) NULL) ON [PRIMARY]
GO;
--
-- Add data
INSERT dbo.Table_1 (Col_A, Col_B, Col_C) VALUES (10, 10.5, 'ABC');
INSERT dbo.Table_1 (Col_A, Col_B, Col_C) VALUES (20, 0.5, 'DEFG');
--
-- Create View
CREATE view [dbo].[vw_MyView] AS
SELECT TBL.*, (TBL.Col_A * TBL.Col_B) AS ColMult FROM dbo.Table_1 TBL
GO;</pre>
<p>Attempt to use the view would give the following result:</p>
<pre class="brush: plain;">Col_A, Col_B, Col_C, ColMult
=================================
10, 10.5, ABC, 105
20, 0.5, DEFG, 10
</pre>
<p>So far we are OK. But &#8220;fun&#8221; starts when a new column is added to the table</p>
<p><strong>Case #1 &#8211; bad:</strong></p>
<pre class="brush: sql;">ALTER TABLE dbo.Table_1 ADD Col_D nvarchar(10) NOT NULL DEFAULT 'A'</pre>
<p>Result of the view:</p>
<pre class="brush: plain;">Col_A, Col_B, Col_C, ColMult
=================================
10, 10.5, ABC, A
20, 0.5, DEFG, A</pre>
<p>Well&#8230; OK, it is not as bad as it seems since we would find the problem almost immediately in application since types of expected and retured data are incompatible. Bad situation, but manageable.</p>
<p><strong>Case #2 &#8211; catastrophic:<br />
</strong></p>
<pre class="brush: sql;">ALTER TABLE dbo.Table_1 ADD Col_D int NOT NULL DEFAULT 0</pre>
<p>Let&#8217;s look at the result now:</p>
<pre class="brush: plain;">Col_A, Col_B, Col_C, ColMult
=================================
10, 10.5, ABC, 0
20, 0.5, DEFG, 0</pre>
<p>ColMult now contains 0 (zero)!!! If we have significant logic which relays on that, then big troubles are coming our way.<br />
Now this is a catastrophic situation. And not easily visible. And off course work just fine on Developer&#8217;s machine&#8230;<br />
Testing&#8230; Testing&#8230; Testing&#8230;</p>
<p><strong>What just happened here?!!!</strong></p>
<p>This is when knowing <strong>non-schema-bound-views</strong> definition is important. And let&#8217;s remember &#8211; this is default state of any new view created.</p>
<p>First, what a difference between schema bound views and not bound.<br />
In order to create schema bound view special view attribute need to be specified. Let&#8217;s adjust original view definition as following:</p>
<pre class="brush: sql;">-- Alter View
ALTER VIEW [dbo].[vw_MyView] WITH SCHEMABINDING
AS
SELECT TBL.*, (TBL.Col_A*TBL.Col_B) AS ColMult FROM Table_1 TBL</pre>
<blockquote><p>SCHEMABINDING<br />
Binds the view to the schema of the underlying table or tables. When SCHEMABINDING is specified, the base table or tables cannot be modified in a way that would affect the view definition. The view definition itself must first be modified or dropped to remove dependencies on the table that is to be modified. When you use SCHEMABINDING, the select_statement must include the two-part names (schema.object) of tables, views, or user-defined functions that are referenced. All referenced objects must be in the same database.</p></blockquote>
<p>If we try executing script above to add the column error would occur: &#8220;Syntax &#8216;*&#8217; is not allowed in schema-bound objects.&#8221;</p>
<p>As you can see from definition of the attribute, view need to be defined explicitly with all columns listed. So if we were to have columns specified explicitly, then no problem would occur in the first place and is considered a good practice.</p>
<p>In our scenario above this is not an intent. Our view is designed to adjust itself to a table structure changes.<br />
Inconvenience&#8230; or advantage&#8230; I let you decide.</p>
<p><strong>Finding a cure</strong></p>
<p>Is there a way to fix the problem?</p>
<p>Dirty way of forcing the view metadata to be refreshed would be simply recreate the view using original script, but imagine you have 30+ of them &#8211; Not good, time consuming and error-prone.</p>
<p>There is a simple, universal and &#8220;human-error protected&#8221; way &#8211; after changes are applied to tables, simply refresh metadata of every view defined:</p>
<pre class="brush: sql;">DECLARE @Table_Name varchar(120)
DECLARE Refresh_Views CURSOR FOR
SELECT Table_Name FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'VIEW' AND TABLE_SCHEMA = 'dbo'
OPEN Refresh_Views
FETCH NEXT FROM Refresh_Views INTO @Table_Name
WHILE @@FETCH_STATUS = 0
BEGIN
EXEC sp_refreshview @Table_Name
print 'refreshed View for: ' + @Table_Name
FETCH NEXT FROM Refresh_Views INTO @Table_Name
END
CLOSE Refresh_Views
DEALLOCATE Refresh_Views</pre>
<p>In the script <strong>sp_refreshview </strong>would tell SQL Server to update the metadata for the all non-schema-bound views in current database.</p>
<p><strong>Note:</strong> Alternative: We can also use more generic command &#8211; <strong>sp_refreshsqlmodule </strong>- which &#8220;updates the metadata for the specified non-schema-bound stored procedure, user-defined function, view, DML trigger, database-level DDL trigger, or server-level DDL trigger in the current database. Persistent metadata for these objects, such as data types of parameters, can become outdated because of changes to their underlying objects.&#8221; This may be even better since it would allow to address any possible schema issues with any objects and not just views.</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/02/26/tables-views-missing-columns/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SQL tasks automation: apply scripts from folder</title>
		<link>http://blog.dragonsoft.us/2009/12/02/sql-tasks-automation-apply-scripts-from-folder/</link>
		<comments>http://blog.dragonsoft.us/2009/12/02/sql-tasks-automation-apply-scripts-from-folder/#comments</comments>
		<pubDate>Thu, 03 Dec 2009 03:18:13 +0000</pubDate>
		<dc:creator>Serguei Dosyukov</dc:creator>
				<category><![CDATA[Fun stuff with SQL Server]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[apply script]]></category>
		<category><![CDATA[apply sql script]]></category>
		<category><![CDATA[batch file]]></category>
		<category><![CDATA[osql]]></category>
		<category><![CDATA[sql automation]]></category>
		<category><![CDATA[sql script]]></category>
		<category><![CDATA[sql server]]></category>

		<guid isPermaLink="false">http://blog.dragonsoft.us/?p=1008</guid>
		<description><![CDATA[You will be amazed how common this question is:
I have a folder with arbitrary set of SQL scripts and want to apply them all automatically. How do I do that?
In other words:

Having a folder &#8211; ex: C:\AutoSQLScripts &#8211; with some unknown set of SQL scripts
And a SQL Instance where scripts need to be applied
Run a scheduled task to [...]]]></description>
			<content:encoded><![CDATA[<p>You will be amazed how common this question is:</p>
<blockquote><p><strong>I have a folder with arbitrary set of SQL scripts and want to apply them all automatically. How do I do that?</strong></p></blockquote>
<p>In other words:</p>
<ul>
<li>Having a folder &#8211; ex: C:\AutoSQLScripts &#8211; with some unknown set of SQL scripts</li>
<li>And a SQL Instance where scripts need to be applied</li>
<li>Run a scheduled task to perform the operation automatically.</li>
</ul>
<h3>Solution:</h3>
<p>First, lets figure out single operation - run SQL Script from command line in unattended mode using <strong><a href="http://msdn.microsoft.com/en-us/library/aa214012(SQL.80).aspx" target="_blank">osql</a></strong> utility:</p>
<pre class="brush: powershell;">::
osql -S MYSERVER -d MYDATABASE -E -i MySqlScript.sql  -o report.txt
::</pre>
<p>Where:</p>
<p><strong>-S</strong> indicates server name<br />
<strong>-d</strong> is an alternative to <em>USE db_name</em> inside the script<br />
<strong>-E</strong> indicates that trusted connection would be used<br />
<strong>-i</strong> identifies the file that contains a batch of SQL statements<br />
<strong>-o</strong> identifies the file that receives output from <strong>osql</strong></p>
<p>Simple so far&#8230;</p>
<p>Fun starts when we need to go through files in the folder. Using &#8220;magic&#8221; of Power Shell, it is also easy:</p>
<pre class="brush: powershell;">::
FOR /f &quot;TOKENS=*&quot; %%a IN ('dir /b &quot;%1*.sql&quot;') do ECHO %%a

::or

SET _PATH=%1
IF (NOT %_PATH%==&quot;&quot;) SET _PATH = '-p &quot;%_PATH%&quot;'
FORFILES %_PATH% -s -m *.* -c &quot;CMD /C ECHO @FILE&quot;
::</pre>
<p>Let&#8217;s ignore the end for now and concentrate on the syntax of the loop itself.</p>
<p><strong>FOR /f</strong> indicates that we need to perform a loop against a set of files specified in IN. To produce the set we are using <strong>&#8220;raw&#8221; dir </strong>of the folder, where %1 is, if specified, an input param of the batch file call.</p>
<p><strong>FORFILES</strong> is a little more complex and given here for comparison, yet produces the same result.</p>
<p><strong>Note: </strong><em>commands above work only with &#8220;local&#8221; (drive: based) locations. If you need apply scripts from Network folder, map it first as a local drive then apply scripts.</em></p>
<p>Now let&#8217;s combine SQL call with the batch processing and we would get the following <strong>ApplyScript.cmd</strong> which could be used to apply any scripts from current or specific folder to specified SQL Server/Database instance:</p>
<pre class="brush: powershell;">::
@ECHO OFF
SET _SERVER=MYSERVER
SET _DB=MYDATABASE

FOR /f &quot;TOKENS=*&quot; %%a IN ('dir /b %1*.sql') DO CALL osql -S %_SERVER% -d %_DB% -E -i %%a  -o report.txt
::</pre>
<p>Enjoy.</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/12/02/sql-tasks-automation-apply-scripts-from-folder/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Crystal Reports 2008 and ASP.Net : speed up the first session</title>
		<link>http://blog.dragonsoft.us/2009/09/23/crystal-reports-2008-and-asp-net-speed-up-first-session/</link>
		<comments>http://blog.dragonsoft.us/2009/09/23/crystal-reports-2008-and-asp-net-speed-up-first-session/#comments</comments>
		<pubDate>Wed, 23 Sep 2009 12:21:04 +0000</pubDate>
		<dc:creator>Serguei Dosyukov</dc:creator>
				<category><![CDATA[Crystal Reports]]></category>
		<category><![CDATA[Fun stuff with C#]]></category>
		<category><![CDATA[Web-design]]></category>
		<category><![CDATA[.net 2.0]]></category>
		<category><![CDATA[asp.net]]></category>
		<category><![CDATA[certificate revocation List]]></category>
		<category><![CDATA[code access security]]></category>
		<category><![CDATA[crl]]></category>
		<category><![CDATA[crl.verisign.net]]></category>
		<category><![CDATA[crystal reports viewer]]></category>
		<category><![CDATA[generatePublisherEvidence]]></category>
		<category><![CDATA[Slow start up]]></category>

		<guid isPermaLink="false">http://blog.dragonsoft.us/?p=1010</guid>
		<description><![CDATA[Did you ever noticed that after restart of the IIS ASP.Net page which has Crystal Reports Viewer would take much longer to come up?
Some of it is expected since on initial start up, a number of Crystal assemblies and objects need to be created and this does take time.
I want to emphasize that discussion below is [...]]]></description>
			<content:encoded><![CDATA[<p>Did you ever noticed that after restart of the IIS ASP.Net page which has Crystal Reports Viewer would take much longer to come up?</p>
<p>Some of it is expected since on initial start up, a number of Crystal assemblies and objects need to be created and this does take time.<br />
I want to emphasize that discussion below is related to the first run of any reports. We have to actually restart/reset IIS to see problem again.</p>
<blockquote><p>Note: There was a question about IIS&#8217; Application Pools recycling which could cause similar effect. Make sure your application pool <a href="http://support.microsoft.com/kb/332088" target="_blank">is set properly</a>.</p></blockquote>
<p><strong>Setting up a playground</strong></p>
<p>Let&#8217;s assume ASP.Net pages were already migrated to use .Net 3.x and look at what happen behind the scene.</p>
<p>Remember that after restart IIS starts from ground up. This means several things in respect to our page content:</p>
<ul>
<li>.Net assemblies need to be preloaded and validated if necessary.<br />
Since Crystal Reports 2008 comes as .Net 2.0-based core and we may already moved to .Net 3.x, CR2008 Engine and some additional files need to be loaded and validated aside from one which already used by any previously loaded pages.</li>
<li>For each session engine would create a cached version of RPT file in temp folder.</li>
<li>Some code would have to be brought to the client machine for Viewer to operate properly.</li>
<li>Database connection established, data retrieved, processed, paged and sent to the client Viewer.</li>
</ul>
<p>That about it, now we ready to work with reports. Please notice that after that initial load, any other reports would come up faster. We could even close the browser or use another browser (ex. go from IE to FF) and it would be still faster than the first time, so there is something important about the first step above&#8230;</p>
<p><strong>Combing the sand</strong></p>
<p>Let&#8217;s try to break the IIS initialization process to get more detailed view.</p>
<p>Since we already had some ASP.Net pages loaded before coming to CR related page, we could disregard .Net core initialization procedure. It is there on IIS side: used and ready.</p>
<p>Ok, next thing is CR engine related stuff. There is some 5Mb of files in <strong>crystalreportviewers12</strong> folder to support CR Viewer in ASP.Net and we need to send some of them over the network. In addition to that there is Crystal Reports Engine assemblies which need to be loaded by IIS at the time of the first use. And this is our spot to dig.</p>
<p>If we try and trace what exactly going on we would notice that aside from IIS loading a few dozen assemblies, there is also process associated with trying connect to CRL.VERISIGN.NET.</p>
<p><strong>What is it?</strong></p>
<p>&#8220;Problem&#8221; is that assemblies are Authenticode signed and therefore need to be verified or it technical terms they need to be checked against <a href="http://technet.microsoft.com/en-us/library/bb457027.aspx" target="_blank">Certificate Revocation List (CRL)</a> by <a href="http://msdn.microsoft.com/en-us/library/system.security.policy.publisher.aspx" target="_blank">Publisher</a> for <a href="http://msdn.microsoft.com/en-us/library/930b76w0.aspx" target="_blank">Code Access Security (CAS)</a>.</p>
<p>Default behavior is that they need to be verified by the certificate authority. If certificate is not present on the same machine (I have my doubts that SAP doing anything about that, but I could be wrong), validation need to be done via central repository mentioned above, or if machine does not have network/internet access the .NET thread might timeout waiting to connect.</p>
<blockquote><p>Yes, by performing strong name signing of assemblies or placing the CA certificate on the same machine issue would be avoided, but it seems not being a case.</p></blockquote>
<p><strong>Building the castle</strong></p>
<p>Since assemblies are provided by SAP, we cannot remove digital signature and it is a hassle to keep certificates current by obtaining them from CA every time they expire. Let&#8217;s concentrate on the Publisher mentioned above and turn it off.</p>
<blockquote><p><em>It is all-or-nothing solution since it would require turning off CRC for the entire IIS.</em></p></blockquote>
<p>When working with regular .Net apps, it can be done on the app level (assuming <a href="http://support.microsoft.com/kb/936707" target="_blank">we already have fix for .Net 2.0</a>) by adding the following section in &lt;Application&gt;.exe.config</p>
<pre class="brush: xml;">&lt;configuration&gt;
  &lt;runtime&gt;
    &lt;generatePublisherEvidence enabled=&quot;false&quot;/&gt;
  &lt;/runtime&gt;
&lt;/configuration&gt;</pre>
<p>This new element described in <a href="http://msdn.microsoft.com/en-us/library/bb629393.aspx" target="_blank">this MSDN article</a>. Interesting note there (why not to turn it then by default? Oh, security concerns&#8230; UAC anyone?):</p>
<blockquote><p>We recommend that services use the <span><span>&lt;generatePublisherEvidence&gt;</span></span> element to improve startup performance. Using this element can also help avoid delays that can cause a time-out and the cancellation of the service startup.</p></blockquote>
<p>Since there is no such config file for our ASP.Net app (web.config would not work here, because it defines settings that are only AppDomain wide and we need process wide for aspnet_isapi.dll being the hosting environment for the runtime), we would have to turn code access security (CAS) publisher policy off for the entire IIS.<br />
There are two options:</p>
<ul>
<li>Create a file called w3wp.exe.config (for IIS6, or aspnet_wp.exe.config for IIS5). This will affect all .NET based web applications on the system.</li>
<li>Or to specify this in machine.config, but then this affects every .NET application on the machine and is not available for override in individual Apps.</li>
</ul>
<p><strong>Adding the summer cabin</strong></p>
<p>There is one more step which could be taken to improve performance by preloading some of the core assemblies while site visitor is doing something else.<br />
I wouldn&#8217;t go into much details here, since it is implementation/application environment specific, but just give a hint:</p>
<ul>
<li>some other place in application, create a background process which would create CR document object, load some not essential report file, retrieve some data and then disapear without the trace. This would allow Crystal Reports Engine being initialized in the background offsetting time needed for the actual CR related page load. Don&#8217;t force garbage collection though, this may cancel desired effect.</li>
</ul>
<p><strong>Results</strong></p>
<p>In some situation I observed 50% to 70% drop in start-up time&#8230;<br />
Have fun!</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/09/23/crystal-reports-2008-and-asp-net-speed-up-first-session/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>How to embed Google Docs document into your page</title>
		<link>http://blog.dragonsoft.us/2009/06/24/how-to-embed-google-docs-document-into-your-page/</link>
		<comments>http://blog.dragonsoft.us/2009/06/24/how-to-embed-google-docs-document-into-your-page/#comments</comments>
		<pubDate>Wed, 24 Jun 2009 16:01:32 +0000</pubDate>
		<dc:creator>Serguei Dosyukov</dc:creator>
				<category><![CDATA[Web-design]]></category>
		<category><![CDATA[embed google docs content]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://blog.dragonsoft.us/?p=985</guid>
		<description><![CDATA[There are plenty of presentations, documents, and spreadsheets we may want to share with the world.
We can use homegrown document handling solutions, use commercial 3rd party solutions or&#8230; utilize power provided by Google Docs.
When storing articles on Google Docs you are provided with the option to share them with some people only or with everyone. [...]]]></description>
			<content:encoded><![CDATA[<p>There are plenty of presentations, documents, and spreadsheets we may want to share with the world.</p>
<p>We can use homegrown document handling solutions, use commercial 3rd party solutions or&#8230; utilize power provided by <a href="http://docs.google.com/" target="_blank">Google Docs</a>.</p>
<p>When storing articles on Google Docs you are provided with the option to share them with some people only or with everyone. I like to have option to link my articles from anywhere but I also like to have not just plain page, but a page embedded into my web-site pages.</p>
<p>What it means is that instead of<a href="http://docs.google.com/View?id=dgwckpgv_1t38fmc" target="_blank"> external page</a>, I want to <a href="http://www.dragonsoft.us/articles.php?id=dgwckpgv_1t38fmc" target="_blank">put it in my own box</a>.</p>
<p>There was time when it wasn&#8217;t as easy because of the additional code Google was injecting into articles, but time changed and now it is fairly easy and strait forward.</p>
<h3>Goals</h3>
<ul>
<li>Embed Google Docs document into existing page</li>
<li>PHP. This is not really a requirement per se, it is just code below is PHP.</li>
<li>Retain copyright information</li>
</ul>
<h3>Solution</h3>
<p>The following code snippet allows to get a desired result</p>
<pre class="brush: php;">// id parameter is used to pass Google Docs arcticle id
// Example: mydocview.php?id=nnnnnnnnnnnnnnnn

$id    = $_REQUEST['id'];
if ($id) {
  $started = &quot;0&quot;;
  echo('&lt;div class=&quot;googledocs&quot; &gt;Stored and managed via &lt;a title=&quot;Learn more about Google Docs&quot; href=&quot;http://docs.google.com&quot; target=&quot;_blank&quot;&gt;Google Docs &amp;copy; -- Web word processing, presentations and spreadsheets.&lt;/a&gt;&lt;/div&gt;');

  // Read document content, parse to normalize and output
  $file = fopen (&quot;http://docs.google.com/View?id=&quot; . $id, &quot;r&quot;);
  while (!feof ($file)) {
    $line = fgets ($file, 4096);

    // Parse header info out
    if ($started == &quot;0&quot;) {
      if (substr($line, 0, 5) == '&lt;body') { $started = &quot;1&quot;; }
      else { continue; }
    }

    // Parse body content until document content block is detected
    if ($started == &quot;1&quot;) {
      if (strstr($line, '&lt;div id=&quot;doc-contents&quot;&gt;')) { $started = &quot;2&quot;; }
      else { continue; }
    }

    // Output document content
    if ($started == &quot;2&quot;) {
      // Stop processing, end of content reached
      if (strstr($line, '&lt;div id=&quot;google-view-footer&quot;&gt;')) { break; }

      // Normalize image links to keep link back to google docs
      $line = str_replace('src=&quot;File?id', 'src=&quot;http://docs.google.com/File?id', $line);

      // Normalize links to other articles
      $line = str_replace('href=&quot;View?docid=', 'href=&quot;/mydocview.php?id=', $line);
      $line = str_replace('href=&quot;View?id=', 'href=&quot;/mydocview.php?id=', $line);
      $line = str_replace('href=&quot;View?docID=', 'href=&quot;/mydocview.php?id=', $line);
      $line = str_replace('href=&quot;View?', 'href=&quot;/mydocview.php?', $line);

      // Output result
      echo($line);
    }
  }
  fclose($file);
}</pre>
<p>Sample page:</p>
<pre class="brush: php;">&lt;html&gt;
&lt;head&gt;&lt;/head&gt;
&lt;body&gt;
&lt;? // Include code above here
?&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>
<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/06/24/how-to-embed-google-docs-document-into-your-page/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Expiration of CrystalReport Viewer pages with long running queries</title>
		<link>http://blog.dragonsoft.us/2009/06/23/expiration-of-crystalreport-viewer-pages-with-long-running-queries/</link>
		<comments>http://blog.dragonsoft.us/2009/06/23/expiration-of-crystalreport-viewer-pages-with-long-running-queries/#comments</comments>
		<pubDate>Tue, 23 Jun 2009 19:58:14 +0000</pubDate>
		<dc:creator>Serguei Dosyukov</dc:creator>
				<category><![CDATA[Crystal Reports]]></category>
		<category><![CDATA[asp.net]]></category>
		<category><![CDATA[crystal reports viewer]]></category>
		<category><![CDATA[crystalreportviewer]]></category>
		<category><![CDATA[long running query]]></category>
		<category><![CDATA[page expired]]></category>
		<category><![CDATA[timeout]]></category>

		<guid isPermaLink="false">http://blog.dragonsoft.us/?p=988</guid>
		<description><![CDATA[Wow! It worked&#8230;
I continue my journey with Crystal Reports Viewer (CRV) inside ASP.Net pages.
Topic of this post is to discuss problems and solutions related to long running queries in CRV.
Before continue I would like to thank Daniel Paulsen from SAP team for his help resolving the issue discussed below.
What are we talking about here?
As it [...]]]></description>
			<content:encoded><![CDATA[<p>Wow! It worked&#8230;</p>
<p>I continue my journey with Crystal Reports Viewer (CRV) inside ASP.Net pages.<br />
Topic of this post is to discuss problems and solutions related to long running queries in CRV.</p>
<p>Before continue I would like to thank Daniel Paulsen from SAP team for his help resolving the issue discussed below.</p>
<p><strong>What are we talking about here?</strong></p>
<p>As it usually happens at some point there is to much data/not optimal query/broken indexes/etc and it is takes significant time to return a result for CR report. As a result ASP.Net page with CRV start to throw errors, acts erratically, and overall strange.</p>
<p>Since we know that it is ASP.net and CRV uses page state and session information then we have usual suspects - <a href="http://msdn.microsoft.com/en-us/library/system.web.sessionstate.httpsessionstate.timeout.aspx" target="_blank">session timeout</a> and <a href="http://msdn.microsoft.com/en-us/library/e1f13641.aspx" target="_blank">execution timeout</a>.</p>
<p>Easy? Not so fast&#8230; Lets time our query &#8211; if it is more then 10 but less then 20 minutes then reason is not an ASP.Net timeout, but CR Engine timeouts.</p>
<p><strong>Crystal Reports Engine Timeouts</strong></p>
<p>Aside from timeouts imposed by .net infrastructure, there are two others which are introduced by Crystal Report itself.</p>
<p><strong>Symptoms:</strong></p>
<ul>
<li>Error similar to &#8216;Request timed out because there has been no reply from the server in N ms&#8217;</li>
<li>First Page of the report is displayed but attempt to go to the next page gives JS error related to invalid object ID</li>
<li>If report require parameter entry, they are requested again</li>
</ul>
<p><strong>Cause:</strong></p>
<p>Crystal Reports by default has a timeout of 10 minutes (600,000 ms) before deciding that no data is returned by the query.<br />
Depend on how code behind is implemented for the report page, timeout error may cause different problems and be hidden.</p>
<p><strong>Solution:</strong></p>
<p>Per Daniel&#8217;s suggestion I have changed the following settings to a bigger number and it did solve the problem for me</p>
<pre class="brush: plain;">HKEY_LOCAL_MACHINE\SOFTWARE\Business Objects\Suite 12.0\Report Application Server\Client SDK\CorbaAdapter\WaitReplyTimeout = 600000

and

HKEY_LOCAL_MACHINE\SOFTWARE\Business Objects\Suite 12.0\Report Application Server\InprocServer\EnterpriseRequestTimeout = 600000</pre>
<p><strong>Final Note:</strong></p>
<p>There are other settings which are allowed to be set for the CR engine as described in <a href="http://help.sap.com/businessobject/product_guides/boexir31/en/crsdk_net_dg_12_en.chm" target="_blank">Developer&#8217;s Guide for CR 2008</a> under &#8220;<strong>Configuring your Web.Config file</strong>&#8220;. It worth to know about some of them.</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/06/23/expiration-of-crystalreport-viewer-pages-with-long-running-queries/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Is going Linux means replacing I with We?</title>
		<link>http://blog.dragonsoft.us/2009/04/16/is-going-linux-means-replacing-i-with-we/</link>
		<comments>http://blog.dragonsoft.us/2009/04/16/is-going-linux-means-replacing-i-with-we/#comments</comments>
		<pubDate>Thu, 16 Apr 2009 12:42:02 +0000</pubDate>
		<dc:creator>Serguei Dosyukov</dc:creator>
				<category><![CDATA[Delphi]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[linux v mac and pc]]></category>
		<category><![CDATA[mac-v-pc]]></category>
		<category><![CDATA[marketing wars]]></category>
		<category><![CDATA[we're linux]]></category>

		<guid isPermaLink="false">http://blog.dragonsoft.us/?p=938</guid>
		<description><![CDATA[There we go again&#8230; Marketing wars&#8230; Is being Linux means replacing I with We?
Accordingly to a new addition to the Mac-v-PC adv. war &#8211; Linux &#8211; &#8220;WE are Linux&#8221; &#8211; yes.
Personalization in the look at the computers promoted for last few years by Apple, Microsoft, and then followed by Dell and others with &#8220;personalize your [...]]]></description>
			<content:encoded><![CDATA[<p>There we go again&#8230; <a href="http://blog.dragonsoft.us/2007/12/21/mac-v-pc-fair-game-or-apple-did-it-again/" target="_self">Marketing wars</a>&#8230; Is being Linux means replacing I with We?</p>
<p>Accordingly to a new addition to the Mac-v-PC adv. war &#8211; <a href="http://www.marketwire.com/press-release/The-Linux-Foundation-972789.html" target="_blank">Linux &#8211; &#8220;WE are Linux&#8221;</a> &#8211; yes.</p>
<p>Personalization in the look at the computers promoted for last few years by Apple, Microsoft, and then followed by Dell and others with &#8220;personalize your computer&#8221; campaigns now suggested to be replaced with big &#8220;<span>communitification</span>&#8220;  a-la Linux.</p>
<p>What is a freedom? Ability to be you through the lens of the Big Brothers or ability to be you as part of the Open (Source) World of WE?</p>
<p>Is it a freedom when someone <strong>tells you </strong>that &#8220;you are free to be me&#8221;? Does Linux community need to go into war with others, even if it is just advertisements, to prove itself?</p>
<p>I did not like it when Apple said &#8220;you are the sad PC and I am the coolest Mac&#8221;&#8230;</p>
<table border="0">
<tbody>
<tr>
<td rowspan="2"><object width="250" height="206" data="http://www.youtube.com/v/iEAGmBRC1dc" type="application/x-shockwave-flash"><param name="src" value="http://www.youtube.com/v/iEAGmBRC1dc" /></object></td>
<td width="10"> </td>
<td> There you go&#8230;</td>
</tr>
<tr>
<td> </td>
<td rowspan="2"><object width="250" height="206" data="http://www.youtube.com/v/6xuzY4VFlkA" type="application/x-shockwave-flash"><param name="src" value="http://www.youtube.com/v/6xuzY4VFlkA" /></object></td>
</tr>
<tr>
<td>Oh, a wrong one, but funny&#8230;</td>
<td> </td>
</tr>
</tbody>
</table>
<p>Microsoft had managed not to mention Apple&#8230;</p>
<table border="0">
<tbody>
<tr>
<td>then</td>
<td width="10"> </td>
<td>or now</td>
</tr>
<tr>
<td><object width="250" height="206" data="http://www.youtube.com/v/fTlg5Kkqu4M" type="application/x-shockwave-flash"><param name="src" value="http://www.youtube.com/v/fTlg5Kkqu4M" /></object></td>
<td width="10"> </td>
<td><object width="250" height="206" data="http://www.youtube.com/v/9V7NoRjI0H0" type="application/x-shockwave-flash"><param name="src" value="http://www.youtube.com/v/9V7NoRjI0H0" /></object></td>
</tr>
</tbody>
</table>
<p>What now? Now we have a new addition &#8211; a Linux&#8217;s freedom &#8211; The big &#8220;O&#8221;</p>
<p><object width="250" height="206" data="http://www.youtube.com/v/qWEIQIv8zvY" type="application/x-shockwave-flash"><param name="src" value="http://www.youtube.com/v/qWEIQIv8zvY" /></object></p>
<p>Did it worth it? What is in it for Linux?</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/04/16/is-going-linux-means-replacing-i-with-we/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Honda Insight 2010 &#8211; test drive</title>
		<link>http://blog.dragonsoft.us/2009/04/14/honda-insight-2010-test-drive/</link>
		<comments>http://blog.dragonsoft.us/2009/04/14/honda-insight-2010-test-drive/#comments</comments>
		<pubDate>Tue, 14 Apr 2009 12:06:19 +0000</pubDate>
		<dc:creator>Serguei Dosyukov</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[first impression]]></category>
		<category><![CDATA[honda insight]]></category>
		<category><![CDATA[honda insight 2010]]></category>
		<category><![CDATA[test drive]]></category>

		<guid isPermaLink="false">http://blog.dragonsoft.us/?p=933</guid>
		<description><![CDATA[I have wrote about Honda Insight 2010 coming this year on two occasions here: (1), (2).
And I have expressed some of my concerns already, but now I have actually had a chance to try it last weekend&#8230; And there are my thoughts and ramblings.
To say I do like my Honda (Accord) and I was looking [...]]]></description>
			<content:encoded><![CDATA[<p>I have wrote about Honda Insight 2010 coming this year on two occasions here: <a href="http://blog.dragonsoft.us/2008/10/15/honda-insight-is-back-new-and-improved/" target="_self">(1)</a>, <a href="http://blog.dragonsoft.us/2008/12/10/honda-insight-2009-the-killer/" target="_self">(2)</a>.</p>
<p>And I have expressed some of my concerns already, but now I have actually had a chance to try it last weekend&#8230; And there are my thoughts and ramblings.</p>
<p>To say I do like my Honda (Accord) and I was looking to replace my Nissan (Altima) with a new car.</p>
<p>With prices on gas, on cars, new models and personal preferences, a new Honda Insight was my target.</p>
<p>I have tried this <a href="http://www.kbb.com/KBB/NewCars/PricingReport/2010_Honda_Insight_249042.aspx" target="_blank">EX model</a> and I am afraid that I would have to look elsewhere or enjoy my old car a little longer and there is why&#8230;</p>
<ul>
<li>As I said before, 40/43mpg (<a href="http://www.kbb.com/KBB/NewCars/PricingReport/2009_Toyota_Prius_240573.aspx" target="_blank">48/45 mpg for Prius</a>) is not an impressive statement from Honda for the comeback of the Insight. Not at all. Yes, driving in ECO mode and trying to stay in the &#8220;green&#8221; zone may help improve the mileage, but&#8230; There are some reports of 60+ on the highway, but I want to see it first and test-drive is probably not a good test for it and I do not want to turn everything off and drive at cruising speed just to get good mileage as <a href="http://www.hybridcars.com/gas-mileage/honda-60-mpg-surprise-25564.html" target="_blank">reported here</a>.</li>
<li>Car feels very fragile when it comes to driving and acceleration. I am somewhat aggressive driver and it was very hard for me to be &#8220;green&#8221; and accelerate at the same time. There goes mileage&#8230;</li>
<li>To be fair, on the cruise control, car stayed steady in the &#8220;green&#8221; zone.</li>
<li>In contrast to some reviews, it was fairly quiet inside a car in all driving conditions and engine noise does not stand out like for ex. in Ford cars I have driven in the past.</li>
<li>And engine kick-in was not affected much by the AC running at 20% of airflow power.</li>
<li>No mpg estimation while driving. I read somewhere that it is optional and only available in some models, but I think it should be standard to &#8220;prove the point&#8221;.</li>
<li>Small&#8230; very. Yes, after Accord and Altima, my expectations are a little bit high, but having 6&#8242; one hits the celling sitting in the back and has claustrophobic feeling sitting in front. Plus foot space was on the verge of rejection/inability to fit.<br />
In addition it is not as wide as Accord and a rear view was a little bit &#8220;compressed&#8221;. Otherwise, with bigger side windows, it gives better view to the passing cars.<br />
Just to compare actual numbers, there is a table showing <a href="http://www.internetautoguide.com/compare-cars/09-int/2010/honda/insight/index.html?Vehicle0.Make=Honda&amp;Vehicle0.Model=Insight&amp;Vehicle0.Year=2010&amp;Vehicle0.Trim=EX;_HB;FWD;L4&amp;Vehicle1.Make=Toyota&amp;Vehicle1.Model=Prius&amp;Vehicle1.Year=2009&amp;Vehicle1.Trim=;_HB;FWD;L4&amp;PageNumber=1&amp;TotalPages=5&amp;Vehicle[2].Make=Honda|32&amp;Vehicle[2].Model=Accord|269&amp;Vehicle[2].Year=2009&amp;Vehicle[2].Trim=EX;_CP;FWD;L4|389;2;4;6" target="_blank">side-by-side Interior dimensions</a> for Insight, Prius and Accord.</li>
<li>I did not like light gray interior plastic though, kind of cheap, but it is personal feeling off course.</li>
<li>I have driven in-city and on highway, and aside from the need to stay &#8220;green&#8221; car did provide enough power to stay in the crowd and not behind most of the time (yes, acceleration may be a problem <img src='http://blog.dragonsoft.us/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> )</li>
<li>Price probably could be cheaper all consider, but 20K is few thousands cheaper then Prius. Question remains if it covers the difference between two.</li>
</ul>
<p>Bottom line: if you are tall person, this car may not be for you. Add to this unimpressive mileage and some &#8220;cheap&#8221; feeling of EX model and expectations are ruined. I have had higher expectations, and may be I shouldn&#8217;t. Will see if anything would change with next year model. I guess it is time to visit Toyota or wait for <a href="http://money.cnn.com/galleries/2009/autos/0903/gallery.chevrolet_volt_mule_drive/index.html" target="_blank">Chevy Volt</a>.</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/04/14/honda-insight-2010-test-drive/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to set default file name for export from CrystalReportViewer in ASP.Net</title>
		<link>http://blog.dragonsoft.us/2009/04/07/how-to-set-default-file-name-for-export-from-crystalreportviewer-in-aspnet/</link>
		<comments>http://blog.dragonsoft.us/2009/04/07/how-to-set-default-file-name-for-export-from-crystalreportviewer-in-aspnet/#comments</comments>
		<pubDate>Tue, 07 Apr 2009 20:20:57 +0000</pubDate>
		<dc:creator>Serguei Dosyukov</dc:creator>
				<category><![CDATA[Crystal Reports]]></category>
		<category><![CDATA[asp.net]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[crystalreportviewer]]></category>
		<category><![CDATA[set default export file name]]></category>

		<guid isPermaLink="false">http://blog.dragonsoft.us/?p=921</guid>
		<description><![CDATA[I have had nice discussion about a new Crystal Reports based web-site today. And everything seems to be fine&#8230; Except users want to see a proper default name for the exported files&#8230;
Environment:

Crystal Reports 2008 engine
IIS 7
ASP.Net 3.0 page with CrystalReportViewer (CRV) being used to show report passed by parameter

When trying export as PDF (just an [...]]]></description>
			<content:encoded><![CDATA[<p>I have had nice discussion about a new Crystal Reports based web-site today. And everything seems to be fine&#8230; Except users want to see a proper default name for the exported files&#8230;</p>
<p>Environment:</p>
<ul>
<li>Crystal Reports 2008 engine</li>
<li>IIS 7</li>
<li>ASP.Net 3.0 page with CrystalReportViewer (CRV) being used to show report passed by parameter</li>
</ul>
<p>When trying export as PDF (just an example), CRV defaults the name of the file to <em>CrystalReportViewer1.pdf.<br />
</em>Not very nice since associated RPT name is <em>MyVeryOwnReport.rpt</em> and I have many other which I would expect export file at least inherit.</p>
<p>One would expect that Viewer would have a property allowing specify default export name. Not so fast&#8230; there is no such thing today exists.</p>
<p>After some head scratching and research, it just happen that Default Export File Name is actually based of the ID property value of the CRV which is still named as CrystalReportViewer1.</p>
<p>Options?</p>
<ol>
<li>Rename ID value of the control as something else. Still, if we use just one page and load reports dynamically, then it would not help much.
<pre class="brush: csharp;">// ReportPreview.aspx file
&lt;CR:CrystalReportViewer ID=&quot;MyVeryOwnExportFile&quot; /&gt;</pre>
</li>
<li>Another option is to populate Default Export file name in the code
<pre class="brush: csharp;">// ReportPreview.aspx.cs file
protected void Page_Init(object sender, EventArgs e)
{
     ...
    // Load report here
    ...
    CrystalReportViewer1.ID = &quot;MyVeryOwnExportFile&quot;;
}</pre>
<p>It is important to have it set before any code would use it to manipulate a page view state and create references.</p>
</li>
<li>Trying <a href="http://msdn.microsoft.com/en-us/library/aa288404(VS.71).aspx" target="_blank">manually set export options</a> for the Report instance, would not help much unfortunately since viewer would disregard it.</li>
<li>Off course there is always an option of coding export functionality yourself and bypass built-in logic&#8230;</li>
</ol>
<p>This concludes another Crystal Reports dance session.</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/04/07/how-to-set-default-file-name-for-export-from-crystalreportviewer-in-aspnet/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>IBM to buy SUN &#8211; end of the era?</title>
		<link>http://blog.dragonsoft.us/2009/04/03/ibm-to-buy-sun-end-of-the-era/</link>
		<comments>http://blog.dragonsoft.us/2009/04/03/ibm-to-buy-sun-end-of-the-era/#comments</comments>
		<pubDate>Fri, 03 Apr 2009 12:35:24 +0000</pubDate>
		<dc:creator>Serguei Dosyukov</dc:creator>
				<category><![CDATA[Delphi]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[ibm to buy sun]]></category>

		<guid isPermaLink="false">http://blog.dragonsoft.us/?p=907</guid>
		<description><![CDATA[Updated on 04/07/2009
Talk rumored in 1998 and surfaced once again in 2002 will continue - IBM was in final talks to acquire Sun&#8230; It was suspected that some news would be announced by Monday 04/06/2009
http://www.betanews.com/article/IBMs-acquisition-of-Sun-Down-to-the-details/1238698365
http://www.nytimes.com/2009/04/03/technology/business-computing/03blue.html
and they did &#8211; it fell apart&#8230; offer has been rejected
http://www.bloomberg.com/apps/news?pid=20601103&#38;sid=aijKk7Ur2M0c&#38;refer=news
Will we see negotiation saga continued or would be there another bidder? Or&#8230;
In [...]]]></description>
			<content:encoded><![CDATA[<p><em>Updated on 04/07/2009</em></p>
<p><a href="http://techupdate.zdnet.com/techupdate/stories/main/0,14179,2860393,00.html">Talk rumored in 1998 and surfaced once again in 2002</a> will continue - IBM was in final talks to acquire Sun&#8230; It was suspected that some news would be announced by Monday 04/06/2009</p>
<p><a href="http://www.betanews.com/article/IBMs-acquisition-of-Sun-Down-to-the-details/1238698365">http://www.betanews.com/article/IBMs-acquisition-of-Sun-Down-to-the-details/1238698365</a><br />
<a href="http://www.nytimes.com/2009/04/03/technology/business-computing/03blue.html">http://www.nytimes.com/2009/04/03/technology/business-computing/03blue.html</a></p>
<p>and they did &#8211; it fell apart&#8230; <a href="http://www.reuters.com/article/ousiv/idUSTRE5351IV20090406" target="_blank">offer has been rejected</a></p>
<p><a href="http://www.bloomberg.com/apps/news?pid=20601103&amp;sid=aijKk7Ur2M0c&amp;refer=news">http://www.bloomberg.com/apps/news?pid=20601103&amp;sid=aijKk7Ur2M0c&amp;refer=news</a></p>
<p>Will we see negotiation saga continued or would be there another bidder? Or&#8230;</p>
<p>In rumors of Sun&#8217;s CEO could be replaced, so memorable <a href="http://www.reuters.com/article/marketsNews/idINN0641567520090406" target="_blank">statement was issued</a>: &#8220;As a policy Sun does not comment on rumors or speculation. What we can say is that Sun is committed to its leadership team, growth strategy and building value for its shareholders&#8221;. Yahoo anyone?</p>
<p>It is not doom and gloom for Sun, but it all went against market expectations&#8230; and what is in there for IBM really?</p>
<ul>
<li>Cannot overrun a competitor, buy it</li>
<li>No more patent wars over Java -&gt; IBM JDK to consume final parts of Sun JDK</li>
<li>Java push via existing customer base</li>
<li>Solaris to replace AIX? Is there market left for Solaris? IBM will keep the goodies and Solaris to go away?</li>
<li>NetBeans or Eclipse? Rational or Sun Studio? -&gt; Eclipse+Rational with NetBeans flavor?</li>
<li>+ IBM JavaFX</li>
<li>+ IBM X86 virtualization</li>
</ul>
<p>All good and nice, but remember the Lotus story? Died silently… what would follow? Java? mySQL? New Google DB engine to emerge built by ex Sun employees? Another era of mainframe computers with Java only present on enterprise level?</p>
<p>I am not pro-Java person, but this is the milestone not to miss!</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/04/03/ibm-to-buy-sun-end-of-the-era/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic page generated in 3.343 seconds. -->
<!-- Cached page generated by WP-Super-Cache on 2010-03-19 20:01:24 -->
<!-- Compression = gzip -->