<?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 &#187; D</title>
	<atom:link href="http://blog.thecybershadow.net/tag/d/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>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>Announcing: RABCDAsm</title>
		<link>http://blog.thecybershadow.net/2010/05/05/announcing-rabcdasm/</link>
		<comments>http://blog.thecybershadow.net/2010/05/05/announcing-rabcdasm/#comments</comments>
		<pubDate>Wed, 05 May 2010 07:47:49 +0000</pubDate>
		<dc:creator>CyberShadow</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[D]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[open-source]]></category>
		<category><![CDATA[reverse engineering]]></category>
		<category><![CDATA[SWF]]></category>

		<guid isPermaLink="false">http://blog.thecybershadow.net/?p=187</guid>
		<description><![CDATA[RABCDAsm (Robust ABC (ActionScript Bytecode) [Dis-]Assembler) is a collection of utilities including an ActionScript 3 assembler/disassembler, and a few tools to manipulate SWF files. This package was created due to lack of similar software out there. Particularly, I needed an utility which would allow me to edit ActionScript 3 bytecode (used in Flash 9 and [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://github.com/CyberShadow/RABCDAsm">RABCDAsm</a> (<b>R</b>obust <b>ABC</b> (<b>A</b>ctionScript <b>B</b>yte<b>c</b>ode) [<b>D</b>is-]<b>As</b>se<b>m</b>bler) is a collection of utilities including an ActionScript 3 assembler/disassembler, and a few tools to manipulate SWF files.</p>
<p>This package was created due to lack of similar software out there.<br />
Particularly, I needed an utility which would allow me to edit ActionScript 3 bytecode (used in Flash 9 and newer) with the following properties:</p>
<ul>
<li>Speed. Less waiting means more productivity. <tt>rabcasm</tt> can assemble large projects (&gt;200000 LOC) in under a second on modern machines.</li>
<li>Comfortably-editable output. Each class is decompiled to its own file, with files arranged in subdirectories representing the package hierarchy. Class files are <tt>#include</tt>d from the main file.</li>
<li>Most importantly &#8211; robustness! If the Adobe AVM can load and run the file, then it must be editable &#8211; no matter if the file is obfuscated or otherwise mutilated to prevent reverse-engineering. RABCDAsm achieves this by using a textual representation closer to the ABC file format, rather than to what an ActionScript compiler would generate.</li>
</ul>
<p>Read more on the <a href="http://github.com/CyberShadow/RABCDAsm#readme">project&#8217;s homepage on GitHub</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.thecybershadow.net/2010/05/05/announcing-rabcdasm/feed/</wfw:commentRss>
		<slash:comments>33</slash:comments>
		</item>
		<item>
		<title>TimeTracker &#8211; minimalistic time-tracking</title>
		<link>http://blog.thecybershadow.net/2010/04/21/timetracker-minimalistic-time-tracking/</link>
		<comments>http://blog.thecybershadow.net/2010/04/21/timetracker-minimalistic-time-tracking/#comments</comments>
		<pubDate>Wed, 21 Apr 2010 02:03:21 +0000</pubDate>
		<dc:creator>CyberShadow</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[D]]></category>
		<category><![CDATA[open-source]]></category>
		<category><![CDATA[tools]]></category>

		<guid isPermaLink="false">http://blog.thecybershadow.net/?p=158</guid>
		<description><![CDATA[Starting with a new hourly-paid freelancing job, I needed some software to track the amount of time I spend working. I tried a few time tracking programs out there, but they all turned out to be bloated and clumsy (not to mention not open-source), so I decided to roll my own. No fancy interface, no [...]]]></description>
			<content:encoded><![CDATA[<p>Starting with a new hourly-paid freelancing job, I needed some software to track the amount of time I spend working. I tried a few <a href="http://en.wikipedia.org/wiki/Comparison_of_time_tracking_software">time tracking programs</a> out there, but they all turned out to be bloated and clumsy (not to mention not open-source), so I decided to roll my own.<span id="more-158"></span></p>
<p><a href="http://blog.thecybershadow.net/wp-content/uploads/2010/04/result2.png"><img src="http://blog.thecybershadow.net/wp-content/uploads/2010/04/result2.png" alt="" title="result" width="304" height="135" class="aligncenter size-full wp-image-176" /></a></p>
<p>No fancy interface, no useless options. Click the icon to start/stop work. Icon files are purposefully not embedded for ease of customization. Work periods are logged to a text file with a very simple format. You can set the active task using the right-click menu, or a command-line utility. The executables are incredibly tiny, just a few kilobytes (except the report generator, which is written in D).</p>
<p>It will generate reports which look like this:</p>
<p><a href="http://blog.thecybershadow.net/wp-content/uploads/2010/04/result1.png"><img src="http://blog.thecybershadow.net/wp-content/uploads/2010/04/result_s.png" alt="" title="result_s" width="419" height="315" class="aligncenter size-full wp-image-166" /></a></p>
<p><a href="http://github.com/CyberShadow/TimeTracker">Source</a>, <a href="http://github.com/downloads/CyberShadow/TimeTracker/TimeTracker.zip">download</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.thecybershadow.net/2010/04/21/timetracker-minimalistic-time-tracking/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>ColorCalc &#8211; command-line calculator for colors</title>
		<link>http://blog.thecybershadow.net/2010/04/04/colorcalc-command-line-calculator-for-colors/</link>
		<comments>http://blog.thecybershadow.net/2010/04/04/colorcalc-command-line-calculator-for-colors/#comments</comments>
		<pubDate>Sun, 04 Apr 2010 12:46:28 +0000</pubDate>
		<dc:creator>CyberShadow</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[D]]></category>
		<category><![CDATA[open-source]]></category>
		<category><![CDATA[tools]]></category>
		<category><![CDATA[web design]]></category>

		<guid isPermaLink="false">http://blog.thecybershadow.net/?p=135</guid>
		<description><![CDATA[If you&#8217;re one of the few crazies like me who prefer doing web development using command-line tools, you might appreciate this simple command-line calculator which can operate on RGB colors. It supports the 4 basic arithmetic operations and grouping using parens. Examples: C:\> colorcalc FFFFFF / 2808080 (0.5) You can use scalar values, as well. [...]]]></description>
			<content:encoded><![CDATA[<p>If you&#8217;re one of the few crazies like me who prefer doing web development using command-line tools, you might appreciate this simple command-line calculator which can operate on RGB colors. It supports the 4 basic arithmetic operations and grouping using parens. <span id="more-135"></span> Examples:</p>
<p><code>C:\> colorcalc FFFFFF / 2<br/>808080 (0.5)</code><br />
You can use scalar values, as well.</p>
<p><code>C:\> colorcalc 808080<br/>808080 (0.501961)</code><br />
Since 0 is #000000 and 1 is #FFFFFF, 0.5 is between #7F7F7F and #808080.</p>
<p><code>C:\> colorcalc 808080 * 808080<br/>404040 (0.251965)</code><br />
Vector-ish multiplication &#8211; approximative equivalent of 0.5 * 0.5.</p>
<p><code>C:\> colorcalc 1-FFCC00<br/>0033FF</code><br />
Get the negative of a color.</p>
<p><code>C:\> colorcalc (FFCC00 + CCDDFF) / 2<br/>E6D580</code><br />
Calculate the mean value of two colors.</p>
<p>etc.</p>
<p><a href="http://github.com/CyberShadow/ColorCalc">Source</a>, <a href="http://github.com/downloads/CyberShadow/ColorCalc/colorcalc.exe">download</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.thecybershadow.net/2010/04/04/colorcalc-command-line-calculator-for-colors/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

