<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/rss2full.xsl" type="text/xsl" media="screen"?><?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/itemcontent.css" type="text/css" media="screen"?><!-- generator="wordpress/2.3.3" --><rss 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/" version="2.0">

<channel>
	<title>Dejan on Technology</title>
	<link>http://www.vesic.org/english/blog</link>
	<description>dotNet, ASP.Net, Programming, Software ...</description>
	<pubDate>Thu, 24 Jul 2008 18:54:45 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.3.3</generator>
	<language>en</language>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/DejanOnTechnology" type="application/rss+xml" /><item>
		<title>Trust No One … Google Included</title>
		<link>http://www.vesic.org/english/blog/google/trust-no-one-google-included/</link>
		<comments>http://www.vesic.org/english/blog/google/trust-no-one-google-included/#comments</comments>
		<pubDate>Thu, 24 Jul 2008 18:54:45 +0000</pubDate>
		<dc:creator>Dejan Vesić</dc:creator>
		
		<category><![CDATA[Digital Life]]></category>

		<category><![CDATA[Google]]></category>

		<guid isPermaLink="false">http://www.vesic.org/english/blog/google/trust-no-one-google-included/</guid>
		<description><![CDATA[I am big fan of Google - I like services it offers as well as Google "attitude" toward outside world.

Once when you start using those services, and transfer most of your digital life online, you are hooked - possibility to access/create all of data from anywhere and virtually from any device which interprets html (and that means your mobile phone) is something that you will appreciate much....]]></description>
			<content:encoded><![CDATA[<p>I am a big fan of Google - I like services it offers, as well as Google &#8220;attitude&#8221; toward outside world.</p>
<p>Once when you start using those services, and transfer most of your digital life online, you are hooked - possibility to access/create all of data from anywhere and virtually from any device which interprets html (and that means your mobile phone) is something that you will appreciate much.</p>
<p>Well, maybe &#8220;was&#8221; is better tense for first sentence; and of course, being human, just one simple thing was enough to change this: they blocked my Google Account (and related GMail account):</p>
<p><img class="ImageRight" src='http://www.vesic.org/english/blog/wp-content/uploads/2008/07/google-disabled-my-account.png' alt='Google Disabled My Account' /></p>
<p>For no apparent reason (one night I was sending my mail and next morning I was presented with dreadful message) I got &#8220;Sorry, your account has been disabled&#8221;. This is not just access to mail, but to <a href="http://docs.google.com/">Google Docs</a>, <a href="http://www.google.com/notebook/">Google Notebook</a>, <a href="http://www.google.com/reader/view/">Google Reader</a>, Google Bookmarks - just to mention ones that I use most often.</p>
<p>Of course, I was vaguely aware that this possibility (to get account disabled) exists, but I was also thinking that it is reserved for bad violation of <a href="http://mail.google.com/mail/help/terms_of_use.html">Terms of Use</a> and I was not even close to this; my usage was just regular mail usage - none of unusual activities mentioned in help / troubleshooting documents or in related posts in GMail help groups.</p>
<p>Also, disruptive and unannounced access restriction to the same online repository can hurt you a lot.</p>
<p>Add on top of that very slow response of Google Support (third day, and I have two automated responses and one form filling) and no idea when or even if I would get access to my account again - that put serious doubts in my decision to give trust to Google as big and &#8220;good&#8221; firm with my data.</p>
<p>Google is not nice; Google is just another company in search for steady and infinite revenue streams; all &#8220;free&#8221; services it offers are just way to expand market where ads (as main source of revenue) can be placed. </p>
<p>As soon as my account is enabled, I will change two things right away - change/add new online &#8220;office&#8221; provider (I am testing <a href="http://www.zoho.com/">Zoho</a> now) and backup all of the stuff regularly to desktop (good old offline storage) - my data and time invested to create them is of utmost importance.</p>
<p><em>Update</em>: they enabled my account after four days; as expected, no explanation was given why account was suspended in a first place. Not nice - 4 days in speedy and busy everyday life w/o mail and many of documents and notes is at least &#8220;not nice&#8221;. Maybe all those services are free, but I would rather pay some amount for benefit of having telephone support around of clock.</p>

<p><a href="http://feeds.feedburner.com/~a/DejanOnTechnology?a=ODgBzV"><img src="http://feeds.feedburner.com/~a/DejanOnTechnology?i=ODgBzV" border="0"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/DejanOnTechnology?a=4U6Q2J"><img src="http://feeds.feedburner.com/~f/DejanOnTechnology?i=4U6Q2J" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/DejanOnTechnology?a=CyNOej"><img src="http://feeds.feedburner.com/~f/DejanOnTechnology?i=CyNOej" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/DejanOnTechnology?a=0qgBcj"><img src="http://feeds.feedburner.com/~f/DejanOnTechnology?i=0qgBcj" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/DejanOnTechnology/~4/344882812" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.vesic.org/english/blog/google/trust-no-one-google-included/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Problems with Microsoft Jet OLEDB on 64bit Windows?</title>
		<link>http://www.vesic.org/english/blog/database/problems-with-microsoft-jet-oledb-on-64bit-windows/</link>
		<comments>http://www.vesic.org/english/blog/database/problems-with-microsoft-jet-oledb-on-64bit-windows/#comments</comments>
		<pubDate>Tue, 24 Jun 2008 12:43:17 +0000</pubDate>
		<dc:creator>Dejan Vesić</dc:creator>
		
		<category><![CDATA[.Net]]></category>

		<category><![CDATA[Database]]></category>

		<category><![CDATA[Microsoft]]></category>

		<guid isPermaLink="false">http://www.vesic.org/english/blog/database/problems-with-microsoft-jet-oledb-on-64bit-windows/</guid>
		<description><![CDATA[If you have scenario like this:

In your C# / VB.NET application you are using Microsoft Access database (MDF file) 
Target machines are 64 bit machines (Vista 64 or some of the Windows Operating System flavors
On target machines, where you plan to deploy solution, you installed Microsoft 2007 Office System Driver: Data Connectivity Components
And still, you [...]]]></description>
			<content:encoded><![CDATA[<p>If you have scenario like this:</p>
<ul>
<li>In your C# / VB.NET application you are using Microsoft Access database (MDF file) </li>
<li>Target machines are 64 bit machines (Vista 64 or some of the Windows Operating System flavors</li>
<li>On target machines, where you plan to deploy solution, you installed<a href="http://www.microsoft.com/downloads/details.aspx?familyid=7554F536-8C28-4598-9B72-EF94E038C891&#038;displaylang=en"> Microsoft 2007 Office System Driver: Data Connectivity Components</a></li>
<li>And still, you are experiencing error like this:</li>
</ul>
<pre><code>System.InvalidOperationException: The 'Microsoft.Jet.OLEDB.4.0' provider is
not registered on the local machine.</code></pre>
<p>Check if your application is setup for any CPU (Properties / Build / Platform target) which is default. If that is the case, change it to x86 - at the moment, there are no 64bit drivers for Microsoft Office, so only 32bit applications will work as expected.</p>

<p><a href="http://feeds.feedburner.com/~a/DejanOnTechnology?a=4ed0PR"><img src="http://feeds.feedburner.com/~a/DejanOnTechnology?i=4ed0PR" border="0"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/DejanOnTechnology?a=tFoj3I"><img src="http://feeds.feedburner.com/~f/DejanOnTechnology?i=tFoj3I" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/DejanOnTechnology?a=enTSyi"><img src="http://feeds.feedburner.com/~f/DejanOnTechnology?i=enTSyi" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/DejanOnTechnology?a=JmAGUi"><img src="http://feeds.feedburner.com/~f/DejanOnTechnology?i=JmAGUi" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/DejanOnTechnology/~4/318863090" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.vesic.org/english/blog/database/problems-with-microsoft-jet-oledb-on-64bit-windows/feed/</wfw:commentRss>
		</item>
		<item>
		<title>VS 2005/2008 and Vista - IE cannot display the webpage</title>
		<link>http://www.vesic.org/english/blog/visual-studio-2005/vs-20052008-and-vista-ie-cannot-display-the-webpage/</link>
		<comments>http://www.vesic.org/english/blog/visual-studio-2005/vs-20052008-and-vista-ie-cannot-display-the-webpage/#comments</comments>
		<pubDate>Sun, 25 May 2008 08:29:12 +0000</pubDate>
		<dc:creator>Dejan Vesić</dc:creator>
		
		<category><![CDATA[Vista]]></category>

		<category><![CDATA[Visual Studio 2005]]></category>

		<category><![CDATA[Visual Studio 2008]]></category>

		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://www.vesic.org/english/blog/visual-studio-2005/vs-20052008-and-vista-ie-cannot-display-the-webpage/</guid>
		<description><![CDATA[I recently reinstalled my laptop completely (it is very nice Dell XPS M1330) and took that opportunity to make it into decent development machine (w/o all the stupid preinstalled applications).
Installed also Visual Studio 2005 and 2008, SQL 2005 Express and all the little tools necessary (ClipX for example).
Fired up latest web site on which I [...]]]></description>
			<content:encoded><![CDATA[<p><img class="imageRight" src='http://www.vesic.org/english/blog/wp-content/uploads/2008/05/ie-cannot-display-the-web-page1.png' alt='Vista and Visual Studio - problems with IPv6 and internal WebDev.WebServer' />I recently reinstalled my laptop completely (it is very nice <a href="http://www.dell.com/content/products/productdetails.aspx/xpsnb_m1330?c=us&#038;cs=19&#038;l=en&#038;s=dhs">Dell XPS M1330</a>) and took that opportunity to make it into decent development machine (w/o all the stupid preinstalled applications).</p>
<p>Installed also Visual Studio 2005 and 2008, SQL 2005 Express and all the little tools necessary (<a href="http://bluemars.org/clipx/">ClipX</a> for example).</p>
<p>Fired up latest web site on which I work on, F5 and &#8230; nothing - dreadfull message of <strong>&#8220;Internet Explorer cannot display the webpage&#8221;</strong>.</p>
<p>Ok, no panic here, let try Visual Studio 2008 with same web site; nothing <img src='http://www.vesic.org/english/blog/wp-includes/images/smilies/icon_sad.gif' alt=':-(' class='wp-smiley' /> Same site, on two other development machines (Vista &#038; Vista 64) under VS 2005 and VS 2008 works w/o problem.</p>
<p>Started researching and debugging; it turns out that next generation protocol <a href="http://en.wikipedia.org/wiki/IPv6">IPv6</a>, or its implementation on Vista clashes with integrated web server WebDev.WebServer.exe; WebDev has a problem finding localhost address in default configuration.</p>
<p>Easy fix for this is to <strong>comment ::1 entry</strong> in <strong>hosts</strong> file:</p>
<p><img src='http://www.vesic.org/english/blog/wp-content/uploads/2008/05/uncomment-ipv6-localhost.png' alt='Uncomment ::1 in hosts file to correct webdev / visual studio problems' /></p>
<p>No restart is needed, either of computer or Visual Studio.</p>
<p>(to edit <em>hosts</em> file you can use <em>notepad</em> started with elevated rigths or &#8220;<em>Run as administrator</em>&#8220;; in <em>Open</em> dialog you type in <em>%windir%\System32\drivers\etc\hosts</em>)</p>

<p><a href="http://feeds.feedburner.com/~a/DejanOnTechnology?a=GL8fyV"><img src="http://feeds.feedburner.com/~a/DejanOnTechnology?i=GL8fyV" border="0"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/DejanOnTechnology?a=4U6qiH"><img src="http://feeds.feedburner.com/~f/DejanOnTechnology?i=4U6qiH" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/DejanOnTechnology?a=T6yPMh"><img src="http://feeds.feedburner.com/~f/DejanOnTechnology?i=T6yPMh" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/DejanOnTechnology?a=89U6Rh"><img src="http://feeds.feedburner.com/~f/DejanOnTechnology?i=89U6Rh" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/DejanOnTechnology/~4/297639494" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.vesic.org/english/blog/visual-studio-2005/vs-20052008-and-vista-ie-cannot-display-the-webpage/feed/</wfw:commentRss>
		</item>
		<item>
		<title>ZYB.COM - your mobile life on web</title>
		<link>http://www.vesic.org/english/blog/web/zybcom-your-mobile-life-on-web/</link>
		<comments>http://www.vesic.org/english/blog/web/zybcom-your-mobile-life-on-web/#comments</comments>
		<pubDate>Mon, 05 May 2008 17:33:42 +0000</pubDate>
		<dc:creator>Dejan Vesić</dc:creator>
		
		<category><![CDATA[Mobile]]></category>

		<category><![CDATA[Technology]]></category>

		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://www.vesic.org/english/blog/web/zybcom-your-mobile-life-on-web/</guid>
		<description><![CDATA[One of my virtues (or flaws, which many would say  ) is that I am (too) organized; one of the favorite principles is &#8220;do it once (and right)&#8221;  - in programming, work and daily activities like entering new contact data (in phone, Outlook or web application / service) - just want to enter [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://zyb.com"><img class="imageRight" src='http://www.vesic.org/blog/upload/zyb.png' alt='Zyb.Com - Web service for synchronization of your mobile address book and calendar' /></a>One of my virtues (or flaws, which many would say <img src='http://www.vesic.org/english/blog/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> ) is that I am (too) organized; one of the favorite principles is &#8220;do it once (and right)&#8221;  - in programming, work and daily activities like entering new contact data (in phone, Outlook or web application / service) - just want to enter it once, in one place and to avoid duplication, merging, copying, version conflicting - all those things when you have one piece of data scattered all around.</p>
<p>Logical place for reference point is mobile phone - mobile phone is now center of daily activities: you are reachable because of it, you have your contacts, notes, calendars and mails in it. However, no matter how big screen and keyboard are (I am proud owner of  <a href="http://www.nokia.co.uk/A4221031">Nokia E61</a>), it is useful, for many reasons, to have all those data elsewhere:</p>
<ul>
<li>Safety reasons - having a backup of your data is always a good thing</li>
<li>It is easier to transfer all those data to a new phone; replacing a phone is not very often action, but when you need to do that, it is better to be as painless as possible.</li>
<li>Easier data manipulation; using &#8220;real&#8221; keyboard and screen is much more comfortable than using phone</li>
<li>Access it from anywhere - you can access those data even when your phone is not with you</li>
</ul>
<p>For years, I am using <a href="http://www.plaxo.com/">Plaxo</a> service, which is rather good in free version. &#8220;Rather&#8221; because I had objections from start of using it: </p>
<ul>
<li>It is slow; no matter how new versions are published, beta or not beta, web interface is slow and cumbersome. Response from service is generally &#8220;wait for it&#8221; and user friendliness is not on high level.</li>
<li>You need computer, with necessary drivers for cable/bluetooth connection with your mobile phone</li>
<li>You need to have Microsoft Outlook installed; in the era of <a href="http://mail.google.com">GMAIL</a> that is obsolete - you do not want to be tied up for one computer or to worry about licenses.</li>
</ul>
<p>To be fair enough, most of other mobile phone synchronization solutions are far from perfect; even &#8220;native&#8221; choice for Nokia phone owners, <a href="http://europe.nokia.com/A4144903">Nokia PC Suite</a> is generally unusable w/o Outlook installed - way and quality of work with data (over Windows Explorer shell integration) simply can not support any major data changes  (even if I disregard fact that this package installs bunch of not wanted software and installs itself in system tray which bugs me additionally <img src='http://www.vesic.org/english/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> ).</p>
<p>I found recently <a href="http://zyb.com">ZYB</a> - perfect &#8220;little&#8221; web service for mobile phone synchronization. Most of objections above are resolved:</p>
<ul>
<li>Service is free with very simple registration procedure; number of supported phone models is very large</li>
<li>Base for synchronization is <a href="http://en.wikipedia.org/wiki/SyncML">SyncML</a> technology, supported by major phone vendors</li>
<li>Setting up phone (at least for Nokia E61) is trivial - accept and save service SMS sent by site</li>
<li>Middleman is cut out - no computer / Outlook is needed; communication phone < - > ZYB is direct, using GPRS / 3G / Wireless, whatever is available</li>
</ul>
<p>First synchronization went fast and almost error free; &#8220;almost&#8221; because I lost tasks from my phone - tasks are treated as calendar entries; most of phones set up due date when entering tasks and ZYB was setup not to synchronize any calendar items older than 7 days; (I reported this as a bug).</p>
<p>So, <strong>please do full backup</strong> of your phone using &#8220;old way&#8221; before experimenting <img src='http://www.vesic.org/english/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Apart synchronization, ZYB offers other services - import of address book from Gmail, elimination of duplicate contacts and (unavoidable) social component - to connect with people which phones you have and they are also on ZYB (it is unobtrusive option).</p>
<p>Words of warning: service is still in beta and you can expect some unstabillity; also, there is trust issue - do you want to share your private data with some &#8220;foreign&#8221; site; I decided that I am fine with that, years ago, when I started using Plaxo service. It is up to you to decide for yourself.</p>
<p>Verdict: My recommendation.</p>

<p><a href="http://feeds.feedburner.com/~a/DejanOnTechnology?a=658kqQ"><img src="http://feeds.feedburner.com/~a/DejanOnTechnology?i=658kqQ" border="0"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/DejanOnTechnology?a=4jrVpH"><img src="http://feeds.feedburner.com/~f/DejanOnTechnology?i=4jrVpH" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/DejanOnTechnology?a=urh2lh"><img src="http://feeds.feedburner.com/~f/DejanOnTechnology?i=urh2lh" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/DejanOnTechnology?a=0idFRh"><img src="http://feeds.feedburner.com/~f/DejanOnTechnology?i=0idFRh" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/DejanOnTechnology/~4/284079758" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.vesic.org/english/blog/web/zybcom-your-mobile-life-on-web/feed/</wfw:commentRss>
		</item>
		<item>
		<title>How to Get Command Line of Launched Process</title>
		<link>http://www.vesic.org/english/blog/microsoft/how-to-get-command-line-of-launched-process/</link>
		<comments>http://www.vesic.org/english/blog/microsoft/how-to-get-command-line-of-launched-process/#comments</comments>
		<pubDate>Sun, 04 May 2008 22:47:58 +0000</pubDate>
		<dc:creator>Dejan Vesić</dc:creator>
		
		<category><![CDATA[Microsoft]]></category>

		<category><![CDATA[Tools]]></category>

		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://www.vesic.org/english/blog/microsoft/how-to-get-command-line-of-launched-process/</guid>
		<description><![CDATA[One nice improvement in Vista is enhanced Task Manager - apart from very good Resource Monitor tool, there are a lot of new attributes which you can select for running processes (View / Select Columns); especially interesting are:

Image Path Name
Command Line:


However, Microsoft can make some tasks much complicated that they should be; reasonable expectation is [...]]]></description>
			<content:encoded><![CDATA[<p>One nice improvement in Vista is enhanced <em>Task Manager</em> - apart from very good <em>Resource Monitor</em> tool, there are a lot of new attributes which you can select for running processes (<em>View</em> / <em>Select Columns</em>); especially interesting are:</p>
<ul>
<li>Image Path Name</li>
<li>Command Line:</li>
</ul>
<p><img class="ImageRight" src='http://www.vesic.org/english/blog/wp-content/uploads/2008/05/vista-task-manager-select-columns.png' alt='Vista - Task Manager - ‘Image Path Name’ and ‘Command Line’ attributes of an process' /></p>
<p>However, Microsoft can make some tasks much complicated that they should be; reasonable expectation is that each standard application (and Task Manager is one - it is part of Windows operating system) supports at least basics of Copy / Paste - getting data displayed in a grid in some text format.</p>
<p>For Task Manager that is not case <img src='http://www.vesic.org/english/blog/wp-includes/images/smilies/icon_sad.gif' alt=':-(' class='wp-smiley' /> - there is no way (to my knowledge) to get displayed data from grid in some text form which you can use later.</p>
<p>Solution for this particular problem (and many other related) is in excellent <a href="http://technet.microsoft.com/en-us/sysinternals/default.aspx">SysInternals</a> package: <a href="http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx">ProcessExplorer</a> will display full information about selected process and allow you to copy that info on Clipboard:</p>
<p><img src='http://www.vesic.org/english/blog/wp-content/uploads/2008/05/sysinternals-process-explorer-detail.png' alt='SysInternals - Process Explorer - Details about process' /></p>
<p>Best of all, this nice tool is not tied for any particular Windows version - it will work in Windows 2000, XP or Vista.</p>

<p><a href="http://feeds.feedburner.com/~a/DejanOnTechnology?a=cr0J7P"><img src="http://feeds.feedburner.com/~a/DejanOnTechnology?i=cr0J7P" border="0"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/DejanOnTechnology?a=cyDPrH"><img src="http://feeds.feedburner.com/~f/DejanOnTechnology?i=cyDPrH" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/DejanOnTechnology?a=s7pzwh"><img src="http://feeds.feedburner.com/~f/DejanOnTechnology?i=s7pzwh" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/DejanOnTechnology?a=xa1Ihh"><img src="http://feeds.feedburner.com/~f/DejanOnTechnology?i=xa1Ihh" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/DejanOnTechnology/~4/283547157" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.vesic.org/english/blog/microsoft/how-to-get-command-line-of-launched-process/feed/</wfw:commentRss>
		</item>
		<item>
		<title>IPhone close encounter - don’t like it</title>
		<link>http://www.vesic.org/english/blog/technology/iphone-close-encounter-dont-like-it/</link>
		<comments>http://www.vesic.org/english/blog/technology/iphone-close-encounter-dont-like-it/#comments</comments>
		<pubDate>Thu, 24 Apr 2008 00:56:37 +0000</pubDate>
		<dc:creator>Dejan Vesić</dc:creator>
		
		<category><![CDATA[Apple]]></category>

		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://www.vesic.org/english/blog/technology/iphone-close-encounter-dont-like-it/</guid>
		<description><![CDATA[I do not like Apple - consider them elitist company, with way too much hype about design and superiority of their products over any other similar products (implied: Microsoft ones) on the market.
However, geek in me have respect for any well crafted gadget / electronic device / software product, no matter who is manufacturer.
In the [...]]]></description>
			<content:encoded><![CDATA[<p><img class="imageRight" src='http://www.vesic.org/english/blog/wp-content/uploads/2008/04/iphone.gif' alt='IPhone - Good, Bad and Ugly' />I do not like Apple - consider them elitist company, with way too much hype about design and superiority of their products over any other similar products (implied: Microsoft ones) on the market.</p>
<p>However, geek in me have respect for any well crafted gadget / electronic device / software product, no matter who is manufacturer.</p>
<p>In the series of events (primarily caused by my friend <a href="http://aplus.co.yu/">Aleck</a> <img src='http://www.vesic.org/english/blog/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> ) I promised to my wife Maja nice present for her birthday: <a href="http://www.apple.com/iphone/">IPhone</a>.</p>
<p>IPhone arrived couple hours ago; I tried to approach it completely open-minded.  </p>
<h2>Good - Look and Feel</h2>
<p>This symbiotic phone / <a href="http://en.wikipedia.org/wiki/Personal_digital_assistant">PDA</a> is beautifully designed - simplicity and combination of materials has stunning effect on anyone who sees it / holds it. Screen is bright and clear; famous multi-touch navigation is intuitive and fast.</p>
<p>Default applications are good, and pleasant to use.</p>
<p>However, IPhone has a long, long way to go in order to be considered (in my opinion) as good business phone for daily usage:</p>
<h2>Bad (ITunes)</h2>
<p>Primary interface between IPhone and rest of your (mine) Windows based computer is <a href="http://www.apple.com/itunes/">ITunes</a>: multi-mega (57 Mb) bloatware (with nice look of course):</p>
<ul>
<li>It tries to hijack anything remotely close to multimedia on your computer</li>
<li>Synchronisation with Outlook (done with bloatware above) is seriously crippled: <strong>no Notes synchronisation</strong> and <strong>no To-Do list synchronisation</strong></li>
<li>There is no way to directly access various elements in IPhone (Notes) if needed</li>
</ul>
<p>Of course, you can find ways around Net to &#8220;overcome&#8221; obstacles: sending notes as mail to yourself, and reading/copy/paste on IPhone Notes, creating dummy contacts and passing notes in Note field in contacts etc. Would you do that with 50+ notes?</p>
<p>Data entry over screen can be a pain, especially if you have thick fingers; I believe that practice will do, but got annoyed in half hour of trying to enter some Notes.</p>
<h2>Ugly - Missing Features</h2>
<p>IPhone <strong>has NO To-Do lists</strong>; To-Do lists are crucial part of my daily <a href="http://en.wikipedia.org/wiki/Getting_Things_Done">GTD</a> process; so, this alone would disqualify IPhone in my eyes; phone is item which is with you most of the time; being unable to enter tasks is big minus.</p>
<p>International support is lousy:</p>
<p>I was unable to enter some Serbian characters (less important) and IPhone itself is unable to recognize phone numbers in international format with country prefix; if you have number in contacts like:</p>
<p>+381 11 1111 1111  ( local format would be 011 1111 1111)</p>
<p>and if that number calls you, you will get just 011 1111 1111 on screen and no name recognised. Suggestions on Net (enter double record for each mobile: one with and one without prefix) are just suggestions <img src='http://www.vesic.org/english/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> if you have 500+ contacts; my <a href="http://europe.nokia.com/A4142101">Nokia E61</a> does both things perfectly.</p>
<p>I understand that Apple just entered phone business and it is primarily oriented toward biggest, western speaking markets (USA) first; that time passed from launch is short; I also understand that if you want genuine well crafted and designed item and do not care too much for problems mentioned (which most of users don&#8217;t), IPhone is your best choice.</p>
<p>I am pretty sure that IPhone on phone market will surpass success of IPod at mp3 player market and that will be (pretty justified) most selling phone in history.</p>
<p>However, if you are like me, and you care about functionality as much (or even more) as for design, just wait; I believe that in year time, IPhone will be unbeatable tool for communication and business, and I am ready to wait that; for now, simply skip it - no good.</p>

<p><a href="http://feeds.feedburner.com/~a/DejanOnTechnology?a=fg2hWz"><img src="http://feeds.feedburner.com/~a/DejanOnTechnology?i=fg2hWz" border="0"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/DejanOnTechnology?a=jnYmhpG"><img src="http://feeds.feedburner.com/~f/DejanOnTechnology?i=jnYmhpG" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/DejanOnTechnology?a=039MMBg"><img src="http://feeds.feedburner.com/~f/DejanOnTechnology?i=039MMBg" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/DejanOnTechnology?a=plsAV4g"><img src="http://feeds.feedburner.com/~f/DejanOnTechnology?i=plsAV4g" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/DejanOnTechnology/~4/276537245" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.vesic.org/english/blog/technology/iphone-close-encounter-dont-like-it/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Dilbert - please come home, all is forgiven!</title>
		<link>http://www.vesic.org/english/blog/web/dilbert-please-come-home-all-is-forgiven/</link>
		<comments>http://www.vesic.org/english/blog/web/dilbert-please-come-home-all-is-forgiven/#comments</comments>
		<pubDate>Fri, 18 Apr 2008 12:56:04 +0000</pubDate>
		<dc:creator>Dejan Vesić</dc:creator>
		
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://www.vesic.org/english/blog/web/dilbert-please-come-home-all-is-forgiven/</guid>
		<description><![CDATA[One of the my icons of Programming, Internet and in general of my digital life is of course, Dilbert - brilliant creation of Scott Adams.
That is daily dose of geeky humor, sometimes strange, and sometimes it feels like Scott was peeking over your shoulder when he was drawing latest episode of Dilbert.
Unfortunately, this time, Dilbert [...]]]></description>
			<content:encoded><![CDATA[<p><img class="imageRight" src='http://www.vesic.org/english/blog/wp-content/uploads/2008/04/dilbert-icon.png' alt='Dilbert - Geek next to you' />One of the my icons of Programming, Internet and in general of my digital life is of course, <a href="http://www.dilbert.com">Dilbert</a> - brilliant creation of <a href="http://dilbertblog.typepad.com/">Scott Adams</a>.</p>
<p>That is daily dose of geeky humor, sometimes strange, and sometimes it feels like Scott was peeking over your shoulder when he was drawing latest episode of Dilbert.</p>
<p>Unfortunately, this time, Dilbert is a bad example - or to be more precise - current implementation of Dilbert&#8217;s site is bad example of technology usage all along.</p>
<p>I like simple, working web solutions (pure Html + Css if possible) - so, &#8220;previous&#8221; Dilbert as a simple image and archive coming along was fulfilling all my needs; add to it reading via blog and I was more than happy.</p>
<p>That changed with introduction of all-shiny-flashy-flash new version of the site - that changed to a bad <img src='http://www.vesic.org/english/blog/wp-includes/images/smilies/icon_sad.gif' alt=':-(' class='wp-smiley' /> </p>
<p>Those pages are now heavy, very heavy, with complex flash objects and what is worse - not working flash objects <img src='http://www.vesic.org/english/blog/wp-includes/images/smilies/icon_sad.gif' alt=':-(' class='wp-smiley' /> You can&#8217;t easily search, you can&#8217;t easily get your daily dose of geek humor:</p>
<p><a href='http://www.vesic.org/english/blog/wp-content/uploads/2008/04/dilbert-problem-01.png' title='Problems with Dilbert Search'><img src='http://www.vesic.org/english/blog/wp-content/uploads/2008/04/dilbert-problem-01.thumbnail.png' alt='Problems with Dilbert Search' /></a></p>
<p>This was simple search, and no, parameters are not a problem - if you keep pressing Search button, you will eventually get the list of missing strips; however, getting &#8220;big&#8221; versions by clicking on found elements is another problem - does not work in most of the cases.</p>
<p>All in all, very bad example of heavy multimedia site - I do not mind for change, but please do basic testing of:</p>
<ul>
<li>Is it working?</li>
<li>Is it working as it is supposed to (search)?</li>
<li>Can it handle load?</li>
</ul>
<p>(I won&#8217;t get here in a rant why they changed site on this way in a first place; Dilbert&#8217;s audience is &#8220;special&#8221;, so different from average surfer or MySpace visitor; they probably know their market and someone did thorough analysis what new is needed - at least, I hope so).</p>

<p><a href="http://feeds.feedburner.com/~a/DejanOnTechnology?a=12gvBs"><img src="http://feeds.feedburner.com/~a/DejanOnTechnology?i=12gvBs" border="0"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/DejanOnTechnology?a=GHe5lOG"><img src="http://feeds.feedburner.com/~f/DejanOnTechnology?i=GHe5lOG" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/DejanOnTechnology?a=PHAMD7g"><img src="http://feeds.feedburner.com/~f/DejanOnTechnology?i=PHAMD7g" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/DejanOnTechnology?a=m50wP8g"><img src="http://feeds.feedburner.com/~f/DejanOnTechnology?i=m50wP8g" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/DejanOnTechnology/~4/272870470" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.vesic.org/english/blog/web/dilbert-please-come-home-all-is-forgiven/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Spam Free WordPress Installation</title>
		<link>http://www.vesic.org/english/blog/wordpress/spam-free-wordpress-installation/</link>
		<comments>http://www.vesic.org/english/blog/wordpress/spam-free-wordpress-installation/#comments</comments>
		<pubDate>Tue, 11 Mar 2008 08:27:50 +0000</pubDate>
		<dc:creator>Dejan Vesić</dc:creator>
		
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://www.vesic.org/english/blog/wordpress/spam-free-wordpress-installation/</guid>
		<description><![CDATA[Being a blogger it is fun, most of the time - creating a posts, interacting with visitors via comments, making new friends and getting new skills.
However, there is a big problem: spam, especially track-back spam.
My site is basically 4 installations of brilliant blogging platform - WordPress - so, finding combinations of settings and plugins which [...]]]></description>
			<content:encoded><![CDATA[<p><img class="imageRight" src='http://www.vesic.org/english/blog/wp-content/uploads/2008/03/wordpress.png' alt='Spam Free WordPress Installation' />Being a blogger it is fun, most of the time - creating a posts, interacting with visitors via comments, making new friends and getting new skills.</p>
<p>However, there is a big problem: <a href="http://en.wikipedia.org/wiki/Spam_(electronic)">spam</a>, especially track-back spam.</p>
<p>My site is basically 4 installations of brilliant blogging platform - <a href="http://wordpress.org">WordPress</a> - so, finding combinations of settings and plugins which would make maintenance of spam as easy as possible was a must. After a lot of trial/error attempts, here is combination which works perfectly:</p>
<h3>Aksimet</h3>
<p><a href="http://akismet.com/">Aksimet</a> (included in WordPress installation, no need for separate download / install) for regular comment spam. You have to register once at <a href="http://wordpress.com/signup/">WordPress.Com</a> in order to get Aksimet API key; once done that, you are all set.</p>
<h3>Challenge</h3>
<p><a href="http://lordchaos.dominatus.net/wordpress-plugin-challenge">Challenge</a> - instead of various <a href="http://en.wikipedia.org/wiki/Captcha">CAPTCHA</a> mechanism, this proved to be very efficient and less annoying for visitors. </p>
<p>Plugin simply asks basic mathematical questions, in order to check if is on other side of page human or robot (process).</p>
<p>However, warning: it is not compatible with <a href="http://wordpress.org/extend/plugins/wp-cache/">WP-Cache</a> - if you are using this highly effective caching system, you have to choose other options for comment approval.</p>
<h3>Simple Trackback Validation Plugin</h3>
<p>Finally, for TrackBack validation there is <a href="http://sw-guide.de/wordpress/plugins/simple-trackback-validation/">Simple Trackback Validation Plugin</a> - simple and efficient system for fighting trackback spam, which is even worse than usual comment spam.</p>
<p>Time needed for installing and setting up those plugins is well spent time - instead of having 300+ daily spams, now I have 3 - 4 weekly and can dedicate to writing instead of spam fighting <img src='http://www.vesic.org/english/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /></p>

<p><a href="http://feeds.feedburner.com/~a/DejanOnTechnology?a=X161G7"><img src="http://feeds.feedburner.com/~a/DejanOnTechnology?i=X161G7" border="0"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/DejanOnTechnology?a=cvWoc8F"><img src="http://feeds.feedburner.com/~f/DejanOnTechnology?i=cvWoc8F" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/DejanOnTechnology?a=NXhqgrf"><img src="http://feeds.feedburner.com/~f/DejanOnTechnology?i=NXhqgrf" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/DejanOnTechnology?a=KrNXVuf"><img src="http://feeds.feedburner.com/~f/DejanOnTechnology?i=KrNXVuf" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/DejanOnTechnology/~4/249372643" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.vesic.org/english/blog/wordpress/spam-free-wordpress-installation/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Vista 64 - First Experience</title>
		<link>http://www.vesic.org/english/blog/installation/vista-64-first-experience/</link>
		<comments>http://www.vesic.org/english/blog/installation/vista-64-first-experience/#comments</comments>
		<pubDate>Sun, 17 Feb 2008 12:10:30 +0000</pubDate>
		<dc:creator>Dejan Vesić</dc:creator>
		
		<category><![CDATA[Installation]]></category>

		<category><![CDATA[Microsoft]]></category>

		<category><![CDATA[Software]]></category>

		<category><![CDATA[Vista]]></category>

		<guid isPermaLink="false">http://www.vesic.org/english/blog/installation/vista-64-first-experience/</guid>
		<description><![CDATA[I am (happily) using Vista 32 bit for a year, both on my home (desktop) computer and on laptop. Both machines are mostly used for development (Visual Studio 2005 &#038; 2008 and Visual Studio 2003 via Microsoft Virtual PC 2007) and usual Office tasks.
One of my tasks on work is to test new technologies - [...]]]></description>
			<content:encoded><![CDATA[<p>I am (happily) using Vista 32 bit for a year, both on my home (desktop) computer and on laptop. Both machines are mostly used for development (Visual Studio 2005 &#038; 2008 and Visual Studio 2003 via <a href="http://www.microsoft.com/windows/products/winfamily/virtualpc/">Microsoft Virtual PC 2007</a>) and usual Office tasks.</p>
<p>One of my tasks on work is to test new technologies - so, I decided that it is time to try new Vista: <strong>Vista 64 bit</strong>.</p>
<p>Hardware configuration used is pretty much standard one:</p>
<p><a href="http://support.dell.com/support/topics/global.aspx/support/product_support/en/product_support_central?c=us&#038;l=en&#038;systemid=DIM_PNT_P4_E520">Dell Dimension E520</a> with Intel Core 2 Duo E4300 @ 1.8 Ghz and 2 GB RAM.  Graphic card was NVIDIA GeForce 7300 LE.</p>
<h2>Installation</h2>
<p>Despite all my worries, installation went smoothly (apart for having 150Mb of fixes to download <img src='http://www.vesic.org/english/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> ) - all drivers were found and installed ok:</p>
<p><img src='http://www.vesic.org/english/blog/wp-content/uploads/2008/02/vista-64-all-drivers-ok.png' alt='Vista 64 - all drivers found and installed ok' /></p>
<h2>Basics</h2>
<p>Once when all drivers are in place, you need software which will use your new operating system to the max. Most of 32bit software will work w/o any problems, via <a href="http://en.wikipedia.org/wiki/WOW64">WOW64</a> technology, and it will benefit from better memory organization (you can utilize full 4Gb under Vista 64, which is not possible under XP) and more registers availabile.</p>
<p>You do need some native 64bit applications, for example, when mounting ISO image under Vista 64:</p>
<h3>Mounting ISO image under Vista 64</h3>
<p>While there is plethora of ISO software in 32 bit world (highly recommending <a href="http://www.slysoft.com/en/virtual-clonedrive.html">Virtual Clone Drive</a>, freeware), things are gloomy in 64 bit world.</p>
<p>There are some programs that state 64bit compatibility (<a href="http://www.magiciso.com">MagicISO</a> for example) but only one which proved as working under Vista 64 is <a href="http://www.daemon-tools.cc/">Daemon Tools</a>.</p>
<p>However, BIG WARNING - Daemon Tools comes with spyware / searchware! Good part is that you can select NOT TO INSTALL IT - so please do not follow click-click-click install logic but make sure to DESELECT following two options on this screen:</p>
<p><img src='http://www.vesic.org/english/blog/wp-content/uploads/2008/02/vista-64-daemon-tools-01.png' alt='Daemon Tools on Vista 64 - install w/o sponsor' /></p>
<p>as well as SELECT DECLINE on next screen:</p>
<p><img src='http://www.vesic.org/english/blog/wp-content/uploads/2008/02/vista-64-daemon-tools-02.png' alt='Daemon Tools on Vista 64 - decline change of home page' /></p>
<p>After that, you are fine.</p>
<h3>Adding Vista 64 to network domain</h3>
<p>There is no magic around this step; I just had little trouble to find right screen for adding  computer to domain:</p>
<p>Control Panel -> System or even easier using keyboard shortcut: <em>Win + Break (Pause)</em>:</p>
<p><a href='http://www.vesic.org/english/blog/wp-content/uploads/2008/02/vista-64-system-add-to-domain.png' title='Adding Vista 64 to Network Domain'><img src='http://www.vesic.org/english/blog/wp-content/uploads/2008/02/vista-64-system-add-to-domain.thumbnail.png' alt='Adding Vista 64 to Network Domain' /></a><br />
<small>(click for larger image)</small></p>
<h3>Network printing (over HP LaserJet 4100)</h3>
<p>There was a bit of a problem setting up network printer (ours is HP LaserJet 4100). There are 64 bit drivers on HP site, but Vista refused to get those installed from network location.</p>
<p>I even tried to fool it by installing ghost LPT1: printer and than to add network one - failed.</p>
<p>Finally, I installed network printer as &#8220;local&#8221; one, using TCP/IP connection and install program from HP. After that, printing is fine.</p>
<h2>Applications</h2>
<h3>Microsoft Visual Studio 2008 Installation</h3>
<p>This was, by far, most frustrating experience <img src='http://www.vesic.org/english/blog/wp-includes/images/smilies/icon_eek.gif' alt='8-O' class='wp-smiley' /> - with number of errors, stating that it can&#8217;t install .Net Framework 3.0, than it can&#8217;t install Web Authoring Component &#8230; all red, and apparently no solution <img src='http://www.vesic.org/english/blog/wp-includes/images/smilies/icon_confused.gif' alt=':?' class='wp-smiley' /> </p>
<p><a href='http://www.vesic.org/english/blog/wp-content/uploads/2008/02/vista-64-visualstudio2008-installation.png' title='Problems installing Visual Studio 2008 on Vista 64'><img src='http://www.vesic.org/english/blog/wp-content/uploads/2008/02/vista-64-visualstudio2008-installation.thumbnail.png' alt='Problems installing Visual Studio 2008 on Vista 64' /></a></p>
<p>In despair, I switched to local administrator account and all went fine! So, <strong>use your local administrator account when installing Microsoft Visual Studio 2008 on Vista 64</strong> - it is not enough to be member of Administrators group (my initial attempts were with domain user which is member of Administrators group)</p>
<h3><a href="http://www.getpaint.net/">Paint.Net</a> Installation</h3>
<p><a href="http://www.getpaint.net/">Paint.Net</a> is brilliant example of quality program (and it is free) - elegant, efficient and does exactly what is intended for: various tasks around image editing; it is not Photoshop, but I found that I do not need anything &#8220;stronger&#8221; than Paint.Net - I highly recommend it.</p>
<p>I did not expected any problems with installation; however, I was getting error:</p>
<p>&#8220;Another installation is already in progress (Error 1618)&#8221; and failed installation; of course I used &#8220;Run as Administrator&#8221; option over Paint.NET.3.22.exe - that did not  help.</p>
<p>Solution: start CMD prompt as Administrator, and run EXE file from there - installation will go smoothly.</p>
<p><a href='http://www.getpaint.net' title='Paint.Net - Brilliant Image Editor'><img src='http://www.vesic.org/english/blog/wp-content/uploads/2008/02/paint-net.jpg' alt='Paint.Net - Brilliant Image Editor' /></a></p>
<h3>QUEST Toad and Oracle</h3>
<p>If your target database for applications is <a href="http://www.oracle.com">Oracle</a> and main development tool <a href="http://www.quest.com/toad-for-oracle/">Quest&#8217;s TOAD</a> make sure to install 32bit Oracle client prior TOAD installation - TOAD does not support connection over native 64bit Oracle client.</p>
<p>Moreover, if you get cryptic error on a first connect: </p>
<blockquote><p>Can&#8217;t initialize OCI. Error -1</p></blockquote>
<p> make sure that you have correct version of Oracle Client; current good one is <a href="http://www.oracle.com/technology/software/products/database/oracle10g/htdocs/10203vista.html ">10.2.0.3 Patch2 for Vista</a></p>
<h2>Conclusion</h2>
<p>Vista 64 is stable operating system, although it demands bit more of CPU and RAM than Windows XP/Vista 32. It has decent driver base, and if you have more than 2Gb RAM, or your primary application has native 64bit version and/or you are engaged in processing objects which require a lot of memory, it is good OS for you.</p>
<p>For more standard usage, I still recommend staying on Vista 32 or Windows XP - there is a wast support for drivers, software and games all around.</p>

<p><a href="http://feeds.feedburner.com/~a/DejanOnTechnology?a=Nt9Pd9"><img src="http://feeds.feedburner.com/~a/DejanOnTechnology?i=Nt9Pd9" border="0"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/DejanOnTechnology?a=oGPaO7E"><img src="http://feeds.feedburner.com/~f/DejanOnTechnology?i=oGPaO7E" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/DejanOnTechnology?a=DeMuAue"><img src="http://feeds.feedburner.com/~f/DejanOnTechnology?i=DeMuAue" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/DejanOnTechnology?a=rdvoBze"><img src="http://feeds.feedburner.com/~f/DejanOnTechnology?i=rdvoBze" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/DejanOnTechnology/~4/236461884" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.vesic.org/english/blog/installation/vista-64-first-experience/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Transliteration easy way - Microsoft Transliteration Utility</title>
		<link>http://www.vesic.org/english/blog/c/transliteration-easy-way-microsoft-transliteration-utility/</link>
		<comments>http://www.vesic.org/english/blog/c/transliteration-easy-way-microsoft-transliteration-utility/#comments</comments>
		<pubDate>Sun, 03 Feb 2008 22:26:12 +0000</pubDate>
		<dc:creator>Dejan Vesić</dc:creator>
		
		<category><![CDATA[.Net]]></category>

		<category><![CDATA[C#]]></category>

		<category><![CDATA[Microsoft]]></category>

		<category><![CDATA[i18n]]></category>

		<guid isPermaLink="false">http://www.vesic.org/english/blog/c/transliteration-easy-way-microsoft-transliteration-utility/</guid>
		<description><![CDATA[If you are lucky enough :-) to have not one, but two alphabets in daily use, your regular task in programming will be <a href="http://en.wikipedia.org/wiki/Transliteration">transliteration</a> - transformation of text from one script  (alphabet) to another.

In Serbia, we are using Latin as well as <a href="http://en.wikipedia.org/wiki/Cyrillic">Cyrillic</a> alphabet ...]]></description>
			<content:encoded><![CDATA[<p>If you are lucky enough <img src='http://www.vesic.org/english/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> to have not one, but two alphabets in daily use, your regular task in programming will be <a href="http://en.wikipedia.org/wiki/Transliteration">transliteration</a> - transformation of text from one script  (alphabet) to another.</p>
<p>In Serbia, we are using Latin as well as <a href="http://en.wikipedia.org/wiki/Cyrillic">Cyrillic</a> alphabet (and that is <a href="http://www.tipometar.org/kolumne/Unicode/IndexEng.html">not same Cyrillic</a> as Russian one) and common task is conversion from one to another and vice-versa.</p>
<p>This is not too complicated request; you can easily create necessary procedures; however, there is a better way:</p>
<p><a href="http://www.microsoft.com/globaldev/tools/translit.mspx">Microsoft Transliteration Utility</a> (MTU) is not widely known, but very useful tool for just that purpose: transliteration. It can easily transliterate text either typed in a text box or from one file to another.</p>
<p>There is set of predefined translations:</p>
<ul>
<li>Serbian Cyrillic to Latin / Serbian Latin to Cyrillic</li>
<li>Bosnian Cyrillic to Latin / Bosnian Latin to Cyrillic</li>
<li>Hangul to Romanization</li>
<li>Inuktitut to Romanization / Romanization to Inuktitut</li>
<li>Malayalam to Romanization / Romanization to Malayalam</li>
</ul>
<p>You are not limited to above set; you can easily create your own translations, using Module Development Console:</p>
<p><a href='http://www.vesic.org/english/blog/wp-content/uploads/2008/02/microsoft-transliteration-utility-01.png' title='Microsoft Transliteration Utility - Module Development Console'><img src='http://www.vesic.org/english/blog/wp-content/uploads/2008/02/microsoft-transliteration-utility-01-small.png' alt='Microsoft Transliteration Utility - Module Development Console' /></a><br />
<small>(click on image for larger version)</small></p>
<p>Creating simple textual file, you can use full power of MTU&#8217;s parsing engine: definitions of input and output characters, rules for transliteration including definitions of new states for translation state machine.</p>
<p>This is not the end - you can even use MTU programmatically (although please check EULA for commercial usage):</p>
<ul>
<li> Add reference to <strong>MSTranslitTools.DLL</strong> (it can be found in <em>%programfiles%\Microsoft Transliteration Utility</em>)</li>
<li>Add <em>using System.NaturalLanguage.Tools;</em></li>
<li>Current translation files (.tms) can be found in <em>%CommonProgramFiles%\Transliteration\Modules\Microsoft\</em></li>
<li>Here is simple code fragment to demonstrate:</li>
</ul>
<pre><code>TransliteratorSpecification specification =
   TransliteratorSpecification.FromSpecificationFile("Serbian Latin to Cyrillic.tms");

Transliterator transliterator = Transliterator.FromSpecification(specification);
string rezultat = transliterator.Transliterate("Vesic.Org");

Console.WriteLine(rezultat);</code></pre>

<p><a href="http://feeds.feedburner.com/~a/DejanOnTechnology?a=o6VPcJ"><img src="http://feeds.feedburner.com/~a/DejanOnTechnology?i=o6VPcJ" border="0"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/DejanOnTechnology?a=lErrasE"><img src="http://feeds.feedburner.com/~f/DejanOnTechnology?i=lErrasE" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/DejanOnTechnology?a=UXFAHHe"><img src="http://feeds.feedburner.com/~f/DejanOnTechnology?i=UXFAHHe" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/DejanOnTechnology?a=4VxXQee"><img src="http://feeds.feedburner.com/~f/DejanOnTechnology?i=4VxXQee" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/DejanOnTechnology/~4/228569466" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.vesic.org/english/blog/c/transliteration-easy-way-microsoft-transliteration-utility/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Freecom Network Drive Pro 500 Gb - a sad story</title>
		<link>http://www.vesic.org/english/blog/hardware/freecom-network-drive-pro-500-gb-a-sad-story/</link>
		<comments>http://www.vesic.org/english/blog/hardware/freecom-network-drive-pro-500-gb-a-sad-story/#comments</comments>
		<pubDate>Mon, 10 Dec 2007 15:56:34 +0000</pubDate>
		<dc:creator>Dejan Vesić</dc:creator>
		
		<category><![CDATA[Hardware]]></category>

		<guid isPermaLink="false">http://www.vesic.org/english/blog/hardware/freecom-network-drive-pro-500-gb-a-sad-story/</guid>
		<description><![CDATA[For purposes of my home network, I needed small, decent file server which would be on all the time and serve as a central point for rest of the machines.
After researching (and checking availability here in Serbia), Freecom Network Drive Pro 500 Gb looked as a more than correct solution: it is not just a [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.vesic.org/blog/upload/freecom-nd-pro-500-gb.jpg" alt="Freecom Network Drive Pro 500 Gb - good idea, terrible software and support" width="349" height="205" class="imageRight" />For purposes of my home network, I needed small, decent file server which would be on all the time and serve as a central point for rest of the machines.</p>
<p>After researching (and checking availability here in Serbia), <a href="http://www.freecom.com">Freecom</a> <a href="http://www.freecom.com/ecproduct_detail.asp?ID=3705&amp;CatID=8020&amp;sCatID=1146266&amp;ssCatID=1147774">Network Drive Pro 500 Gb</a> looked as a more than correct solution: it is not just a file server, it is also web server, ftp server, and basically mini Linux machine - it has even torrent client.</p>
<p>I could not wait to get unit - as all geeks, I adore good piece of hardware <img src='http://www.vesic.org/english/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>It looked as promised - nice, compact aluminum unit, with web administration interface; it stated that current firmware is <strong>4.2.7</strong></p>
<p>Unit was connected to network via LinkSys WAG325N and I start experimenting. At first, all seemed ok (apart from unit freezing once). Than I started with more serious tasks - created couple of network shares and started copying files from/to ND Pro 500 from Windows based (XP, Vista) stations, via Explorer, Total Commander and couple of file/backup oriented applications.</p>
<p>Than it happened: <strong>file </strong>on ND Pro 500 was <strong>different (!!!) </strong>than source file on local PC in a &#8220;special&#8221; case:</p>
<ul>
<li>Copy file from PC to ND Pro 500; note size</li>
<li>Make file on PC shorter (for example, if text is in question, remove couple of characters or lines)</li>
<li>Copy new version of file from PC to ND Pro 500</li>
</ul>
<p><strong>File</strong> on ND Pro 500 will <strong>retain old size</strong> and content of file will be: new version <strong>content + rest</strong> of the bytes from old file version; or, in other words, <strong>unusable</strong>, which you usualy do not expect from (not-so-cheap) consumer unit to do; at least, file server should protect my data instead of corrupting them.</p>
<p>I started usual route; wrote to Freecom support (30<sup>th</sup> November) as well as <a href="http://www.openfsg.com/forum/viewtopic.php?t=5343">posted message in OpenFSG</a> forum - forum which appears on administrative pages of Network Drive Pro 500. I was not happy seeing that load of users <a href="http://www.openfsg.com/forum/viewtopic.php?p=24129">have similar problems</a>.</p>
<p>What is often case these days, it seems that need for quality drivers/firmwares in neglected in favor of &#8220;sell, sell, sell and majority of byers won&#8217;t even notice that this does not do what is promised&#8221;. </p>
<p>I got no response from support. Call them on phone; they stated that they never heard for this (well, for what is OpenFGS forum than?) and that I should write them again. Did that. Forwarded mail and just get &#8220;forwarded to R&#038;D, awaiting their response&#8221;.</p>
<p>Nothing.</p>
<p>Then they asked for my phone (06<sup>th</sup> December), I gave my mobile.</p>
<p>Nothing. Zilch. Nada.</p>
<p>After a couple of days (10<sup>th</sup> December) I decided that this is enough - just returned whole unit and took full refund back. To be honest: I do not expect that someone make firmware correction in two days; I know software production very well - make change, build, test, correct problems, build, test &#8230; But I did expect that someone:</p>
<ul>
<li>Contact me</li>
<li>Confirm findings</li>
<li>Give decent estimate when new firmware will be out</li>
</ul>
<p>My advice: <strong>do not buy </strong>units from <a href="http://www.freecom.com/">Freecom</a>; maybe their idea is great, but realization is not and support is close to none; and those products should take care of most important stuff in electronic world - <em>your data</em>.</p>
<p>Or, if you are brave enough <img src='http://www.vesic.org/english/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> <a href="http://www.openfsg.com/forum/">check forums</a> first and firmware version second - you can save a lot of frustrations.</p>
<p>(Note: all above goes for Windows clients; apparently, there are no such problems if your client is Mac or Linux)</p>

<p><a href="http://feeds.feedburner.com/~a/DejanOnTechnology?a=TMI7m0"><img src="http://feeds.feedburner.com/~a/DejanOnTechnology?i=TMI7m0" border="0"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/DejanOnTechnology?a=wOPTzUC"><img src="http://feeds.feedburner.com/~f/DejanOnTechnology?i=wOPTzUC" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/DejanOnTechnology?a=sWCeXPc"><img src="http://feeds.feedburner.com/~f/DejanOnTechnology?i=sWCeXPc" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/DejanOnTechnology?a=7EiQNPc"><img src="http://feeds.feedburner.com/~f/DejanOnTechnology?i=7EiQNPc" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/DejanOnTechnology/~4/198104775" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.vesic.org/english/blog/hardware/freecom-network-drive-pro-500-gb-a-sad-story/feed/</wfw:commentRss>
		</item>
		<item>
		<title>How to read .ai (Adobe Illustrator) file w/o Illustrator</title>
		<link>http://www.vesic.org/english/blog/programs/how-to-read-ai-file-for-free/</link>
		<comments>http://www.vesic.org/english/blog/programs/how-to-read-ai-file-for-free/#comments</comments>
		<pubDate>Wed, 05 Dec 2007 15:15:28 +0000</pubDate>
		<dc:creator>Dejan Vesić</dc:creator>
		
		<category><![CDATA[Programs]]></category>

		<guid isPermaLink="false">http://www.vesic.org/english/blog/programs/how-to-read-ai-file-for-free/</guid>
		<description><![CDATA[f you ran to <strong>.ai</strong> file which is <a href="http://www.adobe.com/products/illustrator/">Adobe Illustrator</a> file, and you do not have Illustrator installed anywhere near, try this ...]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.adobe.com/products/illustrator/"><img src="http://www.vesic.org/blog/upload/illustrator.jpg" alt="Read .ai files with Ghostscript and XnView" width="250" height="173" class="imageRight" /></a>If you ran to <strong>.ai</strong> file which is <a href="http://www.adobe.com/products/illustrator/">Adobe Illustrator</a> file, and you do not have Illustrator installed anywhere near, try this:</p>
<ol>
<li>Download and install latest <a href="http://sourceforge.net/projects/ghostscript/">Ghostscript package</a></li>
<li>Download and install latest <a href="http://pagesperso-orange.fr/pierre.g/xnview/enhome.html">XnView</a></li>
<li>Use XnView to open <strong>.ai</strong> file and to save it as other (more common) image format</li>
</ol>
<p>That should do the trick (it did for me).</p>

<p><a href="http://feeds.feedburner.com/~a/DejanOnTechnology?a=CjKncC"><img src="http://feeds.feedburner.com/~a/DejanOnTechnology?i=CjKncC" border="0"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/DejanOnTechnology?a=Kt5oXbC"><img src="http://feeds.feedburner.com/~f/DejanOnTechnology?i=Kt5oXbC" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/DejanOnTechnology?a=0YhvDnc"><img src="http://feeds.feedburner.com/~f/DejanOnTechnology?i=0YhvDnc" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/DejanOnTechnology?a=9tRMEKc"><img src="http://feeds.feedburner.com/~f/DejanOnTechnology?i=9tRMEKc" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/DejanOnTechnology/~4/195557554" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.vesic.org/english/blog/programs/how-to-read-ai-file-for-free/feed/</wfw:commentRss>
		</item>
		<item>
		<title>VPN, Remote Desktop, Vista and MTU</title>
		<link>http://www.vesic.org/english/blog/networking/vpn-remote-desktop-vista-and-mtu/</link>
		<comments>http://www.vesic.org/english/blog/networking/vpn-remote-desktop-vista-and-mtu/#comments</comments>
		<pubDate>Thu, 15 Nov 2007 22:25:43 +0000</pubDate>
		<dc:creator>Dejan Vesić</dc:creator>
		
		<category><![CDATA[Networking]]></category>

		<category><![CDATA[Vista]]></category>

		<category><![CDATA[linksys]]></category>

		<category><![CDATA[remote-desktop]]></category>

		<category><![CDATA[vpn]]></category>

		<category><![CDATA[wag325n]]></category>

		<guid isPermaLink="false">http://www.vesic.org/english/blog/networking/vpn-remote-desktop-vista-and-mtu/</guid>
		<description><![CDATA[My home network is rather small: two desktop machines and one laptop. Access to outside world is done via usual ADSL connection. Bridge between two worlds was some unknown ADSL router connected to (good old) <a href="http://www.linksys.co.uk/acatalog/WRT54G.html">LinkSys WRT54G</a> with custom <a href="http://www.dd-wrt.com">DD WRT</a> firmware; all work was ...]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.vesic.org/blog/upload/linksys-wag325n.png" alt="LinkSys WAG325N" width="90" height="187" class="imageRight" />My home network is rather small: two desktop machines and one laptop. Access to outside world is done via usual ADSL connection. Bridge between two worlds was some unknown ADSL router connected to (good old) <a href="http://www.linksys.co.uk/acatalog/WRT54G.html">LinkSys WRT54G</a> with custom <a href="http://www.dd-wrt.com">DD WRT</a> firmware; all work was done here: firewall, port forwarding, dhcp &#8230;</p>
<p>This combination was good, but not the best - main obstacles were having two devices instead of one (WRT54G has no ADSL port) and no VPN directly to offices where I work.</p>
<p>Recently, I replaced WRT54G with newer model: <a href="http://www.linksys.co.uk/acatalog/WAG325N.html">LinkSys WAG325N</a>: ADSL port, 4 LAN ports,  802.11 a/b/g wireless and experimental (draft) implementation of 802.11n wireless protocol. Best of all, up to 5 VPN channels directly from router, so all machines can use VPN tunnel w/o problems.</p>
<p>After seting up VPN, access to business machines was just fine from desktop machines. However, that was not the case for laptop, which is using wireless connection.</p>
<p>Using Remote Desktop from laptop, I would see initial black or blue screen of remote computer (w/o login box) and after couple of minutes, Remote Desktop session would die.</p>
<p>After considerable time spend on Google (and with great help of our system administrator Nemanja), I found possible problem: size of MTU or <a href="http://en.wikipedia.org/wiki/Maximum_transmission_unit">Maximum Transmition Unit</a> - size of the largest packed allowed on particular network. </p>
<p>Default size set by Windows Vista was 1500 and that was enought not to establish Remote Desktop connection over VPN. In Vista, you can check settings by going in Command Prompt and typing:</p>
<p><code>netsh interface ipv4 show subinterfaces</code></p>
<p>and you will get something like:</p>
<pre><code>
  MTU  MediaSenseState   Bytes In  Bytes Out  Interface
------  ---------------  ---------  ---------  -------------
4294967295          1          0       7127  Loopback Pseudo-Interface 1
1500                1     145661      51022  Wireless Network Connection
1500                5          0          0  Local Area Connection
1500                5          0          0  Bluetooth Network Connection
</code></pre>
<p>Now, you can change MTU for particular interface:</p>
<p><code>netsh interface ipv4 set subinterface "Wireless Network Connection" mtu=1440 store=persistent</code></p>
<p>(make sure that you are doing this from elevated Command Prompt, i.e. CMD started using right-click and option &#8220;<em>Run as Administrator</em>&#8220;) and that will sort out any Remote Desktop connection problems.</p>

<p><a href="http://feeds.feedburner.com/~a/DejanOnTechnology?a=MKmzuT"><img src="http://feeds.feedburner.com/~a/DejanOnTechnology?i=MKmzuT" border="0"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/DejanOnTechnology?a=5Uyzm8B"><img src="http://feeds.feedburner.com/~f/DejanOnTechnology?i=5Uyzm8B" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/DejanOnTechnology?a=ZeD4U9b"><img src="http://feeds.feedburner.com/~f/DejanOnTechnology?i=ZeD4U9b" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/DejanOnTechnology?a=nwbmAmb"><img src="http://feeds.feedburner.com/~f/DejanOnTechnology?i=nwbmAmb" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/DejanOnTechnology/~4/185453188" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.vesic.org/english/blog/networking/vpn-remote-desktop-vista-and-mtu/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Upgrade of Application/User Settings between application versions</title>
		<link>http://www.vesic.org/english/blog/winforms/upgrade-of-applicationuser-settings-between-application-versions/</link>
		<comments>http://www.vesic.org/english/blog/winforms/upgrade-of-applicationuser-settings-between-application-versions/#comments</comments>
		<pubDate>Tue, 31 Jul 2007 06:09:20 +0000</pubDate>
		<dc:creator>Dejan Vesić</dc:creator>
		
		<category><![CDATA[.Net]]></category>

		<category><![CDATA[C#]]></category>

		<category><![CDATA[WinForms]]></category>

		<guid isPermaLink="false">http://www.vesic.org/english/blog/winforms/upgrade-of-applicationuser-settings-between-application-versions/</guid>
		<description><![CDATA[One of the polished areas of .Net Framework 2.0 is manipulation with Application/User settings in WinForms applications. You can store almost anything in appropriate <strong>app.config</strong> or <strong>user.config</strong> file, and to manipulate with those settings with ease...]]></description>
			<content:encoded><![CDATA[<p>One of the polished areas of .Net Framework 2.0 is manipulation with <a href="http://msdn2.microsoft.com/en-us/library/0zszyc6e.aspx">Application/User settings in WinForms</a> applications. You can store almost anything in appropriate <strong>app.config</strong> or <strong>user.config</strong> file, and to manipulate with those settings with ease - wrapper class created around Settings allows you to use settings as just another field in your code.</p>
<p>But, what about of upgrade existing settings once when you create new version of the application? </p>
<p>That is supported via <strong>Upgrade()</strong> method:</p>
<pre><code>
	 Settings.Default.Upgrade();
	 Settings.Default.Save();
</code></pre>
<p>You can add one user bool setting (for example <em>UpgradeSettings</em>) with default value True, which will be a flag if upgrade is carried out; code can be:</p>
<pre><code>
	if (Settings.Default.UpgradeSettings)
	{
		 Settings.Default.Upgrade();
		 Settings.Default.UpgradeSettings = false;
		 Settings.Default.Save();
	}
</code></pre>
<p>Suppose that your application is simple little application, not a Click-Once or even distributed with installer - just archive which users can download, unpack and start using.</p>
<p>If you new version picks user settings folder from previous one, all is fine - <strong>Upgrade()</strong> method will find previous version and upgrade them:</p>
<p><img src="http://www.vesic.org/blog/upload/vas-telefon-settings-ok.jpg" alt="Application versions - as expected" width="363" height="69"  /></p>
<p>Suppose that this is true:</p>
<ul>
<li>both versions are either signed or not (if you do signing of assembly between versions, Upgrade will fail)</li>
<li>both versions are either Click-Once applications or not (for the same reasons)</li>
</ul>
<p>In theory, all is fine and Upgrade should do the job. But, what if all above is fulfilled and that you still have different user settings folder:</p>
<p><img src="http://www.vesic.org/blog/upload/vas-telefon-settings-bad.jpg" alt="Application versions - mismatch" width="365" height="87"  /></p>
<p>What can be reason that same application creates completely different user settings folder? This situation happened to me. After couple of hours, I could not determine reason, so I pulled out heavy tools - <a href="http://www.aisto.com/roeder/dotnet/">Reflector</a>.</p>
<p>If you start tracking <strong>.Upgrade()</strong>, it goes to: <a href="http://msdn2.microsoft.com/en-us/library/system.configuration.applicationsettingsbase.upgrade.aspx">ApplicationSettingsBase.Upgrade</a> which simply calls <a href="http://msdn2.microsoft.com/en-us/library/system.configuration.iapplicationsettingsprovider.upgrade.aspx">IApplicationSettingsProvider.Upgrade</a> for each provider present. For simple WinForms application, appropriate provider is  <a href="http://msdn2.microsoft.com/en-us/library/system.configuration.localfilesettingsprovider.aspx">LocalFileSettingsProvider</a>. After some more thorough analysis, internal method for determining folder of settings store is:</p>
<p><strong>System.Configuration.ClientConfigPaths</strong></p>
<p>One of elements in determining local store for user settings was hashed value derived from <a href="http://msdn2.microsoft.com/en-us/library/system.security.policy.evidence.aspx">Evidences</a> for given assembly.</p>
<p>It turns out that one of <a href="http://msdn2.microsoft.com/en-us/library/system.security.policy.evidence.aspx">Evidence</a> elements for non-signed assemblies is <strong>path from where assembly/application is launched!</strong>.</p>
<p>To summarize: <strong>in order for Upgrade() of settings succeed, your new version of application should be deployed in the exact same folder where previous version is found</strong>; otherwise, Upgrade() will fail (or at least, it won&#8217;t do what you expected <img src='http://www.vesic.org/english/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> )</p>

<p><a href="http://feeds.feedburner.com/~a/DejanOnTechnology?a=lwgD6w"><img src="http://feeds.feedburner.com/~a/DejanOnTechnology?i=lwgD6w" border="0"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/DejanOnTechnology?a=P2NVQ1B"><img src="http://feeds.feedburner.com/~f/DejanOnTechnology?i=P2NVQ1B" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/DejanOnTechnology?a=ueX7jYb"><img src="http://feeds.feedburner.com/~f/DejanOnTechnology?i=ueX7jYb" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/DejanOnTechnology?a=gfE18fb"><img src="http://feeds.feedburner.com/~f/DejanOnTechnology?i=gfE18fb" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/DejanOnTechnology/~4/139098596" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.vesic.org/english/blog/winforms/upgrade-of-applicationuser-settings-between-application-versions/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Breaking changes for language codes in KB928365, KB928366</title>
		<link>http://www.vesic.org/english/blog/net/language-code-breaking-changes-kb928365-kb928366/</link>
		<comments>http://www.vesic.org/english/blog/net/language-code-breaking-changes-kb928365-kb928366/#comments</comments>
		<pubDate>Wed, 11 Jul 2007 11:33:10 +0000</pubDate>
		<dc:creator>Dejan Vesić</dc:creator>
		
		<category><![CDATA[.Net]]></category>

		<category><![CDATA[i18n]]></category>

		<guid isPermaLink="false">http://www.vesic.org/english/blog/net/dotnet-language-code-breaking-changes-kb928365-kb928366/</guid>
		<description><![CDATA[Some security updates are not just security updates.
If you installed (or you have Automatic Update turned on) yesterday&#8217;s updates:

KB928365 - Security update for the .NET Framework 2.0 for Windows Server 2003, Windows XP, and Windows 2000
KB928366 - Security update for the .NET Framework 1.1 for Windows XP and Windows 2000

you will get security update (nice) [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.vesic.org/blog/upload/ikona-dotnet.jpeg" alt=".Net Framework" width="89" height="50" class="imageRight" />Some security updates are not just security updates.</p>
<p>If you installed (or you have Automatic Update turned on) yesterday&#8217;s updates:</p>
<ul>
<li><a href="http://support.microsoft.com/kb/928365">KB928365</a> - Security update for the .NET Framework 2.0 for Windows Server 2003, Windows XP, and Windows 2000</li>
<li><a href="http://support.microsoft.com/kb/928366">KB928366</a> - Security update for the .NET Framework 1.1 for Windows XP and Windows 2000</li>
</ul>
<p>you will get security update (nice) and breaking changes (not so nice) regarding some of the languages in the framework. More precise, some of specific cultures changed their codes:</p>
<table style="border: 1px solid black;">
<tr style="border: 1px solid black;">
<td><em>LCID</em></td>
<td><em>Old code</em></td>
<td><em>New code</em></td>
<td><em>Old / New description</em></td>
</tr>
<tr>
<td><strong>2074</strong></td>
<td><strong>sr-SP-Latn</strong></td>
<td><strong>sr-Latn-CS</strong></td>
<td><strong>Serbian (Latin, Serbia and Montenegro)</strong> / <br /><strong>Serbian (Latin, Serbia)</strong></td>
</tr>
<tr>
<td><strong>3098</strong></td>
<td><strong>sr-SP-Cyrl</strong></td>
<td><strong>sr-Cyrl-CS</strong></td>
<td><strong>Serbian (Cyrillic, Serbia and Montenegro)</strong> / <br /><strong>Serbian (Cyrillic, Serbia)</strong></td>
</tr>
<tr>
<td>1068</td>
<td>az-AZ-Latn</td>
<td>az-Latn-AZ</td>
<td>Azeri (Latin, Azerbaijan)</td>
</tr>
<tr>
<td>1091</td>
<td>uz-UZ-Latn</td>
<td>uz-Latn-UZ</td>
<td>Uzbek (Latin, Uzbekistan)</td>
</tr>
<tr>
<td>1025</td>
<td>div-MV</td>
<td>dv-MV</td>
<td>Divehi (Maldives)</td>
</tr>
<tr>
<td>2092</td>
<td>az-AZ-Cyrl</td>
<td>az-Cyrl-AZ</td>
<td>Azeri (Cyrillic, Azerbaijan)</td>
</tr>
<tr>
<td>2115</td>
<td>uz-UZ-Cyrl</td>
<td>uz-Cyrl-UZ</td>
<td>Uzbek (Cyrillic, Uzbekistan)</td>
</tr>
<tr>
<td>7194</td>
<td>sr-BA-Cyrl</td>
<td>sr-Cyrl-BA</td>
<td>Serbian (Cyrillic) (Bosnia and Herzegovina)</td>
</tr>
<tr>
<td>5146</td>
<td>bs-BA-Latn</td>
<td>bs-Latn-BA</td>
<td>Bosnian (Bosnia and Herzegovina)</td>
</tr>
<tr>
<td>6170</td>
<td>sr-BA-Latn</td>
<td>sr-Latn-BA</td>
<td>Serbian (Latin) (Bosnia and Herzegovina)</td>
</tr>
<tr>
<td>9225</td>
<td>en-CB</td>
<td>en-029</td>
<td>English (Caribbean)</td>
</tr>
</table>
<p>(this Caribbean change looks very suspicious, but code says so)</p>
<p>Those changes will cause you problems if you have satellite assemblies for given languages in your application - after client installs update(s), those translations will simply cease to work - recompile and distribution of new ones is mandatory.</p>
<p>I appreciate updates but some sort of warning or information on official patch pages would be, at least, nice.</p>

<p><a href="http://feeds.feedburner.com/~a/DejanOnTechnology?a=26IoRO"><img src="http://feeds.feedburner.com/~a/DejanOnTechnology?i=26IoRO" border="0"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/DejanOnTechnology?a=7jO0yTB"><img src="http://feeds.feedburner.com/~f/DejanOnTechnology?i=7jO0yTB" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/DejanOnTechnology?a=YfaKlsb"><img src="http://feeds.feedburner.com/~f/DejanOnTechnology?i=YfaKlsb" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/DejanOnTechnology?a=vZ7GA6b"><img src="http://feeds.feedburner.com/~f/DejanOnTechnology?i=vZ7GA6b" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/DejanOnTechnology/~4/132625899" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.vesic.org/english/blog/net/language-code-breaking-changes-kb928365-kb928366/feed/</wfw:commentRss>
		</item>
		<item>
		<title>How to render Html content into JPG/JPEG image in best quality (WinForms)</title>
		<link>http://www.vesic.org/english/blog/winforms/render-html-to-quality-jpeg/</link>
		<comments>http://www.vesic.org/english/blog/winforms/render-html-to-quality-jpeg/#comments</comments>
		<pubDate>Wed, 28 Feb 2007 15:34:44 +0000</pubDate>
		<dc:creator>Dejan Vesić</dc:creator>
		
		<category><![CDATA[.Net]]></category>

		<category><![CDATA[Drawing]]></category>

		<category><![CDATA[WinForms]]></category>

		<guid isPermaLink="false">http://www.vesic.org/english/blog/winforms/render-html-to-quality-jpeg/</guid>
		<description><![CDATA[On recent project, I had a tasks to:
<ol>
	<li>Save result of Html page to JPG image</li>
	<li>To do that in best possible quality</li>
</ol>
	
Both tasks sounds trivial, but I did not find quite satisfying solutions, so, I came up with one bellow...]]></description>
			<content:encoded><![CDATA[<h2>How to save Html to JPG/JPEG Image and how to save it in best quality?</h2>
<p>On recent project, I had a tasks to:</p>
<ol>
<li>Save result of Html page to JPG image</li>
<li>To do that in best possible quality</li>
</ol>
<p>Both tasks sounds trivial, but I did not find quite satisfying solutions, so, I came up with one bellow.</p>
<p>First, you need <a href="http://msdn2.microsoft.com/en-us/library/system.windows.forms.webbrowser.aspx">WebBrowser</a> control - it is basicaly wrapper around ActiveX Internet Explorer interface.</p>
<p>Once when Html content is ready (local or remote), ask control to call your procedure upon completion:</p>
<p><code>webBrowser1.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(webBrowser1_DocumentCompleted);</code></p>
<p>and start render your content:</p>
<p><code>webBrowser1.Navigate(  UriToRender )</code></p>
<p>In DocumentCompletedEventHandler, call your routine for rendering content to image:</p>
<pre>
void webBrowser1_DocumentCompleted(object sender,
WebBrowserDocumentCompletedEventArgs e)
{
  if( GetImageFromHtml(currentFile, webBrowser1) )
  {
     toolStripStatusLabel1.Text = "Image saved.";
  }
  else
  {
     toolStripStatusLabel1.Text = "Sorry, there was problem with saving.";
  }
}</pre>
<p>And here is code for rendering Html to image:</p>
<pre>
/// &lt;summary&gt;
/// Method for saving Html content into image
/// &lt;/summary&gt;
/// &lt;param name="imageName"&gt;File name of image&lt;/param&gt;
/// &lt;param name="webBrowser"&gt;Target WebBrowser control to query for content&lt;/param&gt;
/// &lt;returns&gt;True if save was succesfull&lt;/returns&gt;
/// &lt;seealso cref="System.Windows.Forms.WebBrowser" /&gt;

public bool GetImageFromHtml(string imageName, WebBrowser webBrowser)
{
  if (webBrowser.Document == null)
  {
     return false;
  }

  Cursor current = Cursor;
  Cursor = Cursors.WaitCursor;

  // Give time to WebBrowser control to finish rendering of document
  Thread.Sleep(200);

  try
  {

     // save old width / height
     Size originalSize = new Size(webBrowser1.Width, webBrowser1.Height);

     // Change to full scroll size
     int scrollHeight = webBrowser.Document.Body.ScrollRectangle.Height;
     int scrollWidth = webBrowser.Document.Body.ScrollRectangle.Width;

     Bitmap image = new Bitmap(scrollWidth, scrollHeight);
     webBrowser.Size = new Size(scrollWidth, scrollHeight);

     // Draw to image
     webBrowser.DrawToBitmap(image, webBrowser.ClientRectangle);
     webBrowser.Size = originalSize;

     // Old one with bad quality:
     // image.Save(imageName, ImageFormat.Jpeg);

     // Save in full quality
     SaveJPG(image, imageName, 100);

     return true;
  }

  catch { return false; }

  finally {  Cursor = current; }
}
</pre>
<p>Usual <a href="http://msdn2.microsoft.com/en-us/library/9t4syfhh.aspx">Image.Save</a> method saves image in number of formats; however, quality is some default (bad) quality; and I needed more control over it. So, here are methods which allow that kind of control:</p>
<pre>
/// &lt;summary&gt;
/// Gets codec info by given mimeType
/// &lt;/summary&gt;
/// &lt;param name="mimeType"&gt;mimeType to lookup for&lt;/param&gt;
/// &lt;returns&gt;ImageCodecInfo if all ok or null&lt;/returns&gt;

public static ImageCodecInfo GetCodecInfo(String mimeType)
{
  ImageCodecInfo[] encoders;
  encoders = ImageCodecInfo.GetImageEncoders();
  for (int iterator = 0; iterator &lt; encoders.Length; ++iterator)
  {
     if (encoders[iterator].MimeType == mimeType)
        return encoders[iterator];
  }
  return null;
}

/// &lt;summary&gt;
/// Save an Image to JPEG with given compression quality
/// &lt;/summary&gt;
/// &lt;param name="image"&gt;Image to save&lt;/param&gt;
/// &lt;param name="imageName"&gt;File name to store image&lt;/param&gt;
/// &lt;param name="quality"&gt;Quality parameter: 0 - lowest quality, smallest size,
/// 100 - max quality and size&lt;/param&gt;
/// &lt;returns&gt;True if save was succesfull&lt;/returns&gt;

public static bool SaveJPG(Image image, string imageName, long qual)
{
  EncoderParameters eps = new EncoderParameters(1);
  eps.Param[0] = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, qual);
  ImageCodecInfo ici = GetCodecInfo("image/jpeg");

  if(ici == null) { return false; }

  image.Save(imageName, ici, eps);
  return true;
}
</pre>
<p>Now you can select jpeg image quality and render html the way you like.</p>
<p><a href="http://digg.com/programming/How_to_render_Html_content_into_JPG_JPEG_image_in_best_quality_WinForms"><img src="http://digg.com/img/badges/91x17-digg-button.png" width="91" height="17" alt="Digg!" /></a></p>

<p><a href="http://feeds.feedburner.com/~a/DejanOnTechnology?a=venoDh"><img src="http://feeds.feedburner.com/~a/DejanOnTechnology?i=venoDh" border="0"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/DejanOnTechnology?a=pgybu0B"><img src="http://feeds.feedburner.com/~f/DejanOnTechnology?i=pgybu0B" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/DejanOnTechnology?a=gmnKBlb"><img src="http://feeds.feedburner.com/~f/DejanOnTechnology?i=gmnKBlb" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/DejanOnTechnology?a=r7SI23b"><img src="http://feeds.feedburner.com/~f/DejanOnTechnology?i=r7SI23b" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/DejanOnTechnology/~4/131003909" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.vesic.org/english/blog/winforms/render-html-to-quality-jpeg/feed/</wfw:commentRss>
		</item>
		<item>
		<title>VS 2005 SP1 Installation Nightmare :-( … and how to wake up</title>
		<link>http://www.vesic.org/english/blog/installation/vs-2005-sp1-install-problems-and-solutions/</link>
		<comments>http://www.vesic.org/english/blog/installation/vs-2005-sp1-install-problems-and-solutions/#comments</comments>
		<pubDate>Mon, 25 Dec 2006 23:13:27 +0000</pubDate>
		<dc:creator>Dejan Vesić</dc:creator>
		
		<category><![CDATA[Installation]]></category>

		<category><![CDATA[Visual Studio 2005]]></category>

		<guid isPermaLink="false">http://www.vesic.org/english/blog/installation/vs-2005-sp1-install-problems-and-solutions/</guid>
		<description><![CDATA[As you probably know, long awaited <strong>Visual Studio 2005 SP1</strong> is out.

However, installation of this giant (400+ Mb) update is far from easy, and it is not guaranteed to succeed, at least at first run...]]></description>
			<content:encoded><![CDATA[<p><a href="http://msdn.microsoft.com/vstudio/support/vs2005sp1/"><img src="http://www.vesic.org/blog/upload/visual-studio-2005.jpg" alt="Visual Studio 2005 SP1" width="250" height="55" class="imageRight" /></a>As you probably know, long awaited<a href="http://www.vesic.org/english/blog/visual-studio-2005/visual-studio-2005-sp1/"> Visual Studio 2005 SP1</a> is out.</p>
<p>However, installation of this giant (400+ Mb) update is far from easy, and it is not guaranteed to succeed, at least at first run.</p>
<ol>
<li>You need to have a LOT free space on your system drive: at least 3 Gb</li>
<li>Make sure that you have enough patience - it can take between 10 minutes and 1,5 hour</li>
<li>If you do not use C++ portion of Visual Studio, deinstall it before installation of SP1 - it can save a lot of installation time.</li>
<li>Deinstall <a href="http://msdn2.microsoft.com/en-us/asp.net/aa336618.aspx">Web Application Project</a> if you have it installed.</li>
<li>Deinstall <a href="http://msdn2.microsoft.com/en-us/asp.net/aa336619.aspx">Visual Studio 2005 Web Deployment Projects</a> if you have it installed.</li>
<li>Deinstall <em>Visual Studio 2005 SP1 beta</em></li>
</ol>
<p>Finally, you can speed up installation process by:</p>
<h3>Disabling Patch Cache</h3>
<p>Create CMD file with following content:<br />
<small><code>reg export HKLM\Software\Policies\Microsoft\Windows\Installer installer.reg<br />
reg add HKLM\Software\Policies\Microsoft\Windows\Installer /v MaxPatchCacheSize /t REG_DWORD /d 0 /f<br />
net stop msiserver<br />
start /wait VS80sp1-KB926601-X86-ENU.exe<br />
reg delete HKLM\Software\Policies\Microsoft\Windows\Installer /v MaxPatchCacheSize /f<br />
reg import installer.reg<br />
net stop msiserver<br />
del /q installer.reg 2&gt;nul</code></small></p>
<p>and save it in folder where SP1 is. Run it - it should cut down installation time significantly.</p>
<p>Ok, you succeeded to do all above, and installation is failing. What next?</p>
<h3>Error 1718</h3>
<p>Let assume that your operating system is XP SP2. If you got during installation this error:</p>
<blockquote><p>Error 1718. File was rejected by digital signature policy</p></blockquote>
<p>try recipe from this location:</p>
<p><a href="http://support.microsoft.com/kb/925336">http://support.microsoft.com/kb/925336</a> - this helped with installation on two locations where it failed previously.</p>
<p>I have Windows Server 2003 SP1 and unfortunately, neither of solutions (disable patch cache or KB925336) helped <img src='http://www.vesic.org/english/blog/wp-includes/images/smilies/icon_sad.gif' alt=':-(' class='wp-smiley' /> </p>
<p>I though that  memory upgrade will help, so I added 1Gb to total of 2Gb - no luck.</p>
<p>You can also try to:</p>
<h3>Disable SAFER check for local administrators</h3>
<p>- Note (if exist) previous value of <strong>PolicyScope</strong> at:</p>
<p><code>HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\windows\safer\codeidentifiers</code></p>
<p>- Set this value (or create it as DWORD if does not exist) to 1</p>
<p>- Run <strong>net stop msiserver</strong></p>
<p>- Try SP1 install</p>
<p>- Revert <strong>PolicyScope</strong> to previous value / delete it after installation.</p>
<p>(this helped on two other Windows 2003 SP1 machines; again, not on mine)</p>
<p>Finally, I decided to:</p>
<h2>Slipstream SP1 into Visual Studio 2005 and reinstall it</h2>
<p>There are couple steps here:</p>
<h3>Make Network Installation</h3>
<p>Create network administrative installation from your VS 2005 DVD (assuming that <em>E:</em> is DVD and location where you want installation <em>\\dvesic\public\VisualStudio2005SP1</em>):</p>
<p><code>msiexec.exe /a E:\vs\vs_setup.msi TARGETDIR=\\dvesic\public\VisualStudio2005SP1 /L*vx install.log</code></p>
<p>I did this all on same machine, using mounted ISO image on a virtual drive and unpacking it at network location on same machine - it took <em>over 2 hours</em> to create network install</p>
<h3>Unpack the Patch</h3>
<p>Original EXE file is just wrapper around MS Patch file. You can unpack it using some unzip utility (or <a href="http://www.ghisler.com/">Total Commander</a>) or by executing:</p>
<p><code>VS80sp1-KB926601-X86-ENU.exe /extract .</code></p>
<h3>Patch Network Install</h3>
<p>Finally, do the patching of installation:</p>
<p><code>msiexec.exe /a \\dvesic\public\VisualStudio2005SP1\vs_setup.msi /p VS80sp1-KB926601-X86-ENU.msp /L*vx patch.log</code></p>
<h3>Reinstall Visual Studio 2005 SP1</h3>
<p>I hope that at least some of this will help you too.</p>
<p>Reference links:</p>
<p><small><a href="http://weblogs.asp.net/jgalloway/archive/2006/12/19/things-i-wish-i-d-known-before-i-installed-vs-2005-service-pack-1.aspx">http://weblogs.asp.net/jgalloway/&#8230;/things-i-wish-i-d-known-before-i-installed-vs-2005-service-pack-1.aspx</a></small></p>
<p><small><a href="http://blogs.msdn.com/heaths/archive/2006/11/28/save-time-and-space-for-vs-2005-sp1-by-disabling-the-patch-cache.aspx">http://blogs.msdn.com/heaths/&#8230;/save-time-and-space-for-vs-2005-sp1-by-disabling-the-patch-cache.aspx</a></small></p>
<p><small><a href="http://blogs.msdn.com/heaths/archive/2006/12/16/slipstreaming-visual-studio-2005-service-pack-1.aspx">http://blogs.msdn.com/heaths/&#8230;/slipstreaming-visual-studio-2005-service-pack-1.aspx</a></small></p>
<p><small><a href="http://blogs.msdn.com/heaths/archive/2006/09/22/Enabling-Large-Patches-to-Install.aspx">http://blogs.msdn.com/heaths/&#8230;/Enabling-Large-Patches-to-Install.aspx</a></small></p>
<h3>Update 12<sup>th</sup> May 2007</h3>
<p>There is <a href="http://support.microsoft.com/kb/925336/en-us">update availabile</a> which will hopefully sort this problems out on easy way.</p>
<p><a href="http://www.digg.com/programming/Visual_Studio_2005_SP1_Installation_Problems_and_Solutions"><img src="http://digg.com/img/badges/91x17-digg-button.png" width="91" height="17" alt="Digg!" /></a></p>

<p><a href="http://feeds.feedburner.com/~a/DejanOnTechnology?a=zW2Ixn"><img src="http://feeds.feedburner.com/~a/DejanOnTechnology?i=zW2Ixn" border="0"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/DejanOnTechnology?a=0CtlkIB"><img src="http://feeds.feedburner.com/~f/DejanOnTechnology?i=0CtlkIB" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/DejanOnTechnology?a=jkYRA8b"><img src="http://feeds.feedburner.com/~f/DejanOnTechnology?i=jkYRA8b" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/DejanOnTechnology?a=yhksF2b"><img src="http://feeds.feedburner.com/~f/DejanOnTechnology?i=yhksF2b" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/DejanOnTechnology/~4/131003910" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.vesic.org/english/blog/installation/vs-2005-sp1-install-problems-and-solutions/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Visual Studio 2005 SP1 is out!</title>
		<link>http://www.vesic.org/english/blog/visual-studio-2005/visual-studio-2005-sp1/</link>
		<comments>http://www.vesic.org/english/blog/visual-studio-2005/visual-studio-2005-sp1/#comments</comments>
		<pubDate>Fri, 15 Dec 2006 10:52:54 +0000</pubDate>
		<dc:creator>Dejan Vesić</dc:creator>
		
		<category><![CDATA[Visual Studio 2005]]></category>

		<guid isPermaLink="false">http://www.vesic.org/english/blog/visual-studio-2005/visual-studio-2005-sp1/</guid>
		<description><![CDATA[Visual Studio 2005 SP1 is finally released.

Apart from bugfixes and corrections, Service Pack 1 also provides over 70 improvements for common development scenarios including: ...]]></description>
			<content:encoded><![CDATA[<p><a href="http://msdn.microsoft.com/vstudio/support/vs2005sp1/"><img src="http://www.vesic.org/blog/upload/visual-studio-2005.jpg" alt="Visual Studio 2005 SP1" width="250" height="55" class="imageRight" /></a><br />
Visual Studio 2005 SP1 is finally released.</p>
<p>Apart from bugfixes and corrections, Service Pack 1 also provides over 70 improvements for common development scenarios including:</p>
<ul>
<li>New processor support (e.g., Core Duo) for code generation and profiling</li>
<li>Performance and scale improvements in Team Foundation Server</li>
<li>Team Foundation Server integration with Excel 2007 and Project 2007</li>
<li>Tool support for occasionally connected devices and SQL Server Compact Edition</li>
<li>Additional support for project file based Web applications</li>
<li>Windows Embedded 6.0 platform and tools support</li>
</ul>
<p>However, this <strong>is not</strong> final solutions for developers working on <strong>Vista</strong> operating system <img src='http://www.vesic.org/english/blog/wp-includes/images/smilies/icon_sad.gif' alt=':-(' class='wp-smiley' /> </p>
<p>More info here: <a href="http://msdn.microsoft.com/vstudio/support/vs2005sp1/">http://msdn.microsoft.com/vstudio/support/vs2005sp1/</a></p>
<p>Download (of hefty 432 MB) is here:<br />
<small><a href="http://www.microsoft.com/downloads/details.aspx?familyid=BB4A75AB-E2D4-4C96-B39D-37BAF6B5B1DC">http://www.microsoft.com/downloads/details.aspx?familyid=BB4A75AB-E2D4-4C96-B39D-37BAF6B5B1DC</a></small></p>

<p><a href="http://feeds.feedburner.com/~a/DejanOnTechnology?a=lKqBFE"><img src="http://feeds.feedburner.com/~a/DejanOnTechnology?i=lKqBFE" border="0"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/DejanOnTechnology?a=eecq0fB"><img src="http://feeds.feedburner.com/~f/DejanOnTechnology?i=eecq0fB" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/DejanOnTechnology?a=S60QMgb"><img src="http://feeds.feedburner.com/~f/DejanOnTechnology?i=S60QMgb" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/DejanOnTechnology?a=uHfgpFb"><img src="http://feeds.feedburner.com/~f/DejanOnTechnology?i=uHfgpFb" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/DejanOnTechnology/~4/131003911" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.vesic.org/english/blog/visual-studio-2005/visual-studio-2005-sp1/feed/</wfw:commentRss>
		</item>
		<item>
		<title>When SQL Express 2005 SP1 Upgrade does not succeed …</title>
		<link>http://www.vesic.org/english/blog/database/sql-express-2005-sp1/</link>
		<comments>http://www.vesic.org/english/blog/database/sql-express-2005-sp1/#comments</comments>
		<pubDate>Tue, 05 Dec 2006 23:07:28 +0000</pubDate>
		<dc:creator>Dejan Vesić</dc:creator>
		
		<category><![CDATA[Database]]></category>

		<category><![CDATA[Installation]]></category>

		<guid isPermaLink="false">http://www.vesic.org/english/blog/database/sql-express-2005-sp1/</guid>
		<description><![CDATA[I was trying to do upgrade of SQL Express 2005 to SP1 version on one of development machines.

Each time, attempt failed with not-so-helpful-message: <i>SQL Server Setup did not have the ...</i>]]></description>
			<content:encoded><![CDATA[<p>I was trying to do upgrade of SQL Express 2005 to SP1 version on one of development machines.</p>
<p>Each time, attempt failed with not-so-helpful-message:</p>
<blockquote><p>SQL Server Setup did not have the administrator permissions required to rename a file: C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Template Data\mssqlsystemresource1.ldf. To continue, verify that the file exists, and either grant administrator permissions to the account currently running Setup or log in with an administrator account. Then run SQL Server Setup again.</p></blockquote>
<p>Quick Google did the trick: solution was described in <a href="http://support.microsoft.com/default.aspx/kb/918693">KB 918693</a> (to be precise: workaround).</p>
<p>However, at first glance, I failed to execute workaround - there are couple of errors in mentioned article:</p>
<p>1. If typing <code>SQLCMD</code> do not connect to local instance of SQL 2005 Express, try with full name of instance:</p>
<p><code>SQLCMD COMPUTER_NAME\SQLEXPRESS</code> </p>
<p>2. &#8220;beautified&#8221; quotes in article&#8217;s code won&#8217;t exactly help; so, if you want quick copy / paste, use code from here:</p>
<pre><code>EXEC sp_configure 'user instances enabled',0
GO
RECONFIGURE
GO</code></pre>
<p>3. Step three, apart from quotes, has one column name wrong, so again, use this code:</p>
<pre><code>SELECT owning_principal_name, instance_pipe_name
FROM sys.dm_os_child_instances WHERE heart_beat = 'alive'
GO</code></pre>
<p>4. And here is script for final step, after reinstallation:</p>
<pre><code>EXEC sp_configure 'user instances enabled',1
GO
RECONFIGURE
GO</code></pre>
<p>BTW, how can I report errors spotted in KB article to Microsoft? Anyone?</p>

<p><a href="http://feeds.feedburner.com/~a/DejanOnTechnology?a=o9YhtB"><img src="http://feeds.feedburner.com/~a/DejanOnTechnology?i=o9YhtB" border="0"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/DejanOnTechnology?a=VTZLPCB"><img src="http://feeds.feedburner.com/~f/DejanOnTechnology?i=VTZLPCB" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/DejanOnTechnology?a=Wxm8Pjb"><img src="http://feeds.feedburner.com/~f/DejanOnTechnology?i=Wxm8Pjb" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/DejanOnTechnology?a=cSpKkWb"><img src="http://feeds.feedburner.com/~f/DejanOnTechnology?i=cSpKkWb" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/DejanOnTechnology/~4/131003912" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.vesic.org/english/blog/database/sql-express-2005-sp1/feed/</wfw:commentRss>
		</item>
		<item>
		<title>How to make Windows Form app truly Full Screen (and to hide Taskbar) in C#?</title>
		<link>http://www.vesic.org/english/blog/winforms/full-screen-maximize/</link>
		<comments>http://www.vesic.org/english/blog/winforms/full-screen-maximize/#comments</comments>
		<pubDate>Sun, 03 Dec 2006 13:29:33 +0000</pubDate>
		<dc:creator>Dejan Vesić</dc:creator>
		
		<category><![CDATA[.Net]]></category>

		<category><![CDATA[C#]]></category>

		<category><![CDATA[WinForms]]></category>

		<guid isPermaLink="false">http://www.vesic.org/english/blog/winforms/full-screen-maximize/</guid>
		<description><![CDATA[One of sound-like-simple questions is "how to make your application truly Full Screen" i.e. not showing Taskbar or anything like that.

Initial approach is obvious ...]]></description>
			<content:encoded><![CDATA[<p>One of sound-like-simple questions is &#8220;how to make your application truly Full Screen&#8221; i.e. not showing Taskbar or anything like that.</p>
<p>Initial approach is obvious:</p>
<pre>
<code>
    targetForm.WindowState = FormWindowState.Maximized;
    targetForm.FormBorderStyle = FormBorderStyle.None;
    targetForm.TopMost = true;
</code>
</pre>
<p>Does it work? Well, sort of. If your Taskbar have default setting unchecked for &#8220;Keep the taskbar on top of other windows&#8221;, this will present your application in all it&#8217;s glory all over screen estate.</p>
<p>However, if the Taskbar is set to appear on top of all others, this won&#8217;t help - your application won&#8217;t cover it.</p>
<p>Let&#8217;s go further - next step is to use P/Invoke and to engage Win32 API services. There is easy way to hide particular window. So, find the Taskbar and hide it:</p>
<pre>
<code>
    private const int SW_HIDE = 0;
    private const int SW_SHOW = 1;

    [DllImport("user32.dll")]
    private static extern int FindWindow(string className, string windowText);
    [DllImport("user32.dll")]
    private static extern int ShowWindow(int hwnd, int command);

    int hWnd = FindWindow("Shell_TrayWnd", "");
    ShowWindow(hWnd, SW_HIDE);

    targetForm.WindowState = FormWindowState.Maximized;
    targetForm.FormBorderStyle = FormBorderStyle.None;
    targetForm.TopMost = true;
</code>
</pre>
<p>(you need to add <code>using System.Runtime.InteropServices;</code>)</p>
<p>Is this better? In theory yes - Taskbar is hidden, but your application still does not occupy whole screen - place where Taskbar was is not used.</p>
<p>Real and proven solution is to make request to WinAPI that your form take whole screen estate - Taskbar will hide itself in that case. Full information about that can be found in KB Article Q179363: <a href="http://support.microsoft.com/kb/q179363/">How To Cover the Task Bar with a Window</a> and here is the code:</p>
<pre><code>
/// &lt;summary&gt;
/// Selected Win AI Function Calls
/// &lt;/summary&gt;

public class WinApi
{
    [DllImport("user32.dll", EntryPoint = "GetSystemMetrics")]
    public static extern int GetSystemMetrics(int which);

    [DllImport("user32.dll")]
    public static extern void
        SetWindowPos(IntPtr hwnd, IntPtr hwndInsertAfter,
                     int X, int Y, int width, int height, uint flags);        

    private const int SM_CXSCREEN = 0;
    private const int SM_CYSCREEN = 1;
    private static IntPtr HWND_TOP = IntPtr.Zero;
    private const int SWP_SHOWWINDOW = 64; // 0x0040

    public static int ScreenX
    {
        get { return GetSystemMetrics(SM_CXSCREEN);}
    }

    public static int ScreenY
    {
        get { return GetSystemMetrics(SM_CYSCREEN);}
    }

    public static void SetWinFullScreen(IntPtr hwnd)
    {
        SetWindowPos(hwnd, HWND_TOP, 0, 0, ScreenX, ScreenY, SWP_SHOWWINDOW);
    }
}

/// &lt;summary&gt;
/// Class used to preserve / restore state of the form
/// &lt;/summary&gt;
public class FormState
{
    private FormWindowState winState;
    private FormBorderStyle brdStyle;
    private bool topMost;
    private Rectangle bounds;

    private bool IsMaximized = false;

    public void Maximize(Form targetForm)
    {
        if (!IsMaximized)
        {
            IsMaximized = true;
            Save(targetForm);
            targetForm.WindowState = FormWindowState.Maximized;
            targetForm.FormBorderStyle = FormBorderStyle.None;
            targetForm.TopMost = true;
            WinApi.SetWinFullScreen(targetForm.Handle);
        }
    }

    public void Save(Form targetForm)
    {
        winState = targetForm.WindowState;
        brdStyle = targetForm.FormBorderStyle;
        topMost = targetForm.TopMost;
        bounds = targetForm.Bounds;
    }

    public void Restore(Form targetForm)
    {
        targetForm.WindowState = winState;
        targetForm.FormBorderStyle = brdStyle;
        targetForm.TopMost = topMost;
        targetForm.Bounds = bounds;
        IsMaximized = false;
    }
}
</code></pre>
<p>Code for example application is here: <a href="http://www.vesic.org/blog/upload/MaxWinForm.zip">MaxWinForm.zip</a></p>

<p><a href="http://feeds.feedburner.com/~a/DejanOnTechnology?a=w5GuMT"><img src="http://feeds.feedburner.com/~a/DejanOnTechnology?i=w5GuMT" border="0"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/DejanOnTechnology?a=EWrcn0B"><img src="http://feeds.feedburner.com/~f/DejanOnTechnology?i=EWrcn0B" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/DejanOnTechnology?a=auRw3Ib"><img src="http://feeds.feedburner.com/~f/DejanOnTechnology?i=auRw3Ib" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/DejanOnTechnology?a=VczYItb"><img src="http://feeds.feedburner.com/~f/DejanOnTechnology?i=VczYItb" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/DejanOnTechnology/~4/131003913" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.vesic.org/english/blog/winforms/full-screen-maximize/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Error when executing .MSI (Installer) package</title>
		<link>http://www.vesic.org/english/blog/installation/msi-error-read-rights/</link>
		<comments>http://www.vesic.org/english/blog/installation/msi-error-read-rights/#comments</comments>
		<pubDate>Wed, 29 Nov 2006 12:42:14 +0000</pubDate>
		<dc:creator>Dejan Vesić</dc:creator>
		
		<category><![CDATA[Installation]]></category>

		<guid isPermaLink="false">http://www.vesic.org/english/blog/installation/msi-error-read-rights/</guid>
		<description><![CDATA[When you are starting installation of some package via MSI, and if you ran into error like this:

"<em>Error reading from file _full_path_to_msi_package. Verify that the file exists and that you can access it.</em>" ...]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.vesic.org/blog/upload/msi-error.png" alt="MSI Error due to insufficient read rights" width="366" height="165" class="imageRight" />When you are starting installation of some package via MSI, and if you ran into error like this:</p>
<p>&#8220;<em>Error reading from file _full_path_to_msi_package. Verify that the file exists and that you can access it.</em>&#8221;</p>
<p>check that Local System account has read access over containing folder and .msi file itself.</p>
<p>First phase of installation starts under your account, so it will start as expected, but in some moment, one phase is executed via Windows Installer service, which in turn works under Local System account.</p>

<p><a href="http://feeds.feedburner.com/~a/DejanOnTechnology?a=bqaX47"><img src="http://feeds.feedburner.com/~a/DejanOnTechnology?i=bqaX47" border="0"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/DejanOnTechnology?a=BIlplRB"><img src="http://feeds.feedburner.com/~f/DejanOnTechnology?i=BIlplRB" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/DejanOnTechnology?a=5IwnJ3b"><img src="http://feeds.feedburner.com/~f/DejanOnTechnology?i=5IwnJ3b" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/DejanOnTechnology?a=ewdtY6b"><img src="http://feeds.feedburner.com/~f/DejanOnTechnology?i=ewdtY6b" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/DejanOnTechnology/~4/131003914" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.vesic.org/english/blog/installation/msi-error-read-rights/feed/</wfw:commentRss>
		</item>
		<item>
		<title>How to find out Volume Serial Number / CPU info</title>
		<link>http://www.vesic.org/english/blog/c/wmi-volume-serial-cpu/</link>
		<comments>http://www.vesic.org/english/blog/c/wmi-volume-serial-cpu/#comments</comments>
		<pubDate>Thu, 23 Nov 2006 11:50:21 +0000</pubDate>
		<dc:creator>Dejan Vesić</dc:creator>
		
		<category><![CDATA[.Net]]></category>

		<category><![CDATA[C#]]></category>

		<category><![CDATA[WMI]]></category>

		<guid isPermaLink="false">http://www.vesic.org/english/blog/c/wmi-volume-serial-cpu/</guid>
		<description><![CDATA[One of the techniques used when you plan to protect your valuable intellectual property :) (your code) is reading some kind of hardware signature of machine where program is installed.

Usual initial approach is to read Volume serial number (bear in mind that this number can be easily changed) or similar ...]]></description>
			<content:encoded><![CDATA[<p>One of the techniques used when you plan to protect your valuable intellectual property <img src='http://www.vesic.org/english/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> (your code) is reading some kind of hardware signature of machine where program is installed.</p>
<p>Usual initial approach is to read Volume serial number (bear in mind that this number can be easily changed) or similar hardware information. Here is where <a href="http://www.microsoft.com/whdc/system/pnppwr/wmi/default.mspx">WMI - Windows Management Instrumentation</a> comes in play - you can find enormous amount of information using WMI.</p>
<p>Let&#8217;s give small example - find out Volume Serial Number:</p>
<p>- add reference to System.Management.dll<br />
- here is the code:</p>
<pre><code>
using System;
using System.Collections.Generic;
using System.Text;
using System.Management;

namespace Org.Vesic.WMI.Example
{
    class Program
    {
        static void Main(string[] args)
        {
            string targetVolume = "C";

            if((args != null) &#038;&#038; args.Length > 0)
            {
                targetVolume = args[0];
            }

            string mngObject = String.Format("Win32_LogicalDisk.DeviceID=\"{0}:\"",
                                             targetVolume);
            try
            {
                ManagementObject myDisk = new ManagementObject(mngObject);
                PropertyData myDiskProp = myDisk.Properties["VolumeSerialNumber"];

                Console.WriteLine("HDD Serial for Volume {0}: is {1}",
                                  targetVolume, myDiskProp.Value);
            }

            catch(ManagementException ex)
            {
                Console.WriteLine(ex.ToString());
            }
        }
    }
}
</code></pre>
<p>Simple and very effective. Of course, you can read load of other data types, NIC info, even CPU info:</p>
<pre><code>
ManagementObjectSearcher mos = new ManagementObjectSearcher
	 ("SELECT Name, L2CacheSize, L2CacheSpeed FROM  Win32_Processor");

ManagementObjectCollection moc = mos.Get();

int procCount = -1;

foreach (ManagementObject mob in moc)
{
	 procCount++;
	 Console.WriteLine("Processor No. {0}: {1}, L2 Cache size/speed: {2} / {3}",
		  procCount,
		  mob.Properties["Name"].Value,
		  mob.Properties["L2CacheSize"].Value,
		  mob.Properties["L2CacheSpeed"].Value
		  );
}
</code></pre>

<p><a href="http://feeds.feedburner.com/~a/DejanOnTechnology?a=xnn1Nl"><img src="http://feeds.feedburner.com/~a/DejanOnTechnology?i=xnn1Nl" border="0"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/DejanOnTechnology?a=iMacaPB"><img src="http://feeds.feedburner.com/~f/DejanOnTechnology?i=iMacaPB" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/DejanOnTechnology?a=q7y2jGb"><img src="http://feeds.feedburner.com/~f/DejanOnTechnology?i=q7y2jGb" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/DejanOnTechnology?a=fOfZJQb"><img src="http://feeds.feedburner.com/~f/DejanOnTechnology?i=fOfZJQb" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/DejanOnTechnology/~4/131003915" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.vesic.org/english/blog/c/wmi-volume-serial-cpu/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Scripting Man’s best friend - PowerShell</title>
		<link>http://www.vesic.org/english/blog/net/windows-powershell/</link>
		<comments>http://www.vesic.org/english/blog/net/windows-powershell/#comments</comments>
		<pubDate>Thu, 16 Nov 2006 13:06:36 +0000</pubDate>
		<dc:creator>Dejan Vesić</dc:creator>
		
		<category><![CDATA[.Net]]></category>

		<category><![CDATA[PowerShell]]></category>

		<category><![CDATA[Scripting]]></category>

		<guid isPermaLink="false">http://www.vesic.org/english/blog/net/windows-powershell/</guid>
		<description><![CDATA[In the world of GUI, at the heart, I am still scripting / command line / shell man. No matter how GUI application is built, there can be no efficiency and repeatability like in a powerful, versatile script. 

In the beginning, there was DOS ...]]></description>
			<content:encoded><![CDATA[<p>In the world of GUI, at the heart, I am still scripting / command line / shell man.</p>
<p>No matter how GUI application is built, there can be no efficiency and repeatability like in a powerful, versatile script. </p>
<p>In the beginning, there was DOS. Than simple <em>Command </em>processor of Windows 95/98 (I resisted of installing Windows ME, thank God for that). Than, enlightenment - <a href="http://www.jpsoft.com/">JP</a>&#8217;s <strong>4Dos</strong> (retired) and <a href="http://www.jpsoft.com/4ntdes.htm"><strong>4NT</strong></a> - the way CMD should be from start. 4NT was breakthrough in my productivity - backup, maintenance, monitor scripts; processing of folders and files; automating each and every boring repeatable action. Add on top of that <a href="http://en.wikipedia.org/wiki/Awk">AWK</a> for really complicated stuff and there was no problem without solution.</p>
<p>Microsoft was aware about all of shortcomings of CMD shell and tried to overcome them introducing <a href="http://en.wikipedia.org/wiki/Windows_Script_Host">Windows Scripting Shell</a>; however, that approach simply was not successful.</p>
<p>Than MS started to work on <em>Microsoft Shell </em>or <em>MSH</em> (codenamed <strong>Monad</strong>), and first public  beta was in September 2005. Finally, they renamed it to <strong>Windows PowerShell</strong> and build one of the most powerful scripting system for all kinds of tasks - from simple file operations to management of domains and networks. With PowerShell you can manage files, folders, remote locations, registry items, COM objects &#8230; </p>
<p>Let&#8217;s see how <em>dir</em> command does both in PS and CMD:</p>
<p><img src="http://www.vesic.org/blog/upload/power-shell-dir.png" alt="PowerShell dir command" /></p>
<p>What is the difference? (apart from obvious: colors and different way of displaying information) Real difference is that result of the <em>CMD dir</em> command are lines of text and result of <em>PS dir</em> command are objects; objects which you can query for attributes and to decide what to do next based on attribute values.</p>
<ul>
<li>Commands are not text-based - they deal with objects</li>
<li>Command family is extensible - native binary commands, cmdlets (pronounced command-lets) can be augmented by cmdlets that you create</li>
</ul>
<p>For example, to find out all properties of objects returned with dir, execute:<br />
<code> dir | get-member</code></p>
<p>By the way, <em>dir</em> is not real name for cmdlet - it is just an <em>alias</em>:</p>
<p><img src="http://www.vesic.org/blog/upload/power-shell-alias.png" alt="PowerShell Get-Alias dir" /></p>
<p>You can create your own aliases using the <em>Set-Alias</em> cmdlet.  </p>
<p>Just one important thing if you plan to dive into PowerShell scripts world:</p>
<blockquote><p>In order to create and use scripts, instead of just inline commands, you need to deal with security. More info can be obtained with<br />
* <code>get-help about_signing | more</code><br />
* <code>get-help Set-AuthenticodeSignature -detailed | more</code></p>
<p>(or redirect this to file and read afterwards)
</p></blockquote>
<p>(basic help can be obtained for any cmdlet with &#8220;<em>-?</em>&#8220;; detailed help can be obtained with &#8220;<em>get-help cmdlet-name</em>&#8220;)</p>
<p>Almost forgot - real reason for this post was that <a href="http://blogs.msdn.com/powershell/archive/2006/11/15/no-really-powershell-v1-0-is-released.aspx">PowerShell reached version 1.0 and it is availabile for download</a>.</p>

<p><a href="http://feeds.feedburner.com/~a/DejanOnTechnology?a=gI0R2Q"><img src="http://feeds.feedburner.com/~a/DejanOnTechnology?i=gI0R2Q" border="0"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/DejanOnTechnology?a=1dvR9QB"><img src="http://feeds.feedburner.com/~f/DejanOnTechnology?i=1dvR9QB" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/DejanOnTechnology?a=Ns70STb"><img src="http://feeds.feedburner.com/~f/DejanOnTechnology?i=Ns70STb" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/DejanOnTechnology?a=1o2ahub"><img src="http://feeds.feedburner.com/~f/DejanOnTechnology?i=1o2ahub" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/DejanOnTechnology/~4/131003916" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.vesic.org/english/blog/net/windows-powershell/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Validation of input elements and Form Closing</title>
		<link>http://www.vesic.org/english/blog/winforms/winforms-validation/</link>
		<comments>http://www.vesic.org/english/blog/winforms/winforms-validation/#comments</comments>
		<pubDate>Wed, 15 Nov 2006 15:12:29 +0000</pubDate>
		<dc:creator>Dejan Vesić</dc:creator>
		
		<category><![CDATA[.Net]]></category>

		<category><![CDATA[C#]]></category>

		<category><![CDATA[WinForms]]></category>

		<guid isPermaLink="false">http://www.vesic.org/english/blog/winforms/winforms-validation/</guid>
		<description><![CDATA[One of very often questions ask by WinForms developers is "How to make sure that if Form is Closing, no validation occurs in contained controls"? ...]]></description>
			<content:encoded><![CDATA[<p>One of very often questions ask by WinForms developers is &#8220;How to make sure that if Form is Closing, no validation occurs in contained controls&#8221;?</p>
<p>For reference, validating input is rather straightforward:</p>
<p>1. Add <a href="http://msdn2.microsoft.com/en-us/library/system.windows.forms.errorprovider.aspx">ErrorProvider</a> to Form<br />
2. For control in question, add handlers for Validating and Validated events:</p>
<pre>
<code>
        private void tbFixPath_Validating(object sender, CancelEventArgs e)
        {
            if (!ControlValidated(tbFixPath.Text))
            {
                // Cancel the event and select the text to be corrected by the user.
                e.Cancel = true;
                tbFixPath.Select(0, tbFixPath.Text.Length);

                // Set the ErrorProvider error with the text to display.
                this.errorProvider1.SetError(tbFixPath,
                   "Sorry, something went wrong during validation. Please check.");
            }
        }

        private void tbFixPath_Validated(object sender, EventArgs e)
        {
                // After successful validation, clear error message.
                errorProvider1.SetError(tbFixPath, "");
        }
</code>
</pre>
<p>3. Everything is fine, until user tries to close form where some input elements are not validated - closing will fail. In order to prevent this, if you are absolutely sure that you want to close such form, just add:</p>
<pre>
<code>
        private void MainForm_FormClosing(object sender, FormClosingEventArgs e)
        {
                e.Cancel = false;
        }
</code>
</pre>
<p>so that no cancellation of closing event will occur.</p>
<p>I know that this is basic <img src='http://www.vesic.org/english/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> but after I was ask for 10th time in 6 months, I figured that is better to note this somewhere <img src='http://www.vesic.org/english/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /></p>

<p><a href="http://feeds.feedburner.com/~a/DejanOnTechnology?a=KOoJO0"><img src="http://feeds.feedburner.com/~a/DejanOnTechnology?i=KOoJO0" border="0"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/DejanOnTechnology?a=PiOF2ZB"><img src="http://feeds.feedburner.com/~f/DejanOnTechnology?i=PiOF2ZB" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/DejanOnTechnology?a=4MGS69b"><img src="http://feeds.feedburner.com/~f/DejanOnTechnology?i=4MGS69b" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/DejanOnTechnology?a=KWgEbwb"><img src="http://feeds.feedburner.com/~f/DejanOnTechnology?i=KWgEbwb" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/DejanOnTechnology/~4/131003917" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.vesic.org/english/blog/winforms/winforms-validation/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Firebird reaches 2.0 milestone</title>
		<link>http://www.vesic.org/english/blog/database/firebird-2/</link>
		<comments>http://www.vesic.org/english/blog/database/firebird-2/#comments</comments>
		<pubDate>Tue, 14 Nov 2006 23:20:33 +0000</pubDate>
		<dc:creator>Dejan Vesić</dc:creator>
		
		<category><![CDATA[Database]]></category>

		<guid isPermaLink="false">http://www.vesic.org/english/blog/database/firebird-2/</guid>
		<description><![CDATA[
Databases are very important in my area of work; as a simple storage (but rarely), as a smart relational actor in the game or even as replacement for application server, holding mass of business logic rules.
There are more and  more very free and very powerful databases on database market. Some are completely free, and [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.firebirdsql.org/"><img src="http://www.vesic.org/blog/upload/firebird.png" alt="Firebird 2.0" class="imageRight" /></a></p>
<p>Databases are very important in my area of work; as a simple storage (but rarely), as a smart relational actor in the game or even as replacement for application server, holding mass of business logic rules.</p>
<p>There are more and  more very free and very powerful databases on database market. Some are completely free, and some are &#8220;entry&#8221; models for big guys. Whatever reasons are, they make developer life much, much easier.</p>
<p>One of my favorite free databases is <a href="http://www.firebirdsql.org/">Firebird</a> - and it reached very important milestone: version 2.0. There is <a href="http://www.firebirdsql.org/index.php?op=devel&#038;sub=engine&#038;id=fb20_release">long list</a> of enhancements, but to mention just some:</p>
<ul>
<li>Table size is no longer limited to 30 Gb</li>
<li>Password encryption now uses a more secure password hash calculation algorithm (SHA-1), encryption becomes entirely server-based and password login is now required from any remote client</li>
<li>new interface for plugging in international character sets, including enhanced Unicode support, along with a number of new and corrected collations</li>
</ul>
<p>Download link: <a href="http://www.firebirdsql.org/index.php?op=files&#038;id=engine_200">http://www.firebirdsql.org/index.php?op=files&#038;id=engine_200</a></p>
<p>Let me mention other favorites:</p>
<h2>Microsoft</h2>
<p><a href="http://msdn.microsoft.com/vstudio/express/sql/">MS SQL Server Express 2005</a> along with free management tool: <a href="http://go.microsoft.com/fwlink/?LinkId=65110">SQL Server Management Studio Express</a> - fast and sleek combination for rapid development under .Net 2.0 environment. There are of course limitations, but for most small and middle project this will work just fine.</p>
<p>Also, if you are using older version of SQL 2000 or lite version called MSDE please consider migrating to sQL 2005 -   <a href="http://www.microsoft.com/sql/prodinfo/previousversions/faq-sql_on_vista.mspx">SQL 2000 family won&#8217;t be supported on Vista</a>.</p>
<h2>Oracle</h2>
<p><a href="http://www.oracle.com/technology/products/database/xe/">Oracle Database 10g Express Edition</a> - lite version of &#8220;big&#8221; Oracle 10g. Perfect companion is Quests&#8217;s <a href="http://www.toadsoft.com/lic_agree.html">TOAD Free</a>.</p>

<p><a href="http://feeds.feedburner.com/~a/DejanOnTechnology?a=pxnNH2"><img src="http://feeds.feedburner.com/~a/DejanOnTechnology?i=pxnNH2" border="0"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/DejanOnTechnology?a=J04cuiB"><img src="http://feeds.feedburner.com/~f/DejanOnTechnology?i=J04cuiB" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/DejanOnTechnology?a=cGOmt7b"><img src="http://feeds.feedburner.com/~f/DejanOnTechnology?i=cGOmt7b" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/DejanOnTechnology?a=LMDPI7b"><img src="http://feeds.feedburner.com/~f/DejanOnTechnology?i=LMDPI7b" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/DejanOnTechnology/~4/131003918" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.vesic.org/english/blog/database/firebird-2/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Welcome to yet another blog of mine</title>
		<link>http://www.vesic.org/english/blog/no-category/welcome/</link>
		<comments>http://www.vesic.org/english/blog/no-category/welcome/#comments</comments>
		<pubDate>Tue, 14 Nov 2006 21:17:58 +0000</pubDate>
		<dc:creator>Dejan Vesić</dc:creator>
		
		<category><![CDATA[No Category]]></category>

		<guid isPermaLink="false">http://www.vesic.org/english/blog/no-category/welcome/</guid>
		<description><![CDATA[Welcome on my first English blog.

I am blogging more than two years on my <a href="http://www.vesic.org/blog/">Serbian blog</a> and that is blog about general technical subjects which are interesting for wider audience...]]></description>
			<content:encoded><![CDATA[<p>Welcome on my first English blog.</p>
<p>I am blogging more than two years on my <a href="http://www.vesic.org/blog/">Serbian blog</a> and that is blog about general technical subjects which are interesting for wider audience. More details about myself you have <a href="http://www.vesic.org/english/">here</a> and in <a href="http://www.vesic.org/english/my-cv/">my resume</a>.</p>
<p>Idea of this blog is to be highly technical and to deal with .Net, Asp.Net, Databases, Web sites, programming in general.</p>
<p>Hope that won&#8217;t be boring and that you will find interesting and useful stuff for you.</p>
<p>Once more, welcome on my english blog and thanks for reading <img src='http://www.vesic.org/english/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /></p>

<p><a href="http://feeds.feedburner.com/~a/DejanOnTechnology?a=fGGb9H"><img src="http://feeds.feedburner.com/~a/DejanOnTechnology?i=fGGb9H" border="0"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/DejanOnTechnology?a=UeuiRtB"><img src="http://feeds.feedburner.com/~f/DejanOnTechnology?i=UeuiRtB" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/DejanOnTechnology?a=1zMriGb"><img src="http://feeds.feedburner.com/~f/DejanOnTechnology?i=1zMriGb" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/DejanOnTechnology?a=BS436Fb"><img src="http://feeds.feedburner.com/~f/DejanOnTechnology?i=BS436Fb" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/DejanOnTechnology/~4/131003919" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.vesic.org/english/blog/no-category/welcome/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
