<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Fooling Around &#187; Utilities</title>
	<atom:link href="http://alax.info/blog/category/utilities/feed" rel="self" type="application/rss+xml" />
	<link>http://alax.info/blog</link>
	<description>// Software Production Line</description>
	<lastBuildDate>Fri, 03 Feb 2012 22:49:15 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Utility Clearance: Simple SMTP Email Sender</title>
		<link>http://alax.info/blog/1331</link>
		<comments>http://alax.info/blog/1331#comments</comments>
		<pubDate>Sun, 29 Jan 2012 19:52:09 +0000</pubDate>
		<dc:creator>Roman</dc:creator>
				<category><![CDATA[Utilities]]></category>
		<category><![CDATA[COM]]></category>
		<category><![CDATA[email]]></category>
		<category><![CDATA[message]]></category>
		<category><![CDATA[schannel]]></category>
		<category><![CDATA[SMTP]]></category>
		<category><![CDATA[ssl]]></category>
		<category><![CDATA[tls]]></category>
		<category><![CDATA[utilitiy]]></category>

		<guid isPermaLink="false">http://alax.info/blog/?p=1331</guid>
		<description><![CDATA[<a href="http://alax.info/blog/1331" title="Utility Clearance: Simple SMTP Email Sender"></a>The library implements SMTP client and exposes a simple COM interface to send emails. The interface is simple and straightforward, and the emails can be send from various environments, including such as JavaScript code. The class supports SSL/TLS security and &#8230;<p class="read-more"><a href="http://alax.info/blog/1331">Read more &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<a href="http://alax.info/blog/1331" title="Utility Clearance: Simple SMTP Email Sender"></a><p>The library implements SMTP client and exposes a simple COM interface to send emails. The interface is simple and straightforward, and the emails can be send from various environments, including such as JavaScript code. The class supports SSL/TLS security and is GMail compliant.</p>
<p><img class="alignnone size-full wp-image-1332" title="Alax.Info Email Tools 1.0 Type Library" src="http://alax.info/blog/wp-content/uploads/2012/01/Image001.png" alt="" width="523" height="479" /></p>
<p>A JScript code snippet below provides a sample use case:</p>
<pre style="color: #000000; background: #ffffff;">message <span style="color: #808030;">=</span> <span style="color: #800000; font-weight: bold;">new</span> <span style="color: #797997;">ActiveXObject</span><span style="color: #808030;">(</span><span style="color: #800000;">"</span><span style="color: #0000e6;">AlaxInfo.EmailTools.Message</span><span style="color: #800000;">"</span><span style="color: #808030;">)</span><span style="color: #800080;">;</span>
message<span style="color: #808030;">.</span>ServerHost <span style="color: #808030;">=</span> <span style="color: #800000;">"</span><span style="color: #0000e6;">mail.alax.info</span><span style="color: #800000;">"</span><span style="color: #800080;">;</span>
<span style="color: #696969;">//message.ServerPort = 25;</span>
message<span style="color: #808030;">.</span>Sender <span style="color: #808030;">=</span> <span style="color: #800000;">"</span><span style="color: #0000e6;">Sender &lt;test@alax.info&gt;</span><span style="color: #800000;">"</span><span style="color: #800080;">;</span>
message<span style="color: #808030;">.</span>ToRecipients <span style="color: #808030;">=</span> <span style="color: #800000;">"</span><span style="color: #0000e6;">Recipient &lt;address@gmail.com&gt;</span><span style="color: #800000;">"</span><span style="color: #800080;">;</span>
<span style="color: #696969;">//message.CcRecipients = "";</span>
<span style="color: #696969;">//message.BccRecipients = "";</span>
message<span style="color: #808030;">.</span>Subject <span style="color: #808030;">=</span> <span style="color: #800000;">"</span><span style="color: #0000e6;">Message Test (Plain)</span><span style="color: #800000;">"</span><span style="color: #800080;">;</span>
message<span style="color: #808030;">.</span>Body <span style="color: #808030;">=</span> <span style="color: #800000;">"</span><span style="color: #0000e6;">This is an e-mail message test:</span><span style="color: #800000;">"</span> <span style="color: #808030;">+</span> <span style="color: #800000;">"</span><span style="color: #0f69ff;">\r</span><span style="color: #0f69ff;">\n</span><span style="color: #800000;">"</span> <span style="color: #808030;">+</span>
  <span style="color: #800000;">"</span><span style="color: #800000;">"</span> <span style="color: #808030;">+</span> <span style="color: #800000;">"</span><span style="color: #0f69ff;">\r</span><span style="color: #0f69ff;">\n</span><span style="color: #800000;">"</span> <span style="color: #808030;">+</span>
  <span style="color: #800000;">"</span><span style="color: #0000e6;">- Security: None</span><span style="color: #800000;">"</span> <span style="color: #808030;">+</span> <span style="color: #800000;">"</span><span style="color: #0f69ff;">\r</span><span style="color: #0f69ff;">\n</span><span style="color: #800000;">"</span> <span style="color: #808030;">+</span>
  <span style="color: #800000;">"</span><span style="color: #0000e6;">- Authentication: Plain Text (PLAIN)</span><span style="color: #800000;">"</span> <span style="color: #808030;">+</span> <span style="color: #800000;">"</span><span style="color: #0f69ff;">\r</span><span style="color: #0f69ff;">\n</span><span style="color: #800000;">"</span> <span style="color: #808030;">+</span>
  <span style="color: #800000;">"</span><span style="color: #800000;">"</span><span style="color: #800080;">;</span>
message<span style="color: #808030;">.</span>AuthMethods <span style="color: #808030;">=</span> <span style="color: #800000;">"</span><span style="color: #0000e6;">plain</span><span style="color: #800000;">"</span><span style="color: #800080;">;</span>
message<span style="color: #808030;">.</span>AuthName <span style="color: #808030;">=</span> <span style="color: #800000;">"</span><span style="color: #0000e6;">test@alax.info</span><span style="color: #800000;">"</span><span style="color: #800080;">;</span>
message<span style="color: #808030;">.</span>AuthPassword <span style="color: #808030;">=</span> <span style="color: #800000;">"</span><span style="color: #0000e6;">12345678</span><span style="color: #800000;">"</span><span style="color: #800080;">;</span>
message<span style="color: #808030;">.</span>Send<span style="color: #808030;">(</span><span style="color: #808030;">)</span><span style="color: #800080;">;</span></pre>
<p>The capabilities include:</p>
<ul>
<li>No additional dependencies &#8211; regsvr32 the DLL and it&#8217;s ready to use; SSL/TLS implementation through <a href="http://msdn.microsoft.com/en-us/library/windows/desktop/aa374782%28v=vs.85%29.aspx">SChannel API</a></li>
<li>UTF-8 encoding and support for Unicode and international characters</li>
<li>Secure SSL connections (<strong>SecureSocketsLayer</strong> property)</li>
<li>Secure Transport Layer Security (TLS) connections with <strong>STARTTLS</strong> command (<strong>TransportLayerSecurity</strong> property)</li>
<li>Authentication options: plain text (LOGIN, PLAIN), digest (CRAM-MD5)</li>
<li>Protocol References:</li>
<ul>
<li><a href="http://tools.ietf.org/html/rfc5321">RFC 5321 &#8211; Simple Mail Transfer Protocol</a></li>
<li><a href="http://tools.ietf.org/html/rfc2045">RFC 2045 &#8211; Multipurpose Internet Mail Extensions (MIME) Part One: Format of Internet Message Bodies</a></li>
<li><a href="http://tools.ietf.org/html/rfc3207">RFC 3207 &#8211; SMTP Service Extension for Secure SMTP over Transport Layer Security</a></li>
<li><a href="http://tools.ietf.org/html/rfc2195">RFC 2195 &#8211; IMAP/POP AUTHorize Extension for Simple Challenge/Response</a></li>
<li><a href="http://tools.ietf.org/html/rfc4616">RFC 4616 &#8211; The PLAIN Simple Authentication and Security Layer (SASL) Mechanism</a></li>
</ul>
</ul>
<p><span id="more-1331"></span></p>
<p>Relaying through Google Mail needs secure connection (SSL or TLS) plus plain text authentication of sender:</p>
<pre style="color: #000000; background: #ffffff;">message <span style="color: #808030;">=</span> <span style="color: #800000; font-weight: bold;">new</span> <span style="color: #797997;">ActiveXObject</span><span style="color: #808030;">(</span><span style="color: #800000;">"</span><span style="color: #0000e6;">AlaxInfo.EmailTools.Message</span><span style="color: #800000;">"</span><span style="color: #808030;">)</span><span style="color: #800080;">;</span>
message<span style="color: #808030;">.</span>ServerHost <span style="color: #808030;">=</span> <span style="color: #800000;">"</span><span style="color: #0000e6;">smtp.gmail.com</span><span style="color: #800000;">"</span><span style="color: #800080;">;</span>
<span style="color: #696969;">//message.ServerPort = 587;</span>
message<span style="color: #808030;">.</span>Sender <span style="color: #808030;">=</span> <span style="color: #800000;">"</span><span style="color: #0000e6;">Sender &lt;foo+sender@gmail.com&gt;</span><span style="color: #800000;">"</span><span style="color: #800080;">;</span>
message<span style="color: #808030;">.</span>ToRecipients <span style="color: #808030;">=</span> <span style="color: #800000;">"</span><span style="color: #0000e6;">Recipient &lt;bar+receiver@gmail.com&gt;</span><span style="color: #800000;">"</span><span style="color: #800080;">;</span>
<span style="color: #696969;">//message.CcRecipients = "";</span>
<span style="color: #696969;">//message.BccRecipients = "";</span>
message<span style="color: #808030;">.</span>Subject <span style="color: #808030;">=</span> <span style="color: #800000;">"</span><span style="color: #0000e6;">Message Test (TLS, Plain)</span><span style="color: #800000;">"</span><span style="color: #800080;">;</span>
message<span style="color: #808030;">.</span>Body <span style="color: #808030;">=</span> <span style="color: #800000;">"</span><span style="color: #0000e6;">This is an e-mail message test:</span><span style="color: #800000;">"</span> <span style="color: #808030;">+</span> <span style="color: #800000;">"</span><span style="color: #0f69ff;">\r</span><span style="color: #0f69ff;">\n</span><span style="color: #800000;">"</span> <span style="color: #808030;">+</span>
  <span style="color: #800000;">"</span><span style="color: #800000;">"</span> <span style="color: #808030;">+</span> <span style="color: #800000;">"</span><span style="color: #0f69ff;">\r</span><span style="color: #0f69ff;">\n</span><span style="color: #800000;">"</span> <span style="color: #808030;">+</span>
  <span style="color: #800000;">"</span><span style="color: #0000e6;">- Security: TLS</span><span style="color: #800000;">"</span> <span style="color: #808030;">+</span> <span style="color: #800000;">"</span><span style="color: #0f69ff;">\r</span><span style="color: #0f69ff;">\n</span><span style="color: #800000;">"</span> <span style="color: #808030;">+</span>
  <span style="color: #800000;">"</span><span style="color: #0000e6;">- Authentication: Plain Text (PLAIN)</span><span style="color: #800000;">"</span> <span style="color: #808030;">+</span> <span style="color: #800000;">"</span><span style="color: #0f69ff;">\r</span><span style="color: #0f69ff;">\n</span><span style="color: #800000;">"</span> <span style="color: #808030;">+</span>
  <span style="color: #800000;">"</span><span style="color: #800000;">"</span><span style="color: #800080;">;</span>
message<span style="color: #808030;">.</span>TransportLayerSecurity <span style="color: #808030;">=</span> <span style="color: #0f4d75;">true</span><span style="color: #800080;">;</span>
message<span style="color: #808030;">.</span>AuthMethods <span style="color: #808030;">=</span> <span style="color: #800000;">"</span><span style="color: #0000e6;">plain</span><span style="color: #800000;">"</span><span style="color: #800080;">;</span>
message<span style="color: #808030;">.</span>AuthName <span style="color: #808030;">=</span> <span style="color: #800000;">"</span><span style="color: #0000e6;">foo@gmail.com</span><span style="color: #800000;">"</span><span style="color: #800080;">;</span>
message<span style="color: #808030;">.</span>AuthPassword <span style="color: #808030;">=</span> <span style="color: #800000;">"</span><span style="color: #0000e6;">password</span><span style="color: #800000;">"</span><span style="color: #800080;">;</span>
message<span style="color: #808030;">.</span>Send<span style="color: #808030;">(</span><span style="color: #808030;">)</span><span style="color: #800080;">;</span></pre>
<h4>Download Information</h4>
<ul>
<li>Download (32-bit): <a href="http://www.alax.info/svn/public/trunk/Utilities/EmailTools/Win32/">EmailTools.dll</a></li>
<li>Download (64-bit): <a href="http://www.alax.info/svn/public/trunk/Utilities/EmailTools/x64/">EmailTools.dll</a></li>
<li>License: This software is free to use</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://alax.info/blog/1331/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>GPS Location/Coordinate Converter: Multiple Locations at Once</title>
		<link>http://alax.info/blog/1313</link>
		<comments>http://alax.info/blog/1313#comments</comments>
		<pubDate>Mon, 14 Nov 2011 18:06:26 +0000</pubDate>
		<dc:creator>Roman</dc:creator>
				<category><![CDATA[ATL]]></category>
		<category><![CDATA[Source]]></category>
		<category><![CDATA[Utilities]]></category>
		<category><![CDATA[WTL]]></category>
		<category><![CDATA[gps]]></category>
		<category><![CDATA[rally]]></category>
		<category><![CDATA[utility]]></category>

		<guid isPermaLink="false">http://alax.info/blog/?p=1313</guid>
		<description><![CDATA[<a href="http://alax.info/blog/1313" title="GPS Location/Coordinate Converter: Multiple Locations at Once"></a>Today&#8217;s update lets you convert multiple locations at once with a single click. Here is the story behind the update and use case scenario. In rally raid sport events (so called baja), a team gets a road book for the &#8230;<p class="read-more"><a href="http://alax.info/blog/1313">Read more &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<a href="http://alax.info/blog/1313" title="GPS Location/Coordinate Converter: Multiple Locations at Once"></a><p>Today&#8217;s update lets you convert multiple locations at once with a single click. Here is the story behind the update and use case scenario.</p>
<p>In <a href="http://en.wikipedia.org/wiki/Rally_raid">rally raid</a> sport events (so called <em>baja</em>), a team gets a road book for the next competition day in a few hours before actual start. The GPS coordinates are printed on one of the pages of the roadbook and are not available in any electronic format.</p>
<p>There were just a few times when the organizer also uploaded a copy of a file with the coordinates and shared a link to download from, but this was rather an exception. Another alternate option was a dedicated person to upload the coordinates (they were earlier full tracks, but at some point tracks were no longer available at all) to pilots&#8217; hardware, but in a state of pre-start рфыеу and variety of GPS hardware, formats, cable etc. this created lines of people. The most one can rely on is a sheet of paper with GPS coordinates. The mistery does not end even here as you don&#8217;t know whether you are to get Degrees only, or Degrees and Minutes, or Degrees, Minutes and Seconds. Everything depends on software the organizer uses.</p>
<p><img class="alignnone size-full wp-image-1314" title="A Page with GPS Locations in Road Book " src="http://alax.info/blog/wp-content/uploads/2011/11/Scan1.jpg" alt="" width="480" height="307" /></p>
<p>As soon as you get a hard copy of this, the idea is to upload it into device as quickly as possible because there are other things to do and the time is normally 11 PM when the race is to start 7 AM next day tens of miles away from you. The time interval will be shared by uploading data, sleeping and transfer to start location.</p>
<p>The utility is here to grant extra sleep time. Since it is capable to accept various separators on the input, a convenient way is to quickly type in the text in Microsoft Excel, check the data against the hardcopy, and copy into clipboard to transfer to the utility.</p>
<p><img class="alignnone size-full wp-image-1315" title="GPS Coordinates in Microsoft Excel" src="http://alax.info/blog/wp-content/uploads/2011/11/Image001.png" alt="" width="558" height="472" /></p>
<p>A hotkey with conversion transfers data into format of interest, and single &#8220;Find and Replace&#8221; operation creates a good OziExplorer waypoint file which is good for upload onto portable navigation device.<img class="alignnone size-large wp-image-1316" title="Visual Studio with OziExplorer Waypoint Data" src="http://alax.info/blog/wp-content/uploads/2011/11/Image002-687x600.png" alt="" width="620" height="541" /></p>
<p>The whole thing take a few minutes to do with minimal routine typing in.</p>
<p>A binary [<a href="http://www.alax.info/svn/public/trunk/Utilities/GpsLocationConverter/_Bin/Release/GpsLocationConverter.exe">Win32</a>] and partial Visual C++ .NET 2010 <a href="http://www.alax.info/trac/public/browser/trunk/Utilities/GpsLocationConverter">partial source code</a> are available from SVN.</p>
<p>Bonus picture, rally raid Suzuki is on the way to score the victory and the rally promotional teaser:</p>
<p><a href="https://picasaweb.google.com/105209331201471192155/BajaPolygon4thRoundOfUkrainianCup2011InRallyRaidsNearNovomoskovskUkraine"><img class="alignnone" src="https://lh6.googleusercontent.com/--53JPr3B2Hw/TsD_WnIrE9I/AAAAAAAAFXo/PjmYMfS_WJI/s640/DSC04127a.jpg" alt="Rally Raid Suzuki Samurai on the Way" width="640" height="426" /></a></p>
<p><object width="640" height="360"><param name="movie" value="http://www.youtube.com/v/k-_-Re2PhQ8&#038;rel=0&#038;hl=en_US&#038;feature=player_embedded&#038;version=3"></param><param name="allowFullScreen" value="true"></param><param name="allowScriptAccess" value="always"></param><embed src="http://www.youtube.com/v/k-_-Re2PhQ8&#038;rel=0&#038;hl=en_US&#038;feature=player_embedded&#038;version=3" type="application/x-shockwave-flash" allowfullscreen="true" allowScriptAccess="always" width="640" height="360"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://alax.info/blog/1313/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>GPS Location/Coordinate Converter: Fractional Seconds, More Shortcuts</title>
		<link>http://alax.info/blog/1302</link>
		<comments>http://alax.info/blog/1302#comments</comments>
		<pubDate>Thu, 20 Oct 2011 17:48:42 +0000</pubDate>
		<dc:creator>Roman</dc:creator>
				<category><![CDATA[ATL]]></category>
		<category><![CDATA[Source]]></category>
		<category><![CDATA[Utilities]]></category>
		<category><![CDATA[WTL]]></category>
		<category><![CDATA[coordinate]]></category>
		<category><![CDATA[geolocation]]></category>
		<category><![CDATA[gps]]></category>
		<category><![CDATA[map]]></category>
		<category><![CDATA[tool]]></category>
		<category><![CDATA[utility]]></category>

		<guid isPermaLink="false">http://alax.info/blog/?p=1302</guid>
		<description><![CDATA[<a href="http://alax.info/blog/1302" title="GPS Location/Coordinate Converter: Fractional Seconds, More Shortcuts"></a>This adds a small update to the recently published GPS Location/Coordinate Converter utility: Seconds in Degrees, Minutes &#38; Seconds notation are shown and are accepted as floating point numbers More shortcuts to popular online map services (note that only Google &#8230;<p class="read-more"><a href="http://alax.info/blog/1302">Read more &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<a href="http://alax.info/blog/1302" title="GPS Location/Coordinate Converter: Fractional Seconds, More Shortcuts"></a><p>This adds a small update to the recently published <a title="Permalink to Utility Clearance: GPS Location/Coordinate Converter" href="../1297">GPS Location/Coordinate Converter</a> utility:</p>
<ul>
<li>Seconds in <em>Degrees, Minutes &amp; Seconds</em> notation are shown and are accepted as floating point numbers</li>
<li>More shortcuts to popular online map services (note that only Google Maps and Yandex Maps are still accepted as input via clipboard):</li>
<ul>
<li style="text-align: left;">Bing Maps</li>
<li style="text-align: left;">Yahoo Maps</li>
<li style="text-align: left;">Open Street Map</li>
<li style="text-align: left;">WikiMapia</li>
</ul>
</ul>
<p>The latter makes the tool an easy to use converted between the services for a GPS POI.</p>
<p><a href="http://alax.info/blog/wp-content/uploads/2011/10/Image0011.png"><img class="alignnone size-large wp-image-1303" title="GPS Location Converter" src="http://alax.info/blog/wp-content/uploads/2011/10/Image0011-800x316.png" alt="" width="620" height="244" /></a></p>
<p>A binary [<a href="http://www.alax.info/svn/public/trunk/Utilities/GpsLocationConverter/_Bin/Release/GpsLocationConverter.exe">Win32</a>] and partial Visual C++ .NET 2010 <a href="http://www.alax.info/trac/public/browser/trunk/Utilities/GpsLocationConverter">partial source code</a> are available from SVN.</p>
]]></content:encoded>
			<wfw:commentRss>http://alax.info/blog/1302/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Utility Clearance: GPS Location/Coordinate Converter</title>
		<link>http://alax.info/blog/1297</link>
		<comments>http://alax.info/blog/1297#comments</comments>
		<pubDate>Wed, 12 Oct 2011 21:20:40 +0000</pubDate>
		<dc:creator>Roman</dc:creator>
				<category><![CDATA[ATL]]></category>
		<category><![CDATA[Source]]></category>
		<category><![CDATA[Utilities]]></category>
		<category><![CDATA[WTL]]></category>
		<category><![CDATA[coordinate]]></category>
		<category><![CDATA[geolocation]]></category>
		<category><![CDATA[gps]]></category>
		<category><![CDATA[map]]></category>
		<category><![CDATA[tool]]></category>
		<category><![CDATA[utility]]></category>

		<guid isPermaLink="false">http://alax.info/blog/?p=1297</guid>
		<description><![CDATA[<a href="http://alax.info/blog/1297" title="Utility Clearance: GPS Location/Coordinate Converter"></a>This tool came up as a result of mess around GPS coordinate formatting and variety of popular formats and notations. Some use latitude and longitude degrees, some prefer degrees and minutes with fractional part. this does not take into account &#8230;<p class="read-more"><a href="http://alax.info/blog/1297">Read more &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<a href="http://alax.info/blog/1297" title="Utility Clearance: GPS Location/Coordinate Converter"></a><p>This tool came up as a result of mess around GPS coordinate formatting and variety of popular formats and notations. Some use latitude and longitude degrees, some prefer degrees and minutes with fractional part. this does not take into account choices for datum and file formats.</p>
<p>For instance, both <a href="http://maps.google.com">Google Maps</a> and <a href="http://maps.yandex.ru">Yandex Maps</a> accept latitude and longitude as <strong>ll=</strong> URL parameter with the value of latitude and longitude in degrees, however Google uses latitude coming first, while Yandex prefers the opposite.</p>
<p>Recently, a rally road book contained the following formatting of track points:</p>
<p><a href="http://alax.info/blog/wp-content/uploads/2011/10/Image001.png"><img class="alignnone size-large wp-image-1298" title="Rally Raid Service Book" src="http://alax.info/blog/wp-content/uploads/2011/10/Image001-800x418.png" alt="" width="620" height="323" /></a></p>
<p>Having to put a stop to the madness, this utility comes up as a handy assistant to convert and format GPS coordinates into reasonable presentation and separators.</p>
<p>The utility runs on background and monitors clipboard, and once it recognizes one of the following:</p>
<ul>
<li>GPS Point in Degrees</li>
<li>GPS Point in Degrees and Minutes</li>
<li>GPS Point in Degrees, Minutes and Seconds</li>
<li>Google Maps URL</li>
<li>Yandex Maps URL</li>
</ul>
<p>it flashes and updates its UI providing the choices of track point formatting:</p>
<p><a href="http://alax.info/blog/wp-content/uploads/2011/10/Image0021.png"><img class="alignnone size-full wp-image-1299" title="GPS Point Formatting and Options" src="http://alax.info/blog/wp-content/uploads/2011/10/Image0021.png" alt="" width="778" height="248" /></a></p>
<p>The utility is trying hard to accept various separators and formats, just one thing is important to keep in mind: if you are using minutes without seconds, the fractional part of minutes should be separated by decimal point (.).</p>
<p>The utility also responds to hotkeys <em>Ctrl+Shift+F1</em>, <em>Ctrl+Shift+F2</em> etc. and copies the formatted point location back into clipboard so that one could quickly re-format editable text in another application through clipboard updates. Alternatively, it is possible to click the formatted value and place it into clipboard.</p>
<p>The utility also provides clickable hyperlinks to open Google Maps and Yandex Maps into the point of interest.</p>
<p>A binary [<a href="http://www.alax.info/svn/public/trunk/Utilities/GpsLocationConverter/_Bin/Release/GpsLocationConverter.exe">Win32</a>] and partial Visual C++ .NET 2010 <a href="http://www.alax.info/trac/public/browser/trunk/Utilities/GpsLocationConverter">partial source code</a> are available from SVN.</p>
<p>Note: you might need to run the tool &#8220;As Administrator&#8221; elevating UAC privileges in Vista/7 operating systems.</p>
<p>Bonus links on the topic:</p>
<ul>
<li><a href="http://boulter.com/gps/">GPS Coordinate Converter, Maps and Info</a></li>
<li><a href="http://www.benichou-software.com/index.php?option=com_content&amp;view=article&amp;id=4&amp;Itemid=2&amp;lang=en">ITN Converter</a> &#8211; converts for route file formats</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://alax.info/blog/1297/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>NTFS Links: x64 build</title>
		<link>http://alax.info/blog/1294</link>
		<comments>http://alax.info/blog/1294#comments</comments>
		<pubDate>Wed, 12 Oct 2011 19:37:43 +0000</pubDate>
		<dc:creator>Roman</dc:creator>
				<category><![CDATA[NTFS Links]]></category>
		<category><![CDATA[junction]]></category>
		<category><![CDATA[link]]></category>
		<category><![CDATA[ntfs]]></category>
		<category><![CDATA[tool]]></category>
		<category><![CDATA[utility]]></category>
		<category><![CDATA[x64]]></category>

		<guid isPermaLink="false">http://alax.info/blog/?p=1294</guid>
		<description><![CDATA[<a href="http://alax.info/blog/1294" title="NTFS Links: x64 build"></a>Per user request, here goes 64-bit version of NTFS Links utility, which provides shell UI for NTFS Junction Points. As 64-bit version of Windows operating systems provide two versions of shell explorer, and support both Win32 and x64 platform applications, &#8230;<p class="read-more"><a href="http://alax.info/blog/1294">Read more &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<a href="http://alax.info/blog/1294" title="NTFS Links: x64 build"></a><p>Per user request, here goes 64-bit version of <a href="http://alax.info/blog/ntfslinks">NTFS Links</a> utility, which provides shell UI for <a href="http://en.wikipedia.org/wiki/NTFS_junction_point">NTFS Junction Points</a>.</p>
<p>As 64-bit version of Windows operating systems provide two versions of shell explorer, and support both <em>Win32</em> and <em>x64</em> platform applications, it is typical to install both 32-bit and 64-bit versions of the utility to cover/extend applications of both platforms. Note that 32-bit (Win32) applications can only load and directly interact with 32-bit builds of libraries (DLLs), so 64-bit (x64) applications need a corresponding matching version of the shell extension available.</p>
<p>As the utility provides a shell extension for directory property pages, here comes a curiosity exercise: how Windows 7 uses junction points to cross-map directories under user profile directory, e.g. <strong>C:\Users\&lt;username&gt;\Local Settings</strong> directory is actually a shortcut to <strong>C:\Users\&lt;username&gt;\AppData\Local</strong>.</p>
<p><img class="alignnone size-full wp-image-1296" title="User Profile Junction Points" src="http://alax.info/blog/wp-content/uploads/2011/10/Image002.png" alt="" width="377" height="505" /></p>
<p>Current version of Alax.Info NTFS Links can be downloaded from:</p>
<ul>
<li><a title="Download from http://alax.info/" href="http://www.alax.info/svn/public/trunk/NtfsLinks/AlaxInfoNtfsLinksSetup.msi" target="_blank">AlaxInfoNtfsLinksSetup.msi</a> – Version 1.1.5, 32-bit</li>
<li><a title="Download from http://alax.info/" href="http://www.alax.info/svn/public/trunk/NtfsLinks/AlaxInfoNtfsLinksSetup-x64.msi" target="_blank">AlaxInfoNtfsLinksSetup-x64.msi</a> – Version 1.1.5, 64-bit (x64)</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://alax.info/blog/1294/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Utility Clearance: Enumerate Audio &#8216;MMDevice&#8217;s</title>
		<link>http://alax.info/blog/1279</link>
		<comments>http://alax.info/blog/1279#comments</comments>
		<pubDate>Tue, 30 Aug 2011 17:14:24 +0000</pubDate>
		<dc:creator>Roman</dc:creator>
				<category><![CDATA[ATL]]></category>
		<category><![CDATA[Audio]]></category>
		<category><![CDATA[Source]]></category>
		<category><![CDATA[Utilities]]></category>
		<category><![CDATA[WTL]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[Core Audio]]></category>
		<category><![CDATA[device]]></category>
		<category><![CDATA[IMMDevice]]></category>
		<category><![CDATA[MMDevice]]></category>
		<category><![CDATA[tool]]></category>
		<category><![CDATA[utility]]></category>
		<category><![CDATA[WASAPI]]></category>

		<guid isPermaLink="false">http://alax.info/blog/?p=1279</guid>
		<description><![CDATA[<a href="http://alax.info/blog/1279" title="Utility Clearance: Enumerate Audio &#039;MMDevice&#039;s"></a>The utility and code does straightforward enumeration of MMDevices (Vista+, check MSDN for MMDevice API availability), which correspond to MMDevice API, WASAPI, Core Audio API. The code itself is straightforward, with a ready to use binary to quickly lookup data &#8230;<p class="read-more"><a href="http://alax.info/blog/1279">Read more &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<a href="http://alax.info/blog/1279" title="Utility Clearance: Enumerate Audio &#039;MMDevice&#039;s"></a><p>The utility and code does straightforward enumeration of MMDevices (Vista+, check MSDN for <a href="http://msdn.microsoft.com/en-us/library/dd371399%28v=vs.85%29.aspx">MMDevice API availability</a>), which correspond to MMDevice API, WASAPI, Core Audio API. The code itself is straightforward, with a ready to use binary to quickly lookup data of interest:</p>
<p><img class="alignnone size-full wp-image-1280" title="Enumerate Audio Devices in Action" src="http://alax.info/blog/wp-content/uploads/2011/08/Image0012.png" alt="" width="541" height="363" /></p>
<p>The data is detailed well and in Excel-friendly format (via Copy/Paste):</p>
<p><a href="http://alax.info/blog/wp-content/uploads/2011/08/Image002.png"><img class="alignnone size-large wp-image-1281" title="Enumerate Audio Device Output in Microsoft Excel" src="http://alax.info/blog/wp-content/uploads/2011/08/Image002-800x362.png" alt="" width="620" height="280" /></a></p>
<p>The code also automatically looks up for named Windows SDK constants, such as <a href="http://msdn.microsoft.com/en-us/library/dd316594%28v=vs.85%29.aspx">PKEY_Device_FriendlyName</a>:</p>
<pre>    Identifier    {0.0.1.00000000}.{4c1a7642-3f91-43e5-8fcf-b4b1e803d3f9}
    State    DEVICE_STATE_DISABLED    0x02
    Properties:
        {B3F8FA53-0004-438E-9003-51A46E139BFC}, 15    16 bytes of BLOB, DA 07 03 00 02 00 09 00 0E 00 39 00 16 00 C5 02    65
        PKEY_Device_DeviceDesc    Stereo Mix    31
        {B3F8FA53-0004-438E-9003-51A46E139BFC}, 6    Realtek High Definition Audio    31
        {B3F8FA53-0004-438E-9003-51A46E139BFC}, 2    {1}.HDAUDIO\FUNC_01&amp;VEN_10EC&amp;DEV_0888&amp;SUBSYS_80860034&amp;REV_1002\4&amp;37D44F2F&amp;0&amp;0201    31
        {83DA6326-97A6-4088-9453-A1923F573B29}, 3    oem29.inf:AzaliaManufacturerID.NTamd64.6.0:IntcAzAudModel:6.0.1.5964:hdaudio\func_01&amp;ven_10ec&amp;dev_0888    31
        PKEY_Device_BaseContainerId    {00000000-0000-0000-FFFF-FFFFFFFFFFFF}    72
        PKEY_Device_ContainerId    {00000000-0000-0000-FFFF-FFFFFFFFFFFF}    72
        PKEY_Device_EnumeratorName    HDAUDIO    31
        PKEY_AudioEndpoint_FormFactor    10    19
        PKEY_AudioEndpoint_JackSubType    {DFF21FE1-F70F-11D0-B917-00A0C9223196}    31
        PKEY_DeviceClass_IconPath    %windir%\system32\mmres.dll,-3018    31
        {840B8171-B0AD-410F-8581-CCCC0382CFEF}, 0    316 bytes of BLOB, 01 00 00 00 38 01 00 00 ... 00 00 00 00    65
        PKEY_AudioEndpoint_Association    {00000000-0000-0000-0000-000000000000}    31
        PKEY_AudioEndpoint_Supports_EventDriven_Mode    1    19
        {24DBB0FC-9311-4B3D-9CF0-18FF155639D4}, 3    0    11
        {24DBB0FC-9311-4B3D-9CF0-18FF155639D4}, 4    -1    11
        {9A82A7DB-3EBB-41B4-83BA-18B7311718FC}, 1    65536    19
        {233164C8-1B2C-4C7D-BC68-B671687A2567}, 1    {2}.\\?\hdaudio#func_01&amp;ven_10ec&amp;dev_0888&amp;subsys_80860034&amp;rev_1002#4&amp;37d44f2f&amp;0&amp;0201#{6994ad04-93ef-11d0-a3cc-00a0c9223196}\rtstereomixwave    31
        {5A9125B7-F367-4924-ACE2-0803A4A3A471}, 0    1610612916    19
        {B3F8FA53-0004-438E-9003-51A46E139BFC}, 0    3    19
<span style="color: #3366ff;"><strong>        PKEY_Device_FriendlyName    Stereo Mix (Realtek High Definition Audio)    31</strong></span>
        PKEY_DeviceInterface_FriendlyName    Realtek High Definition Audio    31
        PKEY_AudioEndpoint_GUID    {4C1A7642-3F91-43E5-8FCF-B4B1E803D3F9}    31</pre>
<p>A binary [<a href="http://www.alax.info/svn/public/trunk/Utilities/EnumerateAudioDevices/_Bin/Win32/Release/EnumerateAudioDevices.exe">Win32</a>, <a href="http://www.alax.info/svn/public/trunk/Utilities/EnumerateAudioDevices/_Bin/x64/Release/EnumerateAudioDevices.exe">x64</a>] and partial Visual C++ .NET 2010 <a href="http://www.alax.info/trac/public/browser/trunk/Utilities/EnumerateAudioDevices">source code</a> are available from SVN.</p>
<p>See also:</p>
<ul>
<li><a href="http://blogs.msdn.com/b/matthew_van_eerde/archive/2011/06/13/how-to-enumerate-audio-endpoint-immdevice-properties-on-your-system.aspx">A similar tool with source code</a></li>
<li><a href="http://msdn.microsoft.com/en-us/library/dd371400%28v=VS.85%29.aspx">IMMDeviceEnumerator::EnumAudioEndpoints</a> on MSDN</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://alax.info/blog/1279/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Resource Tools: 64-bit build</title>
		<link>http://alax.info/blog/1278</link>
		<comments>http://alax.info/blog/1278#comments</comments>
		<pubDate>Tue, 30 Aug 2011 16:56:34 +0000</pubDate>
		<dc:creator>Roman</dc:creator>
				<category><![CDATA[Resource Tools]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[.rc]]></category>
		<category><![CDATA[.res]]></category>
		<category><![CDATA[automation]]></category>
		<category><![CDATA[resource]]></category>
		<category><![CDATA[tool]]></category>
		<category><![CDATA[utility]]></category>
		<category><![CDATA[x64]]></category>

		<guid isPermaLink="false">http://alax.info/blog/?p=1278</guid>
		<description><![CDATA[<a href="http://alax.info/blog/1278" title="Resource Tools: 64-bit build"></a>I rebuilt the Resource Tools utility in 64-bits to, supposedly, be able to be good with resources on 64-bit binaries (actually 32-bit code might be dealing with those fine also?). Anyway, the build is here and the tool available in &#8230;<p class="read-more"><a href="http://alax.info/blog/1278">Read more &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<a href="http://alax.info/blog/1278" title="Resource Tools: 64-bit build"></a><p>I rebuilt the <a href="http://alax.info/blog/352">Resource Tools</a> utility in 64-bits to, supposedly, be able to be good with resources on 64-bit binaries (actually 32-bit code might be dealing with those fine also?). Anyway, the build is here and the tool available in both 32-bit and 64-bit versions.</p>
<p>In particular, both 32-bit and 64-bit JavaScript scripts hosted by <a href="http://en.wikipedia.org/wiki/Windows_Script_Host">Windows Scripting Host</a> (respectively, 32-bit from C:\Windows\syswow64 or 64-bit from C:\Windows\system32 &#8211; in 64-bit Windows) can leverage the tool in file manipulation.</p>
<p>This utility is specifically helpful in automating steps which involve resource updates, such as to apply OEM branding, or resource-based file operations. The code snippet below archives a copy of DLL and PDB files for published release into a .7z archive named using current file version of the DLL itself (that is, it created a <em>ResourceTools.dll-1.0.6.296.7z</em> archive file out of <em>ResourceTools.dll</em> and corresponding <em>ResourceTools.pdb</em> files):</p>
<pre style="color: #000000; background: #ffffff;">image <span style="color: #808030;">=</span> <span style="color: #800000; font-weight: bold;">new</span> ActiveXObject<span style="color: #808030;">(</span><span style="color: #0000e6;">"AlaxInfo.ResourceTools.Image"</span><span style="color: #808030;">)</span><span style="color: #800080;">;</span>
image<span style="color: #808030;">.</span>Initialize<span style="color: #808030;">(</span>inputDirectory <span style="color: #808030;">+</span> fileName<span style="color: #808030;">)</span><span style="color: #800080;">;</span>
productVersion <span style="color: #808030;">=</span> image<span style="color: #808030;">.</span>VersionInfo<span style="color: #808030;">.</span>ProductVersionString<span style="color: #800080;">;</span>
fileVersion <span style="color: #808030;">=</span> image<span style="color: #808030;">.</span>VersionInfo<span style="color: #808030;">.</span>FileVersionString<span style="color: #800080;">;</span>
WScript<span style="color: #808030;">.</span>Echo<span style="color: #808030;">(</span><span style="color: #0000e6;">" Product Version: "</span> <span style="color: #808030;">+</span> productVersion<span style="color: #808030;">)</span><span style="color: #800080;">;</span>
WScript<span style="color: #808030;">.</span>Echo<span style="color: #808030;">(</span><span style="color: #0000e6;">" File Version: "</span> <span style="color: #808030;">+</span> fileVersion<span style="color: #808030;">)</span><span style="color: #800080;">;</span>
shell <span style="color: #808030;">=</span> WScript<span style="color: #808030;">.</span>CreateObject<span style="color: #808030;">(</span><span style="color: #0000e6;">"WScript.Shell"</span><span style="color: #808030;">)</span><span style="color: #800080;">;</span>
currentDirectory <span style="color: #808030;">=</span> shell<span style="color: #808030;">.</span>CurrentDirectory<span style="color: #800080;">;</span>
shell<span style="color: #808030;">.</span>CurrentDirectory <span style="color: #808030;">=</span> currentDirectory <span style="color: #808030;">+</span> <span style="color: #0000e6;">"</span><span style="color: #0f69ff;">\\</span><span style="color: #0000e6;">"</span> <span style="color: #808030;">+</span> inputDirectory<span style="color: #800080;">;</span>
<span style="color: #800000; font-weight: bold;">try</span> <span style="color: #800080;">{</span>
    shellExec <span style="color: #808030;">=</span> shell<span style="color: #808030;">.</span>Exec<span style="color: #808030;">(</span>
        <span style="color: #0000e6;">"</span><span style="color: #0f69ff;">\"</span><span style="color: #0000e6;">"</span> <span style="color: #808030;">+</span> toolDirectory <span style="color: #808030;">+</span> <span style="color: #0000e6;">"7z"</span> <span style="color: #808030;">+</span> <span style="color: #0000e6;">"</span><span style="color: #0f69ff;">\"</span><span style="color: #0000e6;"> "</span> <span style="color: #808030;">+</span>
        <span style="color: #0000e6;">"a -t7z "</span> <span style="color: #808030;">+</span>
        <span style="color: #0000e6;">"</span><span style="color: #0f69ff;">\"</span><span style="color: #0000e6;">"</span> <span style="color: #808030;">+</span> currentDirectory <span style="color: #808030;">+</span> <span style="color: #0000e6;">"</span><span style="color: #0f69ff;">\\</span><span style="color: #0000e6;">"</span> <span style="color: #808030;">+</span> outputDirectory <span style="color: #808030;">+</span> <span style="color: #0000e6;">"ResourceTools.dll-"</span> <span style="color: #808030;">+</span> fileVersion <span style="color: #808030;">+</span> <span style="color: #0000e6;">".7z"</span> <span style="color: #808030;">+</span> <span style="color: #0000e6;">"</span><span style="color: #0f69ff;">\"</span><span style="color: #0000e6;"> "</span> <span style="color: #808030;">+</span>
        <span style="color: #0000e6;">"ResourceTools.dll"</span> <span style="color: #808030;">+</span> <span style="color: #0000e6;">" "</span> <span style="color: #808030;">+</span>
        <span style="color: #0000e6;">"ResourceTools.pdb"</span> <span style="color: #808030;">+</span> <span style="color: #0000e6;">" "</span> <span style="color: #808030;">+</span>
        <span style="color: #0000e6;">""</span><span style="color: #808030;">)</span><span style="color: #800080;">;</span>
    <span style="color: #800000; font-weight: bold;">while</span> <span style="color: #808030;">(</span>shellExec<span style="color: #808030;">.</span>Status <span style="color: #808030;">==</span> <span style="color: #008c00;">0</span><span style="color: #808030;">)</span>
        WScript<span style="color: #808030;">.</span>Sleep<span style="color: #808030;">(</span><span style="color: #008c00;">100</span><span style="color: #808030;">)</span><span style="color: #800080;">;</span>
    <span style="color: #800000; font-weight: bold;">if</span> <span style="color: #808030;">(</span>shellExec<span style="color: #808030;">.</span>ExitCode <span style="color: #808030;">!=</span> <span style="color: #008c00;">0</span><span style="color: #808030;">)</span>
        <span style="color: #800000; font-weight: bold;">throw</span> <span style="color: #800000; font-weight: bold;">new</span> Error<span style="color: #808030;">(</span><span style="color: #0000e6;">"7-Zip Exec failed, .ExitCode "</span> <span style="color: #808030;">+</span> shellExec<span style="color: #808030;">.</span>ExitCode<span style="color: #808030;">.</span><span style="color: #800000; font-weight: bold;">toString</span><span style="color: #808030;">(</span><span style="color: #808030;">)</span><span style="color: #808030;">)</span><span style="color: #800080;">;</span>
    WScript<span style="color: #808030;">.</span>Echo<span style="color: #808030;">(</span><span style="color: #0000e6;">" Output File: "</span> <span style="color: #808030;">+</span> <span style="color: #0000e6;">"ResourceTools-"</span> <span style="color: #808030;">+</span> fileVersion <span style="color: #808030;">+</span> <span style="color: #0000e6;">".7z"</span><span style="color: #808030;">)</span><span style="color: #800080;">;</span>
<span style="color: #800080;">}</span>
<span style="color: #800000; font-weight: bold;">finally</span> <span style="color: #800080;">{</span>
    shell<span style="color: #808030;">.</span>CurrentDirectory <span style="color: #808030;">=</span> currentDirectory<span style="color: #800080;">;</span>
<span style="color: #800080;">}</span></pre>
<p>Title: Alax.Info Resource Tools<br />
Version: 1.0.6<br />
Download Links: <a href="http://www.alax.info/svn/public/trunk/ResourceTools/ResourceToolsSetup.msi">ResourceToolsSetup.msi</a> (Win32, 32-bit) and <a href="http://www.alax.info/svn/public/trunk/ResourceTools/ResourceToolsSetup-x64.msi">ResourceToolsSetup-x64.msi</a> (x64, 64-bit)</p>
]]></content:encoded>
			<wfw:commentRss>http://alax.info/blog/1278/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Utility Clearance: Generate PCM .WAV File</title>
		<link>http://alax.info/blog/1274</link>
		<comments>http://alax.info/blog/1274#comments</comments>
		<pubDate>Thu, 25 Aug 2011 20:48:13 +0000</pubDate>
		<dc:creator>Roman</dc:creator>
				<category><![CDATA[ATL]]></category>
		<category><![CDATA[Audio]]></category>
		<category><![CDATA[Source]]></category>
		<category><![CDATA[Utilities]]></category>
		<category><![CDATA[.WAV]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[dB]]></category>
		<category><![CDATA[generation]]></category>
		<category><![CDATA[Loudness]]></category>
		<category><![CDATA[PCM]]></category>
		<category><![CDATA[sine]]></category>
		<category><![CDATA[tool]]></category>
		<category><![CDATA[utility]]></category>
		<category><![CDATA[wavdest]]></category>
		<category><![CDATA[waveform]]></category>

		<guid isPermaLink="false">http://alax.info/blog/?p=1274</guid>
		<description><![CDATA[<a href="http://alax.info/blog/1274" title="Utility Clearance: Generate PCM .WAV File"></a>GeneratePcmWavFile tool is generating PCM .WAV files with requested parameters, silent or with a sine wave data. The utility uses WavDest SDK Sample as a multiplexer, so it is expected to be available. It is possible to define the following &#8230;<p class="read-more"><a href="http://alax.info/blog/1274">Read more &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<a href="http://alax.info/blog/1274" title="Utility Clearance: Generate PCM .WAV File"></a><p>GeneratePcmWavFile tool is generating PCM .WAV files with requested parameters, silent or with a sine wave data. The utility uses <a href="http://msdn.microsoft.com/en-us/library/dd390969%28v=vs.85%29.aspx">WavDest SDK Sample</a> as a multiplexer, so it is expected to be available.</p>
<p>It is possible to define the following audio data parameters:</p>
<ul>
<li>sampling frequency, number of samples per second, such as 44100 or 48000</li>
<li>number of channels; the utility does not constrain this to be stereo or 5.1, it will be able to create 64 or 128 channel audio data as well</li>
<li>8 or 16 bit audio samples</li>
<ul>
<li>16-bit PCM only: sine wave signal parameters, frequency in Hz and amplitude/loudness relative to full scale, that is 0 dB is maximal loudness, and an argument of 23 will result in -23 dB loud audio (such as -23 dbFS, also see <a href="http://tech.ebu.ch/loudness">EBU R128 Specification</a>, the signal depending on frequency may be used a reference source for normalized -23 LUFS audio)</li>
</ul>
<li>file duration in seconds</li>
</ul>
<pre>Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation.  All rights reserved.

C:\&gt;GeneratePcmWavFile.exe
Syntax: GeneratePcmWavFile &lt;options&gt; &lt;output-path&gt;
  /s:N: Sampling Rate N, Hz
  /c:N: Channel Count N
  /b:N: Sample Bit Count N, 8 or 16
  /t:N: Length N, seconds
  /f:N: Sine Signal Frequency N, Hz
  /l:N: Sine Signal Loudness N, dB below full scale
  /n:N: Noise Signal Loudness N, dB below full scale</pre>
<p><a href="http://alax.info/blog/wp-content/uploads/2011/08/Image0011.png"><img class="alignnone size-medium wp-image-1275" title="-23 dBFS Generated Audio Playback" src="http://alax.info/blog/wp-content/uploads/2011/08/Image0011-320x248.png" alt="" width="320" height="248" /></a></p>
<p>A binary [<a href="http://alax.info/trac/public/browser/trunk/Utilities/GeneratePcmWavFile/Win32/Release/GeneratePcmWavFile.exe?format=raw">Win32</a>] and partial Visual C++ .NET 2010 <a href="http://alax.info/trac/public/browser/trunk/Utilities/GeneratePcmWavFile">source code</a> are available from SVN.</p>
<p>UPDATE: An extra /n parameter lets the application add random noise within provided loudness parameter.</p>
]]></content:encoded>
			<wfw:commentRss>http://alax.info/blog/1274/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Utility Clearance: Artificial CPU Load</title>
		<link>http://alax.info/blog/1271</link>
		<comments>http://alax.info/blog/1271#comments</comments>
		<pubDate>Thu, 25 Aug 2011 20:20:44 +0000</pubDate>
		<dc:creator>Roman</dc:creator>
				<category><![CDATA[ATL]]></category>
		<category><![CDATA[Source]]></category>
		<category><![CDATA[Utilities]]></category>
		<category><![CDATA[WTL]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[cpu]]></category>
		<category><![CDATA[developer]]></category>
		<category><![CDATA[environment]]></category>
		<category><![CDATA[testing]]></category>
		<category><![CDATA[utility]]></category>

		<guid isPermaLink="false">http://alax.info/blog/?p=1271</guid>
		<description><![CDATA[<a href="http://alax.info/blog/1271" title="Utility Clearance: Artificial CPU Load"></a>The LoadCpu tool creates one or more threads to waste CPU cycles and emulate slower environment, such as for testing and troubleshooting. There has been a great deal of similar tools out there, and this one in particular is convenient/special &#8230;<p class="read-more"><a href="http://alax.info/blog/1271">Read more &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<a href="http://alax.info/blog/1271" title="Utility Clearance: Artificial CPU Load"></a><p>The <em>LoadCpu</em> tool creates one or more threads to waste CPU cycles and emulate slower environment, such as for testing and troubleshooting. There has been a great deal of similar tools out there, and this one in particular is convenient/special as it takes process affinity mask as a parameter.</p>
<p>That is, /a:NN defines affinity mask, e.g. 5 for 1st and 3rd CPU (two threads), and /r:MM defines [roughly] CPU load time in percent.</p>
<pre>Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation.  All rights reserved.

C:\&gt;loadcpu /a:5 /r:25
System Affinity Mask: 0xff
Process Affinity Mask: 0x05
Rate: 25%</pre>
<p><img class="alignnone size-full wp-image-1272" title="Utility's CPU Load" src="http://alax.info/blog/wp-content/uploads/2011/08/Image001.png" alt="" width="566" height="391" /></p>
<p>A binary [<a href="http://alax.info/trac/public/browser/trunk/Utilities/LoadCpu/Win32/Release/LoadCpu.exe?format=raw">Win32</a>] and partial Visual C++ .NET 2010 <a href="http://alax.info/trac/public/browser/trunk/Utilities/LoadCpu">source code</a> are available from SVN.</p>
]]></content:encoded>
			<wfw:commentRss>http://alax.info/blog/1271/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>DirectShow Spy: Intelligent Connect Trace, Selective Process Black Listing</title>
		<link>http://alax.info/blog/1253</link>
		<comments>http://alax.info/blog/1253#comments</comments>
		<pubDate>Sun, 24 Jul 2011 18:55:47 +0000</pubDate>
		<dc:creator>Roman</dc:creator>
				<category><![CDATA[Utilities]]></category>
		<category><![CDATA[DirectShow]]></category>
		<category><![CDATA[filter]]></category>
		<category><![CDATA[graph]]></category>
		<category><![CDATA[hook]]></category>
		<category><![CDATA[intelligent connect]]></category>
		<category><![CDATA[memory]]></category>
		<category><![CDATA[spy]]></category>
		<category><![CDATA[trace]]></category>

		<guid isPermaLink="false">http://alax.info/blog/?p=1253</guid>
		<description><![CDATA[<a href="http://alax.info/blog/1253" title="DirectShow Spy: Intelligent Connect Trace, Selective Process Black Listing"></a>DirectShow Spy is updated with a few new features: retroactive Intelligent Connect trace log output for IAMGraphBuilderCallback-related activity process name based black list to selectively exclude processes from spying Intelligent Connect Trace The utility received a capability to read back &#8230;<p class="read-more"><a href="http://alax.info/blog/1253">Read more &#187;</a></p>]]></description>
			<content:encoded><![CDATA[<a href="http://alax.info/blog/1253" title="DirectShow Spy: Intelligent Connect Trace, Selective Process Black Listing"></a><p>DirectShow Spy is updated with a few new features:</p>
<ul>
<li>retroactive Intelligent Connect trace</li>
<li>log output for IAMGraphBuilderCallback-related activity</li>
<li>process name based black list to selectively exclude processes from spying</li>
</ul>
<h4>Intelligent Connect Trace</h4>
<p>The utility received a capability to read back from its own log file (DirectShowSpy.log, located typically in C:\ProgramData directory) and reconstruct graph building sequence, including steps taken by DirectShow <a href="http://msdn.microsoft.com/en-us/library/dd390342%28VS.85%29.aspx">Intelligent Connect</a>.</p>
<p><a href="http://alax.info/blog/wp-content/uploads/2011/07/Image0012.png"><img class="alignnone size-large wp-image-1254" title="Intelligent Connect Trace" src="http://alax.info/blog/wp-content/uploads/2011/07/Image0012-582x600.png" alt="" width="582" height="600" /></a></p>
<p>In order to activate the Intelligent Connect Trace property sheet, one needs to call exported function &#8220;<em>DoGraphBuilderCallbackPropertySheetModal</em>&#8220;, such as using <em>runndll32</em> tool:</p>
<p style="text-align: left; padding-left: 30px;">C:\DirectShowSpy&gt;rundll32 DirectShowSpy.dll,DoGraphBuilderCallbackPropertySheetModal</p>
<p style="text-align: left;">The upper part of the property page displays recently created DirectShow fitler graphs, newest to older. For a selected graph, the lower part displays events in chronological order. The events include:</p>
<ul>
<li>Adding a filter, at <a href="http://msdn.microsoft.com/en-us/library/dd390016%28VS.85%29.aspx">IFilterGraph2::AddFilter</a> method</li>
<li>Removing a filter, at <a href="http://msdn.microsoft.com/en-us/library/dd390022%28VS.85%29.aspx">IFilterGraph2::RemoveFilter</a> method</li>
<li>Selecting a filter, at Intelligent Connect&#8217;s callback at <a href="http://msdn.microsoft.com/en-us/library/dd389378%28VS.85%29.aspx">IAMGraphBuilderCallback::SelectedFilter</a></li>
<li>Creating a filter, at <a href="http://msdn.microsoft.com/en-us/library/dd389377%28VS.85%29.aspx">IAMGraphBuilderCallback::CreatedFilter</a></li>
</ul>
<p>The latter two methods also show &#8220;Application Result&#8221; column and values, which are HRESULT values returned by IAMGraphBuilderCallback callback provided by the application. Typically, a failure HRESULT code indicates that the application rejected the filter.</p>
<p>The trace log is good to expose all DirectShow junk installed in the system. For example,</p>
<p><span id="more-1253"></span><a href="http://alax.info/blog/wp-content/uploads/2011/07/Image0022.png"><img class="alignnone size-large wp-image-1255" title="Junk: ffdshowBC.ax" src="http://alax.info/blog/wp-content/uploads/2011/07/Image0022-800x496.png" alt="" width="620" height="384" /></a></p>
<p>In an attempt to build graph to decode FourCC &#8216;LXH4&#8242; video (which is a private alias for H.264 media type), Filter Graph Manager tried to apply &#8216;ffdshow Video Decoder&#8217; filter, which is unable to process the feed, but is registered at an extremely high merit and violating the guidelines.</p>
<p>The tool shows that the file hosting the filter is &#8220;<em>ffdshowBC.ax</em>&#8221; and shows its location. The application however appears to be aware of this piece of trash, and returned E_FAIL (0&#215;80004005) rejecting the filter.</p>
<p>How comes the garbage is hooking into place where it is not supposed to be, yet is sophisticated enough to reach such internals of operating system? This module is a clone/branch of well-known <a href="http://www.google.com/search?q=ffdshow">ffdshow</a> software, which by default registers itself with abnormally high merit &#8220;with good intentions in mind&#8221;. A short-sighted manufacturer of cheap stuff IP camera duplicated the project, changed the GUIDs, packaged the pathetic crap into ActiveX control cabinet and started distributing it over clean and virgin workstations around the globe.</p>
<p>Going further with the the trace being checked, there are more things to enjoy:</p>
<p><a href="http://alax.info/blog/wp-content/uploads/2011/07/Image0033.png"><img class="alignnone size-large wp-image-1256" title="Junk: MainConcept Showcase" src="http://alax.info/blog/wp-content/uploads/2011/07/Image0033-800x553.png" alt="" width="620" height="428" /></a></p>
<p>Trying to decode the same H.264 video feed, the Filter Graph Manager mounting three demultiplexers made  by MainConcept in a row, for MP4, MPEG and MXF containers. The utility immediately indicates that this trash contribution was brought by <a href="http://www.mainconcept.com/products/sdks/others/showcase.html">MainConcept Showcase</a> 8.7.0.28412. One might wanted to install it for a purpose, and it started killing other DirectShow software it shares workstation with.</p>
<p>The good news is that the method is friendly for production environment and only requires to register spy and collect log file. You don&#8217;t eve need to check the UI at the same computer, it is possible to transfer the log file into development environment and have spy read the log there.</p>
<p>The &#8220;Copy to Clipboard&#8221; link is a convenient option to transfer the findings into tab-separated values format, such as to paste into Microsoft Excel:</p>
<p><a href="http://alax.info/blog/wp-content/uploads/2011/07/Image0042.png"><img class="alignnone size-large wp-image-1257" title="Data Transfered to Microsoft Excel" src="http://alax.info/blog/wp-content/uploads/2011/07/Image0042-800x394.png" alt="" width="620" height="305" /></a></p>
<h4>Process Black Listing</h4>
<p>The utility received a capability to selectively not load into specific processes. DirectShowSpy is a developer tool and is not intended for production environment, nor it is guaranteed to be issue-free. So in case of specific conflict it is possible to exclude specific process from applying a spy using registry:</p>
<p><a href="http://alax.info/blog/wp-content/uploads/2011/07/Image0051.png"><img class="alignnone size-large wp-image-1258" title="Black List Registry" src="http://alax.info/blog/wp-content/uploads/2011/07/Image0051-800x424.png" alt="" width="620" height="328" /></a></p>
<p>The values are under <em>HKLM, SOFTWARE\[Wow6432Node\]Alax.Info\Utilities\DirectShowSpy</em> key, and there are three values defined:</p>
<ul>
<li>CFilterMapperSpy Black List &#8211; defines exclusion for filter mapper spying</li>
<li>CSpy Black List &#8211; defines exclusion for filter graph spy (effective for most applications)</li>
<li>CNoThreadSpy Black List &#8211; defines exclusion for filter graphs created with <a href="http://msdn.microsoft.com/en-us/library/dd375786%28VS.85%29.aspx">CLSID_FilterGraphNoThread</a></li>
</ul>
<p>The exclusion value is a comma-separated list of process names, exact case-insensitive match for executable file names without directory and extension.</p>
<p>It is recommended that filter mapper spy has at least as rich exclusion list as the filter graph spy entires (otherwise, it is possible that spy might raise unexpected exceptions).</p>
<p>Partial Visual C++ .NET 2008 source code is <a href="http://code.assembla.com/roatl-utilities/subversion/nodes/trunk/FilterGraphSpy">available from SVN</a>, release binary included (<a href="http://code.assembla.com/roatl-utilities/subversion/nodes/trunk/FilterGraphSpy/Release%20Trace/Win32/DirectShowSpy.dll?format=raw">Win32</a>, <a href="http://code.assembla.com/roatl-utilities/subversion/nodes/trunk/FilterGraphSpy/Release%20Trace/x64/DirectShowSpy.dll?format=raw">x64</a>); installation instructions are in <a href="../777">another post</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://alax.info/blog/1253/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

