<?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; Web-design</title>
	<atom:link href="http://blog.dragonsoft.us/category/technology/web-design/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.dragonsoft.us</link>
	<description>Talk about Technologies, Software Architecture and Management</description>
	<lastBuildDate>Tue, 31 Jan 2012 01:43:34 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>IPad, web and developers</title>
		<link>http://blog.dragonsoft.us/2011/08/02/ipad-web-and-developers/</link>
		<comments>http://blog.dragonsoft.us/2011/08/02/ipad-web-and-developers/#comments</comments>
		<pubDate>Wed, 03 Aug 2011 02:57:18 +0000</pubDate>
		<dc:creator>Serguei Dosyukov</dc:creator>
				<category><![CDATA[Web-design]]></category>
		<category><![CDATA[ipad]]></category>
		<category><![CDATA[page source]]></category>
		<category><![CDATA[safari]]></category>
		<guid isPermaLink="false">http://blog.dragonsoft.us/?p=1312</guid>
		<description><![CDATA[When we use something for long time we are used to some things. When looking at web sites and think about how they are built, development tools are of big help. We can look at source, explore styles and java &#8230; <a href="http://blog.dragonsoft.us/2011/08/02/ipad-web-and-developers/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>When we use something for long time we are used to some things.<br />
When looking at web sites and think about how they are built, development tools are of big help.<br />
We can look at source, explore styles and java script behind any page.<br />
So it is just &#8220;Wow&#8221; kind of situation when you try to do the same on iPad and there are no similar tools at your disposal&#8230;<br />
Luckily there are people around and they share their infinite wisdom.<br />
So if you are looking for the way to see page source try method discussed <a href="http://banagale.com/view-source-from-safari-on-ipad.htm" target="_blank">here</a></p>
<hr/><span style="font-size: 7pt">Copyright &copy; 2012 <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/2011/08/02/ipad-web-and-developers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>UI prototypes and iPad/iPhone wireframes</title>
		<link>http://blog.dragonsoft.us/2011/03/01/ui-prototypes-and-ipadiphone-wireframes/</link>
		<comments>http://blog.dragonsoft.us/2011/03/01/ui-prototypes-and-ipadiphone-wireframes/#comments</comments>
		<pubDate>Tue, 01 Mar 2011 21:42:07 +0000</pubDate>
		<dc:creator>Serguei Dosyukov</dc:creator>
				<category><![CDATA[Web-design]]></category>
		<category><![CDATA[ipad]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[stencil]]></category>
		<category><![CDATA[UI]]></category>
		<category><![CDATA[visio]]></category>
		<category><![CDATA[wireframing]]></category>
		<guid isPermaLink="false">http://blog.dragonsoft.us/?p=1220</guid>
		<description><![CDATA[Working on earlier design of the new system there are different ways in approaching UI design &#8211; from white board, favorite piece of napkin to modeling tools. Well, one can skeep it all together and jump into Visual Studio or Eclipse and &#8230; <a href="http://blog.dragonsoft.us/2011/03/01/ui-prototypes-and-ipadiphone-wireframes/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Working on earlier design of the new system there are different ways in approaching UI design &#8211; from white board, favorite piece of napkin to modeling tools. Well, one can skeep it all together and jump into Visual Studio or Eclipse and start jamming together some nice forms.</p>
<p>Experience shows again and again that using prototyping in software development allows shaving hours, days or even months from release schedule.<br />
From various types of concepts and prototypes UI prototypes are most difficult and if missed could kill any project down the road.</p>
<p>Setting proper UI expectations, creating reference materials for your project plan, getting earlier feedback from potential or existing customers &#8211; benefits are many.</p>
<p>How elements are placed on the screen? What themes/colors/styles are to be used? How screen is changed following workflow? How dialogs are organized?<br />
Questions asked and answered earlier can become crucial for the project as early as getting a &#8220;GO&#8221; and as late as releasing version 1.0 and being forced to roll it back.</p>
<p>Do not underestimate power of the visualization!</p>
<p><strong>Designing UI</strong></p>
<p>There are plenty of tools around which give you some infrastructure to do UI prototypes.<br />
To mention few:</p>
<ul>
<li>Microsoft Visio &#8211; among others there is a Wireframe Diagram, Storyboards, workflow diagrams</li>
<li>FrameMaker</li>
<li>PowerPoint</li>
<li>Photoshop</li>
<li>OmniGraffle for Mac or iPad</li>
<li><a href="http://wireframesketcher.com/" target="_blank">WireframeSketcher</a> plugin for Eclipse &#8211; basic wireframes with sequencing</li>
<li><a href="http://balsamiq.com/products/mockups" target="_blank">Balsamiq</a> Mockups &#8211; cross platform, community supported device elements library</li>
<li><a href="http://www.axure.com" target="_blank">Axure</a> - web-oriented, interactive</li>
<li><a href="http://www.mockupscreens.com" target="_blank">MockupScreens </a>- slightly outdated</li>
<li>Remember PVCS? Serena offers <a href="http://www.serena.com/products/prototype-composer/index.html" target="_blank">Serena Prototype Composer</a> - activity flow and UI elements integration</li>
</ul>
<p><strong>Stick with what you have or Visio stencils</strong></p>
<p>There could be many options, but I like to stick with what I am most familiar or have in my reach. So I choose Visio 2010 (part of MSDN).</p>
<p>By default however, Visio provides only with basic controls, toolbars, dialogs. What missing are actual stencils (collection of shapes) to be used to do UI design for the target platform.</p>
<p>Designing for Windows is different from designing for Android, iPhone or iPad and availability proper UI elements in our disposal is important.</p>
<p><strong>No One is Left Behind</strong></p>
<p>Internet is powerful thing and most of the time someone already went on the journey of helping others.<br />
Problem is that it is difficult to find libraries for Visio. There is an option though &#8211; exporting from OMNIGRAFFLE in XML format for Visio.</p>
<p>Let&#8217;s list some:</p>
<ul>
<li><a href="http://www.vaiman.com/YDesignStencil/" target="_blank">Y! Design Stencil</a>- Enabled for Visio 2010 redesigned from <a href="http://developer.yahoo.com/ypatterns/about/stencils/" target="_blank">Yahoo Stencil Kit</a></li>
<li>Nice <a href="http://graffletopia.com/stencils/570" target="_blank">iPad styled stencils</a> for OMNIGRAFFLE</li>
<li>Long list of <a href="http://speckyboy.com/2010/04/30/iphone-and-ipad-development-gui-kits-stencils-and-icons/" target="_blank">different libraries</a> available in different formats which is useful and starting point</li>
</ul>
<hr/><span style="font-size: 7pt">Copyright &copy; 2012 <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/2011/03/01/ui-prototypes-and-ipadiphone-wireframes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to add key navigation to your web-site</title>
		<link>http://blog.dragonsoft.us/2010/04/08/how-to-add-key-navigation-to-your-web-site/</link>
		<comments>http://blog.dragonsoft.us/2010/04/08/how-to-add-key-navigation-to-your-web-site/#comments</comments>
		<pubDate>Thu, 08 Apr 2010 05:41:46 +0000</pubDate>
		<dc:creator>Serguei Dosyukov</dc:creator>
				<category><![CDATA[Web-design]]></category>
		<category><![CDATA[Gallery 3]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[keyboard navigation]]></category>
		<category><![CDATA[keydown]]></category>
		<category><![CDATA[keydown event]]></category>
		<category><![CDATA[menalto]]></category>
		<guid isPermaLink="false">http://blog.dragonsoft.us/?p=1134</guid>
		<description><![CDATA[This is probably an old topic which still raises here and there. Day ago while waiting for delayed flight on United, I was doing some follow up on the discussion about my Theme for Gallery 3 and was asked if I &#8230; <a href="http://blog.dragonsoft.us/2010/04/08/how-to-add-key-navigation-to-your-web-site/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>This is probably an old topic which still raises here and there.</p>
<p>Day ago while waiting for delayed flight on United, I was doing some follow up on the discussion about <a href="http://gallery.menalto.com/node/91519">my Theme for Gallery 3</a> and was asked if I could add support for Keyboard navigation.</p>
<p>In general, it is easy topic, especially when jQuery is supported for the web-site.</p>
<p>An objective is to allow visitor use keyboard to navigate. In my case it is applied to Gallery pagination enabling use of Left/Right/Up keys to move between photos or album pages.</p>
<p>While being simple in implementation, it adds a convenience for the end user enabling keyboard navigation versus mouse clicks.</p>
<p>So let&#8217;s add it&#8230;</p>
<p>First, we need some &#8220;anchors&#8221; on the page to find dynamically what our keys would do when pressed.</p>
<p>In case of my theme, I have paginator control allowing user navigate first/prev/next/last or go level up in the gallery structure (small arrow buttons/links), but it could be anything.</p>
<p>If we are to be W3C-friendly, then &lt;link&gt; tag in the header is more appropriate, but I am not going to use it in the example below. So let&#8217;s assume we have 5 links as following</p>
<pre class="brush: xml; title: ; notranslate">&lt;a title=&quot;First (Ctrl+Left)&quot; id=&quot;g-navi-first&quot; href=&quot;/first.html&quot;&gt;First&lt;/a&gt;
&lt;a title=&quot;Prev (Left)&quot; id=&quot;g-navi-prev&quot; href=&quot;/prev.html&quot;&gt;Prev&lt;/a&gt;
&lt;a title=&quot;Parent (Ctrl+Up)&quot; id=&quot;g-navi-parent&quot; href=&quot;/parent.html&quot;&gt;Parent&lt;/a&gt;
&lt;a title=&quot;Next (Right)&quot; id=&quot;g-navi-next&quot; href=&quot;/next.html&quot;&gt;Next&lt;/a&gt;
&lt;a title=&quot;Last (Ctrl+Right)&quot; id=&quot;g-navi-last&quot; href=&quot;/last.html&quot;&gt;Last&lt;/a&gt;</pre>
<p>As you can see we have 5 different actions to take and we have selected key combinations we are going to use.<br />
Code above by itself, would only work with mouse click.<br />
What we need next is very small jQuery code to bring life into it and add desired keyboard sensitivity.<br />
<em>Please notice that it would override default arrow key based scroll support of the browser. So if you want to keep both then simply adjust code below to your liking.</em></p>
<p>There goes the code. Simply dump it into JS file and add reference in your page:</p>
<pre class="brush: jscript; title: ; notranslate">/**
*
* Copyright (c) 2010 Serguei Dosyukov, http://blog.dragonsoft.us
*
*/
$.fn.KbdNavigation = function() {
  $(this).bind(&quot;keydown&quot;, function(event) {
    var lnk = &quot;&quot;;
    var lnk_first, lnk_prev, lnk_parent, lnk_next, lnk_last;
    lnk_first  = $(&quot;#g-navi-first&quot;).attr(&quot;href&quot;);
    lnk_prev   = $(&quot;#g-navi-prev&quot;).attr(&quot;href&quot;);
    lnk_parent = $(&quot;#g-navi-parent&quot;).attr(&quot;href&quot;);
    lnk_next   = $(&quot;#g-navi-next&quot;).attr(&quot;href&quot;);
    lnk_last   = $(&quot;#g-navi-last&quot;).attr(&quot;href&quot;);
   
    switch(event.keyCode) {
      case 0x25: // Ctr+Left/Left
        if(event.ctrlKey) { lnk = lnk_first; } else { lnk = lnk_prev; }
        break; 
      case 0x26: // Ctrl+Up
        if(event.ctrlKey) { lnk = lnk_parent; }
        break;
      case 0x27: // Ctrl+Right/Right
        if(event.ctrlKey) { lnk = lnk_last; } else { lnk = lnk_next; }
        break; 
    }
   
    if(lnk) {
      window.location = lnk;
      return true;
    }
   
    return true;
  });
}
$(document).ready( function() {
  $(document).KbdNavigation({});
});</pre>
<hr/><span style="font-size: 7pt">Copyright &copy; 2012 <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/04/08/how-to-add-key-navigation-to-your-web-site/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP, MySQL and error &#8220;2006: MySQL server has gone away&#8221;</title>
		<link>http://blog.dragonsoft.us/2010/03/24/php-mysql-and-error-2006-mysql-server-has-gone-away/</link>
		<comments>http://blog.dragonsoft.us/2010/03/24/php-mysql-and-error-2006-mysql-server-has-gone-away/#comments</comments>
		<pubDate>Wed, 24 Mar 2010 05:34:07 +0000</pubDate>
		<dc:creator>Serguei Dosyukov</dc:creator>
				<category><![CDATA[Web-design]]></category>
		<category><![CDATA[enable reconnect]]></category>
		<category><![CDATA[error 2006]]></category>
		<category><![CDATA[Gallery 3]]></category>
		<category><![CDATA[menalto]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[MySQL server has gone away]]></category>
		<category><![CDATA[php]]></category>
		<guid isPermaLink="false">http://blog.dragonsoft.us/?p=1129</guid>
		<description><![CDATA[As a hobby I like to do little photography. Same time I do not like to give my photos to someone else to host, so I have my gallery. It runs on Menalto&#8217;s Gallery 3 engine &#8211; nice, open source, &#8230; <a href="http://blog.dragonsoft.us/2010/03/24/php-mysql-and-error-2006-mysql-server-has-gone-away/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>As a hobby I like to do little photography.</p>
<p>Same time I do not like to give my photos to someone else to host, so I have my gallery.</p>
<p>It runs on Menalto&#8217;s Gallery 3 engine &#8211; nice, open source, PHP based with MySQL back-end.</p>
<p>Not my primary programming language, but allows me to host and enhance my blog, keep my gallery and small web-site.</p>
<p>Last night, while bringing some old photos over from my backup gallery (G3 is still under development and I do not want to recreate gallery if anything to happen, and it did &#8211; I killed the setup&#8230;), I noticed that import process start to fail. Several attempts to recover did not give much of the progress and I went digging error logs.</p>
<div>
<p>Well,.. I learned something interesting. I am not a PHP programmer, at least it is not that I do for living, or not at this time&#8230; but even doing simple house work forces you learn things <img src='http://blog.dragonsoft.us/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
G3 runs on Kohana framework and there is a wrapper for DB access.</p>
<p>What happend was that some of the SQL requests began timing out</p>
<blockquote><p>Database_Exception [ 44 ]: #2006: MySQL server has gone away</p></blockquote>
<p>In case when queries are not optimal, one has to learn how to manage PHP&#8230; through php.ini&#8230;</p>
<p>MySQL timeout related errors are &#8220;fixed&#8221; by telling mysql to reconnect&#8230; and for that &#8220;tricks&#8221; are handy&#8230;<br />
From browsing, reading, browsing, filtering, &#8230; while waiting for G2 Import I have found a solution which lead me <a href="http://www.php.net/manual/en/ini.list.php" target="_blank">here</a>. One of interest is called <strong>mysqli.reconnect</strong>. Little magic - simply adding the following line in PHP.INI would tell MySQL reconnect.</p>
<blockquote><p>mysqli.reconnect=1</p></blockquote>
<p>It may be still slow, but at least connection would recover gracefully.</p>
<p>We can talk about code styles, code protection and error handling, but line above is a hidden gold on the end of the rainbow called PHP.</p>
</div>
<hr/><span style="font-size: 7pt">Copyright &copy; 2012 <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/24/php-mysql-and-error-2006-mysql-server-has-gone-away/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 &#8230; <a href="http://blog.dragonsoft.us/2009/09/23/crystal-reports-2008-and-asp-net-speed-up-first-session/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></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; title: ; notranslate">&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; 2012 <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[Google has changed how Google Docs are exposed. As result method discussed in this article is no longer applicable. Please explore other options (ex: Google Sites). Thank you. There are plenty of presentations, documents, and spreadsheets we may want to share &#8230; <a href="http://blog.dragonsoft.us/2009/06/24/how-to-embed-google-docs-document-into-your-page/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<blockquote><p><span style="color: #ff0000;">Google has changed how Google Docs are exposed. As result method discussed in this article is no longer applicable. Please explore other options (ex: Google Sites). Thank you.</span></p></blockquote>
<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; title: ; notranslate">// 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; title: ; notranslate">&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; 2012 <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>24</slash:comments>
		</item>
		<item>
		<title>Visual Studio 2008 and IIS 7</title>
		<link>http://blog.dragonsoft.us/2009/01/02/visual-studio-2008-and-iis-7/</link>
		<comments>http://blog.dragonsoft.us/2009/01/02/visual-studio-2008-and-iis-7/#comments</comments>
		<pubDate>Fri, 02 Jan 2009 17:41:36 +0000</pubDate>
		<dc:creator>Serguei Dosyukov</dc:creator>
				<category><![CDATA[Web-design]]></category>
		<category><![CDATA[enable 32 bit support in iis 7]]></category>
		<category><![CDATA[iis 6 compatability in iis 7]]></category>
		<category><![CDATA[iis 7 32 bit mode]]></category>
		<category><![CDATA[windows installer and iis 7]]></category>
		<guid isPermaLink="false">http://blog.dragonsoft.us/?p=745</guid>
		<description><![CDATA[Deploying ASP.Net applications is always fun when it comes to packages which are more complex then usual and require additional actions taken and this one is not an exception. I think this topic run into the ground, but it seems &#8230; <a href="http://blog.dragonsoft.us/2009/01/02/visual-studio-2008-and-iis-7/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Deploying ASP.Net applications is always fun when it comes to packages which are more complex then usual and require additional actions taken and this one is not an exception.</p>
<p>I think this topic run into the ground, but it seems to come back again and again. I guess the reason for that is &#8220;default&#8221; state set for the environment&#8230;</p>
<p>After upgrade of operating system to Vista IIS 7 would be installed. This brings some &#8220;inconveniences&#8221; into usual development process. Aside from worrying about disabling UAC, few other things usually breaks.</p>
<p>One of them is that setup package for ASP.Net application created in Visual Studio starts to fail with the error that installer session closed improperly and process has to be restarted (or similar).</p>
<p>If we look into installer log (check <a href="http://blogs.msdn.com/windows_installer_team/archive/2005/09/21/471793.aspx" target="_blank">here </a>on how to enable debug mode) the following error could be found:</p>
<blockquote><p>Action 11:18:53: WEBCA_SetTARGETSITE.<br />
Action start 11:18:53: WEBCA_SetTARGETSITE.<br />
MSI (c) (B4:A4) [11:18:53:657]: Note: 1: 2235 2: 3: ExtendedType 4: SELECT `Action`,`Type`,`Source`,`Target`, NULL, `ExtendedType` FROM `CustomAction` WHERE `Action` = &#8216;WEBCA_SetTARGETSITE&#8217;<br />
MSI (c) (B4:A4) [11:18:53:661]: Creating MSIHANDLE (1) of type 790542 for thread 4260<br />
MSI (c) (B4:4C) [11:18:53:662]: Invoking remote custom action. DLL: C:\Users\SDOSYU~1\AppData\Local\Temp\MSI2978.tmp, Entrypoint: SetTARGETSITE<br />
MSI (c) (B4:F0) [11:18:53:666]: Cloaking enabled.<br />
MSI (c) (B4:F0) [11:18:53:666]: Attempting to enable all disabled privileges before calling Install on Server<br />
MSI (c) (B4!14) [11:18:53:726]: Creating MSIHANDLE (2) of type 790531 for thread 4116<br />
INFO   : [01/02/2009 11:18:53:726] [SetTARGETSITE ]: Custom Action is starting&#8230;<br />
INFO   : [01/02/2009 11:18:53:727] [SetTARGETSITE ]: CoInitializeEx &#8211; COM initialization Apartment Threaded&#8230;<br />
ERROR  : [01/02/2009 11:18:53:729] [SetTARGETSITE ]: FAILED: -2147221164<br />
ERROR  : [01/02/2009 11:18:53:730] [SetTARGETSITE ]: Custom Action failed with code: &#8217;340&#8242;<br />
INFO   : [01/02/2009 11:18:53:731] [SetTARGETSITE  ]: Custom Action completed with return code: &#8217;340&#8242;</p></blockquote>
<p>Very informational&#8230; Who would guess that it simply comes to support for IIS 6 API. In IIS 7 it called &#8220;IIS 6 Management compatability&#8221;.</p>
<p>Usually this module is not installed by default and we have to actually enable it.<br />
Very simple and very quick solution is to go &#8220;Control Panel\Programs and Features\Turn Windows features on or off&#8221; and then click the check box.</p>
<p><a href="http://blog.dragonsoft.us/wp-content/uploads/2009/01/iis7support.png" target="_blank"><img class="size-medium wp-image-746" style="margin: 5px;" title="iis7support" src="http://blog.dragonsoft.us/wp-content/uploads/2009/01/iis7support-300x262.png" alt="iis7support" width="240" height="210" /></a></p>
<p>There is one more problem which may be encountered on 64 bit machine &#8211; support for 32 bit assemblies is disabled by default. To reenable, change Application Pool Defaults for your IIS 7 installation:<br />
<a href="http://blog.dragonsoft.us/wp-content/uploads/2009/01/32bitaspon64bitos.png" target="_blank"><img class="size-medium wp-image-759" style="margin: 5px;" title="32bitaspon64bitos" src="http://blog.dragonsoft.us/wp-content/uploads/2009/01/32bitaspon64bitos-300x192.png" alt="32bitaspon64bitos" width="300" height="192" /></a></p>
<hr/><span style="font-size: 7pt">Copyright &copy; 2012 <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/02/visual-studio-2008-and-iis-7/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>ASP.Net/WF : New built-in .Net Charting control</title>
		<link>http://blog.dragonsoft.us/2008/11/26/aspnet-new-build-in-net-charting-control/</link>
		<comments>http://blog.dragonsoft.us/2008/11/26/aspnet-new-build-in-net-charting-control/#comments</comments>
		<pubDate>Wed, 26 Nov 2008 18:14:38 +0000</pubDate>
		<dc:creator>Serguei Dosyukov</dc:creator>
				<category><![CDATA[Delphi]]></category>
		<category><![CDATA[Fun stuff with C#]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Web-design]]></category>
		<category><![CDATA[asp.net]]></category>
		<category><![CDATA[asp:chart]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[chart support in .Net]]></category>
		<category><![CDATA[charting]]></category>
		<category><![CDATA[Dundas]]></category>
		<category><![CDATA[winforms]]></category>
		<guid isPermaLink="false">http://blog.dragonsoft.us/?p=620</guid>
		<description><![CDATA[I was always for a &#8220;built-in&#8221; support of features in modern development environment. Even if it comes in basic form, we, as programmers, should have ability to do &#8220;basic&#8221; stuff without 3rd party involvement. There are plenty of 3rd party solutions &#8230; <a href="http://blog.dragonsoft.us/2008/11/26/aspnet-new-build-in-net-charting-control/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I was always for a &#8220;built-in&#8221; support of features in modern development environment. Even if it comes in basic form, we, as programmers, should have ability to do &#8220;basic&#8221; stuff without 3rd party involvement.</p>
<p>There are plenty of 3rd party solutions on the market which would help you include some kind of charting support with your ASP pages and WinForms applications &#8211; <a href="http://www.softwarefx.com/sfxNetProducts/ChartFX/wpf/" target="_blank">ChartFX</a>, <a href="http://www.componentart.com/charting/" target="_blank">ComponentArt&#8217;s Charting</a>, <a href="http://www.dundas.com/Products/Chart/NET/index.aspx" target="_blank">Dundas Chart</a> - these are just few from many available on the market today.</p>
<p>As it turned out, Microsoft has decided to add out-of-the-box support for Charting as well - <a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=130f7986-bf49-4fe5-9ca8-910ae6ea442c&amp;DisplayLang=en" target="_blank">&lt;asp:chart runat=&#8221;server&#8221;/&gt;</a>.<br />
Read about it here - <a href="http://weblogs.asp.net/scottgu/archive/2008/11/24/new-asp-net-charting-control-lt-asp-chart-runat-quot-server-quot-gt.aspx" target="_blank">New ASP.NET Charting Control: &lt;asp:chart runat=&#8221;server&#8221;/&gt;</a> by Scott Guthrie &#8211; everything you need to know about the .Net 3.5 framework new addition.</p>
<p>For  additional information also visit Alex Gorev&#8217;s <a href="http://blogs.msdn.com/alexgor/archive/2008/11/07/microsoft-chart-control-vs-dundas-chart-control.aspx" target="_blank">blog</a>.</p>
<p><strong>Note 1</strong>: Even though caption says it is ASP.Net solution, in the original you would find link to WinForms sample as well.<br />
<strong>Note 2</strong>: Do not worry about Dundas copyright &#8211; &#8220;Microsoft acquired Dundas Data Visualization Intellectual Property in April 2007.&#8221;</p>
<hr/><span style="font-size: 7pt">Copyright &copy; 2012 <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/2008/11/26/aspnet-new-build-in-net-charting-control/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Menalto&#8217;s Gallery 2.3 has been released</title>
		<link>http://blog.dragonsoft.us/2008/10/26/menaltos-gallery-23-has-been-released/</link>
		<comments>http://blog.dragonsoft.us/2008/10/26/menaltos-gallery-23-has-been-released/#comments</comments>
		<pubDate>Sun, 26 Oct 2008 19:20:43 +0000</pubDate>
		<dc:creator>Serguei Dosyukov</dc:creator>
				<category><![CDATA[Delphi]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Web-design]]></category>
		<category><![CDATA[cooliris]]></category>
		<category><![CDATA[danny thorpe]]></category>
		<category><![CDATA[gallery 2]]></category>
		<category><![CDATA[menalto]]></category>
		<category><![CDATA[piclens]]></category>
		<guid isPermaLink="false">http://blog.dragonsoft.us/?p=537</guid>
		<description><![CDATA[If you ever visited my photo gallery, you  may noticed that it runs on Menalto&#8217;s Gallery 2 engine. With recent release of 2.3 version, I have updated my installation as well. Few bug fixes may not worth mentioning, but noticeable &#8230; <a href="http://blog.dragonsoft.us/2008/10/26/menaltos-gallery-23-has-been-released/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>If you ever visited <a href="http://gallery.dragonsoft.us/" target="_blank">my photo gallery</a>, you  may noticed that it runs on <a href="http://gallery.menalto.com/" target="_blank">Menalto&#8217;s Gallery 2</a> engine.</p>
<p>With recent release of 2.3 version, I have updated my installation as well.</p>
<p>Few bug fixes may not worth mentioning, but noticeable change is in slide show plug-in. Starting this version slide show uses <a href="http://www.cooliris.com/" target="_blank">Cooliris&#8217;s PicLens</a>. You can see a <a href="http://gallery.dragonsoft.us/main.php?g2_view=slideshow.Slideshow&amp;g2_itemId=344" target="_blank">sample here</a>.</p>
<p>Why would I want to mention it?</p>
<p>Aside from being nice piece of software, CoolIris was a place where Danny Thorpe was working for <a href="http://dannythorpe.com/about2/" target="_blank">some time</a>.</p>
<p>&#8220;Was&#8221; because Danny is back at Microsoft (see some notes in his blog above).</p>
<hr/><span style="font-size: 7pt">Copyright &copy; 2012 <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/2008/10/26/menaltos-gallery-23-has-been-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>TIP: HTML &#8220;File Download&#8221; dialog customization</title>
		<link>http://blog.dragonsoft.us/2008/10/15/html-file-download-dialog-customization/</link>
		<comments>http://blog.dragonsoft.us/2008/10/15/html-file-download-dialog-customization/#comments</comments>
		<pubDate>Wed, 15 Oct 2008 18:09:39 +0000</pubDate>
		<dc:creator>Serguei Dosyukov</dc:creator>
				<category><![CDATA[Web-design]]></category>
		<category><![CDATA[file download dialog]]></category>
		<category><![CDATA[hide open button]]></category>
		<category><![CDATA[hide save button]]></category>
		<category><![CDATA[no open button]]></category>
		<category><![CDATA[no save button]]></category>
		<guid isPermaLink="false">http://blog.dragonsoft.us/?p=519</guid>
		<description><![CDATA[NOTE: This only applies to Internet Explorer 6 with XP SP2 and later. Once in a while you would like to become a tyrant when it comes to what your site&#8217;s visitors can do with the content, file links in &#8230; <a href="http://blog.dragonsoft.us/2008/10/15/html-file-download-dialog-customization/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<blockquote><p>NOTE: This only applies to Internet Explorer 6 with XP SP2 and later.</p></blockquote>
<p>Once in a while you would like to become a <strong>tyrant</strong> when it comes to what your site&#8217;s visitors can do with the content, file links in particular.</p>
<p>OK, not a tyrant per se, but you want to limit operations for some file types.</p>
<ul>
<li>Can user open a file from IE after download?</li>
<li>Can user save a file from IE after download?</li>
</ul>
<p><em>&#8220;Why would I want to do that?&#8221;</em> &#8211; you may ask.</p>
<p>There is a small example for you:</p>
<blockquote><p>Opening of CSV file in Excel and saving it after would actually adjust file structure since Excel treats some of the values differently which otherwise present in the CSV file. 0 (zero) may be converted and saved as an empty space, etc.</p></blockquote>
<p>What can you do?</p>
<p>Remember, IE saves a temporary copy of the file in TEMP location and then open it from there. Your visitor may not be to comfortable looking for the file in some &#8220;strange&#8221; places. So, to avoid situation above you just have to be that &#8220;tyrant&#8221; and not allow opening a file without saving it first in proper place.</p>
<p><a href="http://msdn.microsoft.com/en-us/library/ms533689(VS.85).aspx" target="_blank">From this MSDN article</a>:</p>
<p>To Hide &#8220;Open&#8221; button in &#8220;File Download&#8221; dialog place the following META tag into your page header:</p>
<pre class="brush: xml; title: ; notranslate">&lt;head&gt;
&lt;meta name=&quot;DownloadOptions&quot; content=&quot;noopen&quot; /&gt;
&lt;/head&gt;</pre>
<p>Similarly you can hide &#8220;Save&#8221; button</p>
<pre class="brush: xml; title: ; notranslate">&lt;head&gt;
&lt;meta name=&quot;DownloadOptions&quot; content=&quot;nosave&quot; /&gt;
&lt;/head&gt;</pre>
<hr/><span style="font-size: 7pt">Copyright &copy; 2012 <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/2008/10/15/html-file-download-dialog-customization/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

