<?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>Microbits &#187; recon</title>
	<atom:link href="http://microbits.info/index.php/author/recon/feed" rel="self" type="application/rss+xml" />
	<link>http://microbits.info</link>
	<description>Random thoughts about programming, gaming, and the world.</description>
	<lastBuildDate>Mon, 31 Oct 2011 04:43:14 +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>Python for Windows applications</title>
		<link>http://microbits.info/index.php/2010/06/python-for-windows-applications</link>
		<comments>http://microbits.info/index.php/2010/06/python-for-windows-applications#comments</comments>
		<pubDate>Wed, 30 Jun 2010 23:56:25 +0000</pubDate>
		<dc:creator>recon</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[gtk]]></category>
		<category><![CDATA[gui]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://microbits.info/?p=632</guid>
		<description><![CDATA[From what I&#8217;ve seen of Python, I relegated it to CUI and backend type tasks, since C# and .NET offer a powerful GUI platform out of the box, and Python seemingly didn&#8217;t have anything similar. After looking into the OpenERP/OpenObject project (which looks pretty neat), I realized their complex GUI was written in Python. After [...]]]></description>
			<content:encoded><![CDATA[<p>From what I&#8217;ve seen of Python, I relegated it to CUI and backend type tasks, since C# and .NET offer a powerful GUI platform out of the box, and Python seemingly didn&#8217;t have anything similar.</p>
<p>After looking into the <a href="http://openerp.com/" target="_blank">OpenERP</a>/<a href="http://openobject.com/" target="_blank">OpenObject</a> project (which looks pretty neat), I realized their complex GUI was written in Python. After a little investigation, I figured out they were using <a href="http://www.pygtk.org/" target="_blank">PyGTK</a> (Python bindings for the GTK widget toolkit) and <a href="http://glade.gnome.org/" target="_blank">Glade</a> (a GUI builder).</p>
<p>Combining Python, PyGTK and Glade seems to lead to a workable solution for creating GUIs for Python applications. There&#8217;s a nice tutorial on how all these pieces fit together <a href="http://tadeboro.blogspot.com/2009/04/gtkdialog-tutorial-part-1.html" target="_blank">here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://microbits.info/index.php/2010/06/python-for-windows-applications/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>EAccelerator does not play nice with multiple workers</title>
		<link>http://microbits.info/index.php/2010/06/eaccelerator-does-not-play-nice-with-multiple-workers</link>
		<comments>http://microbits.info/index.php/2010/06/eaccelerator-does-not-play-nice-with-multiple-workers#comments</comments>
		<pubDate>Sun, 20 Jun 2010 21:47:56 +0000</pubDate>
		<dc:creator>recon</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://microbits.info/?p=578</guid>
		<description><![CDATA[After a few PHP access violations, I&#8217;m pretty sure EAccelerator does not work properly with multiple IIS worker processes. I should really move to lighttpd or nginx one of these days&#8230;]]></description>
			<content:encoded><![CDATA[<p>After a few PHP access violations, I&#8217;m pretty sure EAccelerator does not work properly with multiple IIS worker processes.</p>
<p>I should really move to lighttpd or nginx one of these days&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://microbits.info/index.php/2010/06/eaccelerator-does-not-play-nice-with-multiple-workers/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cygwin .bash_profile</title>
		<link>http://microbits.info/index.php/2010/05/cygwin-bash_profile</link>
		<comments>http://microbits.info/index.php/2010/05/cygwin-bash_profile#comments</comments>
		<pubDate>Fri, 21 May 2010 21:53:56 +0000</pubDate>
		<dc:creator>recon</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[cygwin]]></category>

		<guid isPermaLink="false">http://microbits.info/?p=515</guid>
		<description><![CDATA[This file will put a more standard Linux prompt on your Cygwin login shell (file should be ~/.bash_profile): #!/bin/bash # Custom prompt PS1='\[\e]0;\w\a\]\n\[\e[32m\]\u@\h:\[\e[33m\]\w\[\e[0m\]$ ']]></description>
			<content:encoded><![CDATA[<p>This file will put a more standard Linux prompt on your Cygwin login shell (file should be ~/.bash_profile):</p>
<pre class="brush:bash">
#!/bin/bash

# Custom prompt
PS1='\[\e]0;\w\a\]\n\[\e[32m\]\u@\h:\[\e[33m\]\w\[\e[0m\]$ '
</pre>
]]></content:encoded>
			<wfw:commentRss>http://microbits.info/index.php/2010/05/cygwin-bash_profile/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Fixing box drawing in Midnight Commander</title>
		<link>http://microbits.info/index.php/2010/05/fixing-box-drawing-in-midnight-commander</link>
		<comments>http://microbits.info/index.php/2010/05/fixing-box-drawing-in-midnight-commander#comments</comments>
		<pubDate>Fri, 21 May 2010 21:38:08 +0000</pubDate>
		<dc:creator>recon</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[cygwin]]></category>

		<guid isPermaLink="false">http://microbits.info/?p=507</guid>
		<description><![CDATA[Launching MC in rxvt showed all the box drawing characters replaced with strange looking accented characters&#8230; What? Turns out none of the Windows fonts support box drawing characters (from what I&#8217;ve read, it seems that they don&#8217;t have the characters in the expected positions in the character table)&#8230; The easiest solution is to tell MC [...]]]></description>
			<content:encoded><![CDATA[<p>Launching MC in rxvt showed all the box drawing characters replaced with strange looking accented characters&#8230; What?</p>
<p>Turns out none of the Windows fonts support box drawing characters (from what I&#8217;ve read, it seems that they don&#8217;t have the characters in the expected positions in the character table)&#8230;</p>
<p>The easiest solution is to tell MC to use non box drawing characters to draw boxes with the -a switch. The other solution is to get the <a class="downloadlink" href="http://microbits.info/wp-content/plugins/download-monitor/download.php?id=11" title=" downloaded 254 times" >Lucida ConsoleP Font. (254)</a>, and set rxvt to use it (as suggested by <a href="http://blogs.linux.ie/fuzzbucket/2008/02/23/cygwin/" target="_blank">this guide</a>).</p>
<p>How do you set the fonts? You could set them with command line switches, or use a .XResources file in your Cygwin home directory (base file from <a href="http://c2.com/cgi/wiki?BetterCygwinTerminal" target="_blank">here</a>)):</p>
<pre class="brush:plain">rxvt.font:             Lucida Console-14
rxvt.boldFont:         Lucida Console-14
rxvt.scrollBar:        True
rxvt.visualBell:       True
rxvt.loginShell:       True
rxvt.background:       Black
rxvt.foreground:       White
rxvt.saveLines:        3000
rxvt.cursorColor:      Green
rxvt.scrollBar_right:  True
</pre>
<p>If you want to use the box drawing font (you have to install it on the system first):</p>
<pre class="brush:plain">rxvt.font:             Lucida ConsoleP-14
rxvt.boldFont:         Lucida ConsoleP-14
rxvt.scrollBar:        True
rxvt.visualBell:       True
rxvt.loginShell:       True
rxvt.background:       Black
rxvt.foreground:       White
rxvt.saveLines:        3000
rxvt.cursorColor:      Green
rxvt.scrollBar_right:  True
</pre>
<p>If you use the standard DOS terminal for Cygwin, you may want to change the code page setting in the batch file (original file is in <a href="http://microbits.info/index.php/2010/05/fun-with-portable-cygwin" target="_blank">this post</a>) to:</p>
<pre class="brush:plain">set CYGWIN=codepage:oem
</pre>
]]></content:encoded>
			<wfw:commentRss>http://microbits.info/index.php/2010/05/fixing-box-drawing-in-midnight-commander/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Fun with Portable Cygwin</title>
		<link>http://microbits.info/index.php/2010/05/fun-with-portable-cygwin</link>
		<comments>http://microbits.info/index.php/2010/05/fun-with-portable-cygwin#comments</comments>
		<pubDate>Thu, 20 May 2010 02:43:01 +0000</pubDate>
		<dc:creator>recon</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[cygwin]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[portableapps]]></category>

		<guid isPermaLink="false">http://microbits.info/?p=495</guid>
		<description><![CDATA[UPDATE: For solutions to box drawing issues, see this post. I just spent a good 30 minutes trying to figure out why the portable Cygwin installation (I haven&#8217;t really tested the portable part yet) I was working on refused to set my custom prompt automatically. Turns out that bash doesn&#8217;t look for .bashrc for login [...]]]></description>
			<content:encoded><![CDATA[<p><strong>UPDATE: For solutions to box drawing issues, see <a href="http://microbits.info/index.php/2010/05/fixing-box-drawing-in-midnight-commander" target="_blank">this post</a>.</strong></p>
<p>I just spent a good 30 minutes trying to figure out why the portable Cygwin installation (I haven&#8217;t really tested the portable part yet) I was working on refused to set my custom prompt automatically.</p>
<p>Turns out that bash doesn&#8217;t look for .bashrc for login shells, but instead looks for .bash_profile, which is what I&#8217;m used to using. For more info, see <a href="http://hacktux.com/bash/bashrc/bash_profile" target="_blank">this nice page</a>.</p>
<p>As far as making Cygwin itself portable, it seems to be as simple as <a href="http://blogs.linux.ie/fuzzbucket/2008/02/23/cygwin/" target="_blank">this article suggests</a>, however, there are some invalid and possibly unneeded (still worked when I removed them) commands in the batch files.</p>
<p>Here&#8217;s the batch file I use to start rxvt (I fixed some invalid options and removed some stuff):</p>
<pre class="brush:text&quot;">@echo off

for /F %%A in ('cd') do set WD=%%A
set path=%WD%bin;%WD%usr\X11R6\bin;%path%
set SHELL=/bin/bash
set CYGWIN=codepage:437
set HOME=/home/user

:: Custom font for box drawing issues (not used atm)
:: bin\run rxvt -sl 1500 -bg black -fg gray -sr -fn 'Lucida ConsoleP-13' -tn rxvt-cygwin-native -e /bin/bash --login -i

:: Normal font
bin\run rxvt -sl 1500 -bg black -fg gray -sr -tn rxvt-cygwin-native -e /bin/bash --login -i
</pre>
]]></content:encoded>
			<wfw:commentRss>http://microbits.info/index.php/2010/05/fun-with-portable-cygwin/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Source Engine Servers and Network Protocols &#8211; Security</title>
		<link>http://microbits.info/index.php/2010/01/source-engine-servers-and-network-protocols-security</link>
		<comments>http://microbits.info/index.php/2010/01/source-engine-servers-and-network-protocols-security#comments</comments>
		<pubDate>Fri, 22 Jan 2010 01:45:00 +0000</pubDate>
		<dc:creator>recon</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[gaming]]></category>
		<category><![CDATA[source engine]]></category>
		<category><![CDATA[valve]]></category>

		<guid isPermaLink="false">http://microbits.info/?p=463</guid>
		<description><![CDATA[As an administrator of several Source based game servers, I&#8217;ve dealt with various known security vulnerabilities that Valve hasn&#8217;t bothered to fix. Some of the most common include client side console commands, that if run once, or spammed (which the server will allow), will cause a degradation (massive lag) or denial of service (you guessed [...]]]></description>
			<content:encoded><![CDATA[<p>As an administrator of several Source based game servers, I&#8217;ve dealt with various known security vulnerabilities that Valve hasn&#8217;t bothered to fix. Some of the most common include client side console commands, that if run once, or spammed (which the server will allow), will cause a degradation (massive lag) or denial of service (you guessed it, the server will crash). These really aren&#8217;t all that bad, since they are well known, server plugins are available to block the commands.</p>
<p>The most troubling incident I&#8217;ve dealt with involved an attacker who exploited a security vulnerability in Valve&#8217;s server query protocol, which caused a serious degradation of service condition. I couldn&#8217;t simply block all the query packets, since legitimate clients needed to be able to query servers. To further complicate matters, the attacker was also spoofing IP headers, which ruled out the possibility of a simple firewall rule.</p>
<p>This particular vulnerability was not really bad design per say (although it was poorly designed), but more a really poor implementation. Here are the details:<br />
<span id="more-463"></span><br />
When a client wishes to find out basic information about a server (player counts, game type, game version, etc), they send a packet to the server requesting the information. The server then locates all this information, creates a packet and replies.</p>
<p>Normally, the query protocol works perfectly, without any performance issues. However, the code that generates the replies is so poorly written, that a large number of query packets will generate lag spikes on the server, thus making the server unplayable (degradation of service). Did Valve require a handshake / challenge before replying with this expensive to generate packet? Nope.</p>
<p>To resolve the attack, I wrote a server plugin that hooks the Winsock recvfrom call, and replies to query packets (it generates the replies itself) from a high performance cache (it returns SOCKET_ERROR to the server so it doesn&#8217;t try to reply).</p>
<p>With this cache installed, the server works flawlessly. This makes me wonder, how could Valve have written such inefficient code, and having written it, consider it ready for production.</p>
<p>I&#8217;d like to take a minute here and remind everyone this is just one of many known (and inexplicably, not yet patched) vulnerabilities (in game and network based) in the Source engine.</p>
]]></content:encoded>
			<wfw:commentRss>http://microbits.info/index.php/2010/01/source-engine-servers-and-network-protocols-security/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>TCP server security &#8211; LINQ and C#</title>
		<link>http://microbits.info/index.php/2010/01/tcp-server-security-linq-and-c</link>
		<comments>http://microbits.info/index.php/2010/01/tcp-server-security-linq-and-c#comments</comments>
		<pubDate>Thu, 21 Jan 2010 21:59:01 +0000</pubDate>
		<dc:creator>recon</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[.net]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[linq]]></category>

		<guid isPermaLink="false">http://microbits.info/?p=449</guid>
		<description><![CDATA[I&#8217;m currently working on a TCP client/server system, and I wanted to prevent clients from DoSing the server. One way to do that is by restricting clients to a certain number of connections in a given time period. Since the code is designed to prevent a DoS condition, it must be extremely fast and efficient [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m currently working on a TCP client/server system, and I wanted to prevent clients from DoSing the server.</p>
<p>One way to do that is by restricting clients to a certain number of connections in a given time period. Since the code is designed to prevent a DoS condition, it must be extremely fast and efficient because it may be run thousands of times per minute (during a DoS attack for example).</p>
<p>I designed the connection limit system around a collection of connection records, a prune timer, and a test when the server accepts a client connection.</p>
<p>Since I needed to check two variables (timestamp and ip) in each connection record to determine the connection count for a given IP address in a given time period, I decided to use LINQ, which worked nicely:</p>
<pre class="brush:c-sharp">// Get this client's connection count
int connCount = (from conn in _connectionList
                 where conn.Ip == clientIp &amp;&amp;
                 conn.Timestamp &gt;
                   DateTime.Now.AddMinutes(-howFarBackInMinutesToCheck)
                 select conn.Ip).Count();
</pre>
<p>The other query I needed was for pruning the connection list:</p>
<pre class="brush:c-sharp"> // Get the connections to prune
var connQuery = from conn in _connections
                where conn.Timestamp &lt;
                  DateTime.Now.AddMinutes(-howFarBackInMinutesToCheck)
                select conn;
</pre>
<p>After checking the number of records to prune was greater than zero (connQuery.Count()), I pruned them by iterating through the query (LINQ queries implement IEnumerable).</p>
]]></content:encoded>
			<wfw:commentRss>http://microbits.info/index.php/2010/01/tcp-server-security-linq-and-c/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Packaging for distribution &#8211;  Common sense</title>
		<link>http://microbits.info/index.php/2010/01/packaging-for-distribution-common-sense</link>
		<comments>http://microbits.info/index.php/2010/01/packaging-for-distribution-common-sense#comments</comments>
		<pubDate>Sat, 09 Jan 2010 23:03:20 +0000</pubDate>
		<dc:creator>recon</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://microbits.info/?p=439</guid>
		<description><![CDATA[Most projects have multiple release packages whenever a new version comes out. Depending on the project, there are usually two, a binary (one for each platform) and a source distribution. Some projects don&#8217;t distribute binaries at all. What really got to me a few days ago was the MinGW project. This is a project that [...]]]></description>
			<content:encoded><![CDATA[<p>Most projects have multiple release packages whenever a new version comes out. Depending on the project, there are usually two, a binary (one for each platform) and a source distribution. Some projects don&#8217;t distribute binaries at all.</p>
<p>What really got to me a few days ago was the MinGW project. This is a project that is intended to be used exclusively on Windows. Yet, the developers deprecated the installer (these are standard for most Windows applications), and instead asked users to download 17 packages by hand (something that is a little much even on Linux).</p>
<p>Even worse, some of the packages were compressed not with zip, gzip, or bz2. They chose to use lzma, one of the least common and supported compression formats on Windows. Why would a developer pick the hardest format for a given operating system when packaging specifically for that system?</p>
<p>I try to avoid exotic archive formats like 7z (ironically, these use LZMA compression), but the compression offered by them is so incredible that I decided to post one publicly for the first time. Why? It reduced my 119 MB MinGW distribution to 14.5 MB, and MinGW is intended for use on Windows, so most people will be able to easily read the package with <a href="http://www.7-zip.org/" target="_blank">7-Zip</a>.</p>
<p>If I was packaging source code that could be used on Linux, I wouldn&#8217;t use 7z, since it&#8217;s harder to deal with on Linux. In my opinion, a zip file or tarball would be the most appropriate means of packaging.</p>
<p>Here&#8217;s my personal table for package format selection:</p>
<div id="_mcePaste" style="overflow: hidden; position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px;">ironically</div>
<p><span id="more-439"></span></p>
<table border="0">
<tbody>
<tr>
<th>Type of package</th>
<th>Target platform</th>
<th>Package Format</th>
</tr>
<tr>
<td>Binary</td>
<td>Win32</td>
<td>Installer (msi or exe), normal package (zip, 7z, tarball (gz or bz2))</td>
</tr>
<tr>
<td>Binary</td>
<td>Linux</td>
<td>Binaries are rarely distributed unless offered in a package repository or something similar.  Popular applications should be made available for major distributions.</td>
</tr>
<tr>
<td>Source</td>
<td>Win32</td>
<td>zip, 7z, tarball (gz or bz2)</td>
</tr>
<tr>
<td>Source</td>
<td>Linux</td>
<td>tarball (gz or bz2)</td>
</tr>
<tr>
<td>Source</td>
<td>Multi-platform</td>
<td>zip or tarball (gz or bz2)</td>
</tr>
</tbody>
</table>
]]></content:encoded>
			<wfw:commentRss>http://microbits.info/index.php/2010/01/packaging-for-distribution-common-sense/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MinGW</title>
		<link>http://microbits.info/index.php/2010/01/mingw</link>
		<comments>http://microbits.info/index.php/2010/01/mingw#comments</comments>
		<pubDate>Fri, 08 Jan 2010 06:47:59 +0000</pubDate>
		<dc:creator>recon</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[c++]]></category>
		<category><![CDATA[compiler]]></category>
		<category><![CDATA[mingw]]></category>

		<guid isPermaLink="false">http://microbits.info/?p=434</guid>
		<description><![CDATA[After needing a copy of MinGW to compile some C code, I was somewhat annoyed to find that their all in one installer is now considered &#8220;deprecated&#8221;. That meant I had to download and extract 15 packages manually (two of them were even compressed as .lzma). Why anyone would compress a package designed for Windows [...]]]></description>
			<content:encoded><![CDATA[<p>After needing a copy of MinGW to compile some C code, I was somewhat annoyed to find that their all in one installer is now considered &#8220;deprecated&#8221;. That meant I had to download and extract 15 packages manually (two of them were even compressed as .lzma).</p>
<p>Why anyone would compress a package designed for Windows in .lzma format? The only way to extract it is with a command line sdk tool. Even on Linux, distributing archives in .lzma format is a little strange.</p>
<p>Anyhow, to save everyone the trouble, here&#8217;s a package (includes C, C++ and all necessary tools) in .7z format (which can be extracted by <a href="http://www.7-zip.org/" target="_blank">7-Zip</a>, the best file archiver for Windows) -&gt; <a class="downloadlink" href="http://microbits.info/wp-content/plugins/download-monitor/download.php?id=10" title="Version1.0.0.0 downloaded 202 times" >MinGW Compiler Package (202)</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://microbits.info/index.php/2010/01/mingw/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>More on eAccelerator</title>
		<link>http://microbits.info/index.php/2009/12/more-on-eaccelerator</link>
		<comments>http://microbits.info/index.php/2009/12/more-on-eaccelerator#comments</comments>
		<pubDate>Sun, 27 Dec 2009 22:27:04 +0000</pubDate>
		<dc:creator>recon</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[eaccelerator]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://microbits.info/?p=429</guid>
		<description><![CDATA[Now that I&#8217;m correctly loading the extension (zend_extension_ts), eAccelerator is running smoothly. I found something interesting in the event log yesterday: PHP Warning: [eAccelerator] This build of "eAccelerator" was compiled for PHP version 5.2.9. Rebuild it for your PHP version (5.2.9-2) or download precompiled binaries. Now that error message makes perfect sense. The reason I [...]]]></description>
			<content:encoded><![CDATA[<p>Now that I&#8217;m correctly loading the extension (zend_extension_ts), eAccelerator is running smoothly.</p>
<p>I found something interesting in the event log yesterday:</p>
<pre class="brush: plain">
PHP Warning:  [eAccelerator] This build of "eAccelerator" was compiled for PHP version 5.2.9. Rebuild it for your PHP version (5.2.9-2) or download precompiled binaries.
</pre>
<p>Now that error message makes perfect sense. The reason I didn&#8217;t see it the first time around is that PHP logged two messages separately at the same time. If I was reading a flat file log, I would&#8217;ve noticed it immediately.</p>
]]></content:encoded>
			<wfw:commentRss>http://microbits.info/index.php/2009/12/more-on-eaccelerator/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic Page Served (once) in 0.752 seconds -->

