<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Fedyashov&#039;s Blog</title>
	<atom:link href="http://fedyashov.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://fedyashov.wordpress.com</link>
	<description>Just another WordPress.com site</description>
	<lastBuildDate>Sat, 01 Dec 2012 06:46:20 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='fedyashov.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Fedyashov&#039;s Blog</title>
		<link>http://fedyashov.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://fedyashov.wordpress.com/osd.xml" title="Fedyashov&#039;s Blog" />
	<atom:link rel='hub' href='http://fedyashov.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Steam summer sale 2012</title>
		<link>http://fedyashov.wordpress.com/2012/07/12/steam-summer-game-sale/</link>
		<comments>http://fedyashov.wordpress.com/2012/07/12/steam-summer-game-sale/#comments</comments>
		<pubDate>Thu, 12 Jul 2012 20:35:48 +0000</pubDate>
		<dc:creator>afedyashov</dc:creator>
				<category><![CDATA[computer games]]></category>
		<category><![CDATA[entertainment]]></category>
		<category><![CDATA[discount]]></category>
		<category><![CDATA[steam]]></category>

		<guid isPermaLink="false">http://fedyashov.wordpress.com/?p=166</guid>
		<description><![CDATA[A short note for gamers &#8211; I was very surprised to see the details of Steam Summer Sale offering. Don&#8217;t miss the opportunity to get some amazing titles for completely ridiculous prices &#8211; here are some examples &#8211; check  out: &#8220;Square Enix Hit Collection&#8221; bundle with all series of DeusEx, Hitman, Tomb Raider, Just Cause [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fedyashov.wordpress.com&#038;blog=15076710&#038;post=166&#038;subd=fedyashov&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>A short note for gamers &#8211; I was very surprised to see the details of <a title="Steam Summer Sale" href="http://store.steampowered.com/news/8388/?snr=1_550_552">Steam Summer Sale</a> offering. Don&#8217;t miss the opportunity to get some amazing titles for completely ridiculous prices &#8211; here are some examples &#8211; check  out:</p>
<ul>
<li><a title="Square Enix Hit Collection" href="http://store.steampowered.com/sub/15299/">&#8220;Square Enix Hit Collection&#8221;</a> bundle with all series of DeusEx, Hitman, Tomb Raider, Just Cause et al. for as little as $25.</li>
<li><a title="Valve Complete Pack" href="http://store.steampowered.com/sub/7930/">&#8220;Valve Complete Pack&#8221;</a> with all parts of Counter-Strike, Half-Life, Portal, Left 4 Dead, etc for about $27</li>
<li>&#8220;<a title="Call of Duty®: Modern Warfare® Collection" href="http://store.steampowered.com/sub/15474/">Call of Duty®: Modern Warfare® Collection</a>&#8221; providing you with 3 parts of Modern Warfare franchise for about $50</li>
</ul>
<p>There are many others great offers &#8211; just explore the links above to find more items. Hurry up as the proposal is very time limited. Steam rocks!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/fedyashov.wordpress.com/166/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/fedyashov.wordpress.com/166/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fedyashov.wordpress.com&#038;blog=15076710&#038;post=166&#038;subd=fedyashov&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://fedyashov.wordpress.com/2012/07/12/steam-summer-game-sale/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/37acebd83adab8c5d4110d18cdf545f0?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">afedyashov</media:title>
		</media:content>
	</item>
		<item>
		<title>Capturing pieces of the web by ukeeper</title>
		<link>http://fedyashov.wordpress.com/2012/06/26/capturing-pieces-of-the-web-by-ukeeper/</link>
		<comments>http://fedyashov.wordpress.com/2012/06/26/capturing-pieces-of-the-web-by-ukeeper/#comments</comments>
		<pubDate>Tue, 26 Jun 2012 20:59:25 +0000</pubDate>
		<dc:creator>afedyashov</dc:creator>
				<category><![CDATA[hints]]></category>
		<category><![CDATA[productivity]]></category>
		<category><![CDATA[tools]]></category>
		<category><![CDATA[reading]]></category>
		<category><![CDATA[ukeeper]]></category>

		<guid isPermaLink="false">http://fedyashov.wordpress.com/?p=101</guid>
		<description><![CDATA[How often do you add a bookmark to what seems to be an interesting article and never really return to it just because there was no natural way for it to pop-up in your day-to-day activities? Do you often regret that software incompatibilities disallow you adding an article found in twitter on one device to [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fedyashov.wordpress.com&#038;blog=15076710&#038;post=101&#038;subd=fedyashov&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>How often do you add a bookmark to what seems to be an interesting article and never really return to it just because there was no natural way for it to pop-up in your day-to-day activities? Do you often regret that software incompatibilities disallow you adding an article found in twitter on one device to be be read comfortably on another?</p>
<p>If you feel like these questions are relevant for you &#8211; you would probably want to take a look at the service <a href="http://www.ukeeper.com/">http://www.ukeeper.com/</a>. Idea behind this service (created by a well-known podcaster Umputun, <a href="http://www.umputun.com/">http://www.umputun.com/</a>) is elegant and simple &#8211; given a page link it captures the page content and sends it via email. That&#8217;s it. Once you get something in your mail &#8211; it will always be there ready to be read anytime by whatever email-capable gadget available.</p>
<p>The ukeeper.com service provides its clients with an email which is used for &#8220;dropping&#8221; the web page capture requests. Such a request is simply an email which has a web link in its body. The service replies with an email holding the content of the referenced page. It&#8217;s simple and it works from any device.</p>
<p>I&#8217;m using this service for deferred reading of the stuff found on the web and I feel like, finally, this is a really  working solution. I&#8217;ve added a GMail filter for messages coming from ukeeper to automatically skip inbox and go directly into &#8220;Reading&#8221; folder. And whenever I have some free time &#8211; I visit this folder and ensure it has no unread items.</p>
<div class="wp-caption alignnone" style="width: 772px"><img title="Filter for messages from ukeeper.com" src="https://lh5.googleusercontent.com/-nUDyN2gXft4/T-oTvG5ybFI/AAAAAAAADIk/-9ZoaKpOujA/s800/ukeeper.png" alt="" width="762" height="145" /><p class="wp-caption-text">GMail filter for web page snapshots captured via ukeeper</p></div>
<p><span style="text-decoration:underline;"><strong>Update from July, 2012:</strong></span></p>
<p>Now <strong>ukeeper</strong> provides a Safari and Chrome extensions for simplifying the process of sending a link into just a single mouse click &#8211; learn more at <a href="http://www.ukeeper.com/extras/">http://www.ukeeper.com/extras/</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/fedyashov.wordpress.com/101/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/fedyashov.wordpress.com/101/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fedyashov.wordpress.com&#038;blog=15076710&#038;post=101&#038;subd=fedyashov&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://fedyashov.wordpress.com/2012/06/26/capturing-pieces-of-the-web-by-ukeeper/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/37acebd83adab8c5d4110d18cdf545f0?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">afedyashov</media:title>
		</media:content>

		<media:content url="https://lh5.googleusercontent.com/-nUDyN2gXft4/T-oTvG5ybFI/AAAAAAAADIk/-9ZoaKpOujA/s800/ukeeper.png" medium="image">
			<media:title type="html">Filter for messages from ukeeper.com</media:title>
		</media:content>
	</item>
		<item>
		<title>Direct links for Windows Applications troubleshooting</title>
		<link>http://fedyashov.wordpress.com/2012/04/28/direct-troubleshooting-links/</link>
		<comments>http://fedyashov.wordpress.com/2012/04/28/direct-troubleshooting-links/#comments</comments>
		<pubDate>Sat, 28 Apr 2012 00:26:11 +0000</pubDate>
		<dc:creator>afedyashov</dc:creator>
				<category><![CDATA[productivity]]></category>
		<category><![CDATA[tools]]></category>
		<category><![CDATA[troubleshooting]]></category>
		<category><![CDATA[sysinternals]]></category>
		<category><![CDATA[windbg]]></category>

		<guid isPermaLink="false">http://fedyashov.wordpress.com/?p=92</guid>
		<description><![CDATA[Here is a set of WGET-friendly links to some popular troubleshooting software tools (created for convenience): Debugging Tools for Windows v. 6.10.3.233 (use it if you need !locks command, refer to this page for details): http://msdl.microsoft.com/download/symbols/debuggers/dbg_x86_6.10.3.233.msi http://msdl.microsoft.com/download/symbols/debuggers/dbg_amd64_6.10.3.233.msi Debugging Tools for Windows v. 6.11.1.404: http://msdl.microsoft.com/download/symbols/debuggers/dbg_x86_6.11.1.404.msi http://msdl.microsoft.com/download/symbols/debuggers/dbg_amd64_6.11.1.404.msi Latest SysInternals Suite: http://download.sysinternals.com/files/SysinternalsSuite.zip<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fedyashov.wordpress.com&#038;blog=15076710&#038;post=92&#038;subd=fedyashov&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>Here is a set of WGET-friendly links to some popular troubleshooting software tools (created for convenience):</p>
<p>Debugging Tools for Windows v. 6.10.3.233 (use it if you need <strong>!locks</strong> command, refer to this <a title="WinDbg !locks command broken" href="http://www.voyce.com/index.php/2009/06/03/windbg-locks-command-broken/">page</a> for details):</p>
<ul>
<li><a title="http://msdl.microsoft.com/download/symbols/debuggers/dbg_x86_6.10.3.233.msi" href="http://msdl.microsoft.com/download/symbols/debuggers/dbg_x86_6.10.3.233.msi">http://msdl.microsoft.com/download/symbols/debuggers/dbg_x86_6.10.3.233.msi</a></li>
<li><a title="http://msdl.microsoft.com/download/symbols/debuggers/dbg_amd64_6.10.3.233.msi" href="http://msdl.microsoft.com/download/symbols/debuggers/dbg_amd64_6.10.3.233.msi">http://msdl.microsoft.com/download/symbols/debuggers/dbg_amd64_6.10.3.233.msi</a></li>
</ul>
<p>Debugging Tools for Windows v. 6.11.1.404:</p>
<ul>
<li><a title="http://msdl.microsoft.com/download/symbols/debuggers/dbg_x86_6.11.1.404.msi" href="http://msdl.microsoft.com/download/symbols/debuggers/dbg_x86_6.11.1.404.msi">http://msdl.microsoft.com/download/symbols/debuggers/dbg_x86_6.11.1.404.msi</a></li>
<li><a title="http://msdl.microsoft.com/download/symbols/debuggers/dbg_amd64_6.11.1.404.msi" href="http://msdl.microsoft.com/download/symbols/debuggers/dbg_amd64_6.11.1.404.msi">http://msdl.microsoft.com/download/symbols/debuggers/dbg_amd64_6.11.1.404.msi</a></li>
</ul>
<p>Latest SysInternals Suite:</p>
<ul>
<li><a title="http://download.sysinternals.com/files/SysinternalsSuite.zip" href="http://download.sysinternals.com/files/SysinternalsSuite.zip">http://download.sysinternals.com/files/SysinternalsSuite.zip</a></li>
</ul>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/fedyashov.wordpress.com/92/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/fedyashov.wordpress.com/92/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fedyashov.wordpress.com&#038;blog=15076710&#038;post=92&#038;subd=fedyashov&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://fedyashov.wordpress.com/2012/04/28/direct-troubleshooting-links/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/37acebd83adab8c5d4110d18cdf545f0?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">afedyashov</media:title>
		</media:content>
	</item>
		<item>
		<title>Enabling automatic crash dump generation in case of an application fault</title>
		<link>http://fedyashov.wordpress.com/2012/02/08/automatic-crash-dump-generation/</link>
		<comments>http://fedyashov.wordpress.com/2012/02/08/automatic-crash-dump-generation/#comments</comments>
		<pubDate>Wed, 08 Feb 2012 09:31:18 +0000</pubDate>
		<dc:creator>afedyashov</dc:creator>
				<category><![CDATA[hints]]></category>
		<category><![CDATA[productivity]]></category>
		<category><![CDATA[crash dumps]]></category>

		<guid isPermaLink="false">http://fedyashov.wordpress.com/?p=80</guid>
		<description><![CDATA[I composed this topic as I reminder for me and probably others who always forget all those registry paths.. See references at the bottom of the page. So if you are using Windows Vista (or above) and have an application (let&#8217;s call it crash_me.exe) that crashes often and you want to generate crash dump in [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fedyashov.wordpress.com&#038;blog=15076710&#038;post=80&#038;subd=fedyashov&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>I composed this topic as I reminder for me and probably others who always forget all those registry paths.. See references at the bottom of the page.</p>
<p>So if you are using Windows Vista (or above) and have an application (let&#8217;s call it crash_me.exe) that crashes often and you want to generate crash dump in an unintended manner so that whenever it crashes &#8211; a dump is generated without user involvement &#8211; you&#8217;ll need to perform these two steps:</p>
<p>Step 1: Specify that a dump should be generated for your application by adding the following to the registry:</p>
<p><strong>[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps\<span style="color:red;">crash_me.exe</span>]</strong></p>
<ul>
<li><strong>DumpFolder</strong> REG_EXPAND_SZ &#8211; directory to hold the dump files</li>
<li><strong>DumpType</strong> REG_DWORD &#8211; Value: 2 (type of dump &#8211; full dump)</li>
</ul>
<p>Step 2: Ensure that Windows Error Reporting UI is not shown by setting the following value (otherwise, crash dump generation won&#8217;t be performed until user selects anything in the &#8220;has stopped working&#8221; pop-up dialog):</p>
<p><strong>[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting]</strong></p>
<ul>
<li><strong>DontShowUI</strong> REG_DWORD &#8211; Value: 1</li>
</ul>
<p><strong>UPDATE</strong>: If you&#8217;re on Windows 7 then Fault Tolerant Heap might create obstacles for your troubleshooting process. Next steps were added specifically to deal with FTH (taken from MSDN article on <a title="Fault Tolerant Heap" href="http://msdn.microsoft.com/en-us/library/dd744764(v=vs.85).aspx">Fault Tolerant Heap</a>):</p>
<p>Step 3: Disable FTH (requires reboot): set <strong>HKLM\Software\Microsoft\FTH\Enabled</strong> to <strong>0</strong></p>
<p>Step 4: Reset FTH mitigation configuration: <strong>Rundll32.exe fthsvc.dll,FthSysprepSpecialize</strong></p>
<p>References:<br />
- MSDN articles: <a href="http://msdn.microsoft.com/en-us/library/windows/desktop/bb787181(v=vs.85).aspx">Collecting User-Mode Dumps</a>, <a title="Fault Tolerant Heap" href="http://msdn.microsoft.com/en-us/library/dd744764(v=vs.85).aspx">Fault Tolerant Heap</a><br />
- Codehead&#8217;s article <a href="http://codingrecipes.com/how-to-disable-x-has-stopped-working-in-windows-vista">How To Disable “X has stopped working” Popup In Windows Vista</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/fedyashov.wordpress.com/80/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/fedyashov.wordpress.com/80/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fedyashov.wordpress.com&#038;blog=15076710&#038;post=80&#038;subd=fedyashov&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://fedyashov.wordpress.com/2012/02/08/automatic-crash-dump-generation/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/37acebd83adab8c5d4110d18cdf545f0?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">afedyashov</media:title>
		</media:content>
	</item>
		<item>
		<title>Tools for everyday use &#8211; www.py &#8211; HTML-enabled echo replacement</title>
		<link>http://fedyashov.wordpress.com/2012/02/05/wwwpy-html-echo-replacement/</link>
		<comments>http://fedyashov.wordpress.com/2012/02/05/wwwpy-html-echo-replacement/#comments</comments>
		<pubDate>Sun, 05 Feb 2012 14:19:02 +0000</pubDate>
		<dc:creator>afedyashov</dc:creator>
				<category><![CDATA[c++]]></category>
		<category><![CDATA[productivity]]></category>
		<category><![CDATA[progazm]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[tools]]></category>
		<category><![CDATA[utility]]></category>

		<guid isPermaLink="false">http://fedyashov.wordpress.com/?p=74</guid>
		<description><![CDATA[If you often have to analyze log files or issue commands that produce lots of plain-text output, consider taking a look at my small utility http://www.py (which lives in htmecho GitHub project). Its purpose is to capture the input, transform it to an HTML with some additional JavaScript payload and open the result in the [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fedyashov.wordpress.com&#038;blog=15076710&#038;post=74&#038;subd=fedyashov&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>If you often have to analyze log files or issue commands that produce lots of plain-text output, consider taking a look at my small utility <a href="http://www.py" rel="nofollow">http://www.py</a> (which lives in <a title="htmecho" href="https://github.com/afedyashov/htmecho/">htmecho</a> GitHub project).</p>
<p>Its purpose is to capture the input, transform it to an HTML with some additional JavaScript payload and open the result in the default browser. This enriched output provides filtering ability and allows assigning colors to lines that match a particular regular expression.</p>
<p>I use it so often, so that if it didn&#8217;t exist I would write one today :) For convenience, I usually place it into ~/bin/www (followed by <code>chmod +x ~/bin/www</code>). On Windows I just ensure that &#8216;py&#8217; file extension is mapped onto Python 3.2 executable.</p>
<p>For example the following console command:<br />
<code>grep -s -r -e "Error:" -e "Warning:" *.log | www</code><br />
would open a browser (or add a new tab into an already opened browser window) with the output of the grep.<br />
Here is a screen of<br />
<code>dmesg | www</code><br />
command with BIOS pattern marked as yellow:<br />
<a href="http://fedyashov.files.wordpress.com/2012/02/wwwpy1.png"><img class="alignnone size-medium wp-image-75" title="wwwpy1" src="http://fedyashov.files.wordpress.com/2012/02/wwwpy1.png?w=300&#038;h=210" alt="" width="300" height="210" /></a></p>
<p>Here is a bit of history that might be of interest to developers.</p>
<p>Few years ago, as I was studying I/O area of the C++ standard library, I wrote a small tool that transformed its STDIN input into a temporary HTML file. Though by that time I had only the educational goal, I found this tool to be surprisingly useful in my working environment &#8211; as I often have to analyze logs (typically after some grep operations on them) and due to my dual-monitor setup I find it very convenient to issue some command on one screen and see the results on the other.</p>
<p>The only major change before I stopped working on it was adding a ShellExecute call in the end &#8211; so that the newly generated HTML file was opened automatically in the default browser (<del datetime="2012-02-05T12:05:56+00:00">which must be chrome</del> which is chrome in my case). I just put it into a local SCM and kept it for few years without changes.</p>
<p>Recently, as I often rely on LoadRunner logs analysis while handling support cases, few more ideas came to mind as we discussed this tool with my colleague &#8211; what if we enrich the generated HTML file with a bit of JavaScript to allow some grep-like functionality right in the browser window? What if we colorize particular filters, so that it will be easy to visually find the interesting spots in the logs? That gave me enough motivation to invest more time in the project and the colleague helped me with the JavaScript part. I also added an imaginary TODO item to ensure that the tool compiles and works on Linux, as I use it on my laptop. Now, a simple one-file educational application became cross-platform with OS-transparent and OS-agnostic layers. I also made a bit of interesting research on <a href="http://stackoverflow.com/questions/5479691/is-there-any-standard-way-of-embedding-resources-into-linux-executable-image">how to embed binary resources into Linux executable modules</a> (as I wanted to simulate Windows Portable Executable Resources behavior which allows trivial embedding of whatever you want into the executable).</p>
<p>Next battle was for Unicode support. Or, to put it correctly, total lack of such support in the language. I tried to avoid WinAPIs for that and to be able to handle windows-1251, UTF-16 BE/LE and UTF-8 encodings &#8211; I had to spent few nights reading quite a number of materials on <em>iwfstream</em> and <em>codecvt</em> (not the best reading, imo), which is neither simple to use nor beautiful conceptually. And still, removing BOM-checks in C++ classic <em>iwfstream</em>-based code was a great pain. And, OMG!, after I ensured it works on Windows &#8211; it just didn&#8217;t work on Linux&#8230; though it was a personal free-time development, instead of bringing satisfaction and joy &#8211; it was just nasty time waste. Finally, though I&#8217;ve got to a stable point with support of cp1251 and UTF8, I just didn&#8217;t feel I want to proceed any further.</p>
<p>And here comes Python!</p>
<p>Just for sport interest, I tried to reach the same functionality by using Python 3.2 and total time spent until I got it working on two platforms I&#8217;m interested in was around 2 hours of coding and debugging.</p>
<p>Benefits brought by Python:<br />
- single-file executable with no dependencies. Even though Python version had platform-agnostic parts too, they were typically one-liners and there was no reason to move them into separate modules. In C++ I had to implement platform-agnostic (and even linker-agnostic for Linux) resource embedding, cross-platform code to open browser and it naturally resulted in multiple headers/source files.<br />
- ability to modify HTML template with JavaScript payload &#8211; again, in Python it is native to have multi-line string literals &#8211; so, go on and just edit the script. In C++, it was simple too, but only because HTML template had been intentionally kept as an external resource linked into an executable. On windows, it is possible to modify an embedded resource externally with a tool like Resource Hacker. I don&#8217;t have a clue on whether anything as simple is available on Linux.<br />
- Unicode. Python 3.x rulez here: standard distribution of the language has plenty of encodings supported out of the box, BOMs are removed automagically granted you&#8217;ve specified the correct encoding. It was pity to conclude that pure C++ with its standard library totally suck at this part.<br />
- Performance &#8211; for a tiny tool like this I won&#8217;t even bother with runtime performance. Productivity is what matters here and Python is an obvious winner here. I admit it wasn&#8217;t clever for me to write such a program in C++ in the first place, but as I said it was an educational project and &#8230; I like to code in C++ anyway, at least when it&#8217;s not a unicode related code.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/fedyashov.wordpress.com/74/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/fedyashov.wordpress.com/74/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fedyashov.wordpress.com&#038;blog=15076710&#038;post=74&#038;subd=fedyashov&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://fedyashov.wordpress.com/2012/02/05/wwwpy-html-echo-replacement/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/37acebd83adab8c5d4110d18cdf545f0?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">afedyashov</media:title>
		</media:content>

		<media:content url="http://fedyashov.files.wordpress.com/2012/02/wwwpy1.png?w=300" medium="image">
			<media:title type="html">wwwpy1</media:title>
		</media:content>
	</item>
		<item>
		<title>Dealing with several Python versions in Sublime Text 2</title>
		<link>http://fedyashov.wordpress.com/2011/10/17/dealing-with-several-python-versions-in-sublime-text-2/</link>
		<comments>http://fedyashov.wordpress.com/2011/10/17/dealing-with-several-python-versions-in-sublime-text-2/#comments</comments>
		<pubDate>Mon, 17 Oct 2011 23:51:30 +0000</pubDate>
		<dc:creator>afedyashov</dc:creator>
				<category><![CDATA[progazm]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[sublime text 2]]></category>

		<guid isPermaLink="false">http://fedyashov.wordpress.com/?p=67</guid>
		<description><![CDATA[Sublime Text 2 contains the following build system definition for Python (refer to ~/.config/sublime-text-2/Packages/Python/Python.sublime-build): { "cmd": ["python", "-u", "$file"], "file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)", "selector": "source.python" } Thus default Python interpreter is used (which is typically a symlink to concrete version). In case if you have several versions of Python installed &#8211; you&#8217;d want [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fedyashov.wordpress.com&#038;blog=15076710&#038;post=67&#038;subd=fedyashov&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p><a href="http://www.sublimetext.com/2" title="Sublime Text 2">Sublime Text 2</a> contains the following build system definition for Python (refer to <em>~/.config/sublime-text-2/Packages/Python/Python.sublime-build</em>):</p>
<pre>
{
    "cmd": ["python", "-u", "$file"],
    "file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)",
    "selector": "source.python"
}
</pre>
<p>Thus default Python interpreter is used (which is typically a symlink to concrete version). In case if you have several versions of Python installed &#8211; you&#8217;d want to control which version of Python to invoke on Sublime Text&#8217;s &#8220;<em>Build</em>&#8221; command.</p>
<p>It can be easily done by adding custom build system in <strong>Tools &gt; New Build System&#8230;</strong> menu with a slightly changed definition, e.g:</p>
<pre>
{
    "cmd": ["python3.2", "-u", "$file"],
    "file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)",
    "selector": "source.python"
}
</pre>
<p>After saving this file, e.g. as <em>Python3.sublime-build</em>, and restarting Sublime Text editor it would be possible to specify the version of interpreter you need in <strong>Tools &gt; Build System</strong> menu.</p>
<p><small>If you’re interested in Russian version of this entry – take a look here on my <a href="http://impulse9.blogspot.com/2011/10/python-sublime-text-2.html" title="Как подружить несколько версий Python и Sublime Text 2">impulse9 blog</a></small></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/fedyashov.wordpress.com/67/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/fedyashov.wordpress.com/67/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fedyashov.wordpress.com&#038;blog=15076710&#038;post=67&#038;subd=fedyashov&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://fedyashov.wordpress.com/2011/10/17/dealing-with-several-python-versions-in-sublime-text-2/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/37acebd83adab8c5d4110d18cdf545f0?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">afedyashov</media:title>
		</media:content>
	</item>
		<item>
		<title>Python ctypes as a handy tool for C/C++ developers</title>
		<link>http://fedyashov.wordpress.com/2011/10/17/52/</link>
		<comments>http://fedyashov.wordpress.com/2011/10/17/52/#comments</comments>
		<pubDate>Mon, 17 Oct 2011 23:34:38 +0000</pubDate>
		<dc:creator>afedyashov</dc:creator>
				<category><![CDATA[progazm]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[ctypes]]></category>
		<category><![CDATA[dynamic library]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[testing]]></category>

		<guid isPermaLink="false">http://fedyashov.wordpress.com/?p=52</guid>
		<description><![CDATA[I have recently learned how useful Python ctypes library might be when it comes to cross-platform testing of dynamic libraries. ctypes handles library loading and allows easy function invocation in case if library exposes C-like interfaces. In addition, library provides a way of using non-trivial data types as function call arguments (such as struct, union, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fedyashov.wordpress.com&#038;blog=15076710&#038;post=52&#038;subd=fedyashov&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>I have recently learned how useful Python <a href="http://docs.python.org/library/ctypes.html" title="ctypes">ctypes</a> library might be when it comes to cross-platform testing of dynamic libraries. <strong>ctypes</strong> handles library loading and allows easy function invocation in case if library exposes C-like interfaces. In addition, library provides a way of using non-trivial data types as function call arguments (such as <em>struct</em>, <em>union</em>, C-style arrays and their combinations).</p>
<p>Solution is cross-platform, it significantly simplifies development and testing of new functions addition to existing dynamic libraries at early stages, so that there are no other clients for those functions ready yet. Also, it can be used as a good sanity measure for automated build regression checks.</p>
<p>As an example, here is a small use case: suppose I have to check the following function from a dynamic library (.dll for Windows, .so on Linux) written in C/C++:</p>
<pre>
int get_ips(const unsigned short af, struct ipaddress_info ** ppaddrinfo);
</pre>
<p>Where <em>ipaddress_info</em> is defined like this:</p>
<pre>
typedef struct ipaddress_info {
    unsigned short family;
    unsigned char addr[16];
    unsigned int scope_id;
} IPADDRESS_INFO;
</pre>
<p>So given the definition above &#8211; you&#8217;d have a DLL on Windows (or a shared library on Linux) that exports <em>get_ips</em> function. And here is the sample Python script that is capable to load that library, perform a call to <em>get_ips</em> and display the contents of a returned array of structures:</p>
<pre>
import os
import sys
from ctypes import *
from socket import AF_INET, AF_INET6, AF_UNSPEC

# Python representation of a C struct defined
# in a shared library being tested
class ipaddress_info(Structure):
    _fields_ = [
        ("family",      c_ushort),
        ("addr",        c_ubyte * 16),
        ("scope_id",    c_uint),
    ]

def bytes2str(v):
    s = ""
    for x in v:
        s += "%.02X " % (x)
    return s

class dynlib_bridge:
    def __init__(self, dll_path, working_dir="."):
        tmp = os.getcwd()
        os.chdir(working_dir)
        self.invoke = cdll.LoadLibrary(dll_path)
        os.chdir(tmp)

class test_case_base:
    def __init__(self, real_values):
        self.__inout__ = dict()
        self.__result__ = None
        for arg_name, arg_value in real_values.items():
            self.__inout__[arg_name] = arg_value
    def actual(self, name):
        return self.__inout__[name]
    def result(self):
        return self.__result__
    def setResult(self, v):
        self.__result__ = v
        
# performs a positive test case
def test_pos(testobj):
    result = testobj.run()
    if result:
        print ("[tc+] OK  :", testobj.describe())
    else:
        print ("[tc+] FAIL:", testobj.describe())    

# performs a negative test case
def test_neg(testobj):
    result = testobj.run()
    if not result:
        print ("[tc-] OK  :", testobj.describe())
    else:
        print ("[tc-] FAIL:", testobj.describe())    

# wraps invokation of a shared library function
class get_ips(test_case_base):
    def __init__(self, dll, af):
        super(get_ips, self).__init__({
            'af': c_ushort(af),
            'ppaddrinfo': POINTER(ipaddress_info)(),
            })
        self.dll = dll
    def run(self):
        invoke_result = self.dll.invoke.get_ips(
            self.actual('af'), 
            byref(self.actual('ppaddrinfo')))
        self.setResult(invoke_result)
        return (invoke_result &gt; 0)
    def describe(self):
        p = self.actual('ppaddrinfo')
        ips = []
        if self.result() &gt; 0:
            for i in range(self.result()):
                ips.append("#%d: family = %d, scope = %d, %s" % (
                    i, 
                    p[i].family, 
                    p[i].scope_id, 
                    bytes2str(p[i].addr)))
        s = "result: %.02d\n%s" % (self.result(), "\n".join(ips))
        return s
        
if __name__ == "__main__":
    # you'd probably have to use LD_LIBRARY_PATH to make this work on Linux
    path_to_lib = sys.argv[1]
    path_to_env = sys.argv[2]
    print ("lib path :", path_to_lib)
    print ("env path :", path_to_env)
    dll = dynlib_bridge(path_to_lib, working_dir=path_to_env)
    
    test_pos(get_ips(dll, AF_UNSPEC))
    test_pos(get_ips(dll, AF_INET))
    test_pos(get_ips(dll, AF_INET6))
    test_neg(get_ips(dll, 99))
</pre>
<p>The first argument is a library file name; second &#8211; is the location from which library load should be performed (it is sufficient on Windows, on Linux you might need to deal with <strong>LD_LIBRARY_PATH</strong> if your library has its own dependencies).</p>
<p>For simplicity, I removed most of error handling code and some not very interesting things like calling another library function to perform memory cleanup. Also, code assumes cdecl calling convention (which actually was my case for both tested platforms)</p>
<p><small>If you&#8217;re interested in Russian version of this entry &#8211; take a look here on my <a href="http://impulse9.blogspot.com/2011/10/td.html" title="Python ctypes в помощь С/С++ разработчику">impulse9 blog</a></small></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/fedyashov.wordpress.com/52/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/fedyashov.wordpress.com/52/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fedyashov.wordpress.com&#038;blog=15076710&#038;post=52&#038;subd=fedyashov&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://fedyashov.wordpress.com/2011/10/17/52/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/37acebd83adab8c5d4110d18cdf545f0?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">afedyashov</media:title>
		</media:content>
	</item>
		<item>
		<title>&#8220;IPv6 Learning Roadmap&#8221; from MSFT</title>
		<link>http://fedyashov.wordpress.com/2011/03/12/ipv6-learning-roadmap-from-msft/</link>
		<comments>http://fedyashov.wordpress.com/2011/03/12/ipv6-learning-roadmap-from-msft/#comments</comments>
		<pubDate>Sat, 12 Mar 2011 09:08:01 +0000</pubDate>
		<dc:creator>afedyashov</dc:creator>
				<category><![CDATA[networking]]></category>
		<category><![CDATA[ipv6]]></category>

		<guid isPermaLink="false">http://fedyashov.wordpress.com/?p=47</guid>
		<description><![CDATA[Recently, while trying to improve a bit my  ipv6 understanding, I came upon this reference for those who already know ipv4 stuff and need to become acquainted with ipv6 - http://technet.microsoft.com/en-us/library/gg250710(WS.10).aspx. And here is the corresponding blog post, which seems to be quite useful for developers dealing with windows networking, http://blogs.technet.com/b/ipv6/archive/2010/11/02/ipv6-learning-roadmap-now-available.aspx<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fedyashov.wordpress.com&#038;blog=15076710&#038;post=47&#038;subd=fedyashov&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>Recently, while trying to improve a bit my  ipv6 understanding, I came upon this reference for those who already know ipv4 stuff and need to become acquainted with ipv6 - <a href="http://technet.microsoft.com/en-us/library/gg250710(WS.10).aspx">http://technet.microsoft.com/en-us/library/gg250710(WS.10).aspx</a>.</p>
<p>And here is the corresponding blog post, which seems to be quite useful for developers dealing with windows networking, <a href="http://blogs.technet.com/b/ipv6/archive/2010/11/02/ipv6-learning-roadmap-now-available.aspx">http://blogs.technet.com/b/ipv6/archive/2010/11/02/ipv6-learning-roadmap-now-available.aspx</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/fedyashov.wordpress.com/47/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/fedyashov.wordpress.com/47/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fedyashov.wordpress.com&#038;blog=15076710&#038;post=47&#038;subd=fedyashov&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://fedyashov.wordpress.com/2011/03/12/ipv6-learning-roadmap-from-msft/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/37acebd83adab8c5d4110d18cdf545f0?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">afedyashov</media:title>
		</media:content>
	</item>
		<item>
		<title>workaround for MSTSC window minimization curse</title>
		<link>http://fedyashov.wordpress.com/2011/03/12/workaround-for-mstsc-window-minimization-curse/</link>
		<comments>http://fedyashov.wordpress.com/2011/03/12/workaround-for-mstsc-window-minimization-curse/#comments</comments>
		<pubDate>Sat, 12 Mar 2011 08:50:10 +0000</pubDate>
		<dc:creator>afedyashov</dc:creator>
				<category><![CDATA[qtp]]></category>

		<guid isPermaLink="false">http://fedyashov.wordpress.com/?p=39</guid>
		<description><![CDATA[As I was involved in development of a functional testing automation tool, we&#8217;ve been often addressed by customers using RDP to perform testing automation on remote machine. What they would like to do is to connect to the remote machine, invoke a testing tool there and start the testing, then either minimize the RDP client [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fedyashov.wordpress.com&#038;blog=15076710&#038;post=39&#038;subd=fedyashov&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>As I was involved in development of a functional testing automation tool, we&#8217;ve been often addressed by customers using RDP to perform testing automation on remote machine. What they would like to do is to connect to the remote machine, invoke a testing tool there and start the testing, then either minimize the RDP client screen or even disconnect from the session (leaving the testing process in &#8220;background&#8221;).</p>
<p>The problem with such pattern was that Microsoft Terminal Services Client used <strong>output suppression</strong> for minimized MSTSC windows, i.e. notified the terminal server that client is not interested in updates from server. According to <a title="[MS-RDPBCGR]: Remote Desktop Protocol: Basic Connectivity and Graphics Remoting Specification" href="http://download.microsoft.com/download/9/5/E/95EF66AF-9026-4BB0-A41D-A4F81802D92C/[MS-RDPBCGR].pdf" target="_blank">Remote Desktop Protocol</a> specs:</p>
<blockquote><p>Controlling Server Graphics OutputA client connected to a server and displaying graphics data may need to request that the server resend the graphics data for a collection of rectangular regions of the session screen area, or stop sending graphics data for a period of time (perhaps when the client is minimized). These two tasks are accomplished by having the client send the Refresh Rect PDU and Suppress Output PDUs, respectively.</p></blockquote>
<p>Server&#8217;s reaction was to switch to winlogon screen for security reasons. the whole point is good &#8211; server&#8217;s station is in safe state and no extra traffic is generated, BUT the test would probably fail. Functional testing tools rely on mouse / keyboard control APIs, which don&#8217;t work on secured stations. Moreover, some applications under test do not work in this case either (as they might also rely on APIs that don&#8217;t work, e.g. <em>GetCursorPos</em>).</p>
<p>I&#8217;ve raised <a title="workaround for MSTSC window minimization curse" href="http://www.winserverkb.com/Uwe/Forum.aspx/windows-ts/14093/workaround-for-MSTSC-window-minimization-curse" target="_blank">this topic</a> (and definitely I wasn&#8217;t the first one), but without success. Idea was simple &#8211; all we need is the ability to configure client&#8217;s behavior on minimization, i.e. just don&#8217;t send &#8220;suppress output&#8221; hint to server. But there wasn&#8217;t an official way to do that for <strong>mstsc</strong>, though there was such a patch for alternative open-source client <strong>rdesktop</strong>.</p>
<p>Now I am not working in the area of functional testing automation tools development, but still it was nice to know that solution to this problem has been made public (though some companies already had this information). You can easily find it by googling about <a title="ask google about RemoteDesktop_SuppressWhenMinimized" href="http://www.google.com/search?q=RemoteDesktop_SuppressWhenMinimized" target="_blank">RemoteDesktop_SuppressWhenMinimized</a> (or, for the lazy ones: <a title="SO topic" href="http://stackoverflow.com/questions/4825791/scheduled-execution-of-testcomplete-fails" target="_blank">stackoverflow link</a>, <a title="TestComplete KB link" href="http://smartbear.com/support/viewarticle/18731/" target="_blank">Running Tests in Minimized Remote Desktop Windows</a>).</p>
<hr />
<p>This article has the  following references:</p>
<ul>
<li>MSDN: <a title="msdn" href="http://msdn.microsoft.com/en-us/library/cc240445(v=prot.10).aspx" target="_blank">[MS-RDPBCGR]: Remote Desktop Protocol: Basic Connectivity and Graphics Remoting Specification</a></li>
<li>StackOverflow topic: <a title="relevant stackoverflow topic" href="http://stackoverflow.com/questions/4825791/scheduled-execution-of-testcomplete-fails" target="_blank">Scheduled execution of Testcomplete fails &#8211; Stack Overflow</a></li>
<li>TestComplete KB: <a title="TestComplete KB link" href="http://smartbear.com/support/viewarticle/18731/" target="_blank">Running Tests in Minimized Remote Desktop Windows</a></li>
<li>Old discussion thread: <a title="forum" href="http://www.winserverkb.com/Uwe/Forum.aspx/windows-ts/14093/workaround-for-MSTSC-window-minimization-curse" target="_blank">workaround for MSTSC window minimization curse</a></li>
</ul>
<p>If you&#8217;d like to read the original Russian version of this article just click <a title="impulse9 blog" href="http://impulse9.blogspot.com/2010/12/workaround-for-mstsc-window.html">here</a>.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/fedyashov.wordpress.com/39/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/fedyashov.wordpress.com/39/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fedyashov.wordpress.com&#038;blog=15076710&#038;post=39&#038;subd=fedyashov&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://fedyashov.wordpress.com/2011/03/12/workaround-for-mstsc-window-minimization-curse/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/37acebd83adab8c5d4110d18cdf545f0?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">afedyashov</media:title>
		</media:content>
	</item>
		<item>
		<title>blog expansion?</title>
		<link>http://fedyashov.wordpress.com/2010/10/28/blog-expansion/</link>
		<comments>http://fedyashov.wordpress.com/2010/10/28/blog-expansion/#comments</comments>
		<pubDate>Thu, 28 Oct 2010 23:06:53 +0000</pubDate>
		<dc:creator>afedyashov</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://fedyashov.wordpress.com/?p=35</guid>
		<description><![CDATA[..well, I&#8217;m not feeling quite comfortable with wordpress so far. I&#8217;ll most probably keep this blog for posts in English. Readers reading in Russian would probably prefer my newly created blog impulse9.blogspot.com. Wow, I starting to behave like if I had readers :)<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fedyashov.wordpress.com&#038;blog=15076710&#038;post=35&#038;subd=fedyashov&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>..well, I&#8217;m not feeling quite comfortable with wordpress so far.</p>
<p>I&#8217;ll most probably keep this blog for posts in English. Readers reading in Russian would probably prefer my newly created blog <a title="impulse9.blogspot.com" href="http://impulse9.blogspot.com">impulse9.blogspot.com</a>.</p>
<p>Wow, I starting to behave like if I had readers :)</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/fedyashov.wordpress.com/35/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/fedyashov.wordpress.com/35/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fedyashov.wordpress.com&#038;blog=15076710&#038;post=35&#038;subd=fedyashov&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://fedyashov.wordpress.com/2010/10/28/blog-expansion/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/37acebd83adab8c5d4110d18cdf545f0?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">afedyashov</media:title>
		</media:content>
	</item>
	</channel>
</rss>
