<?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>blog.eddsn.com &#187; Programming</title>
	<atom:link href="http://blog.eddsn.com/category/programming/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.eddsn.com</link>
	<description>The whole is more than the sum of its parts - Aristotle</description>
	<lastBuildDate>Mon, 16 Jan 2012 14:13:27 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>&#8220;Python Version 2.7 required which was not found in the registry&#8221;</title>
		<link>http://blog.eddsn.com/2012/01/python-version-2-7-required-which-was-not-found-in-the-registry/</link>
		<comments>http://blog.eddsn.com/2012/01/python-version-2-7-required-which-was-not-found-in-the-registry/#comments</comments>
		<pubDate>Sun, 15 Jan 2012 02:35:48 +0000</pubDate>
		<dc:creator>eddsn</dc:creator>
				<category><![CDATA[Fixes]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://blog.eddsn.com/?p=1164</guid>
		<description><![CDATA[Introduction Any module installer that is created using distutils (bdist_wininst) is very likely to produce this error. The problem is that it only detects 32bit installations of Python on 64bit Windows machines. Or more technically, 32bit versions of Python create the following registry path HKEY_LOCAL_MACHINE\Software\Wow6432Node\Python\PythonCore while 64bits versions create a slightly other registry path which [...]]]></description>
			<content:encoded><![CDATA[<!-- Start LikeButtonSetTop --><!-- End LikeButtonSetTop --><p><a href="http://blog.eddsn.com/wp-content/uploads/2012/01/error.jpg"><img class="size-full wp-image-1165 aligncenter" style="margin-right: 10px; margin-left: 10px; margin-top: 2px; margin-bottom: 2px;" title="&quot;Python version 2.7 required which was not found in the registry&quot;" src="http://blog.eddsn.com/wp-content/uploads/2012/01/error.jpg" alt="" width="459" height="171" /></a><br />
<strong>Introduction</strong><br />
Any module installer that is created using distutils (bdist_wininst) is very likely to produce this <a href="http://bugs.python.org/issue6792">error</a>. The problem is that it only detects 32bit installations of Python on 64bit Windows machines. Or more technically, 32bit versions of Python create the following registry path</p>
<blockquote><p>HKEY_LOCAL_MACHINE\Software\Wow6432Node\Python\PythonCore</p></blockquote>
<p>while 64bits versions create a slightly other registry path which is</p>
<blockquote><p>HKEY_CURRENT_USER\Software\Python\PythonCore</p></blockquote>
<p>When any 32-bit module setup is started (with a Python 64-bit on your system), it first checks whether the first path exists, while instead it should check the second (which does exist).</p>
<p>There are basically three ways of solving this:</p>
<ul>
<li>You can install a 32-bit Python version</li>
<li>or install a 64-bit version of your module</li>
<li>or adjust the registry such that it really sees that a 64bit Python is installed</li>
</ul>
<p>I will of course elaborate on the last two options.</p>
<p><strong>Install a 64-bit version of your module</strong></p>
<p>You can find many module binaries <a href="http://www.lfd.uci.edu/~gohlke/pythonlibs/">here</a>. Choose a 64-bit version and install it. This is the most clean way of fixing the problem.</p>
<p>If your module is not in the list, then try the alternative below.</p>
<p><strong>Fix by adjusting the registry</strong></p>
<p>So the dirty way is to do the following adjustments in the registry:</p>
<ol>
<li>Run <em>regedit</em>.</li>
<li>Locate the path: <em>HKEY_CURRENT_USER\Software\Wow6432Node\</em></li>
<li>Create keys in this path: <em>Python\PythonCore\2.7\InstallPath</em></li>
<li>Modify the &#8220;<em>(Default)</em>&#8220;, which is initially empty, to the path where Python is located, for example &#8220;C:\Python27\&#8221;.</li>
<li>You are done. Exit and retry the setup that gave the error.</li>
</ol>
<p>You can alternatively create a <em>.reg</em> file (for example <em>fix.reg</em>) that will do the above steps automatically. Put exactly the following in it:</p>
<pre>Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Python\PythonCore\2.7\InstallPath]
@="C:\\Python27\\"</pre>
<p>If you are lazy, then you can also download <a href="http://blog.eddsn.com/wp-content/uploads/2012/01/regfix.zip">this file</a>, unpack the registry file and just run it.</p>
<p>&nbsp;</p>
<div class="shr-publisher-1164"></div><!-- Start LikeButtonSetBottom --><!-- End LikeButtonSetBottom -->
]]></content:encoded>
			<wfw:commentRss>http://blog.eddsn.com/2012/01/python-version-2-7-required-which-was-not-found-in-the-registry/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>&#8220;Unable to find vcvarsall.bat&#8221; error when trying to install lxml</title>
		<link>http://blog.eddsn.com/2012/01/unable-to-find-vcvarsall-bat-error-when-trying-to-install-lxml/</link>
		<comments>http://blog.eddsn.com/2012/01/unable-to-find-vcvarsall-bat-error-when-trying-to-install-lxml/#comments</comments>
		<pubDate>Sun, 15 Jan 2012 02:04:00 +0000</pubDate>
		<dc:creator>eddsn</dc:creator>
				<category><![CDATA[Fixes]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://blog.eddsn.com/?p=1151</guid>
		<description><![CDATA[I needed the lxml library on a machine for some python script that I coded earlier. I tried using easy_install by doing easy_install lxml but then I got the following error: Searching for lxml Reading http://pypi.python.org/simple/lxml/ Reading http://codespeak.net/lxml Best match: lxml 2.3.3 Downloading http://lxml.de/files/lxml-2.3.3.tgz Processing lxml-2.3.3.tgz Running lxml-2.3.3\setup.py -q bdist_egg --dist-dir c:\users\edin\appdata\local\ temp\easy_install-9sxhlm\lxml-2.3.3\egg-dist-tmp-pjbtkm Building lxml [...]]]></description>
			<content:encoded><![CDATA[<!-- Start LikeButtonSetTop --><!-- End LikeButtonSetTop --><p>I needed the <a href="http://lxml.de/">lxml</a> library on a machine for some python script that I coded earlier. I tried using <a href="http://peak.telecommunity.com/DevCenter/EasyInstall">easy_install</a> by doing</p>
<pre>easy_install lxml</pre>
<p>but then I got the following error:</p>
<pre>Searching for lxml
Reading http://pypi.python.org/simple/lxml/
Reading http://codespeak.net/lxml
Best match: lxml 2.3.3
Downloading http://lxml.de/files/lxml-2.3.3.tgz
Processing lxml-2.3.3.tgz
Running lxml-2.3.3\setup.py -q bdist_egg --dist-dir c:\users\edin\appdata\local\
temp\easy_install-9sxhlm\lxml-2.3.3\egg-dist-tmp-pjbtkm
Building lxml version 2.3.3.
Building without Cython.
ERROR: 'xslt-config' is not recognized as an internal or external command,
operable program or batch file.

** make sure the development packages of libxml2 and libxslt are installed **

Using build configuration of libxslt
warning: no files found matching 'lxml.etree.c' under directory 'src\lxml'
warning: no files found matching 'lxml.objectify.c' under directory 'src\lxml'
warning: no files found matching 'lxml.etree.h' under directory 'src\lxml'
warning: no files found matching 'lxml.etree_api.h' under directory 'src\lxml'
warning: no files found matching 'etree_defs.h' under directory 'src\lxml'
warning: no files found matching 'pubkey.asc' under directory 'doc'
warning: no files found matching 'tagpython*.png' under directory 'doc'
warning: no files found matching 'Makefile' under directory 'doc'
error: Setup script exited with error: Unable to find vcvarsall.bat</pre>
<p>I tried installing <a href="http://xmlsoft.org/">libxml2</a> and <a href="http://xmlsoft.org/XSLT/">libxslt</a>, but it resulted in similar errors.</p>
<blockquote><p>Searching for libxml2<br />
Reading http://pypi.python.org/simple/libxml2/<br />
Couldn&#8217;t find index page for &#8216;libxml2&#8242; (maybe misspelled?)<br />
Scanning index of all packages (this may take a while)<br />
Reading http://pypi.python.org/simple/<br />
No local packages or download links found for libxml2<br />
Best match: None<br />
Traceback (most recent call last):<br />
File &#8220;C:\Python27\Scripts\easy_install-script.py&#8221;, line 8, in<br />
load_entry_point(&#8216;setuptools==0.6c11&#8242;, &#8216;console_scripts&#8217;, &#8216;easy_install&#8217;)()<br />
File &#8220;C:\Python27\lib\site-packages\setuptools-0.6c11-py2.7.egg\setuptools\com<br />
mand\easy_install.py&#8221;, line 1712, in main<br />
File &#8220;C:\Python27\lib\site-packages\setuptools-0.6c11-py2.7.egg\setuptools\com<br />
mand\easy_install.py&#8221;, line 1700, in with_ei_usage<br />
File &#8220;C:\Python27\lib\site-packages\setuptools-0.6c11-py2.7.egg\setuptools\com<br />
mand\easy_install.py&#8221;, line 1716, in<br />
File &#8220;C:\Python27\lib\distutils\core.py&#8221;, line 152, in setup<br />
dist.run_commands()<br />
File &#8220;C:\Python27\lib\distutils\dist.py&#8221;, line 953, in run_commands<br />
self.run_command(cmd)<br />
File &#8220;C:\Python27\lib\distutils\dist.py&#8221;, line 972, in run_command<br />
cmd_obj.run()<br />
File &#8220;C:\Python27\lib\site-packages\setuptools-0.6c11-py2.7.egg\setuptools\com<br />
mand\easy_install.py&#8221;, line 211, in run<br />
File &#8220;C:\Python27\lib\site-packages\setuptools-0.6c11-py2.7.egg\setuptools\com<br />
mand\easy_install.py&#8221;, line 434, in easy_install<br />
File &#8220;C:\Python27\lib\site-packages\setuptools-0.6c11-py2.7.egg\setuptools\pac<br />
kage_index.py&#8221;, line 475, in fetch_distribution<br />
AttributeError: &#8216;NoneType&#8217; object has no attribute &#8216;clone&#8217;</p></blockquote>
<p>In one of my previous posts I pointed out how you can solve a similar problem with a missing vcvarsall.bat error, but unfortunately that <a href="http://blog.eddsn.com/2010/05/unable-to-find-vcvarsall-bat/">approach</a> did not solve my problem. Compiling the sources from the ground up was a too intensive job (which I might try to figure out in the future), so I chose the easy path.</p>
<p>The issue was solved by installing these packages from <a href="http://www.lfd.uci.edu/~gohlke/pythonlibs/">this site</a> which lists a lot of (unoffical) Windows binaries for Python. Everything suddenly started to work as it should. <img src='http://blog.eddsn.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<div class="shr-publisher-1151"></div><!-- Start LikeButtonSetBottom --><!-- End LikeButtonSetBottom -->
]]></content:encoded>
			<wfw:commentRss>http://blog.eddsn.com/2012/01/unable-to-find-vcvarsall-bat-error-when-trying-to-install-lxml/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Store WordPress content in PHP variables</title>
		<link>http://blog.eddsn.com/2011/05/store-wordpress-content-in-php-variables/</link>
		<comments>http://blog.eddsn.com/2011/05/store-wordpress-content-in-php-variables/#comments</comments>
		<pubDate>Sat, 28 May 2011 13:08:17 +0000</pubDate>
		<dc:creator>eddsn</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://blog.eddsn.com/?p=990</guid>
		<description><![CDATA[WordPress is a great tool for blogging, but can also be integrated in a website to provide a simple content management system. In this post I&#8217;m going to address the issue of the WordPress functions where they print the output directly and show how to catch this output in a variable. After integrating WordPress in [...]]]></description>
			<content:encoded><![CDATA[<!-- Start LikeButtonSetTop --><!-- End LikeButtonSetTop --><p><a href="http://wordpress.org/">WordPress</a> is a great tool for blogging, but can also be <a href="http://codex.wordpress.org/Integrating_WordPress_with_Your_Website">integrated</a> in a website to provide a simple <a href="http://en.wikipedia.org/wiki/Content_Management_System">content management system</a>. In this post I&#8217;m going to address the issue of the WordPress functions where they print the output directly and show how to catch this output in a variable.</p>
<p><span id="more-990"></span><br />
After integrating WordPress in your code, post content can easily be queried by using the <a href="http://codex.wordpress.org/Function_Reference/query_posts">query_posts</a> function. Along with some extra functions and setup, in the example below we show the last 10 posts orderedy by the post title (descending) from post category 3.</p>
<div class="dean_ch" style="white-space: wrap;">
<span class="co1">// Get all posts</span><br />
<span class="re0">$posts</span> = get_posts<span class="br0">&#40;</span><span class="st0">&quot;numberposts=10&amp;amp;order=DSC&amp;amp;orderby=post_title&amp;amp;cat=3&quot;</span><span class="br0">&#41;</span>;</p>
<p><span class="co1">// Output each post</span><br />
<a href="http://www.php.net/global"><span class="kw3">global</span></a> <span class="re0">$post</span>;<br />
<span class="kw1">foreach</span> <span class="br0">&#40;</span><span class="re0">$posts</span> <span class="kw1">as</span> <span class="re0">$post</span><span class="br0">&#41;</span>:<br />
&nbsp; &nbsp; setup_postdata<span class="br0">&#40;</span><span class="re0">$post</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; <a href="http://www.php.net/echo"><span class="kw3">echo</span></a> <span class="st0">&#8216;&lt;h2&gt;&#8217;</span>;<br />
&nbsp; &nbsp; the_title<span class="br0">&#40;</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; <a href="http://www.php.net/echo"><span class="kw3">echo</span></a> <span class="st0">&#8216;&lt;/h2&gt;&#8217;</span>;<br />
&nbsp; &nbsp; the_content<span class="br0">&#40;</span><span class="br0">&#41;</span>;<br />
<span class="kw1">endforeach</span>;</div>
<p>&nbsp;<br />
The functions <code>the_title()</code> and <code>the_content()</code> in the above example output the content directly on the web page, so it is important to place the code exactly there where you want the content to be showed.</p>
<p>However, in some more dynamic environments you might want to generate your content before you actually display it on the web page. That is, one can require the content to be stored in a variable that is to be printed later on or used for further processing before displaying it.</p>
<p>It is not possible to simply use</p>
<div class="dean_ch" style="white-space: wrap;"><span class="re0">$variable</span> = the_title<span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
<p>&nbsp;<br />
since you cannot catch an already echoed value into a variable.</p>
<p>To solve this problem we can use <a href="http://php.net/manual/en/book.outcontrol.php">output buffering</a> to buffer our (local) output and in that way catch our printed content. It is not necessary to understand how output buffering works exactly, so you can just look at the extended code below which demonstrates how the previously showed code example can be transformed to accomplish the desired result.</p>
<div class="dean_ch" style="white-space: wrap;">
<a href="http://www.php.net/ob_start"><span class="kw3">ob_start</span></a><span class="br0">&#40;</span><span class="br0">&#41;</span>;</p>
<p><span class="co1">// Get all posts</span><br />
<span class="re0">$posts</span> = get_posts<span class="br0">&#40;</span><span class="st0">&quot;numberposts=10&amp;amp;order=DSC&amp;amp;orderby=post_title&amp;amp;cat=3&quot;</span><span class="br0">&#41;</span>;</p>
<p><span class="co1">// Output each post</span><br />
<a href="http://www.php.net/global"><span class="kw3">global</span></a> <span class="re0">$post</span>;<br />
<span class="kw1">foreach</span> <span class="br0">&#40;</span><span class="re0">$posts</span> <span class="kw1">as</span> <span class="re0">$post</span><span class="br0">&#41;</span>:<br />
&nbsp; &nbsp; setup_postdata<span class="br0">&#40;</span><span class="re0">$post</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; <a href="http://www.php.net/echo"><span class="kw3">echo</span></a> <span class="st0">&#8216;&lt;h2&gt;&#8217;</span>;<br />
&nbsp; &nbsp; the_title<span class="br0">&#40;</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; <a href="http://www.php.net/echo"><span class="kw3">echo</span></a> <span class="st0">&#8216;&lt;/h2&gt;&#8217;</span>;<br />
&nbsp; &nbsp; the_content<span class="br0">&#40;</span><span class="br0">&#41;</span>;<br />
<span class="kw1">endforeach</span>;</p>
<p><span class="re0">$variable</span> = <a href="http://www.php.net/ob_get_contents"><span class="kw3">ob_get_contents</span></a><span class="br0">&#40;</span><span class="br0">&#41;</span>;<br />
<a href="http://www.php.net/ob_end_clean"><span class="kw3">ob_end_clean</span></a><span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
<p>&nbsp;<br />
So essentially you start your output buffering by placing <code>ob_start()</code> before the actual code you want to buffer, and similarly <code>ob_end_clean()</code> when you want the buffering to be finished. To save all the output data you simply use the output of <code>ob_get_contents()</code> and place it in a variable. Note that you have to use <code>ob_get_contents()</code> before calling <code>ob_end_clean()</code> since the latter will clear the buffer.</p>
<div class="shr-publisher-990"></div><!-- Start LikeButtonSetBottom --><!-- End LikeButtonSetBottom -->
]]></content:encoded>
			<wfw:commentRss>http://blog.eddsn.com/2011/05/store-wordpress-content-in-php-variables/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Viewstack Transitions in Flex 4</title>
		<link>http://blog.eddsn.com/2010/11/viewstack-transitions-in-flex-4/</link>
		<comments>http://blog.eddsn.com/2010/11/viewstack-transitions-in-flex-4/#comments</comments>
		<pubDate>Tue, 30 Nov 2010 22:24:44 +0000</pubDate>
		<dc:creator>eddsn</dc:creator>
				<category><![CDATA[Flex]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://blog.eddsn.com/?p=860</guid>
		<description><![CDATA[So I&#8217;m busy with a project building an Adobe AIR application where at this point I&#8217;m working out the layout of the application. Transitions are usually very simple to accomplish with state transitions, but in my framework of the application I wanted to avoid using states between the different pages that were to be shown. [...]]]></description>
			<content:encoded><![CDATA[<!-- Start LikeButtonSetTop --><!-- End LikeButtonSetTop --><p>So I&#8217;m busy with a project building an Adobe AIR application where at this point I&#8217;m working out the layout of the application.</p>
<p>Transitions are usually very simple to accomplish with state transitions, but in my framework of the application I wanted to avoid using states between the different pages that were to be shown. Using transitions on a page defined in a <em>NavigatorContent</em> item within the <em>ViewStack</em> showed to be a syntactically slightly different world.</p>
<p>To cut the story telling, here&#8217;s a snippet of code from my project that one can use to accomplish some fading effects on the <em>NavigatorContent</em> within a <em>ViewStack</em>.</p>
<p>The declarations:</p>
<div class="dean_ch" style="white-space: wrap;">
<span class="sc3"><span class="re1">&lt;fx:Declarations<span class="re2">&gt;</span></span></span><br />
&nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;mx:Fade</span> <span class="re0">id</span>=<span class="st0">&quot;Show&quot;</span> <span class="re0">duration</span>=<span class="st0">&quot;500&quot;</span> <span class="re0">alphaFrom</span>=<span class="st0">&quot;0.0&quot;</span> <span class="re0">alphaTo</span>=<span class="st0">&quot;1.0&quot;</span><span class="re2">/&gt;</span></span> <br />
&nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;mx:Fade</span> <span class="re0">id</span>=<span class="st0">&quot;Hide&quot;</span> <span class="re0">duration</span>=<span class="st0">&quot;500&quot;</span> <span class="re0">alphaFrom</span>=<span class="st0">&quot;1.0&quot;</span> <span class="re0">alphaTo</span>=<span class="st0">&quot;0.0&quot;</span><span class="re2">/&gt;</span></span><br />
<span class="sc3"><span class="re1">&lt;/fx:Declarations<span class="re2">&gt;</span></span></span></div>
<p>and the <em>ViewStack</em>:</p>
<div class="dean_ch" style="white-space: wrap;">
<span class="sc3"><span class="re1">&lt;mx:ViewStack</span> <span class="re0">id</span>=<span class="st0">&quot;views&quot;</span><span class="re2">&gt;</span></span><br />
&nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;s:NavigatorContent</span> <span class="re0">id</span>=<span class="st0">&quot;intro&quot;</span> <span class="re0">showEffect</span>=<span class="st0">&quot;{Show}&quot;</span> <span class="re0">hideEffect</span>=<span class="st0">&quot;{Hide}&quot;</span><span class="re2">&gt;</span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;components:PageIntro</span> <span class="re0">id</span>=<span class="st0">&quot;pageIntro&quot;</span><span class="re2">/&gt;</span></span><br />
&nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;/s:NavigatorContent<span class="re2">&gt;</span></span></span><br />
&nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;s:NavigatorContent</span> <span class="re0">id</span>=<span class="st0">&quot;projects&quot;</span> <span class="re0">showEffect</span>=<span class="st0">&quot;{Show}&quot;</span> <span class="re0">hideEffect</span>=<span class="st0">&quot;{Hide}&quot;</span><span class="re2">&gt;</span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;components:PageProjects</span> <span class="re0">id</span>=<span class="st0">&quot;pageProjects&quot;</span><span class="re2">/&gt;</span></span><br />
&nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;/s:NavigatorContent<span class="re2">&gt;</span></span></span><br />
<span class="sc3"><span class="re1">&lt;/mx:ViewStack<span class="re2">&gt;</span></span></span></div>
<p>where, of course,  <em>PageIntro</em> and <em>PageProjects</em> are some defined components not included in this code.</p>
<p>Pretty obvious, isn&#8217;t it? <img src='http://blog.eddsn.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<div class="shr-publisher-860"></div><!-- Start LikeButtonSetBottom --><!-- End LikeButtonSetBottom -->
]]></content:encoded>
			<wfw:commentRss>http://blog.eddsn.com/2010/11/viewstack-transitions-in-flex-4/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Calling external programs from Python</title>
		<link>http://blog.eddsn.com/2010/10/calling-external-programs-from-python/</link>
		<comments>http://blog.eddsn.com/2010/10/calling-external-programs-from-python/#comments</comments>
		<pubDate>Sat, 02 Oct 2010 22:51:00 +0000</pubDate>
		<dc:creator>eddsn</dc:creator>
				<category><![CDATA[Fixes]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://blog.eddsn.com/?p=705</guid>
		<description><![CDATA[The story I&#8217;m currently automating a certain process with a Python script that needs to call external programs with some specific parameters. An additional problem is with this letter s in the word parameters, for my external call requires an execution with more than one argument. I tried the os.system call but unfortunately it didn&#8217;t [...]]]></description>
			<content:encoded><![CDATA[<!-- Start LikeButtonSetTop --><!-- End LikeButtonSetTop --><p><strong>The story</strong><br />
I&#8217;m currently automating a certain process with a Python script that needs to call external programs with some specific parameters. An additional problem is with this letter <em>s</em> in the word <em>parameters</em>, for my external call requires an execution with more than one argument.</p>
<p>I tried the <em>os.system</em> call but unfortunately it didn&#8217;t work on my system because the function was apparently not present. This conclusion followed after I got the error &#8220;ImportError: No module named system&#8221;. Instead of resolving this error, I  decided to dig into google for some alternatives.  And I did succeed, when I met the lovely miss <a href="http://docs.python.org/library/subprocess.html">subproccess</a>. <img src='http://blog.eddsn.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><strong>Let subprocess do all the calls</strong><br />
To keep it short and skip the <a href="http://docs.python.org/library/subprocess.html">syntax</a> explanation, learn from the following example:</p>
<blockquote><p>import subprocess<br />
subprocess.call(&#8216;expand catalog-web.cab -F:* -r&#8217;, shell=True)</p></blockquote>
<p>As you can see, the magic only happens when you pass the string (your complete command) together with the <em>shell=True</em> option.</p>
<p>Happy Python calling. <img src='http://blog.eddsn.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<div class="shr-publisher-705"></div><!-- Start LikeButtonSetBottom --><!-- End LikeButtonSetBottom -->
]]></content:encoded>
			<wfw:commentRss>http://blog.eddsn.com/2010/10/calling-external-programs-from-python/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Number converter</title>
		<link>http://blog.eddsn.com/2010/09/number-converter/</link>
		<comments>http://blog.eddsn.com/2010/09/number-converter/#comments</comments>
		<pubDate>Sun, 26 Sep 2010 11:05:23 +0000</pubDate>
		<dc:creator>eddsn</dc:creator>
				<category><![CDATA[HTML]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Tools]]></category>

		<guid isPermaLink="false">http://blog.eddsn.com/?p=674</guid>
		<description><![CDATA[Once in a while a man wants to convert a hexadecimal number to a decimal one, or even maybe a binary number to a decimal one. Google always helps if you ask &#8220;hex 2 bin&#8221;, but instead I decided to write an online application of my own. The converter is implemented as very simple web [...]]]></description>
			<content:encoded><![CDATA[<!-- Start LikeButtonSetTop --><!-- End LikeButtonSetTop --><p>Once in a while a man wants to convert a hexadecimal number to a decimal one, or even maybe a binary number to a decimal one. Google always helps if you ask &#8220;hex 2 bin&#8221;, but instead I decided to write an online application of my own.</p>
<p>The converter is implemented as very simple web page and can be found <a href="http://eddsn.com/code/nconverter.html">here</a>. On the web page, on the fly conversions are possible between a decimal, hexadecimal and a binary number. So all conversions dec2hex, dec2bin, hex2dec, hex2bin, bin2dec and bin2hex are included in this basic form. See the complete junk of html and javascript code below.</p>
<div class="dean_ch" style="white-space: wrap;">&lt;html&gt;<br />
&lt;script type=&quot;text/javascript&quot;&gt;<br />
  function d2h(d) { return d.toString(16); };<br />
  function h2d(h) { return parseInt(h,16); };<br />
  function d2b(d) { return d.toString(2); };<br />
  function b2d(b) { return parseInt(b,2); };</p>
<p>  function idec(d) {<br />
    // pre: d is int<br />
    document.cform.hex.value = d2h(parseInt(d));<br />
    document.cform.bin.value = d2b(parseInt(d));<br />
  };</p>
<p>  function ihex(h) {<br />
  // pre: h is string<br />
  var d = h2d(h);<br />
  document.cform.dec.value = d;<br />
  document.cform.bin.value = d2b(d);<br />
  };</p>
<p>  function ibin(b) {<br />
    // pre: b is string<br />
    var d = b2d(b);<br />
    document.cform.dec.value = d;<br />
    document.cform.hex.value = d2h(d);<br />
  };</p>
<p>&lt;/script&gt;<br />
&lt;body&gt;<br />
&lt;h1&gt;Number converter&lt;/h1&gt;<br />
&lt;p&gt;Insert a decimal, hexadecimal or a binary number to convert it.&lt;/p&gt;<br />
&lt;form name=&quot;cform&quot;&gt;<br />
Decimal: &lt;input name=&quot;dec&quot; onkeyup=&quot;idec(this.value)&quot; /&gt;<br />
Hexadecimal: &lt;input name=&quot;hex&quot; onkeyup=&quot;ihex(this.value)&quot; /&gt;<br />
Binary: &lt;input name=&quot;bin&quot; onkeyup=&quot;ibin(this.value)&quot; /&gt;<br />
&lt;/form&gt;</p>
<p>&lt;/body&gt;<br />
&lt;/html&gt;</div>
<div class="shr-publisher-674"></div><!-- Start LikeButtonSetBottom --><!-- End LikeButtonSetBottom -->
]]></content:encoded>
			<wfw:commentRss>http://blog.eddsn.com/2010/09/number-converter/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to use cookies with CherryPy</title>
		<link>http://blog.eddsn.com/2010/05/how-to-use-cookies-with-cherrypy/</link>
		<comments>http://blog.eddsn.com/2010/05/how-to-use-cookies-with-cherrypy/#comments</comments>
		<pubDate>Wed, 26 May 2010 22:29:00 +0000</pubDate>
		<dc:creator>eddsn</dc:creator>
				<category><![CDATA[Cherrypy]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Tutorials]]></category>

		<guid isPermaLink="false">http://blog.eddsn.com/?p=382</guid>
		<description><![CDATA[Introduction CherryPy uses the Cookie module from Python and in particular the SimpleCookie object type to handle cookies. Sending a cookie to a browser is accomplished by using cherrypy.response.cookie and receiving a cookie from the browser by cherrypy.request.cookie. Example This is demonstrated in the following example code where we use a login and logout procedure [...]]]></description>
			<content:encoded><![CDATA[<!-- Start LikeButtonSetTop --><!-- End LikeButtonSetTop --><p><strong>Introduction</strong></p>
<p><a href="http://www.cherrypy.org/wiki/Cookies">CherryPy</a> uses the <a href="http://docs.python.org/library/cookie.html">Cookie module from Python</a> and in particular the  SimpleCookie object type to handle cookies.</p>
<p>Sending a cookie to a browser is accomplished by using <strong>cherrypy.response.cookie</strong> and receiving a cookie from the browser by <strong>cherrypy.request.cookie</strong>.</p>
<p><strong>Example</strong></p>
<p>This is demonstrated in the following example code where we use a login and logout procedure :</p>
<div class="dean_ch" style="white-space: wrap;"><span class="kw1">import</span> cherrypy</p>
<p><span class="kw1">class</span> Root<span class="br0">&#40;</span><span class="kw2">object</span><span class="br0">&#41;</span>:<br />
&nbsp; @cherrypy.<span class="me1">expose</span><br />
&nbsp; <span class="kw1">def</span> index<span class="br0">&#40;</span><span class="kw2">self</span><span class="br0">&#41;</span>:<br />
&nbsp; &nbsp; <span class="kw1">return</span> <span class="st0">&quot;&quot;</span><span class="st0">&quot;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;form id=&quot;</span>login<span class="st0">&quot; action=&quot;</span>/doLogin/<span class="st0">&quot; method=&quot;</span>post<span class="st0">&quot;&gt;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;label&gt;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Username:<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;input name=&quot;</span>username<span class="st0">&quot; type=&quot;</span>text<span class="st0">&quot; /&gt;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;/label&gt;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;label&gt;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Password:<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;input name=&quot;</span>password<span class="st0">&quot; type=&quot;</span>password<span class="st0">&quot; /&gt;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;/label&gt;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;input type=&quot;</span>submit<span class="st0">&quot; value=&quot;</span>Login<span class="st0">&quot; /&gt;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;/form&gt;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&quot;</span><span class="st0">&quot;&quot;</span></p>
<p>&nbsp; @cherrypy.<span class="me1">expose</span><br />
&nbsp; <span class="kw1">def</span> doLogin<span class="br0">&#40;</span><span class="kw2">self</span>, username, password<span class="br0">&#41;</span>:<br />
&nbsp; &nbsp; <span class="co1"># Set cookie to send</span><br />
&nbsp; &nbsp; cookie = cherrypy.<span class="me1">response</span>.<span class="me1">cookie</span></p>
<p>&nbsp; &nbsp; cookie<span class="br0">&#91;</span><span class="st0">&#8216;user&#8217;</span><span class="br0">&#93;</span> = username<br />
&nbsp; &nbsp; cookie<span class="br0">&#91;</span><span class="st0">&#8216;user&#8217;</span><span class="br0">&#93;</span><span class="br0">&#91;</span><span class="st0">&#8216;path&#8217;</span><span class="br0">&#93;</span> = <span class="st0">&#8216;/&#8217;</span><br />
&nbsp; &nbsp; cookie<span class="br0">&#91;</span><span class="st0">&#8216;user&#8217;</span><span class="br0">&#93;</span><span class="br0">&#91;</span><span class="st0">&#8216;max-age&#8217;</span><span class="br0">&#93;</span> = <span class="nu0">3600</span></p>
<p>&nbsp; &nbsp; cookie<span class="br0">&#91;</span><span class="st0">&#8216;pass&#8217;</span><span class="br0">&#93;</span> = password<br />
&nbsp; &nbsp; cookie<span class="br0">&#91;</span><span class="st0">&#8216;pass&#8217;</span><span class="br0">&#93;</span><span class="br0">&#91;</span><span class="st0">&#8216;path&#8217;</span><span class="br0">&#93;</span> = <span class="st0">&#8216;/&#8217;</span><br />
&nbsp; &nbsp; cookie<span class="br0">&#91;</span><span class="st0">&#8216;pass&#8217;</span><span class="br0">&#93;</span><span class="br0">&#91;</span><span class="st0">&#8216;max-age&#8217;</span><span class="br0">&#93;</span> = <span class="nu0">3600</span></p>
<p>&nbsp; &nbsp; <span class="kw1">return</span> <span class="st0">&#8216;Cookie set. You can now &lt;a href=&quot;/doLogout/&quot;&gt;logout&lt;/a&gt;.&#8217;</span></p>
<p>&nbsp; @cherrypy.<span class="me1">expose</span><br />
&nbsp; <span class="kw1">def</span> doLogout<span class="br0">&#40;</span><span class="kw2">self</span><span class="br0">&#41;</span>:<br />
&nbsp; &nbsp; <span class="co1"># Request cookie that is already set</span><br />
&nbsp; &nbsp; reqcookie = cherrypy.<span class="me1">request</span>.<span class="me1">cookie</span></p>
<p>&nbsp; &nbsp; <span class="co1"># Response cookie that overwrites the old one and expires</span><br />
&nbsp; &nbsp; rescookie = cherrypy.<span class="me1">response</span>.<span class="me1">cookie</span><br />
&nbsp; &nbsp; <span class="kw1">for</span> name <span class="kw1">in</span> reqcookie.<span class="me1">keys</span><span class="br0">&#40;</span><span class="br0">&#41;</span>:<br />
&nbsp; &nbsp; &nbsp; rescookie<span class="br0">&#91;</span>name<span class="br0">&#93;</span> = name<br />
&nbsp; &nbsp; &nbsp; rescookie<span class="br0">&#91;</span>name<span class="br0">&#93;</span><span class="br0">&#91;</span><span class="st0">&#8216;path&#8217;</span><span class="br0">&#93;</span> = <span class="st0">&#8216;/&#8217;</span><br />
&nbsp; &nbsp; &nbsp; rescookie<span class="br0">&#91;</span>name<span class="br0">&#93;</span><span class="br0">&#91;</span><span class="st0">&#8216;max-age&#8217;</span><span class="br0">&#93;</span> = <span class="nu0">0</span> <span class="co1"># or: rescookie[name]['expires'] = 0</span></p>
<p>&nbsp; &nbsp; <span class="kw1">return</span> <span class="st0">&#8216;Logged out succesfully. You can now &lt;a href=&quot;/&quot;&gt;login&lt;/a&gt; again.&#8217;</span></p>
<p>cherrypy.<span class="me1">quickstart</span><span class="br0">&#40;</span>Root<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><br />
&nbsp;</div>
<p><a href="http://blog.eddsn.com/wp-content/uploads/2010/05/cherrypy-cookies.zip">Download source code</a></p>
<p><strong>Creating a cookie<br />
</strong></p>
<p>It is important to note that <strong> </strong></p>
<ul>
<li><strong>cookie[name]</strong></li>
<li><strong>cookie[name]['path']</strong></li>
<li><strong>cookie[name]['max-age']</strong></li>
</ul>
<p>are a bare minimum of <a href="http://docs.python.org/library/cookie.html#Cookie.Morsel">attributes</a> that you have to set in order to get this working. If you do not set one of these three attributes, the cookie will simply not be set.</p>
<p><strong>Deleting a cookie</strong></p>
<p>Instead of <strong>cookie[name]['max-age']=0</strong> you can also use <strong>cookie[name]['expires']=0</strong>, which results in the same effect of deleting the cookie.</p>
<div class="shr-publisher-382"></div><!-- Start LikeButtonSetBottom --><!-- End LikeButtonSetBottom -->
]]></content:encoded>
			<wfw:commentRss>http://blog.eddsn.com/2010/05/how-to-use-cookies-with-cherrypy/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>&#8220;Unable to find vcvarsall.bat&#8221; error when trying to install rdflib</title>
		<link>http://blog.eddsn.com/2010/05/unable-to-find-vcvarsall-bat/</link>
		<comments>http://blog.eddsn.com/2010/05/unable-to-find-vcvarsall-bat/#comments</comments>
		<pubDate>Wed, 19 May 2010 19:21:23 +0000</pubDate>
		<dc:creator>eddsn</dc:creator>
				<category><![CDATA[Fixes]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[RDF]]></category>

		<guid isPermaLink="false">http://blog.eddsn.com/?p=370</guid>
		<description><![CDATA[Some things just don&#8217;t work out like you expect them to do. During my quest with a new web application that I&#8217;m about to develop, the very first and basic thing went wrong. The setup of the rdflib python library (version 2.4.2) gave me the following error (on Windows): &#8220;error: Setup script exited with error: [...]]]></description>
			<content:encoded><![CDATA[<!-- Start LikeButtonSetTop --><!-- End LikeButtonSetTop --><p>Some things just don&#8217;t work out like you expect them to do. During my quest with a new web application that I&#8217;m about to develop, the very first and basic thing went wrong. The setup of the <a href="http://code.google.com/p/rdflib/">rdflib python library</a> (version 2.4.2) gave me the following error (on Windows):</p>
<p><strong><em>&#8220;error: Setup script exited with error: Unable to find vcvarsall.bat&#8221;</em></strong></p>
<p>After a lot of useless spent hours on trying to come up with some solution, the answer was found. There is a good <a href="http://code.google.com/p/rdflib/issues/detail?id=104#c4">solution</a> on the project page of the library too, but I found a slightly quicker solution:</p>
<ol>
<li>First of all download <a href="http://sourceforge.net/projects/mingw/files/">MinGW.</a> You need <strong>g++ compiler</strong> and <strong>MingW make</strong> in setup.</li>
<li>If you installed MinGW for example to &#8220;C:\MinGW&#8221; then <a href="http://www.computerhope.com/issues/ch000549.htm">add</a> &#8220;C:\MinGW\bin&#8221; to your PATH in Windows.</li>
<li>Now start your Command Prompt and go the directory where you have your setup.py residing.</li>
<li>Last and most important step:
<pre>setup.py install build --compiler=mingw32</pre>
</li>
</ol>
<p>Note: This is all about rdflib version 2.4.2! Version 3.x for example has some major differences with 2.4.2 and so I&#8217;m not aware whether the problem there exists and even if it does, i&#8217;m not sure if it can be solved by the above solution.</p>
<p>If you have a similar problem but with some other module and you can&#8217;t fix it in this way, then you should try <a href="http://blog.eddsn.com/2012/01/unable-to-find-vcvarsall-bat-error-when-trying-to-install-lxml/">this</a>.</p>
<div class="shr-publisher-370"></div><!-- Start LikeButtonSetBottom --><!-- End LikeButtonSetBottom -->
]]></content:encoded>
			<wfw:commentRss>http://blog.eddsn.com/2010/05/unable-to-find-vcvarsall-bat/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>Large file sizes after compiling with Lazarus</title>
		<link>http://blog.eddsn.com/2009/12/large-file-sizes-after-compiling-with-lazarus/</link>
		<comments>http://blog.eddsn.com/2009/12/large-file-sizes-after-compiling-with-lazarus/#comments</comments>
		<pubDate>Sat, 26 Dec 2009 14:16:40 +0000</pubDate>
		<dc:creator>eddsn</dc:creator>
				<category><![CDATA[Lazarus]]></category>
		<category><![CDATA[Pascal]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://blog.eddsn.com/?p=278</guid>
		<description><![CDATA[In the previous post when I was building the WLM Uninstaller tool, my choice was to write the app in Pascal (Lazarus). When you compile a project in Lazarus, you might end up with large executables. In my case, it was about 100 lines of code but compiled to a 12MB executable! Luckily, I found [...]]]></description>
			<content:encoded><![CDATA[<!-- Start LikeButtonSetTop --><!-- End LikeButtonSetTop --><p>In the <a href="http://blog.eddsn.com/2009/12/windows-live-messenger-uninstaller-v0-01/">previous post</a> when I was building the WLM Uninstaller tool, my choice was to write the app in Pascal (Lazarus).</p>
<p>When you compile a project in Lazarus, you might end up with large executables. In my case, it was about 100 lines of code but compiled to a 12MB executable!</p>
<p>Luckily, I found out how to significantly compress the file. In Lazarus there is a file called <strong><a href="http://blog.eddsn.com/wp-content/uploads/2009/12/strip.exe">strip.exe</a></strong> that, as the name suggests, strips the file from any unnecessary mess. The file on my installation is located in <strong>C:\lazarus\fpc\2.2.2\bin\i386-win32</strong>. You can simply use it as follows: &#8220;strip file.exe&#8221;. The file I compiled went from 12MB to 1.77MB!</p>
<p>A further decrease can be accomplished by using a packer like <a href="http://upx.sourceforge.net/">UPX</a> ( &#8220;upx -9 -o outputfile.exe inputfile.exe&#8221; ). In my case this was a further jump from 1.77MB to 668kB (5,4% of the original size!).</p>
<div class="shr-publisher-278"></div><!-- Start LikeButtonSetBottom --><!-- End LikeButtonSetBottom -->
]]></content:encoded>
			<wfw:commentRss>http://blog.eddsn.com/2009/12/large-file-sizes-after-compiling-with-lazarus/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Windows Live Messenger Uninstaller v0.01</title>
		<link>http://blog.eddsn.com/2009/12/windows-live-messenger-uninstaller-v0-01/</link>
		<comments>http://blog.eddsn.com/2009/12/windows-live-messenger-uninstaller-v0-01/#comments</comments>
		<pubDate>Sat, 26 Dec 2009 13:44:02 +0000</pubDate>
		<dc:creator>eddsn</dc:creator>
				<category><![CDATA[Fixes]]></category>
		<category><![CDATA[Pascal]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Projects]]></category>
		<category><![CDATA[Windows Live Messenger]]></category>

		<guid isPermaLink="false">http://blog.eddsn.com/?p=254</guid>
		<description><![CDATA[This is the first public version of the Windows Live Messenger Uninstaller (v0.01). What the tool does is basically remove a broken Windows Live Messenger installation. It really uses only the windows installer (msiexec.exe) to do the job combined with the CLSID of the installation that uniquely identifies the WLM version. The symptoms might be [...]]]></description>
			<content:encoded><![CDATA[<!-- Start LikeButtonSetTop --><!-- End LikeButtonSetTop --><p>This is the first public version of the <strong>Windows Live Messenger Uninstaller</strong> (v0.01).</p>
<p>What the tool does is basically remove a broken Windows Live Messenger installation. It really uses only the windows installer (msiexec.exe) to do the job combined with the CLSID of the installation that uniquely identifies the WLM version.<br />
The symptoms might be that when you want to reinstall the application it might say that it is already installed, while actually it is not. When trying to remove it with the usual Configuration &#8211; Add/Remove software steps, it might not even appear in the list, while the setup of the WLM says it is really installed.</p>
<p>I decided to build this tool since there are a lot of people strugling with this problem [1][2][3][4]. All these existing solutions presented by people on these sites use the single command with a CLSID key (eg. <strong>msiexec /x {B1403D7D-C725-4858-AACC-7E5FA2D72859}</strong>), but since the key is different for each WLM version such a solution might only be useful if you have that exact version. It can also be done manually by changing the registry keys, but I thought this would speed up the work significantly since there might be a lot of keys to search in (The location we are talking about here is:<strong> [HKEY_CLASSES_ROOT\Installer\Products\]</strong>)</p>
<p>I heard of people formatting the entire hard drive because of not being able to resolve this, so I really hope this gets around and avoids a lot of headaches.</p>
<p>You can download this first version of the tool below.</p>
<p><a href="http://blog.eddsn.com/wp-content/uploads/2009/12/wlm-uninstaller-v0.01.exe">Download binary</a> | <a href="http://blog.eddsn.com/wp-content/uploads/2009/12/wlm-uninstaller-v0.01-src.zip">Download source code (pascal)</a></p>
<p>MD5 hash binary: 7525a442da4b4515c8166debfc4a4d01<br />
MD5 hash source code: 28efa8f882c5354c6c4845393724e99a</p>
<p style="text-align: center;">&nbsp;</p>
<p style="text-align: center;"><a href="http://blog.eddsn.com/wp-content/uploads/2009/12/wlmu-v0-01.jpg"><img class="size-full wp-image-273 aligncenter" title="wlmu-v0-01" src="http://blog.eddsn.com/wp-content/uploads/2009/12/wlmu-v0-01.jpg" alt="" width="480" height="230" /></a></p>
<p><strong>Requirements</strong><br />
The tool is tested on Windows 7, but should also work on XP and Vista.</p>
<p><strong>Usage</strong><br />
The tool is very simple to use. If it finds an installation it will give you the uninstall command that you can use to manually remove it. You can also press <strong>RUN</strong> and it will run the command automatically for you.</p>
<p>Note: This software comes with absolute no warranty! By using this program you agree that I am not responsible for anything caused by this software whatsoever.</p>
<p><strong>Future releases</strong><br />
If you have any comments, suggestions or bugs, please put them here in the comments. If it is useful I might add/fix it in the next release.</p>
<p>Currently I&#8217;m planning to build a more general remover for the Windows Live series, since there are also other components that could get broken.</p>
<p><strong>References</strong><br />
[1] <a class="linkification-ext" title="Linkification: http://ask-leo.com/how_do_i_uninstall_windows_messenger.html#comments" href="http://ask-leo.com/how_do_i_uninstall_windows_messenger.html#comments">http://ask-leo.com/how_do_i_uninstall_windows_messenger.html#comments</a><br />
[2] <a class="linkification-ext" title="Linkification: http://ayumilove.wordpress.com/2009/03/14/how-to-install-remove-windows-live-messenger-2009/" href="http://ayumilove.wordpress.com/2009/03/14/how-to-install-remove-windows-live-messenger-2009/">http://ayumilove.wordpress.com/2009/03/14/how-to-install-remove-windows-live-messenger-2009/</a><br />
[3] <a class="linkification-ext" title="Linkification: http://www.mydigitallife.info/2006/02/11/remove-and-uninstall-windows-messenger/" href="http://www.mydigitallife.info/2006/02/11/remove-and-uninstall-windows-messenger/">http://www.mydigitallife.info/2006/02/11/remove-and-uninstall-windows-messenger/</a><br />
[4] <a class="linkification-ext" title="Linkification: http://www.vistax64.com/live-messenger/185883-cannot-uninstall-windows-live-messenger-beta-2009-a.html" href="http://www.vistax64.com/live-messenger/185883-cannot-uninstall-windows-live-messenger-beta-2009-a.html">http://www.vistax64.com/live-messenger/185883-cannot-uninstall-windows-live-messenger-beta-2009-a.html</a></p>
<p><strong>Untrue descriptions on other sites linking to this page</strong><br />
The link to this topic is already published on several sites, but unfortunately the presented description of the tool is misleading. For it says that I&#8217;m claiming to have a better tool than all the other existing solutions, which is of course not true. This is only another alternative that may solve the problem.<br />
In my description I was only referring to the existing solutions presented on the topics and comments on these that I used as references (see above [1][2][3][4]) and not on any other existing tool that probably uses other methods.</p>
<p><strong>Softpedia certification</strong></p>
<p>The tool can now also be <a href="http://www.softpedia.com/get/Internet/Chat/Other-Chat-Tools/Windows-Live-Messenger-Uninstaller.shtml">downloaded</a> from Softpedia.<br />
<a href="http://www.softpedia.com/get/Internet/Chat/Other-Chat-Tools/Windows-Live-Messenger-Uninstaller.shtml"><img class="alignnone size-full wp-image-322" title="softpedia_clean_award_f" src="http://blog.eddsn.com/wp-content/uploads/2009/12/softpedia_clean_award_f.gif" alt="" width="170" height="116" /></a><a href="http://www.softpedia.com/get/Internet/Chat/Other-Chat-Tools/Windows-Live-Messenger-Uninstaller.shtml"><img class="alignnone size-full wp-image-618" title="softpedia_free_award_f" src="http://blog.eddsn.com/wp-content/uploads/2009/12/softpedia_free_award_f.gif" alt="" width="170" height="116" /></a></p>
<p><strong>Windows Live Essentials Uninstaller</strong><br />
If you also want to remove other Windows Live Essentials components like Windows Live Mail or Windows Live Movie Maker, then try a similar tool that I have built called <a href="http://blog.eddsn.com/2010/12/windows-live-essentials-uninstaller/">Windows Live Essentials Uninstaller</a>. This tool can remove any component installed by Windows Live Essentials.</p>
<div class="shr-publisher-254"></div><!-- Start LikeButtonSetBottom --><!-- End LikeButtonSetBottom -->
]]></content:encoded>
			<wfw:commentRss>http://blog.eddsn.com/2009/12/windows-live-messenger-uninstaller-v0-01/feed/</wfw:commentRss>
		<slash:comments>158</slash:comments>
		</item>
	</channel>
</rss>

