<?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>CyberShadow’s blog</title>
	<atom:link href="http://blog.thecybershadow.net/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.thecybershadow.net</link>
	<description>Code and miscellanea</description>
	<lastBuildDate>Wed, 05 Oct 2011 15:01:59 +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>Fixing DirectMusic on some 64-bit Windows versions</title>
		<link>http://blog.thecybershadow.net/2011/07/14/fixing-directmusic-on-some-64-bit-windows-versions/</link>
		<comments>http://blog.thecybershadow.net/2011/07/14/fixing-directmusic-on-some-64-bit-windows-versions/#comments</comments>
		<pubDate>Thu, 14 Jul 2011 04:41:42 +0000</pubDate>
		<dc:creator>CyberShadow</dc:creator>
				<category><![CDATA[Random]]></category>
		<category><![CDATA[DirectX]]></category>

		<guid isPermaLink="false">http://blog.thecybershadow.net/?p=344</guid>
		<description><![CDATA[If you&#8217;re getting error messages such as &#8220;No sound device detected. Sounds might not play.&#8221; or &#8220;Failed to create Direct Music Performance.&#8221; when running Game Maker games, the following may help you. Here&#8217;s what I did to fix them on my system: Download the DirectX redistributable Unpack it Unpack dxnt.cab In dmusic.inf, search and replace [...]]]></description>
			<content:encoded><![CDATA[<p>If you&#8217;re getting error messages such as &#8220;No sound device detected. Sounds might not play.&#8221; or &#8220;Failed to create Direct Music Performance.&#8221; when running Game Maker games, the following may help you. Here&#8217;s what I did to fix them on my system:</p>
<ol>
<li>Download the <a href="http://www.microsoft.com/download/en/details.aspx?id=9033">DirectX redistributable</a>
<li>Unpack it
<li>Unpack <tt>dxnt.cab</tt>
<li>In <tt>dmusic.inf</tt>, search and replace &#8220;<tt>HKCR,</tt>&#8221; with &#8220;<tt>HKCR,Wow6432Node\</tt>&#8221;
<li>Install the edited <tt>dmusic.inf</tt> (from the right-click menu)
<li>Copy missing DLLs (<tt>dm*.dll</tt>) to <tt>%WINDIR%/SysWOW64</tt>.
</ol>
<p>That&#8217;s it! The same method could work for other DirectX components as well.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.thecybershadow.net/2011/07/14/fixing-directmusic-on-some-64-bit-windows-versions/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Referrer spam</title>
		<link>http://blog.thecybershadow.net/2011/02/04/referrer-spam/</link>
		<comments>http://blog.thecybershadow.net/2011/02/04/referrer-spam/#comments</comments>
		<pubDate>Fri, 04 Feb 2011 09:41:16 +0000</pubDate>
		<dc:creator>CyberShadow</dc:creator>
				<category><![CDATA[Website]]></category>
		<category><![CDATA[HTTP]]></category>

		<guid isPermaLink="false">http://blog.thecybershadow.net/?p=325</guid>
		<description><![CDATA[I got tired of pesky referrer spambots junking up my logs, so I decided to find a way to get rid of them. Turns out, almost all referrer spam on my blog is generated with a small number of User-Agents: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; Media Center PC 6.0; InfoPath.2; [...]]]></description>
			<content:encoded><![CDATA[<p>I got tired of pesky <a href="http://en.wikipedia.org/wiki/Referrer_spam">referrer spam</a>bots junking up my logs, so I decided to find a way to get rid of them. Turns out, almost all referrer spam on my blog is generated with a small number of User-Agents:</p>
<pre>Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; Media Center PC 6.0; InfoPath.2; MS-RTC LM 8<span>)</span>
Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3 (.NET CLR 3.5.30729)
Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.2 (KHTML, like Gecko) Chrome/4.0.221.7 Safari/532.2
Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3
Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; en) Opera 8.50
Mozilla/5.0 (Windows; U; Windows NT 6.1; en-GB; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3
Opera/9.64(Windows NT 5.1; U; en) Presto/2.1.1
Mozilla/5.0 (X11; U; Linux i686; it-IT; rv:1.9.0.2) Gecko/2008092313 Ubuntu/9.25 (jaunty) Firefox/3.8
Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.14) Gecko/2009082707 Firefox/3.0.14 (.NET CLR 3.5.30729)</pre>
<p>All of these refer to outdated browsers, very rare configurations (the ones with non-English language codes), and genuinely fake UA strings.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.thecybershadow.net/2011/02/04/referrer-spam/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Programmatically print SWF</title>
		<link>http://blog.thecybershadow.net/2011/01/17/programmatically-print-swf/</link>
		<comments>http://blog.thecybershadow.net/2011/01/17/programmatically-print-swf/#comments</comments>
		<pubDate>Mon, 17 Jan 2011 03:45:47 +0000</pubDate>
		<dc:creator>CyberShadow</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[Flash]]></category>

		<guid isPermaLink="false">http://blog.thecybershadow.net/?p=313</guid>
		<description><![CDATA[I was looking for a way to programmatically print a SWF file. The stand-alone Flash player has an option to print a SWF, however there is no shell action registered for it. After looking around a bit, I found that probably the easiest way is to use the ActionScript PrintJob API:]]></description>
			<content:encoded><![CDATA[<p>I <a href="http://stackoverflow.com/questions/4532253/print-swf-programmatically">was looking</a> for a way to programmatically print a SWF file. The stand-alone Flash player has an option to print a SWF, however there is no shell action registered for it.</p>
<p>After looking around a bit, I found that probably the easiest way is to use the ActionScript <a href="http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/flash/printing/PrintJob.html">PrintJob</a> API:<span id="more-313"></span></p>
<pre class="brush: actionscript3; title: ; notranslate">
package
{
	import flash.display.Loader;
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.net.URLRequest;
	import flash.printing.PrintJob;

	public class Printer extends Sprite
	{
		private var loader:Loader;

		public function Printer()
		{
			loader = new Loader();
			loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoaded);
			loader.load(new URLRequest(&quot;content.swf&quot;));
		}

		public function onLoaded(e:Event):void
		{
			var pj:PrintJob = new PrintJob();
			if(pj.start()) {
				var sprite:Sprite = new Sprite();
				sprite.addChild(loader);
				pj.addPage(sprite);
				pj.send();
			}
		}
	}
}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://blog.thecybershadow.net/2011/01/17/programmatically-print-swf/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Wolfram&#124;Alpha IRC script</title>
		<link>http://blog.thecybershadow.net/2011/01/02/wolframalpha-irc-script/</link>
		<comments>http://blog.thecybershadow.net/2011/01/02/wolframalpha-irc-script/#comments</comments>
		<pubDate>Sun, 02 Jan 2011 12:54:58 +0000</pubDate>
		<dc:creator>CyberShadow</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Eggdrop]]></category>
		<category><![CDATA[IRC]]></category>
		<category><![CDATA[Perl]]></category>
		<category><![CDATA[Wolfram|Alpha]]></category>

		<guid isPermaLink="false">http://blog.thecybershadow.net/?p=302</guid>
		<description><![CDATA[If you&#8217;re hanging out on the same GameSurge channel(s) as me, you probably know about Byte&#8216;s tehh6x bot. I&#8217;ve recently added a Wolfram&#124;Alpha command to it, allowing it to query W&#124;A and return the results in a somewhat IRC-compatible format. Here&#8217;s the code:]]></description>
			<content:encoded><![CDATA[<p>If you&#8217;re hanging out on <a href="http://worms2d.info/Worms_on_GameSurge">the same GameSurge channel(s) as me</a>, you probably know about <a href="http://simon.arlott.org/">Byte</a>&#8216;s tehh6x bot. I&#8217;ve recently added a <a href="http://www.wolframalpha.com/">Wolfram|Alpha</a> command to it, allowing it to query W|A and return the results in a somewhat IRC-compatible format. Here&#8217;s the code:<br />
<span id="more-302"></span></p>
<pre class="brush: perl; title: ; notranslate">#!/usr/bin/perl

use strict;
use warnings;

use URI::Escape;
use LWP::UserAgent;
use HTML::Entities;

sub uhoh {
	print &quot;Timeout.\n&quot;;
	exit
}

my $query = &lt;STDIN&gt;;
$query =~ s/\n//;

$SIG{ALRM} = \&amp;uhoh;
alarm(10);

my $url = 'http://www.wolframalpha.com/input/?i=' .
    uri_escape( $query, &quot;^A-Za-z0-9&quot; );

my $ua = LWP::UserAgent-&gt;new( agent =&gt; 'eggdrop/1.6' );
my $response = $ua-&gt;get( $url );

$response-&gt;is_success or
    die &quot;$url: &quot;, $response-&gt;status_line;

my $content = $response-&gt;content;

my @captions = $content =~ m|&lt;h2&gt;(.*?)&lt;/h2&gt;|g;
my @results  = $content =~ m|alt=&quot;(.*?)&quot;|g;

if ( scalar(@captions) ) {
	@results = map {
		$_ =~ /^link to \/input\/\?i=/ ? () : $_
	} @results[1..$#results];

	my @lines = map {
		my $result = $results[$_];
		if (length($result) &gt; 300) {
			while (length($result) &gt; 300 &amp;&amp; $result =~ /\\n/) {
				$result =~ s/^(.*)\\n.*$/$1/;
			}
			$result .= &quot;\\n(...)&quot;
		}
		(length($result)&gt;0 &amp;&amp; length($result)&lt;300) ?
			&quot;$captions[$_] $result\n&quot; : ()
	} 0..$#captions;
	#@lines = grep {!/\\n/} @lines; # skip multi-line pods
	if ( scalar(@lines) &gt; 1 ) {
		my $result = join(&quot;&quot;,@lines);
		$result = decode_entities($result);
		$result =~ s/ \| / - /g;
		$result =~ s/\\n/ | /g;
		$result =~ s/\\(['&quot;])/$1/g;
		$result =~ s/\((open|close) curly quote\)/'/g;
		$result =~ s/\((open|close) curly double quote\)/&quot;/g;
		print $result;
	} else {
		print &quot;$url\n&quot;;
	}
} else {
    print &quot;?\n&quot;;
}</pre>
]]></content:encoded>
			<wfw:commentRss>http://blog.thecybershadow.net/2011/01/02/wolframalpha-irc-script/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Wikipedia Watchlist RSS</title>
		<link>http://blog.thecybershadow.net/2011/01/02/wikipedia-watchlist-rss/</link>
		<comments>http://blog.thecybershadow.net/2011/01/02/wikipedia-watchlist-rss/#comments</comments>
		<pubDate>Sun, 02 Jan 2011 12:28:55 +0000</pubDate>
		<dc:creator>CyberShadow</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[RSS]]></category>
		<category><![CDATA[Wikipedia]]></category>

		<guid isPermaLink="false">http://blog.thecybershadow.net/?p=294</guid>
		<description><![CDATA[Wikipedia&#8217;s Watchlist has a RSS feed, which is a nice way to keep track changes on your watched articles. However, the RSS feed doesn&#8217;t seem to conform to the RSS standard, and confuses some feedreaders &#8211; notably, Opera M2. Here&#8217;s a simple PHP script, which you can place on your website, that&#8217;ll fix the RSS [...]]]></description>
			<content:encoded><![CDATA[<p>Wikipedia&#8217;s <a href="http://en.wikipedia.org/wiki/Special:Watchlist">Watchlist</a> has a RSS feed, which is a nice way to keep track changes on your watched articles. However, the RSS feed doesn&#8217;t seem to conform to the RSS standard, and confuses some feedreaders &#8211; notably, <a href="http://www.opera.com/mail/rss/">Opera M2</a>.</p>
<p>Here&#8217;s a simple PHP script, which you can place on your website, that&#8217;ll fix the RSS feed. You&#8217;ll need to give it the URL to your RSS feed (which you can get by subscribing to your <a href="http://en.wikipedia.org/wiki/Special:Watchlist">watchlist</a>), since it contains your secret API key.</p>
<pre class="brush: php; title: ; notranslate">&lt;?php
$rss_url = 'http://en.wikipedia.org/w/api.php'
	. '?action=feedwatchlist'
	. '&amp;allrev=allrev'
	. '&amp;hours=72'
	. '&amp;wlowner=YOUR_USERNAME_HERE'
	. '&amp;wltoken=YOUR_API_KEY_HERE'
	. '&amp;feedformat=rss';
$feed = `wget -q -O - '$rss_url'`;
$rows = explode(&quot;\n&quot;, $feed);
header('Content-type: application/rss+xml');
foreach ($rows as $row)
{
	if (strpos($row, '&lt;item&gt;')!==false)
		$alldata = '';
	if (strpos($row, '&lt;guid&gt;')!==false)
		continue;
	$alldata .= $row;
	if (strpos($row, '&lt;/item&gt;')!==false)
		$row = '&lt;guid isPermaLink=&quot;false&quot;&gt;'
			. md5($alldata)
			. &quot;&lt;/guid&gt;\n&quot;
			. $row;
	echo $row . &quot;\n&quot;;
}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://blog.thecybershadow.net/2011/01/02/wikipedia-watchlist-rss/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Color grep for Windows</title>
		<link>http://blog.thecybershadow.net/2010/09/12/color-grep-for-windows/</link>
		<comments>http://blog.thecybershadow.net/2010/09/12/color-grep-for-windows/#comments</comments>
		<pubDate>Sun, 12 Sep 2010 02:49:40 +0000</pubDate>
		<dc:creator>CyberShadow</dc:creator>
				<category><![CDATA[Random]]></category>
		<category><![CDATA[ack]]></category>
		<category><![CDATA[grep]]></category>
		<category><![CDATA[tools]]></category>

		<guid isPermaLink="false">http://blog.thecybershadow.net/?p=265</guid>
		<description><![CDATA[Looking for color grep for Windows? I was. I didn&#8217;t find exactly what I was looking for; instead, I found something better. ack is a tool like grep, designed for programmers with large trees of heterogeneous source code. ack doesn&#8217;t enable or output colors on Windows by default. To get it all working, do the [...]]]></description>
			<content:encoded><![CDATA[<p>Looking for color grep for Windows? I was. I didn&#8217;t find exactly what I was looking for; instead, I found something better.</p>
<blockquote><p><a href="http://betterthangrep.com/">ack</a> is a tool like grep, designed for programmers with large trees of heterogeneous source code.</p></blockquote>
<p><span id="more-265"></span><a href="http://blog.thecybershadow.net/wp-content/uploads/2010/09/result.png"><img src="http://blog.thecybershadow.net/wp-content/uploads/2010/09/result_s.png" alt="ack + FAR screenshot" title="ack + FAR screenshot" width="518" height="391" class="aligncenter size-full wp-image-268" /></a><br />
<strong>ack</strong> doesn&#8217;t enable or output colors on Windows by default. To get it all working, do the following:</p>
<ol>
<li>If you don&#8217;t have it yet, <a href="http://www.activestate.com/activeperl/downloads">get ActivePerl</a>.</li>
<li>Download the <a href="http://betterthangrep.com/ack-standalone">standalone version</a> of ack; save it with a <tt>.pl</tt> extension</li>
<li>Create a batch file somewhere under <tt>%PATH%</tt> named <tt><strong>ack.bat</strong></tt> which invokes perl with ack:
<pre class="brush: batch; light: true; title: ; notranslate">@C:\Perl\bin\perl.exe C:\Tools\ack-standalone.pl %*</pre>
<p>You should now be able to type <tt><b>ack</b> <i>arguments</i></tt> from anywhere, however this won&#8217;t get colors working right away. To do that:</li>
<li>Install the <a href="http://www.bribes.org/perl/wANSIConsole.html">Win32::Console::ANSI module</a> using <abbr title="Perl Package Manager">PPM</abbr> (you&#8217;ll need to add the repository).</li>
<li>In <tt>ack-standalone.pl</tt>, add this line after the other two <tt>use</tt> lines:
<pre class="brush: perl; light: true; title: ; notranslate">use Win32::Console::ANSI;</pre>
</li>
<li>Create a file named <tt>.ackrc</tt> in your user profile folder (usually C:\Documents and Settings\<i>Username</i>), with the contents:
<pre class="brush: plain; light: true; title: ; notranslate">--color
--color-match
bold red</pre>
<p>&#8220;<tt>bold red</tt>&#8221; (which actually means bright red) is my own preference; I think it&#8217;s nicer than the default &#8220;black on_yellow&#8221;, and the default color for grep (on *nix) as well.</li>
</ol>
<p>That&#8217;s it!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.thecybershadow.net/2010/09/12/color-grep-for-windows/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Worms Armageddon Devblog</title>
		<link>http://blog.thecybershadow.net/2010/07/28/worms-armageddon-devblog/</link>
		<comments>http://blog.thecybershadow.net/2010/07/28/worms-armageddon-devblog/#comments</comments>
		<pubDate>Wed, 28 Jul 2010 14:00:00 +0000</pubDate>
		<dc:creator>CyberShadow</dc:creator>
				<category><![CDATA[Website]]></category>
		<category><![CDATA[Worms Armageddon]]></category>

		<guid isPermaLink="false">http://blog.thecybershadow.net/?p=288</guid>
		<description><![CDATA[We&#8217;ve launched the Worms Armageddon Beta Update Develeopment Blog. Visit it to get the latest news about W:A development.]]></description>
			<content:encoded><![CDATA[<p>We&#8217;ve launched the <a href="http://blog.worms2d.info/">Worms Armageddon Beta Update Develeopment Blog</a>. Visit it to get the latest news about W:A development.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.thecybershadow.net/2010/07/28/worms-armageddon-devblog/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>data.d &#8211; unmanaged memory wrapper for D</title>
		<link>http://blog.thecybershadow.net/2010/07/15/data-d-unmanaged-memory-wrapper-for-d/</link>
		<comments>http://blog.thecybershadow.net/2010/07/15/data-d-unmanaged-memory-wrapper-for-d/#comments</comments>
		<pubDate>Thu, 15 Jul 2010 06:40:01 +0000</pubDate>
		<dc:creator>CyberShadow</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[D]]></category>
		<category><![CDATA[open-source]]></category>

		<guid isPermaLink="false">http://blog.thecybershadow.net/?p=260</guid>
		<description><![CDATA[I have written a module containing classes to manage raw data in external memory. It provides semantics similar to built-in void[] arrays, but has the following advantages: Faster allocation and deallocation, since memory is requested from the OS directly as whole pages Greatly reduced chance of memory leaks due to stray pointers Overall improved GC [...]]]></description>
			<content:encoded><![CDATA[<p>I have written a module containing classes to manage raw data in external memory. It provides semantics similar to built-in <tt>void[]</tt> arrays, but has the following advantages:</p>
<ul>
<li>Faster allocation and deallocation, since memory is requested from the OS directly as whole pages</li>
<li>Greatly reduced chance of memory leaks due to stray pointers</li>
<li>Overall improved GC performance due to reduced size of managed heap</li>
<li>Memory is immediately returned to the OS when data is deallocated</li>
</ul>
<p>Source and more info here: <a href="http://github.com/CyberShadow/data.d">http://github.com/CyberShadow/data.d</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.thecybershadow.net/2010/07/15/data-d-unmanaged-memory-wrapper-for-d/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Import Wikipedia page history to git</title>
		<link>http://blog.thecybershadow.net/2010/06/16/import-wikipedia-page-history-to-git/</link>
		<comments>http://blog.thecybershadow.net/2010/06/16/import-wikipedia-page-history-to-git/#comments</comments>
		<pubDate>Tue, 15 Jun 2010 23:52:23 +0000</pubDate>
		<dc:creator>CyberShadow</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[D]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[open-source]]></category>
		<category><![CDATA[tools]]></category>
		<category><![CDATA[Wikipedia]]></category>

		<guid isPermaLink="false">http://blog.thecybershadow.net/?p=249</guid>
		<description><![CDATA[I&#8217;ve written a small tool which downloads the history of a Wikipedia article, converts it and imports it into a new git repository. The main motivation behind writing it is being able to perform a per-line blame of the article&#8217;s history. I had tried levitation, but that tool seemed to be oriented towards large imports [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve written a small tool which downloads the history of a Wikipedia article, converts it and imports it into a new <a href="http://git-scm.com/">git</a> repository. The main motivation behind writing it is being able to perform a per-line blame of the article&#8217;s history. I had tried <a href="http://github.com/scy/levitation">levitation</a>, but that tool seemed to be oriented towards large imports (or it might just be buggy), as it attempted to create huge binary files and ran longer than my patience would allow when I gave it the history of just one article. Also, I wanted the tool to take care of the downloading and importing part &#8211; so I could be one command away from a git repository of any WP article.</p>
<p>The tool can be made faster (all the XML and string management stuff adds an overhead), but right now it&#8217;s fast enough for me. One thing that can be optimized is making it not load the entire input XML into memory &#8211; it&#8217;s possible to do the conversion by &#8220;streaming&#8221; the XML. <del datetime="2010-09-12T22:54:59+00:00">Another current limitation is that it&#8217;s currently hard-wired to the English Wikipedia.</del></p>
<p>Requires curl and (obviously) git. You&#8217;ll need a <a href="http://www.digitalmars.com/d/1.0/">D1</a> compiler to compile the code.</p>
<p>Get it here: <a href="http://github.com/CyberShadow/wp2git">http://github.com/CyberShadow/wp2git</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.thecybershadow.net/2010/06/16/import-wikipedia-page-history-to-git/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>GraphStudio fork</title>
		<link>http://blog.thecybershadow.net/2010/06/07/graphstudio-fork/</link>
		<comments>http://blog.thecybershadow.net/2010/06/07/graphstudio-fork/#comments</comments>
		<pubDate>Mon, 07 Jun 2010 12:10:57 +0000</pubDate>
		<dc:creator>CyberShadow</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[open-source]]></category>
		<category><![CDATA[tools]]></category>
		<category><![CDATA[video]]></category>

		<guid isPermaLink="false">http://blog.thecybershadow.net/?p=243</guid>
		<description><![CDATA[I have made a few improvements to GraphStudio, the open-source GraphEdit clone: The limit for text entry in certain combo boxes has been removed Basic XML graph saving support has been added (only filters and connections at the moment) Pins are now referred by their indexes in XML rather than by ambiguous names Added command-line [...]]]></description>
			<content:encoded><![CDATA[<p>I have made a few improvements to <a href="http://blog.monogram.sk/janos/tools/monogram-graphstudio/">GraphStudio</a>, the open-source <a href="http://en.wikipedia.org/wiki/GraphEdit">GraphEdit</a> clone:</p>
<ul>
<li>The limit for text entry in certain combo boxes has been removed</li>
<li>Basic XML graph saving support has been added (only filters and connections at the moment)</li>
<li>Pins are now referred by their indexes in XML rather than by ambiguous names</li>
<li>Added command-line /render parameter, which loads a graph, plays it and exits</li>
</ul>
<p>XML support and /render allow scripted generation and rendering of XML graph files.</p>
<p><a href="http://github.com/CyberShadow/graphstudio/">Source</a>, <a href="http://github.com/downloads/CyberShadow/graphstudio/graphstudio-534c11.7z">download</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.thecybershadow.net/2010/06/07/graphstudio-fork/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

