<?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/"
	xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule"
>
<channel>
	<title>G-Loaded Journal &#187; Service</title>
	<atom:link href="http://www.g-loaded.eu/tag/service/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.g-loaded.eu</link>
	<description>An open-source software and technology related journal</description>
	<lastBuildDate>Mon, 05 Dec 2011 19:55:24 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<creativeCommons:license>http://creativecommons.org/licenses/by-nc-sa/3.0/</creativeCommons:license>
		<item>
		<title>Caching Nameserver using dnsmasq</title>
		<link>http://www.g-loaded.eu/2010/09/18/caching-nameserver-using-dnsmasq/</link>
		<comments>http://www.g-loaded.eu/2010/09/18/caching-nameserver-using-dnsmasq/#comments</comments>
		<pubDate>Fri, 17 Sep 2010 21:44:25 +0000</pubDate>
		<dc:creator>George Notaras</dc:creator>
				<category><![CDATA[Computers]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Cache]]></category>
		<category><![CDATA[Desktop]]></category>
		<category><![CDATA[DNS]]></category>
		<category><![CDATA[HOWTO]]></category>
		<category><![CDATA[Networking]]></category>
		<category><![CDATA[Servers]]></category>
		<category><![CDATA[Service]]></category>
		<guid isPermaLink="false">http://www.g-loaded.eu/?p=1907</guid>
		<description><![CDATA[dnsmasq is a lightweight, open-source DNS forwarder and DHCP server. In this article we go through how to prepare the system in order to run dnsmasq and also how to configure the latter as a caching-only DNS server. A configuration file is also provided as a drop-in replacement for the default dnsmasq.conf that ships with [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.thekelleys.org.uk/dnsmasq/doc.html">dnsmasq</a> is a lightweight, open-source DNS forwarder and DHCP server. In this article we go through how to prepare the system in order to run <em>dnsmasq</em> and also how to configure the latter as a <strong>caching-only</strong> <abbr title="Domain Name System">DNS</abbr> server. A configuration file is also provided as a drop-in replacement for the default <code>dnsmasq.conf</code> that ships with your system. dnsmasq is available in most Linux distributions. This article was written while using CentOS, so it is safe to say that it also fully covers RHEL, Fedora and generally the whole Red Hat family of operating systems and possibly Novell&#8217;s SLES and OpenSUSE. Small modifications of the invoked commands may be needed for Debian, Ubuntu and other systems.<br />
<span id="more-1907"></span></p>
<h4>Is a caching nameserver really important?</h4>
<p>There is some controversy about the real benefits of using a caching name server in a system, either desktop or server. In this article we keep controversy out of the discussion and focus on the performance improvement the caching of DNS information can offer to a system while performing specific tasks. For instance, a caching nameserver allows a web browser to acquire DNS information from the local DNS cache, provided that this information has already been cached, without the need to access any public DNS servers, which results in faster web browsing. Similarly, in a server environment, services like spam filters often need to perform many DNS queries for the same hostnames. The latency of the communication with the remote nameserver may add up to the total time of email processing.</p>
<h4>BIND vs dnsmasq</h4>
<p><em>BIND</em> is the flagship of DNS servers with large deployments around the globe. I have used BIND for many years as  a <strong>caching nameserver</strong>, even on my desktop, until I realized it is overkill to use BIND this way. There are lighter solutions, even all-in-one software like <strong>dnsmasq</strong>, that seem to be more suitable for setting up local DNS caching.</p>
<h4>System preparation</h4>
<p>So, let&#8217;s get started with the system preparation before going into the details of the dnsmasq configuration.</p>
<p>First of all, we need to install dnsmasq:</p>
<pre class="console">yum install dnsmasq</pre>
<p>dnsmasq, when run as <code>root</code>, is designed to <em>drop privileges</em> and run as an unprivileged user. By default, this user is <code>nobody</code>. We use a dedicated system user to run dnsmasq.</p>
<p>Run the following commands as <code>root</code> to create such an unprivileged system user and group named <em>dnsmasq</em>:</p>
<pre class="console">
groupadd -r dnsmasq
useradd -r -g dnsmasq dnsmasq
</pre>
<p>The above should be enough.</p>
<h4>Configuration</h4>
<p>All dnsmasq configuration options go into <code>/etc/dnsmasq.conf</code>. Here we write this file from scratch, so if you need to keep a copy of the original that ships with your distribution, do so with:</p>
<pre class="console">
cp /etc/dnsmasq.conf /etc/dnsmasq.conf.orig
</pre>
<p>Now, let&#8217;s get started with adding our own dnsmasq configuration in <code>/etc/dnsmasq.conf</code>.</p>
<p>First of all, we set some options regarding the <strong>basic server operation</strong> like the interface and port on which it should bind, the unprivileged user that should run the service and a <abbr title="Process ID">PID</abbr> file:</p>
<pre class="codesnp">
listen-address=127.0.0.1
port=53
bind-interfaces
user=dnsmasq
group=dnsmasq
pid-file=/var/run/dnsmasq.pid
</pre>
<p>The <strong>bind-interfaces</strong> directive instructs dnsmasq to bind only to the network interface specified in the <strong>listen-address</strong> directive.</p>
<p>Next comes <strong>logging</strong>.</p>
<p>By default, dnsmasq sends its log messages to the <em>DAEMON</em> syslog facility (<em>LOCAL0</em> when operating in debug mode). We go with the defaults here, but keep in mind that a separate log file can be set as it is shown in the configuration snippet below (currently commented out):</p>
<pre class="codesnp">
#log-facility=/var/log/dnsmasq.log
#log-queries
</pre>
<p>Logging to file requires some extra configuration for proper log rotation. For more information, please read <a href="#LoggingToFile">Appendix II</a>.</p>
<p>Finally, we set the options that configure dnsmasq&#8217;s <strong>name resolution</strong> and <strong>caching</strong> operations.</p>
<p>The following directives prevent dnsmasq from forwarding plain names (without any dots) or addresses in the non-routed address space to the parent nameservers.</p>
<pre class="codesnp">
domain-needed
bogus-priv
</pre>
<p>The <strong>no-hosts</strong> directive also instructs dnsmasq not to read any hostnames from <code>/etc/hosts</code>. In most systems, <code>/etc/hosts</code> is queried before a DNS service is used by the system for name lookups. So, all plain name to private IP mappings should normally be added in <code>/etc/hosts</code>. If this is not what you want, then take a look at the <em>expand-hosts</em> and <em>domain</em> directives.</p>
<pre class="codesnp">
no-hosts
</pre>
<p>Set the maximum number of <strong>concurrent DNS queries</strong>. The default value is 150. Adjust to your needs.</p>
<pre class="codesnp">
dns-forward-max=150
</pre>
<p>Set the <strong>size</strong> of the dnsmasq cache. The default is to keep 150 hostnames. By setting the cache size to 0 disables the feature (this is not what we really want). Again, adjust this value according to your needs.</p>
<pre class="codesnp">
cache-size=1000
</pre>
<p>The following directive controls whether negative caching should be enabled or not. Negative caching allows dnsmasq to remember &#8220;<em>no such domain</em>&#8221; answers from the parent nameservers, so it does not query for the same non-existent hostnames again and again. This is probably useful for spam filters or MTA services. By default, negative caching is enabled. To disable, un-comment the following directive.</p>
<pre class="codesnp">
#no-negcache
</pre>
<p>The <strong>neg-ttl</strong> directive sets a default <abbr title="Time-To-Live">TTL</abbr> value to add to negative replies from the parent nameservers, in case these replies do not contain TTL information. If neg-ttl is not set and a negative reply from a parent DNS server does not contain TTL information, then dnsmasq will not cache the reply. Here we set the default TTL to 3600 seconds. Again, adjust to your specific needs.</p>
<pre class="codesnp">
neg-ttl=3600
</pre>
<p>Here we use a separate file where dnsmasq reads the IPs of the parent nameservers from. The syntax is the same as in <code>/etc/resolv.conf</code>. We do this to facilitate the manipulation of the parent nameservers that should be used by dnsmasq by using, for example, an external script. The filename we use here is <code>resolv.dnsmasq</code>, but this can be changed to your liking. We also set the <strong>no-poll</strong> directive here to prevent dnsmasq from polling the &#8216;resolv&#8217; file for changes.</p>
<pre class="codesnp">
resolv-file=/etc/resolv.dnsmasq
no-poll
</pre>
<p>A full configuration file containing all the above configuration, which can can be used as a drop-in replacement of the default <code>/etc/dnsmasq.conf</code>, can be found in <a href="#FullConfigurationFile">Appendix I</a>.</p>
<h4>Upstream Nameservers</h4>
<p>We have used a separate file to store the IPs of the parent nameservers; that is <code>/etc/resolv.dnsmasq</code>. Using the same syntax as in <code>/etc/resolv.conf</code> add the nameserver IP addresses in resolv.dnsmasq. For example:</p>
<pre class="codesnp">
nameserver 192.168.0.252
nameserver 192.168.0.253
nameserver 192.168.0.254
</pre>
<p>Note that we still need to make a change in <code>/etc/resolv.conf</code> before the system starts using dnsmasq for domain name lookups. Read on&#8230;</p>
<h4>Starting dnsmasq</h4>
<p>In order to start dnsmasq, run as root:</p>
<pre class="console">
/etc/init.d/dnsmasq start
</pre>
<p>Check the syslog or the dnsmasq logfile (if used) for any error messages.</p>
<p>If everything seems to be OK, set the dnsmasq service to start on boot:</p>
<pre class="console">
chkconfig dnsmasq on
</pre>
<p>This command might be Red-Hat specific, so consult your distribution&#8217;s documentation about how to set services to start on boot.</p>
<h4>Switch name resolution to dnsmasq</h4>
<p>What we have done so far is set up the dnsmasq service. For hostnames that do not exist in <code>/etc/hosts</code> the system still uses the nameserver inside <code>/etc/resolv.conf</code> for name resolution.</p>
<p>To start using dnsmasq, edit <code>/etc/resolv.conf</code>, remove all nameservers and add only the IP of our dnsmasq service:</p>
<pre class="codesnp">
nameserver 127.0.0.1
</pre>
<p>From now on, the system will use dnsmasq for domain name resolution. You can un-comment the <strong>log-queries</strong> option in order to confirm the dnsmasq operation.</p>
<h4 id="FullConfigurationFile">Appendix I &#8211; Full configuration file</h4>
<p>This is the complete configuration file containing the configuration that has been discussed in this article. Note that it can be used as is to replace the default <code>/etc/dnsmasq.conf</code>.</p>
<pre class="codesnp">
#
# Configuration file for dnsmasq acting as a caching nameserver.
#
# Format is one option per line, legal options are the same
# as the long options legal on the command line. See
# "/usr/sbin/dnsmasq --help" or "man 8 dnsmasq" for details.
#
# Updated versions of this configuration file may be available at:
#
#   http://www.g-loaded.eu/2010/09/18/caching-nameserver-using-dnsmasq/
#
#
# Basic server configuration
#
listen-address=127.0.0.1
port=53
bind-interfaces
user=dnsmasq
group=dnsmasq
pid-file=/var/run/dnsmasq.pid
#
# Logging
#
#log-facility=/var/log/dnsmasq.log
#log-queries
#
# Name resolution options
#
domain-needed
bogus-priv
no-hosts
dns-forward-max=150
cache-size=1000
#no-negcache
neg-ttl=3600
resolv-file=/etc/resolv.dnsmasq
no-poll
</pre>
<p>This file is meant to be used both on servers and desktops.</p>
<h4 id="LoggingToFile" >Appendix II &#8211; Logging to file</h4>
<p>Before dnsmasq starts logging to file it is required to set the path to the logfile in the <strong>log-facility</strong> option inside <code>/etc/dnsmasq.conf</code>.</p>
<pre class="codesnp">
log-facility=/var/log/dnsmasq.log
</pre>
<p>To ensure proper rotation of the log file you should use the following logrotate configuration:</p>
<pre class="codesnp">
/var/log/dnsmasq.log {
    monthly
    missingok
    notifempty
    delaycompress
    sharedscripts
    postrotate
        [ ! -f /var/run/dnsmasq.pid ] || kill -USR2 `cat /var/run/dnsmasq.pid`
    endscript
    create 0640 dnsmasq dnsmasq
}
</pre>
<p>Save the above configuration in <code>/etc/logrotate.d/dnsmasq</code>. Also, adjust the log filename or the path to the PID file in case you have used custom names, but make sure you do not change the <strong>USR2</strong> signal that is sent to the dnsmasq process in the post-rotation script.</p>
<h4>Final Thoughts</h4>
<p><strong>dnsmasq</strong> is a very lightweight service. Therefore, you can run it on any system, either server or desktop without any noticeable impact on system resources. In this guide we used it as an internal system service bound to the loopback interface, without permitting direct access from the outside. This along with the fact that dnsmasq is mature software that has been around for several years makes our setup rather secure.</p>
<p>Several people might argue that the performance improvement a local caching nameserver offers in terms of name lookup speed is insignificant. This might be true in some cases, but there are times that this performance improvement is noticeable, especially when the quality of the network connectivity between the current machine and the upstream nameserver is an issue, or when the upstream name server is overloaded. On the other hand, it is almost certain that a local caching DNS server can in no way make name resolution slower, unless perhaps a huge cache is being used. Generally, I find keeping such a service operational a good idea.</p>
<p>In this article we discussed about one of the dnsmasq features: DNS caching. dnsmasq is a lot more than just that. Check the whole feature set in the <a href="http://www.thekelleys.org.uk/dnsmasq/doc.html">dnsmasq homepage</a>. Perhaps, in the future, more guides covering other features of this software are published. Until then, enjoy local DNS caching!!!</p>
<div class="cc-block"><em><a href="http://www.g-loaded.eu/2010/09/18/caching-nameserver-using-dnsmasq/">Caching Nameserver using dnsmasq</a></em>, unless otherwise expressly stated, is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/3.0/">Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License</a>. Terms and conditions beyond the scope of this license may be available at <a href="http://www.g-loaded.eu/about/disclaimer-and-license/">www.g-loaded.eu</a>.</div>
<h4>Related Articles</h4>
<ul><li><a href="http://www.g-loaded.eu/2008/12/02/set-up-an-anonymous-ftp-server-with-vsftpd-in-less-than-a-minute/" rel="bookmark">Set up an anonymous FTP server with vsftpd in less than a minute</a></li>
<li><a href="http://www.g-loaded.eu/2006/09/25/how-to-integrate-seaudit-report-in-logwatch/" rel="bookmark">How to integrate seaudit-report in logwatch</a></li>
<li><a href="http://www.g-loaded.eu/2005/11/05/assign-virtual-ips-to-your-nic/" rel="bookmark">Assign Virtual IPs to your NIC</a></li>
<li><a href="http://www.g-loaded.eu/2007/09/15/use-wget-or-curl-to-download-from-rapidshare-premium/" rel="bookmark">Use wget or curl to download from RapidShare Premium</a></li>
<li><a href="http://www.g-loaded.eu/2007/08/10/ssl-enabled-name-based-apache-virtual-hosts-with-mod_gnutls/" rel="bookmark">SSL-enabled Name-based Apache Virtual Hosts with mod_gnutls</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.g-loaded.eu/2010/09/18/caching-nameserver-using-dnsmasq/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
	<creativeCommons:license>http://creativecommons.org/licenses/by-nc-sa/3.0/</creativeCommons:license>
	</item>
		<item>
		<title>How to change the Timezone</title>
		<link>http://www.g-loaded.eu/2009/10/07/how-to-change-the-timezone/</link>
		<comments>http://www.g-loaded.eu/2009/10/07/how-to-change-the-timezone/#comments</comments>
		<pubDate>Wed, 07 Oct 2009 13:44:03 +0000</pubDate>
		<dc:creator>George Notaras</dc:creator>
				<category><![CDATA[Computers]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Administration]]></category>
		<category><![CDATA[CentOS]]></category>
		<category><![CDATA[Fedora]]></category>
		<category><![CDATA[Scientific Linux]]></category>
		<category><![CDATA[Servers]]></category>
		<category><![CDATA[Service]]></category>
		<category><![CDATA[System]]></category>
		<guid isPermaLink="false">http://www.g-loaded.eu/?p=1183</guid>
		<description><![CDATA[Usually, the only time I make a change to the timezone setting of the operating system is during the installation time. But it may happen that a change to that setting is necessary. There are several ways to do this, but, as usual, there is only one Right Way&#8482; to set the timezone info in [...]]]></description>
			<content:encoded><![CDATA[<p>Usually, the only time I make a change to the <strong>timezone</strong> setting of the operating system is during the installation time. But it may happen that a change to that setting is necessary. There are several ways to do this, but, as usual, there is only one <em>Right Way</em>&trade; to set the timezone info in your <strong>Linux</strong> distribution. I investigated it for a while and I think I have figured out how to do it right using <strong>command-line</strong> utilities on <a href="http://fedoraproject.org">Fedora</a> and all RHEL rebuilds (<a href="http://centos.org">CentOS</a>, <a href="http://www.scientificlinux.org/">Scientific Linux</a>, etc). I am quite certain that many people miss this piece of information, so I describe it in detail right below.<br />
<span id="more-1183"></span></p>
<h4>Configuration</h4>
<p>The procedure must be performed by <strong>root</strong>.</p>
<p>First of all, you need to edit the <em>/etc/sysconfig/clock</em> file:</p>
<pre class="codesnp">
ZONE="Etc/GMT"
UTC=true
</pre>
<p>Please, read the notes below for more information about the settings above.</p>
<p>Then run the <strong>tzdata-update</strong> utility. This copies the correct zonefile to <em>/etc/localtime</em>:</p>
<pre class="console">
/usr/sbin/tzdata-update
</pre>
<p>Finally, update the system time by either running <strong>ntpd</strong> or the <strong>ntpdate</strong> utility. Both are part of the <code>ntp</code> RPM package, so if this is not installed, just use &#8220;<code>yum install ntp</code>&#8221; to get it installed.</p>
<pre class="console">
/usr/sbin/ntpdate -b pool.ntp.org
</pre>
<p>This will make sure your time is correct.</p>
<p>You can set a <strong>cronjob</strong> to update the system&#8217;s time using ntpdate, like this:</p>
<pre class="codesnp">
#
# Update the system time
#
55 23 * * * root /usr/sbin/ntpdate -4 -b pool.ntp.org 2>&#038;1 >> /var/log/ntpdate.log
</pre>
<h4>Notes</h4>
<p>Here are some notes about the configuration of the timezone:</p>
<ol>
<li>You can find the valid timezones by changing to the <code>/usr/share/zoneinfo/</code> directory. From there, any <em>relative path</em> to a timezone file is a valid timezone. For example, &#8220;<em>Etc/GMT</em>&#8220;, &#8220;<em>Europe/Athens</em>&#8220;, &#8220;<em>America/New_York</em>&#8221; et cetera.</li>
<li><strong>GMT</strong> and <strong>UTC</strong> time are practically the same and they both refer to the <a href="http://en.wikipedia.org/wiki/Greenwich_Mean_Time">Greenwich Mean Time</a>, so setting the timezone to &#8220;<em>Etc/UTC</em>&#8221; or &#8220;<em>Etc/GMT</em>&#8221; is practically the same.</li>
<li>In <code>/etc/sysconfig/clock</code> you can set whether the <strong>hardware clock</strong> is set to <strong>UTC/GMT</strong> time or to <strong>Local Time</strong>. I am not sure in what way the hardware clock gets involved is the time of the Operating System. But, anyway, if you know how the hardware clock is configured, set this accordingly to true or false. Usually, if I set the OS to use GMT time, I also set this to true regardless of the actual hardware clock configuration. More info on this is still needed.</li>
<li>In <code>/etc/sysconfig/clock</code> you may see the options <strong>ARC=false</strong> and <strong>SRM=false</strong>. These change the way the &#8220;epoch&#8221; is assumed by the console on Alpha systems and have no effect if you do not use such a platform. Delete them or leave as is, unless you know you need to set one of them to true.</li>
<li>In order to set the correct timezone, you could just create a <strong>symlink</strong> at <code>/etc/localtime</code> pointing to the correct timezone file in <code>/usr/share/zoneinfo/</code>. Then again, this would render the system configuration file <code>/etc/sysconfig/clock</code> (and thus all other applications that use it) useless and ineffective, so this method is generally <strong>not recommended</strong>.</li>
</ol>
<h4>Final thoughts</h4>
<p>Setting your server to use the correct time is very important. Generally, I hate it when I see web sites or other services having incorrect time. This reveals the web server or the web application administrator&#8217;s laziness or inability to properly configure the time. I hope this guide will help get rid of this issue.</p>
<div class="cc-block"><em><a href="http://www.g-loaded.eu/2009/10/07/how-to-change-the-timezone/">How to change the Timezone</a></em>, unless otherwise expressly stated, is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/3.0/">Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License</a>. Terms and conditions beyond the scope of this license may be available at <a href="http://www.g-loaded.eu/about/disclaimer-and-license/">www.g-loaded.eu</a>.</div>
<h4>Related Articles</h4>
<ul><li><a href="http://www.g-loaded.eu/2008/11/27/maxminds-geoip-dat-gz-location-change/" rel="bookmark">Maxmind&#8217;s GeoIP.dat.gz location change</a></li>
<li><a href="http://www.g-loaded.eu/2005/09/30/change-console-font-in-fedora/" rel="bookmark">Change console font in Fedora</a></li>
<li><a href="http://www.g-loaded.eu/2005/11/05/assign-virtual-ips-to-your-nic/" rel="bookmark">Assign Virtual IPs to your NIC</a></li>
<li><a href="http://www.g-loaded.eu/2008/05/12/how-to-disable-ipv6-in-fedora-and-centos/" rel="bookmark">How to Disable IPv6 in Fedora and CentOS</a></li>
<li><a href="http://www.g-loaded.eu/2010/11/01/change-expiration-date-gpg-key/" rel="bookmark">How to change the expiration date of a GPG key</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.g-loaded.eu/2009/10/07/how-to-change-the-timezone/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	<creativeCommons:license>http://creativecommons.org/licenses/by-nc-sa/3.0/</creativeCommons:license>
	</item>
		<item>
		<title>Introducing codeTRAX</title>
		<link>http://www.g-loaded.eu/2007/08/09/introducing-codetrax/</link>
		<comments>http://www.g-loaded.eu/2007/08/09/introducing-codetrax/#comments</comments>
		<pubDate>Thu, 09 Aug 2007 11:50:38 +0000</pubDate>
		<dc:creator>George Notaras</dc:creator>
				<category><![CDATA[Announcements]]></category>
		<category><![CDATA[Service]]></category>
		<guid isPermaLink="false">http://www.g-loaded.eu/2007/08/09/introducing-codetrax/</guid>
		<description><![CDATA[A few months ago, I had decided to set up a separate website to host all the software projects, scripts, plugins, other bigger projects, that G-Loaded has released. Today, I announce the public availability of codeTRAX, a private, experimental project hosting service. CodeTRAX is work in progress. One of the major delays in the preparation [...]]]></description>
			<content:encoded><![CDATA[<p>A few months ago, I had decided to set up a separate website to host all the software projects, scripts, plugins, other bigger projects, that G-Loaded has released. Today, I announce the public availability of <a href="http://www.codetrax.org/">codeTRAX</a>, a private, experimental project hosting service. CodeTRAX is work in progress. One of the major delays in the preparation of this service was the lack of a standalone user account system. Having tried several solutions, I finally decided to write one myself. The first public alpha version of this account system will also be released soon.</p>
<div class="cc-block"><em><a href="http://www.g-loaded.eu/2007/08/09/introducing-codetrax/">Introducing codeTRAX</a></em>, unless otherwise expressly stated, is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/3.0/">Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License</a>. Terms and conditions beyond the scope of this license may be available at <a href="http://www.g-loaded.eu/about/disclaimer-and-license/">www.g-loaded.eu</a>.</div>
<h4>Related Articles</h4>
<ul><li><a href="http://www.g-loaded.eu/2009/09/21/project-codetrax-discontinued/" rel="bookmark">Project CodeTRAX discontinued</a></li>
<li><a href="http://www.g-loaded.eu/2007/08/09/traxauth/" rel="bookmark">TraxAuth</a></li>
<li><a href="http://www.g-loaded.eu/2007/07/29/best-practices-of-software-licensing/" rel="bookmark">Best Practices of Software Licensing</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.g-loaded.eu/2007/08/09/introducing-codetrax/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<creativeCommons:license>http://creativecommons.org/licenses/by-nc-sa/3.0/</creativeCommons:license>
	</item>
	</channel>
</rss>

