<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><title>Vadmyst's Life Chronicles</title><link>http://vadmyst.blogspot.com/</link><description>Blog about software development, algorithms, network protocols, .NET, programming languages, tips &amp;amp; tricks, coding techniques and more.</description><language>en</language><managingEditor>noreply@blogger.com (Vadym Stetsiak)</managingEditor><lastBuildDate>Tue, 10 Nov 2009 13:23:51 PST</lastBuildDate><generator>Blogger http://www.blogger.com</generator><openSearch:totalResults xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/">65</openSearch:totalResults><openSearch:startIndex xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/">1</openSearch:startIndex><openSearch:itemsPerPage xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/">25</openSearch:itemsPerPage><creativeCommons:license>http://creativecommons.org/licenses/by-nc-sa/2.0/</creativeCommons:license><image><link>http://feeds.feedburner.com/LifeChronicles</link><url>http://www.feedburner.com/fb/images/pub/fb_pwrd.gif</url><title>Life Chronicles</title></image><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/LifeChronicles" type="application/rss+xml" /><feedburner:emailServiceId>LifeChronicles</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><item><title>Howto: C++ Class Conversion Operator in .CPP file</title><link>http://feedproxy.google.com/~r/LifeChronicles/~3/vRgajzdSUmE/howto-c-class-conversion-operator-in.html</link><category>c++</category><category>tips'n'tricks</category><author>noreply@blogger.com (Vadym Stetsiak)</author><pubDate>Thu, 24 Sep 2009 06:53:01 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-9941980.post-4279878757166133233</guid><app:edited xmlns:app="http://www.w3.org/2007/app">2009-09-24T16:53:01.171+03:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><description>In case someone did not know how to do this. It took me some time to figure out the right syntax for writing conversion operator implementation in the CPP file. Here is the definition of the...&lt;br/&gt;
&lt;br/&gt;
.&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/LifeChronicles?a=vRgajzdSUmE:09s5IqPfvDk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LifeChronicles?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LifeChronicles?a=vRgajzdSUmE:09s5IqPfvDk:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LifeChronicles?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LifeChronicles?a=vRgajzdSUmE:09s5IqPfvDk:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LifeChronicles?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LifeChronicles?a=vRgajzdSUmE:09s5IqPfvDk:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LifeChronicles?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/LifeChronicles/~4/vRgajzdSUmE" height="1" width="1"/&gt;</description><feedburner:origLink>http://vadmyst.blogspot.com/2009/09/howto-c-class-conversion-operator-in.html</feedburner:origLink></item><item><title>Complex Keys In Generic Dictionary</title><link>http://feedproxy.google.com/~r/LifeChronicles/~3/G2ge-qbx-3o/complex-keys-in-generic-dictionary.html</link><category>tips'n'tricks</category><category>.NET</category><author>noreply@blogger.com (Vadym Stetsiak)</author><pubDate>Tue, 23 Jun 2009 14:09:36 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-9941980.post-7155857104880343412</guid><app:edited xmlns:app="http://www.w3.org/2007/app">2009-06-24T00:09:36.085+03:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">4</thr:total><description>Let us start with the quiz about generic dictionary.
Dictionary simpleDict = new Dictionary(StringComparer.OrdinalIgnoreCase);
simpleDict["name1"] = "value";
simpleDict["Name1"] = "value2";What value...&lt;br/&gt;
&lt;br/&gt;
.&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/LifeChronicles?a=G2ge-qbx-3o:Ds8ysWf27Tk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LifeChronicles?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LifeChronicles?a=G2ge-qbx-3o:Ds8ysWf27Tk:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LifeChronicles?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LifeChronicles?a=G2ge-qbx-3o:Ds8ysWf27Tk:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LifeChronicles?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LifeChronicles?a=G2ge-qbx-3o:Ds8ysWf27Tk:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LifeChronicles?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/LifeChronicles/~4/G2ge-qbx-3o" height="1" width="1"/&gt;</description><feedburner:origLink>http://vadmyst.blogspot.com/2009/06/complex-keys-in-generic-dictionary.html</feedburner:origLink></item><item><title>Check If Local Port Is Available For TCP Socket</title><link>http://feedproxy.google.com/~r/LifeChronicles/~3/kkdeEuzsw4M/check-if-local-port-is-available-for.html</link><category>tips'n'tricks</category><category>c#</category><category>Networking</category><author>noreply@blogger.com (Vadym Stetsiak)</author><pubDate>Thu, 07 May 2009 09:35:30 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-9941980.post-7791652392675692056</guid><app:edited xmlns:app="http://www.w3.org/2007/app">2009-05-07T19:35:30.495+03:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><description>From time to time we need to check if specified port is not occupied. It can be some sort of setup action where we install server product and want to assure that tcp listener will start without any...&lt;br/&gt;
&lt;br/&gt;
.&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/LifeChronicles?a=kkdeEuzsw4M:7uU_YjI1zZg:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LifeChronicles?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LifeChronicles?a=kkdeEuzsw4M:7uU_YjI1zZg:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LifeChronicles?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LifeChronicles?a=kkdeEuzsw4M:7uU_YjI1zZg:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LifeChronicles?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LifeChronicles?a=kkdeEuzsw4M:7uU_YjI1zZg:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LifeChronicles?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/LifeChronicles/~4/kkdeEuzsw4M" height="1" width="1"/&gt;</description><feedburner:origLink>http://vadmyst.blogspot.com/2009/05/check-if-local-port-is-available-for.html</feedburner:origLink></item><item><title>Discovering System Endianess</title><link>http://feedproxy.google.com/~r/LifeChronicles/~3/t0NG1CU9KLk/discovering-system-endianess.html</link><category>c#</category><category>Networking</category><author>noreply@blogger.com (Vadym Stetsiak)</author><pubDate>Wed, 29 Apr 2009 13:20:24 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-9941980.post-6189599078240578767</guid><app:edited xmlns:app="http://www.w3.org/2007/app">2009-04-29T23:20:24.558+03:00</app:edited><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_b959Cv3DoEM/SfYFD7lGEfI/AAAAAAAAAKY/6XGvcVCg9qg/s72-c/endianess.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">3</thr:total><description>When doing network programming we send bytes to and from peers. These bytes sometimes constitute complex protocols.

Let us assume we have simple message exchange protocol with some header and some...&lt;br/&gt;
&lt;br/&gt;
.&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/LifeChronicles?a=t0NG1CU9KLk:GVe7rH-w1n4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LifeChronicles?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LifeChronicles?a=t0NG1CU9KLk:GVe7rH-w1n4:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LifeChronicles?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LifeChronicles?a=t0NG1CU9KLk:GVe7rH-w1n4:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LifeChronicles?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LifeChronicles?a=t0NG1CU9KLk:GVe7rH-w1n4:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LifeChronicles?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/LifeChronicles/~4/t0NG1CU9KLk" height="1" width="1"/&gt;</description><feedburner:origLink>http://vadmyst.blogspot.com/2009/04/discovering-system-endianess.html</feedburner:origLink></item><item><title>Windows Vista Defragmentation Tools</title><link>http://feedproxy.google.com/~r/LifeChronicles/~3/SP_bhMK1KJg/windows-vista-defragmentation-tools.html</link><category>tips'n'tricks</category><category>vista</category><author>noreply@blogger.com (Vadym Stetsiak)</author><pubDate>Thu, 26 Mar 2009 14:51:04 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-9941980.post-2878879203743193309</guid><app:edited xmlns:app="http://www.w3.org/2007/app">2009-03-26T23:51:04.214+02:00</app:edited><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_b959Cv3DoEM/Scvy3FpGMbI/AAAAAAAAAKQ/6zfnk-oInlM/s72-c/vista_defrag.png" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><description>Windows Vista by default uses NTFS file system. Sooner or later files on it will start to fragment. 

Fragmentation can lead to significant disk I/O performance decrease. Common way how to handle...&lt;br/&gt;
&lt;br/&gt;
.&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/LifeChronicles?a=SP_bhMK1KJg:HEQCcNVYjfI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LifeChronicles?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LifeChronicles?a=SP_bhMK1KJg:HEQCcNVYjfI:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LifeChronicles?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LifeChronicles?a=SP_bhMK1KJg:HEQCcNVYjfI:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LifeChronicles?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LifeChronicles?a=SP_bhMK1KJg:HEQCcNVYjfI:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LifeChronicles?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/LifeChronicles/~4/SP_bhMK1KJg" height="1" width="1"/&gt;</description><feedburner:origLink>http://vadmyst.blogspot.com/2009/03/windows-vista-defragmentation-tools.html</feedburner:origLink></item><item><title>Image Watermarking</title><link>http://feedproxy.google.com/~r/LifeChronicles/~3/7BLCjq7q34A/image-watermarking.html</link><category>tips'n'tricks</category><author>noreply@blogger.com (Vadym Stetsiak)</author><pubDate>Sun, 15 Mar 2009 15:14:37 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-9941980.post-4785101931340939585</guid><app:edited xmlns:app="http://www.w3.org/2007/app">2009-03-16T00:14:37.293+02:00</app:edited><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_b959Cv3DoEM/Sb19b3uUVhI/AAAAAAAAAKI/BNrVy9bSxPM/s72-c/BigSunWatermark.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><description>We all know that when image is posted on the internet it no longer belongs to you. 

It can be arguable, but nevertheless, any user with browser can simply save it on HDD and you can do nothing about...&lt;br/&gt;
&lt;br/&gt;
.&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/LifeChronicles?a=7BLCjq7q34A:-zl8VKj5N9w:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LifeChronicles?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LifeChronicles?a=7BLCjq7q34A:-zl8VKj5N9w:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LifeChronicles?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LifeChronicles?a=7BLCjq7q34A:-zl8VKj5N9w:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LifeChronicles?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LifeChronicles?a=7BLCjq7q34A:-zl8VKj5N9w:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LifeChronicles?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/LifeChronicles/~4/7BLCjq7q34A" height="1" width="1"/&gt;</description><feedburner:origLink>http://vadmyst.blogspot.com/2009/03/image-watermarking.html</feedburner:origLink></item><item><title>Searching for Similar Words. Similarity Metric</title><link>http://feedproxy.google.com/~r/LifeChronicles/~3/xl-E_J-jtnI/searching-for-similar-words-similarity.html</link><category>tips'n'tricks</category><category>Algorithms</category><author>noreply@blogger.com (Vadym Stetsiak)</author><pubDate>Mon, 19 Jan 2009 14:16:51 PST</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-9941980.post-1706243569996044618</guid><app:edited xmlns:app="http://www.w3.org/2007/app">2009-01-20T00:16:51.297+02:00</app:edited><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_b959Cv3DoEM/SXT7b3GWG7I/AAAAAAAAAKA/fAFAQO_7sNI/s72-c/euc.png" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><description>How one can find out if two or more words are similar? I do not mean semantically similar (synonyms aren't taken into consideration), but visually similar.

Consider, these two words, "sample1" and...&lt;br/&gt;
&lt;br/&gt;
.&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/LifeChronicles?a=xl-E_J-jtnI:F97lsqrNdPI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LifeChronicles?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LifeChronicles?a=xl-E_J-jtnI:F97lsqrNdPI:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LifeChronicles?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LifeChronicles?a=xl-E_J-jtnI:F97lsqrNdPI:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LifeChronicles?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LifeChronicles?a=xl-E_J-jtnI:F97lsqrNdPI:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LifeChronicles?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/LifeChronicles/~4/xl-E_J-jtnI" height="1" width="1"/&gt;</description><feedburner:origLink>http://vadmyst.blogspot.com/2009/01/searching-for-similar-words-similarity.html</feedburner:origLink></item><item><title>Bit Flags: The Simple Way</title><link>http://feedproxy.google.com/~r/LifeChronicles/~3/PwidqDisRVs/bit-flags-simple-way.html</link><category>tips'n'tricks</category><category>c#</category><author>noreply@blogger.com (Vadym Stetsiak)</author><pubDate>Fri, 07 Nov 2008 02:50:47 PST</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-9941980.post-1715493119885175209</guid><app:edited xmlns:app="http://www.w3.org/2007/app">2008-11-07T12:50:47.077+02:00</app:edited><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_b959Cv3DoEM/SRQdcAOxL7I/AAAAAAAAAII/D94TQKx-5yc/s72-c/bits.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total><description>Time from time we face the need or (for some of us) an opprotunity to mess with the bit fields. As we all know bytes consist of bits. Bit can have two values "0" and "1".

Using this knowledge we can...&lt;br/&gt;
&lt;br/&gt;
.&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/LifeChronicles?a=PwidqDisRVs:C65AuhVP7oY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LifeChronicles?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LifeChronicles?a=PwidqDisRVs:C65AuhVP7oY:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LifeChronicles?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LifeChronicles?a=PwidqDisRVs:C65AuhVP7oY:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LifeChronicles?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LifeChronicles?a=PwidqDisRVs:C65AuhVP7oY:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LifeChronicles?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/LifeChronicles/~4/PwidqDisRVs" height="1" width="1"/&gt;</description><feedburner:origLink>http://vadmyst.blogspot.com/2008/11/bit-flags-simple-way.html</feedburner:origLink></item><item><title>Handling Windows Operating System Version Mess</title><link>http://feedproxy.google.com/~r/LifeChronicles/~3/xwEGzPoDXLk/handling-windows-operating-system.html</link><category>WiX</category><category>Installers</category><author>noreply@blogger.com (Vadym Stetsiak)</author><pubDate>Mon, 01 Jun 2009 03:27:21 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-9941980.post-1986994594946291723</guid><app:edited xmlns:app="http://www.w3.org/2007/app">2009-06-01T13:27:21.085+03:00</app:edited><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_b959Cv3DoEM/SQnyo7TPUBI/AAAAAAAAAIA/-Uzq5-iBSFM/s72-c/installer_error.png" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><description>Operating System (OS) like any other software should have a version. So do new OSes from Microsoft.

Sometimes OS version is crucial for the installation software development process. Some products...&lt;br/&gt;
&lt;br/&gt;
.&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/LifeChronicles?a=xwEGzPoDXLk:PzHI7ayZ9YA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LifeChronicles?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LifeChronicles?a=xwEGzPoDXLk:PzHI7ayZ9YA:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LifeChronicles?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LifeChronicles?a=xwEGzPoDXLk:PzHI7ayZ9YA:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LifeChronicles?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LifeChronicles?a=xwEGzPoDXLk:PzHI7ayZ9YA:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LifeChronicles?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/LifeChronicles/~4/xwEGzPoDXLk" height="1" width="1"/&gt;</description><feedburner:origLink>http://vadmyst.blogspot.com/2008/10/handling-windows-operating-system.html</feedburner:origLink></item><item><title>"Using" magic or working with type aliases</title><link>http://feedproxy.google.com/~r/LifeChronicles/~3/54FDAYkkVqg/using-magic.html</link><category>tips'n'tricks</category><category>.NET</category><author>noreply@blogger.com (Vadym Stetsiak)</author><pubDate>Fri, 18 Jul 2008 00:26:00 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-9941980.post-4110188174344409528</guid><app:edited xmlns:app="http://www.w3.org/2007/app">2008-07-18T10:26:00.312+03:00</app:edited><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://bp1.blogger.com/_b959Cv3DoEM/SIBEEJIXnJI/AAAAAAAAAHc/mDHdWCOqvL8/s72-c/redirect.gif" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">8</thr:total><description>Generics in C# allow us specify and construct rather complex types. For instance, we can create a dictionary that maps Id number with the name: 
Dictionary&amp;lt;int, string&amp;gt; idNameMapping;We can...&lt;br/&gt;
&lt;br/&gt;
.&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/LifeChronicles?a=54FDAYkkVqg:3ykVTs34q_Q:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LifeChronicles?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LifeChronicles?a=54FDAYkkVqg:3ykVTs34q_Q:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LifeChronicles?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LifeChronicles?a=54FDAYkkVqg:3ykVTs34q_Q:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LifeChronicles?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LifeChronicles?a=54FDAYkkVqg:3ykVTs34q_Q:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LifeChronicles?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/LifeChronicles/~4/54FDAYkkVqg" height="1" width="1"/&gt;</description><feedburner:origLink>http://vadmyst.blogspot.com/2008/07/using-magic.html</feedburner:origLink></item><item><title>The basics of secure data exchange under TCP</title><link>http://feedproxy.google.com/~r/LifeChronicles/~3/V7kpng_fgdY/basics-of-securele-data-exchange-under.html</link><category>tips'n'tricks</category><category>.NET</category><category>Networking</category><author>noreply@blogger.com (Vadym Stetsiak)</author><pubDate>Sat, 28 Jun 2008 12:26:35 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-9941980.post-6932773034319751873</guid><app:edited xmlns:app="http://www.w3.org/2007/app">2008-06-28T22:26:35.711+03:00</app:edited><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_b959Cv3DoEM/SGaPPJKXQAI/AAAAAAAAAG8/pkJKT1aNtas/s72-c/ssl_lock.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">4</thr:total><description>Doing data exchange in plain text is very convenient and easy to implement but what can you do to prevent eavesdropping, tampering, and message forgery of the data you send back and forth? Here's...&lt;br/&gt;
&lt;br/&gt;
.&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/LifeChronicles?a=V7kpng_fgdY:cpcvddm2luk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LifeChronicles?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LifeChronicles?a=V7kpng_fgdY:cpcvddm2luk:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LifeChronicles?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LifeChronicles?a=V7kpng_fgdY:cpcvddm2luk:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LifeChronicles?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LifeChronicles?a=V7kpng_fgdY:cpcvddm2luk:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LifeChronicles?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/LifeChronicles/~4/V7kpng_fgdY" height="1" width="1"/&gt;</description><feedburner:origLink>http://vadmyst.blogspot.com/2008/06/basics-of-securele-data-exchange-under.html</feedburner:origLink></item><item><title>Hashing  in .NET (cryptography related battle tactics)</title><link>http://feedproxy.google.com/~r/LifeChronicles/~3/Ii1lpJeYBdQ/hashing-in-net-cryptography-related.html</link><category>tips'n'tricks</category><category>Cryptography</category><category>.NET</category><author>noreply@blogger.com (Vadym Stetsiak)</author><pubDate>Wed, 18 Jun 2008 13:55:28 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-9941980.post-7629913933388868733</guid><app:edited xmlns:app="http://www.w3.org/2007/app">2008-06-18T23:55:28.558+03:00</app:edited><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_b959Cv3DoEM/SFl1s5zcB5I/AAAAAAAAAGU/QF7pgQUh3Ec/s72-c/hash1.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><description>Those who think I'm going to talk about stuff related to hashish or hash brown are totally not right. (By the way I do like hash brown as well as this great Japanese liquor ;) )

I will be talking...&lt;br/&gt;
&lt;br/&gt;
.&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/LifeChronicles?a=Ii1lpJeYBdQ:h4klXWg4bSI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LifeChronicles?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LifeChronicles?a=Ii1lpJeYBdQ:h4klXWg4bSI:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LifeChronicles?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LifeChronicles?a=Ii1lpJeYBdQ:h4klXWg4bSI:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LifeChronicles?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LifeChronicles?a=Ii1lpJeYBdQ:h4klXWg4bSI:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LifeChronicles?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/LifeChronicles/~4/Ii1lpJeYBdQ" height="1" width="1"/&gt;</description><feedburner:origLink>http://vadmyst.blogspot.com/2008/06/hashing-in-net-cryptography-related.html</feedburner:origLink></item><item><title>Seeking CSS Enlightenment</title><link>http://feedproxy.google.com/~r/LifeChronicles/~3/jtDe1O07WQ8/seeking-css-enlightenment.html</link><category>Interesting</category><author>noreply@blogger.com (Vadym Stetsiak)</author><pubDate>Tue, 27 May 2008 14:44:18 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-9941980.post-2107398750579176371</guid><app:edited xmlns:app="http://www.w3.org/2007/app">2008-05-28T00:44:18.959+03:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total><description>Nowadays it is hard to find software developer or web-designer that doesn't know what CSS is all about.

I must say that until recently, I didn't realize what potential CSS has. I found a place in...&lt;br/&gt;
&lt;br/&gt;
.&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/LifeChronicles?a=jtDe1O07WQ8:e6RuLcCvzGM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LifeChronicles?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LifeChronicles?a=jtDe1O07WQ8:e6RuLcCvzGM:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LifeChronicles?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LifeChronicles?a=jtDe1O07WQ8:e6RuLcCvzGM:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LifeChronicles?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LifeChronicles?a=jtDe1O07WQ8:e6RuLcCvzGM:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LifeChronicles?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/LifeChronicles/~4/jtDe1O07WQ8" height="1" width="1"/&gt;</description><feedburner:origLink>http://vadmyst.blogspot.com/2008/05/seeking-css-enlightenment.html</feedburner:origLink></item><item><title>Sample code for TCP server using completion ports</title><link>http://feedproxy.google.com/~r/LifeChronicles/~3/MeO7oNt11_M/sample-code-for-tcp-server-using.html</link><category>.NET</category><category>Networking</category><author>noreply@blogger.com (Vadym Stetsiak)</author><pubDate>Wed, 07 May 2008 11:25:03 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-9941980.post-3536638555843039723</guid><app:edited xmlns:app="http://www.w3.org/2007/app">2008-05-07T21:25:03.150+03:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">12</thr:total><description>As I have promised in my previous post I'm presenting sample code of TCP server that is receiving variable length messages in specific format. Data transfer protocol implies that network messages...&lt;br/&gt;
&lt;br/&gt;
.&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/LifeChronicles?a=MeO7oNt11_M:Sx8zZ0JrMxI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LifeChronicles?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LifeChronicles?a=MeO7oNt11_M:Sx8zZ0JrMxI:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LifeChronicles?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LifeChronicles?a=MeO7oNt11_M:Sx8zZ0JrMxI:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LifeChronicles?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LifeChronicles?a=MeO7oNt11_M:Sx8zZ0JrMxI:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LifeChronicles?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/LifeChronicles/~4/MeO7oNt11_M" height="1" width="1"/&gt;</description><feedburner:origLink>http://vadmyst.blogspot.com/2008/05/sample-code-for-tcp-server-using.html</feedburner:origLink></item><item><title>High peformance TCP server using completion ports</title><link>http://feedproxy.google.com/~r/LifeChronicles/~3/mQnWGp1d2W8/high-peformance-tcp-server-using.html</link><category>.NET</category><category>Networking</category><author>noreply@blogger.com (Vadym Stetsiak)</author><pubDate>Wed, 07 May 2008 11:31:55 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-9941980.post-917986935016492424</guid><app:edited xmlns:app="http://www.w3.org/2007/app">2008-05-07T21:31:55.833+03:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><description>Completion ports were first introduced in Windows NT 4.0. This technology makes simultaneous asynchronous I/O possible and extremely effective. When building high performance network software one has...&lt;br/&gt;
&lt;br/&gt;
.&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/LifeChronicles?a=mQnWGp1d2W8:UgT8d_fWlAs:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LifeChronicles?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LifeChronicles?a=mQnWGp1d2W8:UgT8d_fWlAs:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LifeChronicles?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LifeChronicles?a=mQnWGp1d2W8:UgT8d_fWlAs:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LifeChronicles?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LifeChronicles?a=mQnWGp1d2W8:UgT8d_fWlAs:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LifeChronicles?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/LifeChronicles/~4/mQnWGp1d2W8" height="1" width="1"/&gt;</description><feedburner:origLink>http://vadmyst.blogspot.com/2008/05/high-peformance-tcp-server-using.html</feedburner:origLink></item><item><title>What is peeking in TCP and why should it be avoided</title><link>http://feedproxy.google.com/~r/LifeChronicles/~3/IyKhKi8iEIM/what-is-peeking-in-tcp-and-why-should.html</link><category>.NET</category><category>Networking</category><author>noreply@blogger.com (Vadym Stetsiak)</author><pubDate>Tue, 22 Apr 2008 11:32:56 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-9941980.post-6475667499465094551</guid><app:edited xmlns:app="http://www.w3.org/2007/app">2008-04-22T21:32:56.400+03:00</app:edited><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_b959Cv3DoEM/SA4p1RfBX0I/AAAAAAAAAGM/gThjVS45qKg/s72-c/DataRead.JPG" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><description>Typical network receive operation via sockets looks like this:
socket.Receive(userBuffer, userBuffer.Length, SocketFlags.None);
In the above code received data is moved from Winsock internal buffers...&lt;br/&gt;
&lt;br/&gt;
.&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/LifeChronicles?a=IyKhKi8iEIM:Rtb34f66h6Y:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LifeChronicles?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LifeChronicles?a=IyKhKi8iEIM:Rtb34f66h6Y:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LifeChronicles?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LifeChronicles?a=IyKhKi8iEIM:Rtb34f66h6Y:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LifeChronicles?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LifeChronicles?a=IyKhKi8iEIM:Rtb34f66h6Y:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LifeChronicles?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/LifeChronicles/~4/IyKhKi8iEIM" height="1" width="1"/&gt;</description><feedburner:origLink>http://vadmyst.blogspot.com/2008/04/what-is-peeking-in-tcp-and-why-should.html</feedburner:origLink></item><item><title>Change socket send and receive timeout</title><link>http://feedproxy.google.com/~r/LifeChronicles/~3/pMGWhfmmi90/change-socket-send-and-receive-timeout.html</link><category>.NET</category><category>Networking</category><author>noreply@blogger.com (Vadym Stetsiak)</author><pubDate>Tue, 15 Apr 2008 00:23:33 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-9941980.post-1240840756851383844</guid><app:edited xmlns:app="http://www.w3.org/2007/app">2008-04-15T10:23:33.284+03:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><description>Sometimes synchronous Socket I/O methods like Send or Receive take too long to complete or produce an error (exception). This default behavior can be changed using socket options. Namely,...&lt;br/&gt;
&lt;br/&gt;
.&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/LifeChronicles?a=pMGWhfmmi90:ClclzxabQdQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LifeChronicles?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LifeChronicles?a=pMGWhfmmi90:ClclzxabQdQ:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LifeChronicles?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LifeChronicles?a=pMGWhfmmi90:ClclzxabQdQ:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LifeChronicles?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LifeChronicles?a=pMGWhfmmi90:ClclzxabQdQ:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LifeChronicles?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/LifeChronicles/~4/pMGWhfmmi90" height="1" width="1"/&gt;</description><feedburner:origLink>http://vadmyst.blogspot.com/2008/04/change-socket-send-and-receive-timeout.html</feedburner:origLink></item><item><title>Proper way to close TCP socket</title><link>http://feedproxy.google.com/~r/LifeChronicles/~3/Qx0ZE5P8KtY/proper-way-to-close-tcp-socket.html</link><category>.NET</category><category>Networking</category><author>noreply@blogger.com (Vadym Stetsiak)</author><pubDate>Thu, 10 Apr 2008 13:37:42 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-9941980.post-2274740011267365671</guid><app:edited xmlns:app="http://www.w3.org/2007/app">2008-04-10T23:37:42.844+03:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total><description>This question arises very often in the developers communities. 
For simplification I'll talk about synchronous sockets.

Generally, the procedure is like this:
Finish sending data
  Call...&lt;br/&gt;
&lt;br/&gt;
.&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/LifeChronicles?a=Qx0ZE5P8KtY:LljQ_l7nQsY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LifeChronicles?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LifeChronicles?a=Qx0ZE5P8KtY:LljQ_l7nQsY:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LifeChronicles?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LifeChronicles?a=Qx0ZE5P8KtY:LljQ_l7nQsY:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LifeChronicles?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LifeChronicles?a=Qx0ZE5P8KtY:LljQ_l7nQsY:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LifeChronicles?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/LifeChronicles/~4/Qx0ZE5P8KtY" height="1" width="1"/&gt;</description><feedburner:origLink>http://vadmyst.blogspot.com/2008/04/proper-way-to-close-tcp-socket.html</feedburner:origLink></item><item><title>Part 2: How to Transfer Variable Length Messages With Async Sockets</title><link>http://feedproxy.google.com/~r/LifeChronicles/~3/vbWS6phAR8Y/part-2-how-to-transfer-fixed-sized-data.html</link><category>.NET</category><category>Networking</category><author>noreply@blogger.com (Vadym Stetsiak)</author><pubDate>Mon, 24 Mar 2008 15:48:43 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-9941980.post-4846205834182979327</guid><app:edited xmlns:app="http://www.w3.org/2007/app">2008-03-25T00:48:43.769+02:00</app:edited><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_b959Cv3DoEM/R-go-OYJCYI/AAAAAAAAAFk/1_gZI5KDwj8/s72-c/DataProtocol.JPG" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total><description>In my previous post  about transferring data in the async manner. I was talking about designing a small data exchange protocol to transfer a message over the network. All I/O was done in the async...&lt;br/&gt;
&lt;br/&gt;
.&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/LifeChronicles?a=vbWS6phAR8Y:txAMjEX6Nnk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LifeChronicles?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LifeChronicles?a=vbWS6phAR8Y:txAMjEX6Nnk:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LifeChronicles?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LifeChronicles?a=vbWS6phAR8Y:txAMjEX6Nnk:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LifeChronicles?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LifeChronicles?a=vbWS6phAR8Y:txAMjEX6Nnk:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LifeChronicles?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/LifeChronicles/~4/vbWS6phAR8Y" height="1" width="1"/&gt;</description><feedburner:origLink>http://vadmyst.blogspot.com/2008/03/part-2-how-to-transfer-fixed-sized-data.html</feedburner:origLink></item><item><title>How To Go Slow: Summing Arrays</title><link>http://feedproxy.google.com/~r/LifeChronicles/~3/g9rLp03Tc60/how-to-go-slow-summing-arrays.html</link><category>performance</category><author>noreply@blogger.com (Vadym Stetsiak)</author><pubDate>Wed, 20 Feb 2008 07:35:39 PST</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-9941980.post-404513760435000424</guid><app:edited xmlns:app="http://www.w3.org/2007/app">2008-02-20T17:35:39.445+02:00</app:edited><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_b959Cv3DoEM/R7xIcH6cqPI/AAAAAAAAAFU/aDFhr8t4hZY/s72-c/snail.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><description>In this entry I'll talk about thrashing when iterating over complex arrays.

Consider a square array with the size of  N = 10000;
Now, consider the code that summs elements of the square array
for...&lt;br/&gt;
&lt;br/&gt;
.&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/LifeChronicles?a=g9rLp03Tc60:UEuJTNCkDbA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LifeChronicles?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LifeChronicles?a=g9rLp03Tc60:UEuJTNCkDbA:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LifeChronicles?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LifeChronicles?a=g9rLp03Tc60:UEuJTNCkDbA:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LifeChronicles?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LifeChronicles?a=g9rLp03Tc60:UEuJTNCkDbA:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LifeChronicles?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/LifeChronicles/~4/g9rLp03Tc60" height="1" width="1"/&gt;</description><feedburner:origLink>http://vadmyst.blogspot.com/2008/02/how-to-go-slow-summing-arrays.html</feedburner:origLink></item><item><title>When string.ToLower() is Evil</title><link>http://feedproxy.google.com/~r/LifeChronicles/~3/uS6unyNPa7w/when-stringtolower-is-evil.html</link><category>performance</category><category>tips'n'tricks</category><category>.NET</category><author>noreply@blogger.com (Vadym Stetsiak)</author><pubDate>Sat, 02 Feb 2008 05:26:19 PST</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-9941980.post-3326084184717145244</guid><app:edited xmlns:app="http://www.w3.org/2007/app">2008-02-02T15:26:19.669+02:00</app:edited><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_b959Cv3DoEM/R6ObUIwY0hI/AAAAAAAAAFM/j8_EemrEV7g/s72-c/evil_string.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">12</thr:total><description>Did you know how evil string.ToLower() can sometimes be?

Let me explain...

Very often I see code similar to this:

void DoBadAction  (string val)
{
    if (val.ToLower() == "someValue")
    { //do...&lt;br/&gt;
&lt;br/&gt;
.&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/LifeChronicles?a=uS6unyNPa7w:mUHCCSesLhw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LifeChronicles?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LifeChronicles?a=uS6unyNPa7w:mUHCCSesLhw:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LifeChronicles?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LifeChronicles?a=uS6unyNPa7w:mUHCCSesLhw:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LifeChronicles?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LifeChronicles?a=uS6unyNPa7w:mUHCCSesLhw:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LifeChronicles?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/LifeChronicles/~4/uS6unyNPa7w" height="1" width="1"/&gt;</description><feedburner:origLink>http://vadmyst.blogspot.com/2008/02/when-stringtolower-is-evil.html</feedburner:origLink></item><item><title>How to Transfer Fixed Sized Data With Async Sockets</title><link>http://feedproxy.google.com/~r/LifeChronicles/~3/oMGvpcoQ16I/how-to-transfer-fixed-sized-data-with.html</link><category>.NET</category><category>Networking</category><author>noreply@blogger.com (Vadym Stetsiak)</author><pubDate>Fri, 22 Feb 2008 05:26:37 PST</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-9941980.post-5917639437993951528</guid><app:edited xmlns:app="http://www.w3.org/2007/app">2008-02-22T15:26:37.695+02:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total><description>This post was inspired by the discussion in MDSN forums.

Discussion on that forum showed that there is misunderstanding of the principles of data transfer across the network, especially in...&lt;br/&gt;
&lt;br/&gt;
.&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/LifeChronicles?a=oMGvpcoQ16I:_gY7CCspadA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LifeChronicles?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LifeChronicles?a=oMGvpcoQ16I:_gY7CCspadA:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LifeChronicles?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LifeChronicles?a=oMGvpcoQ16I:_gY7CCspadA:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LifeChronicles?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LifeChronicles?a=oMGvpcoQ16I:_gY7CCspadA:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LifeChronicles?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/LifeChronicles/~4/oMGvpcoQ16I" height="1" width="1"/&gt;</description><feedburner:origLink>http://vadmyst.blogspot.com/2008/01/how-to-transfer-fixed-sized-data-with.html</feedburner:origLink></item><item><title>Unmanaged Debugging Option Very Useful in Visual Studio .NET</title><link>http://feedproxy.google.com/~r/LifeChronicles/~3/tZYP-4nItrU/unmanaged-debugging-option-very-useful.html</link><category>tips'n'tricks</category><category>.NET</category><author>noreply@blogger.com (Vadym Stetsiak)</author><pubDate>Sat, 02 Feb 2008 05:27:35 PST</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-9941980.post-5990505227470726017</guid><app:edited xmlns:app="http://www.w3.org/2007/app">2008-02-02T15:27:35.397+02:00</app:edited><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_b959Cv3DoEM/R5Htph6mRLI/AAAAAAAAAFE/lw1gmh8PRMY/s72-c/debug.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total><description>When developing managed code that is interacting with unmanaged world one has to be very careful, especially when working with unmanaged memory.

Here's an example how critical memory bug can be...&lt;br/&gt;
&lt;br/&gt;
.&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/LifeChronicles?a=tZYP-4nItrU:j6lI3M-lZow:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LifeChronicles?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LifeChronicles?a=tZYP-4nItrU:j6lI3M-lZow:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LifeChronicles?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LifeChronicles?a=tZYP-4nItrU:j6lI3M-lZow:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LifeChronicles?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LifeChronicles?a=tZYP-4nItrU:j6lI3M-lZow:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LifeChronicles?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/LifeChronicles/~4/tZYP-4nItrU" height="1" width="1"/&gt;</description><feedburner:origLink>http://vadmyst.blogspot.com/2008/01/unmanaged-debugging-option-very-useful.html</feedburner:origLink></item><item><title>Effective SQL Mindset: Cursors VS Joins</title><link>http://feedproxy.google.com/~r/LifeChronicles/~3/kOgyVQ53uOg/effective-sql-mindset-cursors-vs-joins.html</link><category>sql</category><category>Algorithms</category><author>noreply@blogger.com (Vadym Stetsiak)</author><pubDate>Sat, 02 Feb 2008 05:28:12 PST</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-9941980.post-3752258725251941081</guid><app:edited xmlns:app="http://www.w3.org/2007/app">2008-02-02T15:28:12.917+02:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><description>In the past I've dealt a lot with cursors. My experience was mostly negative. SQL code written using them was terribly slow. Thus our team was transforming SQL code with cursors into code without...&lt;br/&gt;
&lt;br/&gt;
.&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/LifeChronicles?a=kOgyVQ53uOg:7t5WLrhxOgM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LifeChronicles?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LifeChronicles?a=kOgyVQ53uOg:7t5WLrhxOgM:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LifeChronicles?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LifeChronicles?a=kOgyVQ53uOg:7t5WLrhxOgM:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LifeChronicles?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LifeChronicles?a=kOgyVQ53uOg:7t5WLrhxOgM:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LifeChronicles?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/LifeChronicles/~4/kOgyVQ53uOg" height="1" width="1"/&gt;</description><feedburner:origLink>http://vadmyst.blogspot.com/2007/12/effective-sql-mindset-cursors-vs-joins.html</feedburner:origLink></item><item><title>Here Comes Another Bubble</title><link>http://feedproxy.google.com/~r/LifeChronicles/~3/ro0f9-hJfY8/here-comes-another-bubble.html</link><category>Interesting</category><author>noreply@blogger.com (Vadym Stetsiak)</author><pubDate>Sat, 02 Feb 2008 05:28:48 PST</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-9941980.post-1869865796161793679</guid><app:edited xmlns:app="http://www.w3.org/2007/app">2008-02-02T15:28:48.503+02:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><description>Some people say that there won't be .com like bubble any more. However, there are signs  out there that indicate the opposite :)



Thanks Alena C++ for the link&lt;br/&gt;
&lt;br/&gt;
.&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/LifeChronicles?a=ro0f9-hJfY8:B9dB8IF-CMo:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LifeChronicles?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LifeChronicles?a=ro0f9-hJfY8:B9dB8IF-CMo:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LifeChronicles?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LifeChronicles?a=ro0f9-hJfY8:B9dB8IF-CMo:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LifeChronicles?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LifeChronicles?a=ro0f9-hJfY8:B9dB8IF-CMo:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LifeChronicles?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/LifeChronicles/~4/ro0f9-hJfY8" height="1" width="1"/&gt;</description><feedburner:origLink>http://vadmyst.blogspot.com/2007/12/here-comes-another-bubble.html</feedburner:origLink></item></channel></rss>
