<?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>Compdigitec Labs &#187; Linux</title>
	<atom:link href="http://www.compdigitec.com/labs/category/linux/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.compdigitec.com/labs</link>
	<description>The place for interesting things</description>
	<lastBuildDate>Thu, 09 Feb 2012 03:08:56 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Updated tktreecontrol deb package for Ubuntu/Debian</title>
		<link>http://www.compdigitec.com/labs/2012/02/08/updated-tktreecontrol-deb-package-for-ubuntudebian/</link>
		<comments>http://www.compdigitec.com/labs/2012/02/08/updated-tktreecontrol-deb-package-for-ubuntudebian/#comments</comments>
		<pubDate>Thu, 09 Feb 2012 03:08:56 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[.deb]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[package]]></category>
		<category><![CDATA[tcl]]></category>
		<category><![CDATA[tcl/tk]]></category>
		<category><![CDATA[tcltreecontrol]]></category>
		<category><![CDATA[tktreecontrol]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://www.compdigitec.com/labs/?p=273</guid>
		<description><![CDATA[The version of tktreectrl in the Ubuntu repositories is, once again, a bit out of date (2.2.8). As a result, we have compiled the latest 2.4.1 version of TkTreeControl for your pleasure. Download tktreectrl_2.4.1-1_i386.deb (373KB, alternate download) Procedure]]></description>
			<content:encoded><![CDATA[<p>The version of <a href="http://tktreectrl.sourceforge.net/">tktreectrl</a> in the Ubuntu repositories is, once again, a bit out of date (2.2.8). As a result, we have compiled the latest 2.4.1 version of TkTreeControl for your pleasure.</p>
<p><strong>Download</strong></p>
<ul>
<li><a href="https://skydrive.live.com/redir.aspx?cid=a9e0c66d778c7ee2&amp;resid=A9E0C66D778C7EE2!192&amp;parid=A9E0C66D778C7EE2!129&amp;authkey=!AFFfMYe2NDMw0Bs">tktreectrl_2.4.1-1_i386.deb</a> (373KB, <a href="http://www.compdigitec.com/labs/files/tktreectrl_2.4.1-1_i386.deb">alternate download</a>)</li>
</ul>
<p><strong>Procedure</strong></p>
<pre class="brush: bash; title: ; notranslate">
wget http://downloads.sourceforge.net/project/tktreectrl/tktreectrl/tktreectrl-2.4.1/tktreectrl-2.4.1.tar.gz -O- |tar zxvf -
cd tktreectrl-2.4.1/
./configure --with-x --enable-shellicon --enable-gtk --enable-threads --prefix=/usr
make
sudo make install #or checkinstall
</pre>]]></content:encoded>
			<wfw:commentRss>http://www.compdigitec.com/labs/2012/02/08/updated-tktreecontrol-deb-package-for-ubuntudebian/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Deepen an existing shallow clone with git</title>
		<link>http://www.compdigitec.com/labs/2012/01/31/deepen-an-existing-shallow-clone-with-git/</link>
		<comments>http://www.compdigitec.com/labs/2012/01/31/deepen-an-existing-shallow-clone-with-git/#comments</comments>
		<pubDate>Wed, 01 Feb 2012 00:15:02 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[clone]]></category>
		<category><![CDATA[deepen]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[shallow]]></category>
		<category><![CDATA[vcs]]></category>
		<category><![CDATA[version control]]></category>

		<guid isPermaLink="false">http://www.compdigitec.com/labs/?p=260</guid>
		<description><![CDATA[In git, the new revolutionary DVCS system, to shallow clone a repository means to check out only the latest snapshot of a git repository, unlike a normal clone which pulls the entire repository. A shallow git repository can save bandwidth and take up less space. However, let&#8217;s say that once you checkout the project, compile [...]]]></description>
			<content:encoded><![CDATA[<p>In git, the new revolutionary DVCS system, to shallow clone a repository means to check out only the latest snapshot of a git repository, unlike a normal clone which pulls the entire repository. A shallow git repository can save bandwidth and take up less space.</p>
<pre class="brush: bash; title: ; notranslate">git clone --depth=1 git://repo.example.com/mycoolapp</pre>
<p>However, let&#8217;s say that once you checkout the project, compile it and decide that you want to contribute to it, then a shallow clone would probably not suffice. In this case, one can deepen the repository by using the following command inside the git repository, where n = number of revisions to deepen to:</p>
<pre class="brush: bash; title: ; notranslate">git fetch --depth=n origin master</pre>
<p>Saves more than having to re-clone everything from scratch and lose your working tree.</p>]]></content:encoded>
			<wfw:commentRss>http://www.compdigitec.com/labs/2012/01/31/deepen-an-existing-shallow-clone-with-git/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Operating systems and car dealerships</title>
		<link>http://www.compdigitec.com/labs/2011/11/04/operating-systems-and-car-dealerships/</link>
		<comments>http://www.compdigitec.com/labs/2011/11/04/operating-systems-and-car-dealerships/#comments</comments>
		<pubDate>Fri, 04 Nov 2011 17:41:09 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[philosophy]]></category>
		<category><![CDATA[quotes]]></category>
		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://www.compdigitec.com/labs/?p=248</guid>
		<description><![CDATA[An excerpt from the essay In the Beginning was the Command Line (CC BY-SA 2.0) by Michael Foord. The analogy between cars and operating systems is not half bad, and so let me run with it for a moment, as a way of giving an executive summary of our situation today. Imagine a crossroads where [...]]]></description>
			<content:encoded><![CDATA[<p>An excerpt from the essay <em><a title="In the Beginning was the Command Line" href="http://www.voidspace.org.uk/technology/neal_beginning.shtml#mgbs-tanks-and-batmobiles">In the Beginning was the Command Line</a></em> (CC BY-SA 2.0) by <a href="http://www.voidspace.org.uk/">Michael Foord</a>.</p>
<blockquote><p>The analogy between cars and operating systems is not half bad, and so let me run with it for a moment, as a way of giving an executive summary of our situation today.</p>
<p>Imagine a crossroads where four competing auto dealerships are situated. One of them (Microsoft) is much, much bigger than the others. It started out years ago selling three-speed bicycles (MS-DOS); these were not perfect, but they worked, and when they broke you could easily fix them.</p>
<p>There was a competing bicycle dealership next door (Apple) that one day began selling motorized vehicles--expensive but attractively styled cars with their innards hermetically sealed, so that how they worked was something of a mystery.</p>
<p>The big dealership responded by rushing a moped upgrade kit (the original Windows) onto the market. This was a Rube Goldberg contraption that, when bolted onto a three-speed bicycle, enabled it to keep up, just barely, with Apple-cars. The users had to wear goggles and were always picking bugs out of their teeth while Apple owners sped along in hermetically sealed comfort, sneering out the windows. But the Micro-mopeds were cheap, and easy to fix compared with the Apple-cars, and their market share waxed.</p>
<p>Eventually the big dealership came out with a full-fledged car: a colossal station wagon (Windows 95). It had all the aesthetic appeal of a Soviet worker housing block, it leaked oil and blew gaskets, and it was an enormous success. A little later, they also came out with a hulking off-road vehicle intended for industrial users (Windows NT) which was no more beautiful than the station wagon, and only a little more reliable.</p>
<p>Since then there has been a lot of noise and shouting, but little has changed. The smaller dealership continues to sell sleek Euro-styled sedans and to spend a lot of money on advertising campaigns. They have had <strong>GOING OUT OF BUSINESS!</strong> signs taped up in their windows for so long that they have gotten all yellow and curly. The big one keeps making bigger and bigger station wagons and ORVs.</p>
<p>On the other side of the road are two competitors that have come along more recently.</p>
<p>One of them (Be, Inc.) is selling fully operational Batmobiles (the BeOS). They are more beautiful and stylish even than the Euro-sedans, better designed, more technologically advanced, and at least as reliable as anything else on the market--and yet cheaper than the others.</p>
<p>With one exception, that is: Linux, which is right next door, and which is not a business at all. It&#8217;s a bunch of RVs, yurts, tepees, and geodesic domes set up in a field and organized by consensus. The people who live there are making tanks. These are not old-fashioned, cast-iron Soviet tanks; these are more like the M1 tanks of the U.S. Army, made of space-age materials and jammed with sophisticated technology from one end to the other. But they are better than Army tanks. They&#8217;ve been modified in such a way that they never, ever break down, are light and manoeuvrable enough to use on ordinary streets, and use no more fuel than a subcompact car. These tanks are being cranked out, on the spot, at a terrific pace, and a vast number of them are lined up along the edge of the road with keys in the ignition. Anyone who wants [one] can simply climb into one and drive it away for free.</p>
<p>Customers come to this crossroads in throngs, day and night. Ninety percent of them go straight to the biggest dealership and buy station wagons or off-road vehicles. They do not even look at the other dealerships.</p>
<p>Of the remaining ten percent, most go and buy a sleek Euro-sedan, pausing only to turn up their noses at the philistines going to buy the station wagons and ORVs. If they even notice the people on the opposite side of the road, selling the cheaper, technically superior vehicles, these customers deride them cranks and half-wits.</p>
<p>The Batmobile outlet sells a few vehicles to the occasional car nut who wants a second vehicle to go with his station wagon, but seems to accept, at least for now, that it&#8217;s a fringe player.</p>
<p>The group giving away the free tanks only stays alive because it is staffed by volunteers, who are lined up at the edge of the street with bullhorns, trying to draw customers&#8217; attention to this incredible situation. A typical conversation goes something like this:</p>
<p>Hacker with bullhorn: &#8220;Save your money! Accept one of our free tanks! It is invulnerable, and can drive across rocks and swamps at ninety miles an hour while getting a hundred miles to the gallon!&#8221;</p>
<p>Prospective station wagon buyer: &#8220;I know what you say is true&#8230;but&#8230;er&#8230;I don&#8217;t know how to maintain a tank!&#8221;</p>
<p>Bullhorn: &#8220;You don&#8217;t know how to maintain a station wagon either!&#8221;</p>
<p>Buyer: &#8220;But this dealership has mechanics on staff. If something goes wrong with my station wagon, I can take a day off work, bring it here, and pay them to work on it while I sit in the waiting room for hours, listening to elevator music.&#8221;</p>
<p>Bullhorn: &#8220;But if you accept one of our free tanks we will send volunteers to your house to fix it for free while you sleep!&#8221;</p>
<p>Buyer: &#8220;Stay away from my house, you freak!&#8221;</p>
<p>Bullhorn: &#8220;But&#8230;&#8221;</p>
<p>Buyer: &#8220;Can&#8217;t you see that everyone is buying station wagons?&#8221;</p></blockquote>]]></content:encoded>
			<wfw:commentRss>http://www.compdigitec.com/labs/2011/11/04/operating-systems-and-car-dealerships/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Geany 0.21 Debian pacakge for Ubuntu/Debian</title>
		<link>http://www.compdigitec.com/labs/2011/10/25/geany-0-21-debian-pacakge-for-ubuntu/</link>
		<comments>http://www.compdigitec.com/labs/2011/10/25/geany-0-21-debian-pacakge-for-ubuntu/#comments</comments>
		<pubDate>Tue, 25 Oct 2011 23:08:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[.deb]]></category>
		<category><![CDATA[compile]]></category>
		<category><![CDATA[debian package]]></category>
		<category><![CDATA[geany]]></category>

		<guid isPermaLink="false">http://www.compdigitec.com/labs/?p=246</guid>
		<description><![CDATA[The version of Geany provided with the repository in Ubuntu is a bit outdated (0.18) by two years, so we have also decided to produce an updated version (0.21) for use on Ubuntu 10.04 LTS and other versions of Ubuntu. Download Debian package (5.7 MB) RPM package (5.7 MB) Compiling]]></description>
			<content:encoded><![CDATA[<p>The version of <a href="http://www.compdigitec.com/labs/2008/08/28/geany-the-ultimate-ide-for-programming/">Geany</a> provided with the repository in Ubuntu is a bit outdated (0.18) by two years, so we have also decided to produce an updated version (0.21) for use on Ubuntu 10.04 LTS and other versions of Ubuntu.<br />
<strong>Download</strong></p>
<ul>
<li><a href="/labs/files/geany-compdigitec.deb">Debian package</a> (5.7 MB)</li>
<li><a href="/labs/files/geany-compdigitec.rpm">RPM package</a> (5.7 MB)</li>
</ul>
<p><strong>Compiling</strong></p>
<pre class="brush: bash; title: ; notranslate">
./configure --enable-binreloc --enable-socket --enable-vte --enable-the-force --prefix=/usr
make
make install
</pre>]]></content:encoded>
			<wfw:commentRss>http://www.compdigitec.com/labs/2011/10/25/geany-0-21-debian-pacakge-for-ubuntu/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Updated version of YASM v1.1.0 for Ubuntu</title>
		<link>http://www.compdigitec.com/labs/2011/10/24/updated-version-of-yasm-v1-1-0-for-ubuntu/</link>
		<comments>http://www.compdigitec.com/labs/2011/10/24/updated-version-of-yasm-v1-1-0-for-ubuntu/#comments</comments>
		<pubDate>Mon, 24 Oct 2011 11:07:33 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[assembler]]></category>
		<category><![CDATA[compile]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[Mozilla firefox]]></category>
		<category><![CDATA[yasm]]></category>

		<guid isPermaLink="false">http://www.compdigitec.com/labs/?p=243</guid>
		<description><![CDATA[The version of YASM provided with Ubuntu 10.04 is a bit outdated (0.8, updated in 2009) and is not sufficient enough to compile Mozilla Firefox. Therefore we have decided to compile an updated package of YASM v1.1.0 instead. Download yasm-compdigitec-unofficial_1.1.0-1_i386.deb (Debian Package, 1.8MB) yasm-compdigitec-unofficial_1.1.0-1_i386.rpm (RPM Package, 1.8MB) Compile your own copy]]></description>
			<content:encoded><![CDATA[<p>The version of YASM provided with Ubuntu 10.04 is a bit outdated (0.8, updated in 2009) and is not sufficient enough to <a href="http://www.compdigitec.com/labs/2011/06/30/light-build-of-mozilla-firefox/">compile Mozilla Firefox</a>. Therefore we have decided to compile an updated package of YASM v1.1.0 instead.</p>
<p><strong>Download</strong></p>
<ul>
<li><a href="/labs/files/yasm-compdigitec-unofficial_1.1.0-1_i386.deb">yasm-compdigitec-unofficial_1.1.0-1_i386.deb</a> (Debian Package, 1.8MB)</li>
<li><a href="/labs/files/yasm-compdigitec-unofficial_1.1.0-1_i386.rpm">yasm-compdigitec-unofficial_1.1.0-1_i386.rpm</a> (RPM Package, 1.8MB)</li>
</ul>
<div><strong>Compile your own copy</strong></div>
<pre class="brush: bash; title: ; notranslate">
wget http://www.tortall.net/projects/yasm/releases/yasm-1.1.0.tar.gz -O- | tar zxvf -
cd yasm-1.1.0
./configure --disable-nls --prefix=/usr
make
make install
yasm --version
#yasm 1.1.0.2352
#Compiled on Oct 23 2011.
#Copyright (c) 2001-2010 Peter Johnson and other Yasm developers.
#Run yasm --license for licensing overview and summary.
</pre>]]></content:encoded>
			<wfw:commentRss>http://www.compdigitec.com/labs/2011/10/24/updated-version-of-yasm-v1-1-0-for-ubuntu/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Light build of Mozilla Firefox</title>
		<link>http://www.compdigitec.com/labs/2011/06/30/light-build-of-mozilla-firefox/</link>
		<comments>http://www.compdigitec.com/labs/2011/06/30/light-build-of-mozilla-firefox/#comments</comments>
		<pubDate>Thu, 30 Jun 2011 19:35:16 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[checkinstall]]></category>
		<category><![CDATA[compile]]></category>
		<category><![CDATA[custom]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[minimal]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://www.compdigitec.com/labs/?p=224</guid>
		<description><![CDATA[Most of the time, a stock Firefox installation from Mozilla&#8217;s website or the apt repository usually works just fine on most machines. However, if you prefer a more plain and vanilla Firefox install without all the latest bells and whistles, then one can manually compile a build from source code. This has the advantage of [...]]]></description>
			<content:encoded><![CDATA[<p>Most of the time, a stock Firefox installation from <a href="http://www.mozilla.com/firefox/channel/">Mozilla&#8217;s website</a> or the <a href="apt:firefox">apt repository</a> usually works just fine on most machines. However, if you prefer a more plain and vanilla Firefox install without all the latest bells and whistles, then one can manually compile a build from source code. This has the advantage of being faster and leaner than the stock Firefox because the unwanted features are simply not present, although you will not have all the latest web bells/whistles with this method (e.g. WebM, WebGL, HTML5 video, etc).</p>
<p>Download a copy of the <a href="ftp://ftp.mozilla.org/pub/mozilla.org/firefox/releases">Firefox source</a>, and extract it. Then run <strong>./configure</strong> as follows:</p>
<blockquote><p>--enable-application=browser --enable-official-branding --disable-debug --with-x --disable-profiling --disable-gnomevfs --disable-gconf --disable-accessibility --disable-ogg --disable-webm --enable-splashscreen --disable-angle --enable-crashreporter --disable-smil --disable-installer --disable-updater --disable-update-packaging --disable-parental-controls --disable-tests --enable-faststart --disable-safe-browsing --disable-meegocontentaction --enable-optimize=-O2 --disable-logging --enable-install-strip --disable-necko-wifi --disable-glibtest</p></blockquote>
<p>A few points to note:</p>
<ul>
<li>Remove <em>--enable-official-branding </em>if you ever plan to distribute your build online (in .deb or something like that) - Mozilla is extremely picky about distributing official artwork in modified builds.</li>
<li>Add a <em>--prefix=/usr</em> if you don&#8217;t want to install to /usr/local (replace /usr with whatever path you want)</li>
<li>You will want to add <em>--disable-libjpeg-turbo</em> if you don&#8217;t have a <a href="http://www.compdigitec.com/labs/2011/10/24/updated-version-of-yasm-v1-1-0-for-ubuntu/">handy version of yasm (or are lazy)</a></li>
</ul>
<p>Then run <strong>make</strong>. If you want to test your build, you can find it under <em>dist/bin</em> of your extracted tarball. Change to that directory and then one can test it like so:</p>
<p>LD_LIBRARY_PATH=. ./firefox-bin -ProfileManager -no-remote</p>
<p>This will allow you to test without clobbering your existing profile. When you are done, you can run <strong>make install</strong> (beware of conflicts with the repository&#8217;s firefox) or if you would rather use checkinstall to make a package, <strong>checkinstall --fstrans=no</strong>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.compdigitec.com/labs/2011/06/30/light-build-of-mozilla-firefox/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Distributing small Java applications (i.e. convert to EXE)</title>
		<link>http://www.compdigitec.com/labs/2011/04/30/distributing-small-java-applications/</link>
		<comments>http://www.compdigitec.com/labs/2011/04/30/distributing-small-java-applications/#comments</comments>
		<pubDate>Sat, 30 Apr 2011 20:12:51 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://www.compdigitec.com/labs/?p=218</guid>
		<description><![CDATA[Many times it can be said that it is not very friendly getting a .class file to run. Here is a better way to get them to run - it involves first converting it to an executable .jar and then optionally converting to an executable file on Windows. Prerequisites: Java compiler and JRE It is [...]]]></description>
			<content:encoded><![CDATA[<p>Many times it can be said that it is not very friendly getting a .class file to run. Here is a better way to get them to run - it involves first converting it to an executable .jar and then optionally converting to an executable file on Windows.</p>
<p><b>Prerequisites</b>:</p>
<ul>
<li>Java compiler and JRE</li>
<li>It is recommended to do this procedure in a separate folder to avoid contamination and interference from other files.
</ul>
<p><b>Procedure</b>:</p>
<ul>
<li><b>Compile Java code</b> to generate hello.class (assuming hello.java in this article, replace hello with your application&#8217;s name):
<pre class="brush: bash; title: ; notranslate">javac hello.java</pre>
</li>
<li><b>Add meta file</b> - create file called hello.mf with the following contents (replace hello with your .java name):
<pre class="brush: plain; title: ; notranslate">Main-Class: hello</pre>
<p>Optionally, add the following line if your application depends on other jar files:</p>
<pre class="brush: plain; title: ; notranslate">Class-Path: (list of jar files here)</pre>
</li>
<li><strong>Make an executable jar</strong>:
<pre class="brush: bash; title: ; notranslate">jar cvfm *.jar hello.mf *.class</pre>
</li>
<li>At this point you have an executable jar which you can run with any JRE like so:
<pre class="brush: bash; title: ; notranslate">java -jar hello.jar</pre>
<p>. But if you want to generate an EXE for Windows, continue to follow these instructions:</li>
<li>Download and run <a href="http://launch4j.sourceforge.net/">Launch4J</a>.</li>
<li>Set &#8220;jar&#8221; to hello.jar in the directory where it can be found.</li>
<li>Set &#8220;output file&#8221; to hello.exe in the same directory as hello.jar.</li>
<li>(Optional) Add icon by selecting icon.</li>
<li>Under &#8220;Header&#8221; tab, set GUI if your Java application is GUI, otherwise select console.</li>
<li>(Optional) Under &#8220;Single instance&#8221; tab, select &#8220;Allow only a single instance&#8221; if you wish to only allow one copy of your application open at the same time. Type in a random combination of letters and numbers in &#8220;mutex name&#8221; and type in your application name under &#8220;Window title&#8221;.</li>
<li>Set a minimum JRE version under the &#8220;JRE&#8221; tab (such as 1.3.1).</li>
<li>Save your configuration if you want to, then click the build icon at the top to build your application.</li>
</ul>]]></content:encoded>
			<wfw:commentRss>http://www.compdigitec.com/labs/2011/04/30/distributing-small-java-applications/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Setting up a ProFTPd port-based VirtualHost</title>
		<link>http://www.compdigitec.com/labs/2011/02/13/setting-up-a-proftpd-port-based-virtualhost/</link>
		<comments>http://www.compdigitec.com/labs/2011/02/13/setting-up-a-proftpd-port-based-virtualhost/#comments</comments>
		<pubDate>Mon, 14 Feb 2011 01:47:48 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[ftp]]></category>
		<category><![CDATA[mass hosting]]></category>
		<category><![CDATA[port]]></category>
		<category><![CDATA[proftpd]]></category>
		<category><![CDATA[service]]></category>
		<category><![CDATA[virtualhost]]></category>

		<guid isPermaLink="false">http://www.compdigitec.com/labs/?p=212</guid>
		<description><![CDATA[ProFTPd is a very powerful FTP server software that is most commonly used on Linux servers to provide a FTP service to the public, Intranet or Web Services. ProFTPd, much like its HTTP counterpart, Apache, contains the ability to host multiple different services on one physical computer by using &#8220;Virtual Hosts&#8221;, which makes it appear [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.proftpd.org/">ProFTPd</a> is a very powerful FTP server software that is most commonly used on Linux servers to provide a FTP service to the public, Intranet or Web Services. ProFTPd, much like its HTTP counterpart, Apache, contains the ability to host multiple different services on one physical computer by using &#8220;Virtual Hosts&#8221;, which makes it appear as it were multiple hosts hosting different content. Unfortunately, FTP does not support named-based virtual hosting like HTTP does, so to allow customers/clients to be able to FTP you must use a different port.</p>
<p><strong>Procedure</strong></p>
<ol>
<li>Open up your ProFTPd configuration file (by default it is <strong>/etc/proftpd.conf</strong>) using your favourite text editor:
<pre class="brush: bash; title: ; notranslate">sudo nano -w /etc/proftpd.conf</pre>
</li>
<li>Add a VirtualHost. The following snippet sets up a &#8220;virtual&#8221; server on Port 3003 for all bound IP addresses (<strong>IPv6</strong> and <strong>IPv4</strong>). You can change the 3003 to the port you want to host, change the ServerName to a useful description of the host and DefaultRoot to the root of the FTP.
<pre class="brush: xml; title: ; notranslate">
&lt;VirtualHost ::0.0.0.0&gt;
	Port 3003
	Umask 022
	ServerName &quot;VirtualHost FTP&quot;
	DefaultRoot /home/www/customer3003
&lt;/VirtualHost&gt;
</pre>
</li>
<li>If you do not want <strong>IPv6</strong> support or it gives you problems on your specific host, then you can bind it to all <strong>IPv4</strong> addresses on Port 3003 (same as above otherwise):
<pre class="brush: xml; title: ; notranslate">
&lt;VirtualHost 0.0.0.0&gt;
	Port 3003
	Umask 022
	ServerName &quot;VirtualHost FTP&quot;
	DefaultRoot /home/www/customer3003
&lt;/VirtualHost&gt;
</pre>
</li>
<li>If you want, you can also modify it to bind to only certain ports to the specified port. When you are comfortable with your configuration, save the file and exit.</li>
<li>Reload the FTP server and connect away:
<pre class="brush: bash; title: ; notranslate">sudo /etc/init.d/proftpd restart</pre>
</li>
</ol>
<p><b>What did not work</b></p>
<ul>
<li>
<pre class="brush: xml; title: ; notranslate">
&lt;VirtualHost *&gt;
	Port 3003
	Umask 022
	ServerName &quot;VirtualHost FTP&quot;
	DefaultRoot /home/www/customer3003
&lt;/VirtualHost&gt;
</pre>
</li>
<li>
<pre class="brush: xml; title: ; notranslate">
&lt;VirtualHost&gt;
	Port 3003
	Umask 022
	ServerName &quot;VirtualHost FTP&quot;
	DefaultRoot /home/www/customer3003
&lt;/VirtualHost&gt;
</pre>
</li>
<li>and
<pre class="brush: xml; title: ; notranslate">
&lt;VirtualHost All&gt;
	Port 3003
	Umask 022
	ServerName &quot;VirtualHost FTP&quot;
	DefaultRoot /home/www/customer3003
&lt;/VirtualHost&gt;
</pre>
</li>
</ul>]]></content:encoded>
			<wfw:commentRss>http://www.compdigitec.com/labs/2011/02/13/setting-up-a-proftpd-port-based-virtualhost/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Redirect non-www domain to www in Apache</title>
		<link>http://www.compdigitec.com/labs/2011/01/24/redirect-non-www-domain-to-www-in-apache/</link>
		<comments>http://www.compdigitec.com/labs/2011/01/24/redirect-non-www-domain-to-www-in-apache/#comments</comments>
		<pubDate>Tue, 25 Jan 2011 00:11:42 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://www.compdigitec.com/labs/?p=206</guid>
		<description><![CDATA[Search engines will often consider the non-www and www sites of a domain as separate websites (example.com vs www.example.com). In order to solve this, you will often want to redirect the non-www part of the website (example.com) to the www part (www.example.com). So this way if your visitor types example.com or www.example.com they will wind [...]]]></description>
			<content:encoded><![CDATA[<p>Search engines will often consider the non-www and www sites of a domain as separate websites (example.com vs <strong>www</strong>.example.com). In order to solve this, you will often want to redirect the non-www part of the website (example.com) to the www part (www.example.com). So this way if your visitor types example.com or www.example.com they will wind up at your home page at www.example.com.</p>
<p>First have your site configuration file (with the VirtualHost) opened in your favourite text editor, then make sure the ServerName of the VirtualHost is set to the www version:</p>
<pre class="brush: xml; title: ; notranslate">
&lt;VirtualHost *:80&gt;
	ServerAdmin you@example.com
	ServerName www.example.com

	&lt;!-- other VirtualHost configs here... --&gt;
&lt;/VirtualHost&gt;
</pre>
<p>Then add another VirtualHost at the bottom of that (in the same file), replacing your variables:</p>
<pre class="brush: xml; title: ; notranslate">
&lt;VirtualHost *:80&gt;
	ServerName example.com
	Redirect permanent / http://www.example.com/
&lt;/VirtualHost&gt;
</pre>
<p>This should look something like this in the end (all in one file):</p>
<pre class="brush: xml; title: ; notranslate">
&lt;VirtualHost *:80&gt;
	ServerAdmin you@example.com
	ServerName www.example.com

	&lt;!-- other VirtualHost configs here... --&gt;
&lt;/VirtualHost&gt;

&lt;VirtualHost *:80&gt;
	ServerName example.com
	Redirect permanent / http://www.example.com/
&lt;/VirtualHost&gt;
</pre>
<p>When you are done save the file, close it and reload Apache:</p>
<pre class="brush: bash; title: ; notranslate">sudo /etc/init.d/apache2 reload</pre>
<p>This is a very safe and effective way to enforce your SEO and this solution does not require the rewrite engine either, which makes it very fast and safe. It performs the 301 redirect in the search-engine-approved manner and it will make sure your search engine popularity is not being cut in half by the www and non-www.</p>]]></content:encoded>
			<wfw:commentRss>http://www.compdigitec.com/labs/2011/01/24/redirect-non-www-domain-to-www-in-apache/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>TilEm, a TI-83 Plus emulator for Linux</title>
		<link>http://www.compdigitec.com/labs/2010/12/02/tilem-a-ti-83-plus-emulator-for-linux/</link>
		<comments>http://www.compdigitec.com/labs/2010/12/02/tilem-a-ti-83-plus-emulator-for-linux/#comments</comments>
		<pubDate>Fri, 03 Dec 2010 01:18:40 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[graphing calculator]]></category>
		<category><![CDATA[ti]]></category>
		<category><![CDATA[ti-83]]></category>
		<category><![CDATA[ti-83 plug]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://www.compdigitec.com/labs/?p=199</guid>
		<description><![CDATA[TilEm is a Z80 based emulator for the Linux operating system. It is capable all the Z80 based series of TI graphing calculators with the exception of the TI-81.This little emulator will emulate all the features of the hand-held graphic calculator complete with a display and calculator interface with 100% compatibility. However, TilEm is not [...]]]></description>
			<content:encoded><![CDATA[<div id="attachment_201" class="wp-caption alignleft" style="width: 158px"><a href="http://www.compdigitec.com/labs/wp-content/uploads/2010/12/tilem.png"><img class="size-full wp-image-201  " title="TilEm emulator" src="http://www.compdigitec.com/labs/wp-content/uploads/2010/12/tilem.png" alt="TilEm emulator" width="148" height="350" /></a><p class="wp-caption-text">TilEm emulator</p></div>
<p>TilEm is a Z80 based emulator for the Linux operating system. It is capable all the Z80 based series of TI graphing calculators with the exception of the TI-81.This little emulator will emulate all the features of the hand-held graphic calculator complete with a display and calculator interface with 100% compatibility.</p>
<p>However, TilEm is not packaged by default with Ubuntu, so we have provided a package for use with Ubuntu and Debian systems: <a title="tilem.deb" href="/labs/files/tilem.deb">tilem.deb</a> (366 KB)</p>
<p>Simply click to install. Note that you must have your own TI-83+ images - you can try asking your educational institution, obtaining a flash update from Texas Instruments, downloading it yourself using a serial or parallel cable or searching Google for &#8220;<strong>ti 83 plus rom image</strong>&#8220;. Be sure to get a .rom file or a file which contains a .rom.</p>
<p>Once you have your ROM image, it is simply a matter of copying the rom to the <strong>~/.TilEm/ti83p/</strong> folder. For example, if you have a ROM file called &#8220;<strong>ti83p_2.rom</strong>&#8221; then just copy or move the file to the aforementioned folder. Then start TilEm by typing <strong>tilem</strong> in the terminal.</p>]]></content:encoded>
			<wfw:commentRss>http://www.compdigitec.com/labs/2010/12/02/tilem-a-ti-83-plus-emulator-for-linux/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

