<?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>Alan Kleymeyer's Blog &#187; Software Development</title>
	<atom:link href="http://blog.kleymeyer.com/category/software-development/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.kleymeyer.com</link>
	<description>What is up.</description>
	<lastBuildDate>Thu, 26 Aug 2010 18:18:11 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>UAC</title>
		<link>http://blog.kleymeyer.com/2010/08/uac/</link>
		<comments>http://blog.kleymeyer.com/2010/08/uac/#comments</comments>
		<pubDate>Thu, 26 Aug 2010 18:18:11 +0000</pubDate>
		<dc:creator>Alan</dc:creator>
				<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://blog.kleymeyer.com/?p=1521</guid>
		<description><![CDATA[User Access Control has been causing me fits.
With UAC on, if you attempt to open a registry key in the LOCAL_MACHINE hive and you specify WRITE permissions, it will fail (that was a bug on my part).
Something else to consider is that processes of different  integrity levels cannot send/post messages to each other.  This post [...]]]></description>
			<content:encoded><![CDATA[<p>User Access Control has been causing me fits.<br />
With UAC on, if you attempt to open a registry key in the LOCAL_MACHINE hive and you specify WRITE permissions, it will fail (that was a bug on my part).<br />
Something else to consider is that processes of different  integrity levels cannot send/post messages to each other.  <a href="http://www.pcreview.co.uk/forums/showpost.php?p=10080958&amp;postcount=4">This post</a> has a good explanation of that and a work around.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.kleymeyer.com/2010/08/uac/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mercurial For Source Control</title>
		<link>http://blog.kleymeyer.com/2010/03/mercurial-for-source-control/</link>
		<comments>http://blog.kleymeyer.com/2010/03/mercurial-for-source-control/#comments</comments>
		<pubDate>Fri, 19 Mar 2010 16:20:06 +0000</pubDate>
		<dc:creator>Alan</dc:creator>
				<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://blog.kleymeyer.com/?p=1418</guid>
		<description><![CDATA[It appears that Subversion is no longer where it&#8217;s at.  We now have Mercurial.
Joel has a nice tutorial f or Mercurial.
There is TortoiseHG for Explorer Integration which is what I installed which included Mercurial.
Two plugins for Visual Studio exists as well: VisualHG, hgscc
Update:  I was unable to get hgscc to work on Windows 7 VS [...]]]></description>
			<content:encoded><![CDATA[<p>It appears that <a href="http://blog.kleymeyer.com/2005/07/subversion-an-alternative-to-cvs/">Subversion </a>is no longer where it&#8217;s at.  We now have <a href="http://mercurial.selenic.com/wiki/Mercurial">Mercurial</a>.</p>
<p><a href="http://www.joelonsoftware.com/">Joel </a>has a nice <a href="http://hginit.com/">tutorial f or Mercurial</a>.</p>
<p>There is <a href="http://tortoisehg.bitbucket.org/">TortoiseHG </a>for Explorer Integration which is what I installed which included Mercurial.</p>
<p>Two plugins for Visual Studio exists as well: <a href="http://visualhg.codeplex.com/">VisualHG</a>, <a href="http://bitbucket.org/zzsergant/hgsccpackage/wiki/Home">hgscc</a></p>
<p>Update:  I was unable to get hgscc to work on Windows 7 VS 2008.  Any attempts to add a file from  within VS resulted in a generic error  message.  I uninstalled hgscc by right clicking the .msi install file and selecting uninstall</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.kleymeyer.com/2010/03/mercurial-for-source-control/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>C Run-Time Error R6025 pure virtual function call</title>
		<link>http://blog.kleymeyer.com/2010/03/c-run-time-error-r6025-pure-virtual-function-call/</link>
		<comments>http://blog.kleymeyer.com/2010/03/c-run-time-error-r6025-pure-virtual-function-call/#comments</comments>
		<pubDate>Wed, 03 Mar 2010 16:29:22 +0000</pubDate>
		<dc:creator>Alan</dc:creator>
				<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://blog.kleymeyer.com/?p=1412</guid>
		<description><![CDATA[I did a bad bad thing.
Not so bad.  Calling a virtual pure function using a pointer to the abstract base class, or calling  it before the derived class has been initialized (in the constructor of the abstract class for example), is a no no.  I did the latter.
Here is Microsoft&#8217;s explanation:

No object has been instantiated [...]]]></description>
			<content:encoded><![CDATA[<p>I did a bad bad thing.</p>
<p>Not so bad.  Calling a virtual pure function using a pointer to the abstract base class, or calling  it before the derived class has been initialized (in the constructor of the abstract class for example), is a no no.  I did the latter.</p>
<p>Here is Microsoft&#8217;s explanation:</p>
<blockquote>
<p style="padding-left: 30px;"><em>No object has been instantiated to handle the pure virtual function call. This error is caused by calling a virtual function in an abstract base class through a pointer which is created by a cast to the type of the derived class, but is actually a pointer to the base class. This can occur when casting from a </em><strong><em>void*</em></strong><em> to a pointer to a class when the </em><strong><em>void*</em></strong><em> was created during the construction of the base class.</em></p>
</blockquote>
<p>And an <a href="http://support.microsoft.com/kb/125749">explanation and example</a> of the exact thing I did:</p>
<div><code></p>
<pre>   /* Compile options needed: none
   */ 

   class A;

   void fcn( A* );

   class A
   {
   public:
       virtual void f() = 0;
       A() { fcn( this ); }
   };

   class B : A
   {
       void f() { }
   };

   void fcn( A* p )
   {
       p-&gt;f();
   }

   // The declaration below invokes class B's constructor, which
   // first calls class A's constructor, which calls fcn. Then
   // fcn calls A::f, which is a pure virtual function, and
   // this causes the run-time error. B has not been constructed
   // at this point, so the B::f cannot be called. You would not
   // want it to be called because it could depend on something
   // in B that has not been initialized yet.

   B b;

   void main()
   {
   }</pre>
<p></code>I was actually able to make the following adjustment:</p>
<p><strong>Before:</strong></p>
<p>A:A()<br />
{<br />
VirtualPureFunction();<br />
}</p>
<p>B:B() : A()<br />
{<br />
}</p>
<p><strong>After:</strong></p>
<p>A:A()<br />
{<br />
// VirtualPureFunction(); //  Don&#8217;t call  here.  Derived object not guaranteed to be intialized<br />
}</p>
<p>B:B() : A()<br />
{<br />
VirtualPureFunction(); // Safe to call here since A() constructor already called<br />
}</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.kleymeyer.com/2010/03/c-run-time-error-r6025-pure-virtual-function-call/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Writing portable code</title>
		<link>http://blog.kleymeyer.com/2010/01/writing-portable-code/</link>
		<comments>http://blog.kleymeyer.com/2010/01/writing-portable-code/#comments</comments>
		<pubDate>Sun, 17 Jan 2010 21:19:38 +0000</pubDate>
		<dc:creator>Alan</dc:creator>
				<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://blog.kleymeyer.com/?p=1363</guid>
		<description><![CDATA[Mozilla C++ Portability Guide &#8211; for portability across ALL C++ compilers
]]></description>
			<content:encoded><![CDATA[<p><a href="https://developer.mozilla.org/En/C___Portability_Guide">Mozilla C++ Portability Guide</a> &#8211; for portability across ALL C++ compilers</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.kleymeyer.com/2010/01/writing-portable-code/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Registry Reflection (WOW6432)</title>
		<link>http://blog.kleymeyer.com/2009/12/registry-reflection/</link>
		<comments>http://blog.kleymeyer.com/2009/12/registry-reflection/#comments</comments>
		<pubDate>Mon, 07 Dec 2009 21:17:50 +0000</pubDate>
		<dc:creator>Alan</dc:creator>
				<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://blog.kleymeyer.com/?p=1297</guid>
		<description><![CDATA[Supporting 32-bit &#38; 64-bit applications can be a bit hairy.  In regards to the Registry, Windows 7 washes it&#8217;s hands of the Registry Reflection business previously supported.
]]></description>
			<content:encoded><![CDATA[<p>Supporting 32-bit &amp; 64-bit applications can be a bit hairy.  In regards to the Registry, Windows 7 washes it&#8217;s hands of the <a href="http://msdn.microsoft.com/en-us/library/aa384235(VS.85).aspx">Registry Reflection</a> business previously supported.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.kleymeyer.com/2009/12/registry-reflection/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WINVER not defined, defaulting to&#8230;</title>
		<link>http://blog.kleymeyer.com/2009/09/winver-not-defined-defaulting-to/</link>
		<comments>http://blog.kleymeyer.com/2009/09/winver-not-defined-defaulting-to/#comments</comments>
		<pubDate>Fri, 25 Sep 2009 20:27:21 +0000</pubDate>
		<dc:creator>Alan</dc:creator>
				<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://blog.kleymeyer.com/?p=1195</guid>
		<description><![CDATA[WINVER is a symbol that your Windows application is suppose to define to declare the oldest version of the OS that your application  is designed to run on.  If you do not define it, you will get a warning and it will default to the OS on which you are building.
ox501 is the value to [...]]]></description>
			<content:encoded><![CDATA[<p>WINVER is a symbol that your Windows application is suppose to define to declare the oldest version of the OS that your application  is designed to run on.  If you do not define it, you will get a warning and it will default to the OS on which you are building.</p>
<p>ox501 is the value to use for  Windows  XP.   You can define it in stdafx.h or in the preprocessor settings of your project.</p>
<p>Read more about it at <a href="http://blogs.msdn.com/oldnewthing/archive/2007/04/11/2079137.aspx">here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.kleymeyer.com/2009/09/winver-not-defined-defaulting-to/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Can&#8217;t login to mac from Vista</title>
		<link>http://blog.kleymeyer.com/2009/09/cant-login-to-mac-from-vista/</link>
		<comments>http://blog.kleymeyer.com/2009/09/cant-login-to-mac-from-vista/#comments</comments>
		<pubDate>Wed, 09 Sep 2009 15:32:18 +0000</pubDate>
		<dc:creator>Alan</dc:creator>
				<category><![CDATA[Mac Development]]></category>
		<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://blog.kleymeyer.com/?p=1162</guid>
		<description><![CDATA[For sometime I&#8217;ve had problems connecting from my Vista laptop to my MacBook Pro.  I&#8217;ve only been  able  to connect  the other way.  Finally a solution.
This thread recommends the following:
On the start menu in the search field type &#8220;gpedit.msc&#8221;, hit enter. This will open the group policy editor.
Go to &#8220;Computer Configruation&#8221; &#8211;&#62; &#8220;Windows Settings&#8221; &#8211;&#62; [...]]]></description>
			<content:encoded><![CDATA[<p>For sometime I&#8217;ve had problems connecting from my Vista laptop to my MacBook Pro.  I&#8217;ve only been  able  to connect  the other way.  Finally a solution.</p>
<p><a href="http://discussions.apple.com/thread.jspa?messageID=8649322">This thread</a> recommends the following:</p>
<blockquote><p>On the start menu in the search field type &#8220;gpedit.msc&#8221;, hit enter. This will open the group policy editor.</p>
<p>Go to &#8220;Computer Configruation&#8221; &#8211;&gt; &#8220;Windows Settings&#8221; &#8211;&gt; &#8220;Security Settings&#8221; &#8211;&gt; &#8220;Local Policies&#8221; &#8211;&gt; &#8220;Security Options&#8221;</p>
<p>In the pane on the right side of the screen, select &#8220;Network Security: LAN Manager Authentication level.&#8221; By default this read &#8220;Send NTLMv2 response only.&#8221;<br />
Change &#8220;Send NTLMv2 respone only&#8221; to &#8220;Send LM &amp; NTLM &#8212; use NTLMv2 session security if negotiated&#8221;</p>
<p>restart the client</p>
<p>If you use a famillial vista try this.  You must modify the BDR</p>
<p>HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa<br />
DWORD named :        LmCompatibilityLevel must set to          1</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://blog.kleymeyer.com/2009/09/cant-login-to-mac-from-vista/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>NASM</title>
		<link>http://blog.kleymeyer.com/2009/07/nasm/</link>
		<comments>http://blog.kleymeyer.com/2009/07/nasm/#comments</comments>
		<pubDate>Thu, 23 Jul 2009 20:22:36 +0000</pubDate>
		<dc:creator>Alan</dc:creator>
				<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://blog.kleymeyer.com/?p=1081</guid>
		<description><![CDATA[Just some links to NASM, an opensource assembler, which we are investigating at work to maintain our cross platform assembler code.
NASM Home Page
General NASM Guide
Sample Code
Examples
Tips
XCode Custom Target Example
]]></description>
			<content:encoded><![CDATA[<p>Just some links to NASM, an opensource assembler, which we are investigating at work to maintain our cross platform assembler code.</p>
<p><a href="http://www.nasm.us/">NASM Home Page</a></p>
<p><a href="http://rs1.szif.hu/~tomcat/win32/intro.txt">General NASM Guide</a></p>
<p><a href="http://www.csee.umbc.edu/help/nasm/sample.shtml">Sample Code</a></p>
<p><a href="http://www.cs.lmu.edu/~ray/notes/nasmexamples/">Examples</a></p>
<p><a href="http://www.ece.unm.edu/~jimp/310/slides/nasm.html">Tips</a></p>
<p><a href="http://www.alanz.com/a/2006/ragel-xcode/build-rule.png">XCode Custom Target Example</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.kleymeyer.com/2009/07/nasm/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>unresolved externals and function signatures</title>
		<link>http://blog.kleymeyer.com/2009/06/unresolved-externals-and-calling-conventions/</link>
		<comments>http://blog.kleymeyer.com/2009/06/unresolved-externals-and-calling-conventions/#comments</comments>
		<pubDate>Tue, 02 Jun 2009 19:35:23 +0000</pubDate>
		<dc:creator>Alan</dc:creator>
				<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://blog.kleymeyer.com/?p=1021</guid>
		<description><![CDATA[Build issues can be extremely aggravating and hard to track down.  I spent quite a bit of time  tracking down a link error where everything seemed in order.  Function declaration and implementation of a library function matched the call in my application.  After much trial and error I decided to get forensic on the compiler. [...]]]></description>
			<content:encoded><![CDATA[<p>Build issues can be extremely aggravating and hard to track down.  I spent quite a bit of time  tracking down a link error where everything seemed in order.  Function declaration and implementation of a library function matched the call in my application.  After much trial and error I decided to get forensic on the compiler.  I looked at the mangled function signature of the  library file (dropped the .lib file into Visual Studio) and compared it with the mangled function signature in the output window where it was reporting an unresolved external.  I used the command line program undname to show me the user-friendly function signatures and the difference was one used __cdecl and the other used __stdcall.  I was then able to find that my application was using the C/C++&#8230;Advanced&#8230;Calling Convention&#8230;__stdcall (/Gz) whereas the library was using __cdecl (/Gd).  Comparing file signatures between what was actually compiled into the library and what is expected in the application can expose several inconsistant settings. Another one might be the General&#8230;Character Set settings.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.kleymeyer.com/2009/06/unresolved-externals-and-calling-conventions/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CGI programming</title>
		<link>http://blog.kleymeyer.com/2009/04/cgi-programming/</link>
		<comments>http://blog.kleymeyer.com/2009/04/cgi-programming/#comments</comments>
		<pubDate>Wed, 08 Apr 2009 15:11:33 +0000</pubDate>
		<dc:creator>Alan</dc:creator>
				<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://blog.kleymeyer.com/?p=991</guid>
		<description><![CDATA[I&#8217;ve never had an opportunity to work with CGI until now.  CGI is defined on wikipedia this way:
 
The Common Gateway Interface (CGI) is a standard protocol for interfacing external application software with an information server, commonly a web server.
The task of such an information server is to respond to requests (in the case of web [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve never had an opportunity to work with CGI until now.  CGI is defined on <a href="http://en.wikipedia.org/wiki/Common_Gateway_Interface" target="_blank">wikipedia</a> this way:</p>
<p> </p>
<blockquote><p>The <strong>Common Gateway Interface</strong> (<strong>CGI</strong>) is a <a title="Standardization" href="http://en.wikipedia.org/wiki/Standardization">standard</a> <a title="Protocol (computing)" href="http://en.wikipedia.org/wiki/Protocol_%28computing%29">protocol</a> for interfacing external <a title="Application software" href="http://en.wikipedia.org/wiki/Application_software">application software</a> with an <a title="Server (computing)" href="http://en.wikipedia.org/wiki/Server_%28computing%29">information server</a>, commonly a <a title="Web server" href="http://en.wikipedia.org/wiki/Web_server">web server</a>.</p>
<p>The task of such an information server is to respond to requests (in the case of web servers, requests from <a title="Client (computing)" href="http://en.wikipedia.org/wiki/Client_%28computing%29">client</a> <a title="Web browser" href="http://en.wikipedia.org/wiki/Web_browser">web browsers</a>) by returning output. Each time a request is received, the server analyzes what the request asks for, and returns the appropriate output. The two simplest ways for the server to do this, are the following:</p>
<ul>
<li>if the request identifies a file stored on disk, return the contents of that file;</li>
<li>if the request identifies an executable command and possibly arguments, run the command and return its output</li>
</ul>
<p>CGI defines a standard way of doing the second. It defines how information about the server and the request is passed to the command in the form of arguments and <a title="Environment variable" href="http://en.wikipedia.org/wiki/Environment_variable">environment variables</a>, and how the command can pass back extra information about the output (such as the <a class="mw-redirect" title="MIME type" href="http://en.wikipedia.org/wiki/MIME_type">type</a>) in the form of <a title="List of HTTP headers" href="http://en.wikipedia.org/wiki/List_of_HTTP_headers">headers</a>.</p>
<p> </p></blockquote>
<p><a href="http://www.cs.tut.fi/~jkorpela/forms/cgic.html" target="_blank">Here is a great getting started article on CGI</a>.</p>
<p><a href="http://www.cs.tut.fi/~jkorpela/forms/methods.html" target="_blank">Methods GET and POST in HTML forms &#8211; what&#8217;s the difference?</a></p>
<p><a href="http://www.hashemian.com/tools/form-post-tester.php" target="_blank">Form Post Tester/Viewer</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.kleymeyer.com/2009/04/cgi-programming/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
