<?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>UnixWars &#187; Projects</title>
	<atom:link href="http://unixwars.com/category/projects/feed/" rel="self" type="application/rss+xml" />
	<link>http://unixwars.com</link>
	<description>Taher Shihadeh's ragbag</description>
	<lastBuildDate>Sat, 03 Jul 2010 14:09:34 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>epi_sort.py: Filename comparison</title>
		<link>http://unixwars.com/2010/07/03/filename-comparator/</link>
		<comments>http://unixwars.com/2010/07/03/filename-comparator/#comments</comments>
		<pubDate>Sat, 03 Jul 2010 14:08:57 +0000</pubDate>
		<dc:creator>Taher Shihadeh</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Projects]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[scripts]]></category>

		<guid isPermaLink="false">http://unixwars.com/?p=667</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p>As every Joe Six-pack would do, I usually write a lot of scripts to automate my tasks as much as I can. Most of them aren&#8217;t even worth mentioning, but nevertheless I have been meaning to start posting some of those. I&#8217;ve stumbled upon lots of jewels on the net that seemed worthless to their authors, so if any one gets to use one of mine I&#8217;ll be happy. You never know.</p>
<h4>The problem:</h4>
<p>I have a directory full of unclassified media files, some are duplicates, some aren&#8217;t, and each one follows a different naming convention.</p>
<p>I even try to classify them from time to time, so you can throw some directories into the pack. Sometimes, I even create two or three directories for the same group-series-category-whatever before I realize there is an existing one with a slightly different name. And frequently a lot of files remain unclassified, many of which could fit into one of the directories I mentioned.</p>
<p>Of course &#8230; whenever a new file arrives to my <a href="/tag/home-server/">home server</a>, it gets thrown into that very same directory, so Chaos keeps spreading, as it always does.</p>
<p>To clarify things, lets show an example:</p>
<pre>drwxrwxrwx 1 user user      4096 2010-07-03 11:50 01_Battlestar_Enterprise
drwxrwxrwx 1 user user      4096 2010-07-03 11:42 02_Startrek_Galactica
drwxrwxrwx 1 user user      4096 2010-07-03 11:50 03_battlestar.enterprise-season.1
-rwxrwxrwx 1 user user 220393472 2010-07-03 02:49 battlestar.enterprise.s1e01.avi
-rwxrwxrwx 1 user user 221227008 2010-07-03 02:50 Battlestar_Enterprise_1_22.mp4
-rwxrwxrwx 1 user user 195393472 2010-07-03 02:49 startrek.galactica.4x15.[ripper_22].mkv
</pre>
<p>As you can imagine, sorting things up can get really tedious, and there is no automatic way of doing it that I know of.</p>
<p>I had some time this morning and got fed up with it. Every little piece of help is more than welcome, and here is where Python comes to the rescue.</p>
<h4>The solution:</h4>
<p>There are dozens of ways to do this, but I ended up coding a quick hack to help me sort things out.<br />
It just compares the names of files and directories, and estimates the similarities. Anything above a 50% match is usually correctly estimated.</p>
<pre class="prettyprint">#!/usr/bin/env python
# -*- coding: utf-8 -*-

# (C) 2010, Taher Shihadeh
# Licensed: GPL v2

"""
The script works based only on names of files and directories in a
non-recursive manner.

It takes a path as parameter and tries to determine if the names of
the contents look alike.

It removes separator characters, numbers and file extensions prior to
the comparison.
"""

import os
import sys
import string
from operator import itemgetter

FAST = False # Change this to skip file-to-file comparisons
SEP  = '_-+~.·:;·()[]¡!¿?<>'

def main (path):
    lst1    = os.listdir (path)
    lst2    = lst1
    len_lst = len(lst1)
    count   = 0.0
    results = []

    for x in lst1:
        for y in lst2:
            if x==y:
                continue
            x_dir = os.path.isdir(x)
            y_dir = os.path.isdir(y)

            if FAST and not (x_dir or y_dir):
                continue

            result = {'A': (x, x_dir), 'B': (y, y_dir)}

            str1, str2 = x, y
            if not x_dir:
                str1,_ = os.path.splitext (x)
            if not y_dir:
                str2,_ = os.path.splitext (y)

            result['factor'] = compare (str1,str2)
            results.append(result)

        lst2.remove(x)
        count += 1
        print >> sys.stderr, '%.2f%% done' %((count / len_lst)*200)

    show(results)

def split (str1):
    trans = string.maketrans(SEP, ' '*len(SEP))
    return str1.translate(trans).split()

def clean (lst):
    assert type(lst) == list
    return filter(lambda x: not x.isdigit(), lst)

def compare (str1, str2):
    """Return similarity factor as percentage"""
    aux1 = clean (split (str1.lower()))
    aux2 = clean (split (str2.lower()))

    set_or  = set(aux1) | set(aux2)
    set_and = set(aux1) &amp; set(aux2)

    return (float(len(set_and)) / float(len(set_or)))*100

def show (results):
    """Show most similar last"""
    for x in sorted(results, key=itemgetter('factor')):
        a,b = x['A'],x['B']
        if not b[1] and a[1]:
            a,b = b,a
        print '%.2f \t %s \t --> %s' %(x['factor'], a[0], b[0])

if __name__=='__main__':
    try:
        path = sys.argv[1]
    except IndexError:
        path = os.getcwd()

    main (path)
</pre>
<p>I don&#8217;t think any one is going to use it, but what the hell. It&#8217;s a big Internet ;-)</p>
]]></content:encoded>
			<wfw:commentRss>http://unixwars.com/2010/07/03/filename-comparator/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cherokee Summit 2010: Mission accomplished</title>
		<link>http://unixwars.com/2010/05/10/cherokee-summit-2010-mission-accomplished/</link>
		<comments>http://unixwars.com/2010/05/10/cherokee-summit-2010-mission-accomplished/#comments</comments>
		<pubDate>Mon, 10 May 2010 21:36:58 +0000</pubDate>
		<dc:creator>Taher Shihadeh</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Misc]]></category>
		<category><![CDATA[Projects]]></category>

		<guid isPermaLink="false">http://unixwars.com/?p=648</guid>
		<description><![CDATA[We&#8217;ve been working in frenzy since last week. Not that we usually don&#8217;t, but this was something more. The Cherokee Summit just took place last weekend, and among other things we released our latest and greatest Cherokee v1.0, we defined the roadmap for v2.0, we shared knowledge with some of the most impressive experts in [...]]]></description>
			<content:encoded><![CDATA[<p>We&#8217;ve been working in frenzy since last week. Not that we usually don&#8217;t, but this was something more. The <a href="http://summit.cherokee-project.com/">Cherokee Summit</a> just took place last weekend, and among other things we <a href="http://summit.cherokee-project.com/the-cherokee-web-server-release-1-0-is-officially-out/">released our latest and greatest Cherokee v1.0</a>, we defined the roadmap for v2.0, we shared knowledge with some of the most impressive experts in High Availability I&#8217;ve ever met, and above all, we had the chance to meet face to face. Our Community is, without a doubt, stronger than ever. The <a href="http://www.alobbs.com/1385/Cherokee_Summit_Big_Success.html">summit has been a great success</a>. We had people attending from all over the World, all levels of expertise, and even from all ages. On this photo you can see <a href="http://alobbs.com">Alvaro</a> and the youngest attendee.</p>
<p style="text-align: center;"><a href="http://gallery.cherokee-project.com/"><img class="aligncenter size-full wp-image-651" title="All ages" src="http://unixwars.com/wp-content/2010/05/MG_6377.jpg" alt="MG 6377 Cherokee Summit 2010: Mission accomplished" width="614" height="410" /></a></p>
<p>Everything was recorded, so we will upload the slides and videos of all our sessions really soon. For now, only the <a href="http://gallery.cherokee-project.com/">photo gallery</a> is available. Take a look at the <a href="http://gallery.cherokee-project.com/index.php/Mugshots-2010-B-W">mugshots</a>.</p>
<p style="text-align: center;"><a href="http://gallery.cherokee-project.com/"><img class="aligncenter size-full wp-image-650" title="Jump" src="http://unixwars.com/wp-content/2010/05/MG_6058.jpg" alt="MG 6058 Cherokee Summit 2010: Mission accomplished" width="614" height="410" /></a></p>
<p style="text-align: left;">I&#8217;m really glad we could make this Summit. It surpased all my expectations. By far. It was an unbelievable experience, and we had lots of fun. Take a look at our family photo. If you want to know which of the guys above is me, here&#8217;s a clue: <em>&#8220;In brightest day&#8230;&#8221;</em>.</p>
<p style="text-align: left;">I&#8217;m really looking forward to the next summit. Cherokee Summit 2010 was awesome. I&#8217;m sure the next one will be even better.</p>
]]></content:encoded>
			<wfw:commentRss>http://unixwars.com/2010/05/10/cherokee-summit-2010-mission-accomplished/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Countdown to Cherokee Summit 2010</title>
		<link>http://unixwars.com/2010/04/30/countdown-to-cherokee-summit-2010/</link>
		<comments>http://unixwars.com/2010/04/30/countdown-to-cherokee-summit-2010/#comments</comments>
		<pubDate>Fri, 30 Apr 2010 17:28:54 +0000</pubDate>
		<dc:creator>Taher Shihadeh</dc:creator>
				<category><![CDATA[Misc]]></category>
		<category><![CDATA[Projects]]></category>
		<category><![CDATA[Cherokee]]></category>
		<category><![CDATA[high performance]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Octality]]></category>

		<guid isPermaLink="false">http://unixwars.com/?p=639</guid>
		<description><![CDATA[Only one more week to go! I&#8217;m going to remind you all about the first Cherokee Summit. It will be held next week in Madrid (7-8 May), and I&#8217;m really excited about it. We will release Cherokee 1.0, will rub shoulders with many members of our community, and we&#8217;ll define the road-map for Cherokee 2.0. [...]]]></description>
			<content:encoded><![CDATA[<p>Only one more week to go!<br />
I&#8217;m going to remind you all about the first <a href="http://summit.cherokee-project.com/program/">Cherokee Summit</a>. It will be held next week in Madrid (7-8 May), and I&#8217;m really excited about it. We will release Cherokee 1.0, will rub shoulders with many members of our community, and we&#8217;ll define the road-map for Cherokee 2.0. I&#8217;ll be giving a tech-talk along <a href="http://ion.suavizado.com/">Jonathan Hernandez</a>, so you know when and where to find me.</p>
<p>I&#8217;m sure that meeting many of the developers of Cherokee in person will be the highlight for me.</p>
<p>If by any chance you&#8217;ll be in Madrid that weekend, don&#8217;t forget to <a href="http://summit.cherokee-project.com/register/">register in time</a> and join us.</p>
<p style="text-align: center;"><em><strong>It&#8217;s gonna be legen&#8230; wait for it&#8230; dary!</strong></em><br />
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="480" height="385" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/ndwaw8q6MiY&amp;hl=en_US&amp;fs=1&amp;color1=0x006699&amp;color2=0x54abd6" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="480" height="385" src="http://www.youtube.com/v/ndwaw8q6MiY&amp;hl=en_US&amp;fs=1&amp;color1=0x006699&amp;color2=0x54abd6" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://unixwars.com/2010/04/30/countdown-to-cherokee-summit-2010/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>It&#8217;s official: Cherokee Summit 2010 is on its way!</title>
		<link>http://unixwars.com/2010/01/11/its-official-cherokee-summit-2010-is-on-its-way/</link>
		<comments>http://unixwars.com/2010/01/11/its-official-cherokee-summit-2010-is-on-its-way/#comments</comments>
		<pubDate>Mon, 11 Jan 2010 13:42:37 +0000</pubDate>
		<dc:creator>Taher Shihadeh</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Misc]]></category>
		<category><![CDATA[Projects]]></category>
		<category><![CDATA[Cherokee]]></category>
		<category><![CDATA[geek]]></category>
		<category><![CDATA[high performance]]></category>
		<category><![CDATA[Octality]]></category>

		<guid isPermaLink="false">http://unixwars.com/?p=609</guid>
		<description><![CDATA[It is no secret that our Cherokee-Project Community has been growing steadily and relentlessly over the last couple of years. In fact, it has been doing so well that we&#8217;ve reached a point where holding a conference about the project actually makes a lot of sense. A lot of people have been asking about this, [...]]]></description>
			<content:encoded><![CDATA[<p>It is no secret that our <a href="http://www.cherokee-project.com/">Cherokee-Project Community</a> has been growing steadily and relentlessly over the last couple of years. In fact, it has been doing so well that we&#8217;ve reached a point where holding a conference about the project actually makes a lot of sense. A lot of people have been asking about this, and after a lot of work we are ready to announce our first Summit, to be held on May 7th-8-th.</p>
<p><img class="aligncenter" src="http://www.alobbs.com/images/cherokee-summit-2001-img1.png" alt="cherokee summit 2001 img1 Its official: Cherokee Summit 2010 is on its way!" width="454" height="128" title="Its official: Cherokee Summit 2010 is on its way!" /></p>
<p>You can read <a href="http://www.alobbs.com/1379/Cherokee_Summit_2010.html">Alvaro&#8217;s announcement</a>, or you can check out the <a href="http://summit.cherokee-project.com/">Summit web-site</a>.</p>
<p>Cherokee will be an important topic, but it won&#8217;t be the only one. Those will be a couple of days fully dedicated to High Performance and Scalable Web topics, so there&#8217;s room for everyone to join in.  We are commited to reaching the 1.0 milestone of Cherokee by then, so we will also have a party to celebrate it.</p>
<p>It&#8217;s going to be fun. I&#8217;ll be a speaker at the summit and I&#8217;m really looking forward to personally meeting many of the members of the project. Thanks to our sponsors we&#8217;ve managed to make the event completely free, so don&#8217;t forget to <a href="http://summit.cherokee-project.com/register/">register</a> while we still have free spots!</p>
<p><strong>UPDATE</strong>: We&#8217;ve written a <a href="http://www.alobbs.com/downloads/Cherokee Summit 2010.pdf">little brochure</a> (~100KB) ﻿that can be used to  let your colleagues know about the summit. Do not hesitate to send it to any coworker or friend who would be interested in attending a High Performance and Scalable Web event.﻿﻿﻿</p>
]]></content:encoded>
			<wfw:commentRss>http://unixwars.com/2010/01/11/its-official-cherokee-summit-2010-is-on-its-way/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Cherokee screencast season kicks off</title>
		<link>http://unixwars.com/2009/12/07/cherokee-screencast-season-kicks-off/</link>
		<comments>http://unixwars.com/2009/12/07/cherokee-screencast-season-kicks-off/#comments</comments>
		<pubDate>Mon, 07 Dec 2009 10:27:54 +0000</pubDate>
		<dc:creator>Taher Shihadeh</dc:creator>
				<category><![CDATA[Misc]]></category>
		<category><![CDATA[Projects]]></category>
		<category><![CDATA[Cherokee]]></category>
		<category><![CDATA[high performance]]></category>
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://unixwars.com/?p=597</guid>
		<description><![CDATA[On a previous post I introduced our first Cherokee Project screencast. We were going to wait for a new and improved website before we made them public, but what the hell! Why wait? I&#8217;m sure the new Cherokee-Project Screencast Collection will come in handy for many of you. From here I&#8217;d like to thank P.V. [...]]]></description>
			<content:encoded><![CDATA[<p>On a previous post I introduced our first <a href="http://www.cherokee-project.com/">Cherokee Project</a> screencast. We were going to wait for a new and improved website before we made them public, but what the hell! Why wait? I&#8217;m sure the new <a href="http://www.cherokee-project.com/screencasts.html">Cherokee-Project Screencast Collection</a> will come in handy for many of you.</p>
<p style="text-align: center;"><a href="http://www.cherokee-project.com/screencasts.html"><img class="size-medium wp-image-600  aligncenter" title="video-footage" src="http://unixwars.com/wp-content/2009/12/video-footage-300x300.jpg" alt="video footage 300x300 Cherokee screencast season kicks off" width="300" height="300" /></a></p>
<p>From here I&#8217;d like to thank <a href="http://mindmedia.com.sg/team/anthony">P.V. Anthony</a> for his invaluable advice on audio production and my old friend <a href="http://saragenge.com">Sara Genge</a> for lending her voice to the project (and for her <a href="http://www.dailycabal.com/category/authors/sara-genge/">awesome fiction writing</a>, but that is another story).</p>
]]></content:encoded>
			<wfw:commentRss>http://unixwars.com/2009/12/07/cherokee-screencast-season-kicks-off/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Our first Cherokee screencast</title>
		<link>http://unixwars.com/2009/11/19/our-first-cherokee-screencast/</link>
		<comments>http://unixwars.com/2009/11/19/our-first-cherokee-screencast/#comments</comments>
		<pubDate>Thu, 19 Nov 2009 11:40:10 +0000</pubDate>
		<dc:creator>Taher Shihadeh</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Misc]]></category>
		<category><![CDATA[Projects]]></category>
		<category><![CDATA[Cherokee]]></category>
		<category><![CDATA[high performance]]></category>
		<category><![CDATA[Octality]]></category>

		<guid isPermaLink="false">http://unixwars.com/?p=567</guid>
		<description><![CDATA[Alvaro an I have been putting together a screen-cast to show an overview of Cherokee-Admin&#8217;s capabilities. It is just an introduction, but I think this kind of thing is really helpful to spread out the word about Cherokee&#8217;s multiple merits. We wanted to brag about our little baby. After all, not every serious web server [...]]]></description>
			<content:encoded><![CDATA[<p>Alvaro an I have been putting together a screen-cast to show an overview of Cherokee-Admin&#8217;s capabilities. It is just an introduction, but I think this kind of thing is really helpful to spread out the word about Cherokee&#8217;s multiple merits.</p>
<p>We wanted to brag about our little baby. After all, not every serious web server out there has a killer interface to configure it. Take a look at our <a href="http://www.vimeo.com/7683565">Cherokee Web Server introductory screen-cast</a>.</p>
<p style="text-align: center;">
<object width="400" height="340"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=7683565&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=7683565&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="340"></embed></object></p>
<p>You might want to see it at full screen for readability.</p>
<p>It&#8217;s just one of many to come. We&#8217;ve got some more planned, so I&#8217;ll let you know when they&#8217;re ready.</p>
]]></content:encoded>
			<wfw:commentRss>http://unixwars.com/2009/11/19/our-first-cherokee-screencast/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Cherokee 0.99.25 party kit!</title>
		<link>http://unixwars.com/2009/10/26/cherokee-0-99-25-party-kit/</link>
		<comments>http://unixwars.com/2009/10/26/cherokee-0-99-25-party-kit/#comments</comments>
		<pubDate>Mon, 26 Oct 2009 17:17:02 +0000</pubDate>
		<dc:creator>Taher Shihadeh</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Projects]]></category>
		<category><![CDATA[Cherokee]]></category>
		<category><![CDATA[high performance]]></category>
		<category><![CDATA[Octality]]></category>

		<guid isPermaLink="false">http://unixwars.com/?p=515</guid>
		<description><![CDATA[No, don&#8217;t worry. I&#8217;m not going to play with you and expect you to work for free as my personal advertisement company. I have to recognize that I&#8217;m astonished that Microsoft got away with it with all it&#8217;s Windows 7 craze, which once again proves that there are lots of guys out there that outsmart [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: left;">No, don&#8217;t worry. I&#8217;m not going to play with you and expect you to work for free as my personal advertisement company. I have to recognize that I&#8217;m astonished that <a title="The perfect scam" href="http://www.houseparty.com/windows7">Microsoft got away with it with all it&#8217;s Windows 7 craze</a>, which once again proves that there are lots of guys out there that outsmart me by far. I&#8217;m talking about their PR guys, mind you.</p>
<p style="text-align: left;">If you expect a party kit from us you&#8217;ve come to the wrong place. We actually believe our software is so good that it is a prize for its own merits. It has been a while since I last announced one of our releases, mainly because I didn&#8217;t have much to add besides what was told on the official announcements. As always, a lot of development effort is being invested in our flag product, and this is something that doesn&#8217;t go by unnoticed. This weekend we decided to release <a href="http://lists.octality.com/pipermail/cherokee/2009-October/011619.html">Cherokee 0.99.25.</a> As you can tell by the .25 part, lots of fixes and enhancements have been added steadily release after release.</p>
<p style="text-align: center;"><a title="Cherokee Web Server" href="http://www.cherokee-project.com/"><img class="aligncenter" src="http://unixwars.com/wp-content/2008/03/cherokee.gif" alt="Cherokee Webserver" title="Cherokee 0.99.25 party kit!" /></a></p>
<p>I hope you enjoy it. We&#8217;ve tried to update all the documentation for this release, and we&#8217;ve automated most of the recipes in our cookbook by adding lots and lots of configuration Wizards, so hopefully you&#8217;ll be able to set up anything in a matter of seconds. As always feedback and feature requests are more than welcome at the <a href="http://cherokee-project.com/cgi-bin/mailman/listinfo/cherokee">mailing lists</a>. Here are links to <a title="Donwload Cherokee 0.99.25" href="http://www.cherokee-project.com/download/0.99/0.99.25/cherokee-0.99.25.tar.gz">download</a> the tarball and the <a href="http://www.cherokee-project.com/doc/">online documentation</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://unixwars.com/2009/10/26/cherokee-0-99-25-party-kit/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Jaunty Server on Compact Flash: running Ubuntu 9.04 on a Thin Client</title>
		<link>http://unixwars.com/2009/03/07/jaunty-server-on-compact-flash-running-ubuntu-904-on-a-thin-client/</link>
		<comments>http://unixwars.com/2009/03/07/jaunty-server-on-compact-flash-running-ubuntu-904-on-a-thin-client/#comments</comments>
		<pubDate>Sat, 07 Mar 2009 19:31:12 +0000</pubDate>
		<dc:creator>Taher Shihadeh</dc:creator>
				<category><![CDATA[Hardware]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Projects]]></category>
		<category><![CDATA[home server]]></category>

		<guid isPermaLink="false">http://unixwars.com/?p=360</guid>
		<description><![CDATA[Previously on UnixWars … I said in another post that I would be using a Thin Client as my home server. The machine is fanless, diskless and it makes no noise. The system boots from a low power Compact Flash. After setting things up, some friends decided to buy the exact same machine, so I&#8217;m [...]]]></description>
			<content:encoded><![CDATA[<p>Previously on UnixWars …<br />
I said in another post that I would be using a  <a href="http://unixwars.com/2009/02/19/fattening-up-a-thin-client/">Thin Client</a> as my home server. The machine is fanless, diskless and it makes no noise. The system boots from a low power Compact Flash. After setting things up, some friends decided to buy the exact same machine, so I&#8217;m going to write down the steps I followed to configure the server. Please note that Ubuntu Jaunty is still in Alpha 5 stage, so you might want to rethink which release you are going to install. I&#8217;ve had no problems whatsoever, so for a setup such as mine you should be safe. Alpha 6 is due to be released shortly and the first beta will be out on March 21st. Then, just one month will separate us from the official release day, so by now I&#8217;d say Jaunty has done most of it&#8217;s homework.</p>
<p>The easiest thing to do would be installing the system normally through PXE (look for the link at the end of this post if you&#8217;re interested), but there is a problem. Flash devices have a limited number of write-cycles, and wear levelling is not used on consumer grade cards. There are file systems optimized for flash devices -such as <a href="http://en.wikipedia.org/wiki/JFFS2">JFFS2</a>- but the benefits are not obvious here. As I understand it, these are designed for industrial devices with direct access to the memory cells. Consumer devices have an abstraction layer that make them transparent and enable us to use them as any other normal storage. It should provide everything we need, such as wear levelling. But as I said before, it normally doesn&#8217;t for consumer-type devices.</p>
<h3><span style="color: #000000;">Alternatives</span></h3>
<p>Having discarded the optimal solution for both technological and budget limitations, we are left with three alternatives.</p>
<ol>
<li>Use the CF as an ordinary device, with total disregard for the premature death of the drive. This is the simplest, and provided you have a lifetime warranty for your media it might not be such a bad idea.</li>
<li>Use the CF as if it were a LiveCD, maybe even adding persistence for our changes. This option should prove perfect if we want to use the Thin Client as a desktop system. Temporary changes are written to RAM, permanent changes will be stored on disk and even software updates will remain between reboots. It is a bit more complicated, so I&#8217;ll leave this in my TO DO list for now.</li>
<li>Install everything by hand on a local copy, configure the system to be able to run with as little disk access as possible (ideally, from a read-only root file-system), and dump it to the CF. Since space is not a problem for me (I have both a 1GB and 8GB CF cards), I&#8217;ll prefer this approach. In case everything was set as read-only, we would only  have to remount the file systems as writable during the process. As for SquashFS, though it seems an ideal choice for an embedded system that needs no upgrades, I&#8217;ll discuss this in other posts. It is simpler to deal with a &#8220;standard&#8221; system, not having to recreate binary boot images every time you update the box.</li>
</ol>
<p>My home server is used to share media and printers on my local network, manage downloads, and above all, provide a permanent access to my home network from wherever I might be. This is, by far, the handiest thing ever. At least it is for me. You never know when you are going to need to bypass Internet filters when you are roaming, for example. The wonders of SSH truly never cease to amaze me :)</p>
<p>I&#8217;ve opted for letting some writing be done to the CF, albeit the write-intensive tasks have been dealt with, because it is easier for the system to be updated, and because some of the services I&#8217;ll be using refuse to work on read-only mode. However, my next entry will be about using aufs/unionfs, and replicating this setup on totally read-only and compressed system that will run from the 256MB standard CF that comes with the computer.</p>
<p><span id="more-360"></span></p>
<h3>Things to install</h3>
<ul>
<li>Basic system: since Jaunty is still in Alpha stage, downloading the whole ISO is not worth it. Just grab the <a href="http://archive.ubuntu.com/ubuntu/dists/jaunty/main/installer-i386/alpha-5/images/netboot/mini.iso">NetBoot mini ISO</a> and download the rest as you go. You&#8217;ll have to update frequently until it is released anyhow.</li>
<li><strong>linux-image-server</strong>: A scheduler less suited for multimedia but with some advantages for a server.</li>
<li><strong>ssh</strong>: Access point to/from your server.</li>
<li><strong>cups</strong>: printer support. Note that CUPS alone will add around 100 MB to your installation.</li>
<li><strong>portmap, nfs-kernel-server</strong>: NFS file server.</li>
<li><strong>samba</strong>: sharing files and printers for Windows boxes.</li>
<li><strong>nmap, mc, wget, curl, unrar, p7zip-full, arj, unzip, </strong><strong>unp</strong>, <strong>unace, qemacs-nox</strong>: some handy tools I can&#8217;t live without. Mostly Swiss-army knives, decompressors and a tiny Emacs-like editor. It&#8217;s bigger than <strong>mg</strong>, but it has UTF8 support. I love Emacs but it is huge for a system like this.</li>
<li><strong>usbmount, ntfs-3g</strong>: to automatically mount USB devices. Nice if you plan to plug and unplug your external drives to share them on your LAN.</li>
<li><strong>mldonkey-server</strong>: for our every day download-needs.</li>
</ul>
<p>These were the steps I followed. Keep in mind these are mainly notes to myself. They should work for you, but they might not. At the very least these steps will give you some useful hints. Please note that there might be some rough edges in the tutorial, since I actually wrote this after having everything installed. I tooks some notes during the process, and this setup is working flawlessly for me. I don&#8217;t think any important (read non-trivial) steps were left out, but if that&#8217;s the case and it is giving you any kind of problem, just ask in the comments!</p>
<p>The CF shouldn&#8217;t suffer much IO, so the idea is to install and customize everything on a virtual machine, and then dump the resulting image to the CF after making every needed adjustment.</p>
<p>I originally intended to make the system completely read-only, but then decided that preventing /tmp and /var/log from massacring the CF would be more than enough. You can skip completely some of these steps, since the root-fs will not be totally read-only. For that, check the next post.</p>
<h3>Installing the base system</h3>
<p>I&#8217;ll be using VirtualBox because I find it easier to work with than plain QEMU, particularly since I&#8217;m going to be needing the network from within the virtual machine. Just create a new one with a disk size that can fit in you CF. I&#8217;ll use a 1GB card that I have laying around. Also configure the CDROM drive to use the <a href="http://archive.ubuntu.com/ubuntu/dists/jaunty/main/installer-i386/alpha-5/images/netboot/mini.iso">NetBoot mini ISO</a> that you have downloaded.</p>
<p>Before booting the machine, add <strong>PAE/NX</strong> support to the virtual CPU. The generic kernel doesn&#8217;t need it, but once you try to boot with the <strong>linux-image-server</strong> branch you will need this to proceed. That is done from the virtual machine definition section following the path: Details -&gt; General -&gt; Advanced.</p>
<p>Boot the machine and type &#8216;cli&#8217; if you want to minimize the installations. Then manually partition the hard drive if you want to use the new EXT4 file-system type, and go through the process as you normally would. Of course, <strong>disregard the swap partition</strong>. You can&#8217;t have that on a CF or it will die soon for sure.</p>
<p>I use the French repositories because those are the fastest for me. I always start by modifying the list of repositories on the recently installed system, in case I want to install things not present in <strong>universe</strong>. Edit it manually or just append the needed info.</p>
<pre class="prettyprint">echo "deb http://fr.archive.ubuntu.com/ubuntu jaunty \
main restricted universe multiverse" >> /etc/apt/sources.list</pre>
<p>And install the packages.</p>
<pre class="prettyprint">sudo su -
apt-get clean
apt-get update
apt-get install linux-image-server openssh-server samba cups \
 wget p7zip-full portmap nfs-kernel-server nmap mc \
 qemacs-nox unp arj unrar unzip usbmount mldonkey-server
apt-get clean</pre>
<p>No real need to mention it, but don&#8217;t forget to delete the generic kernel and associated files if you want to save another 100MB or so.</p>
<p>Now to handle issues related to readable-writable paths, as well as config files. Some steps are only useful if you will mount the rootfs as read-only. I&#8217;ll mark them as &#8220;Optional&#8221;:</p>
<ul>
<li>Optional: /etc/mtab: We will link it to a file that can describe the mounted file-systems without requiring write access.</li>
</ul>
<pre class="prettyprint">rm /etc/mtab
ln -s /proc/mounts /etc/mtab</pre>
<ul>
<li>/etc/network/interfaces: static IP for the server. Bare in mind you&#8217;ll need writable<em><strong> /etc/resolv.conf</strong></em> and <em><strong>/var/lib/dhcp3</strong></em> if you intend to use dynamic IPs. You&#8217;ll probably have to edit <em><strong>/sbin/dhclient-script</strong></em> to account for this if you are going for a full-ro filesystem. This is how my <em><strong>/etc/network/interfaces</strong></em> looks like.</li>
</ul>
<pre style="padding-left: 30px;">auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
address 10.0.0.100
gateway 10.0.0.1
broadcast 10.0.0.255
netmask 255.255.255.0</pre>
<ul>
<li>/etc/etc/fstab: define the mountpoints. Ensure that directories that need to be writable ar mounted as tmpfs rather than letting the system write them to flash. Alternatively you can mount them on external media. You need this to run the rootfs mounted as read-only. Even if you are not going to do so, you *MUST* set the &#8216;noatime&#8217; flag when mounting, or at least &#8216;relatime&#8217;. If you don&#8217;t, every single access to the files will require a read operation to modify the access time, and this is pure overhead for the CF that will significantly shorten its life span. Using journaling is probably another bad idea, since many commits will also affect the CF. Either use EXT2, or use this as a temporary solution and go for the SquashFS-Live system of approach #2.</li>
</ul>
<pre style="padding-left: 30px;">/dev/sda1 / ext4 noatime,errors=remount-ro 0 0
proc /proc proc defaults 0 0
tmpfs /var/log tmpfs defaults 0 0
tmpfs /tmp tmpfs defaults 0 0
tmpfs /var/lib/urandom tmpfs defaults 0 0
# Define the following ones if you use NFS or dynamic IPs.
# Writable paths should be tmpfs or be on external media.
# Both settings are OPTIONAL for our current setup.
tmpfs /var/lib/nfs tmpfs 0 0
tmpfs /var/lib/dhcp3 tmpfs defaults 0 0</pre>
<ul>
<li>Logging: either log to a tmpfs as shown above, to an external media, remotely or remove logging capabilities. This step is not optional at all. If you choose any option other than the first one, you&#8217;ll probably want to take a look at <strong><em>/etc/syslog.conf</em></strong>, <strong>/etc/default/syslogd</strong> and your /etc/rc?.d for links to <em><strong>/etc/init.d/sysklogd</strong></em>. Don&#8217;t forget the <em><strong>syslog.conf </strong></em>man entry. Note that logging to a tmpfs will give you some warnings at boot-time since some files are expected to exist. It&#8217;s probably not such a good idea, since you&#8217;ll loose the logs between reboots, troubleshooting vulnerabilities becomes more difficult, and so on. If you do proceed with the idea, you should keep this in mind: some logfiles are expected to be present at boot-time, so you&#8217;ll get some errors if you boot with an empty /var/log. Mldonkey also doesn&#8217;t boot if it can&#8217;t access the logs, so populate the directory with a  trivial script such as the following. It  must be run at boot-time before <em><strong>/etc/init.d/bootlogs.sh</strong></em> and <strong><em>/etc/init.d/sysklogd</em></strong> are invoked:</li>
</ul>
<pre style="padding-left: 30px">#!/bin/sh
### BEGIN INIT INFO
# Provides:          madoka
# Required-Start:    $local_fs
# Required-Stop:     $local_fs
# Default-Start:     2 3 4 5
# Default-Stop:      1
# X-Start-Before:    bootlogs sysklogd
# Short-Description: recreate /var/log structure for Madoka
# Description:       recreate /var/log structure for Madoka
### END INIT INFO

do_start () {
 mkdir -p /var/log/mldonkey
 mkdir -p /var/log/news
 cd /var/log

 touch \
 dmesg          \
 mail.warn      \
 user.log       \
 daemon.log     \
 messages       \
 debug          \
 auth.log       \
 mail.err       \
 syslog         \
 mail.log       \
 kern.log       \
 lpr.log        \
 mail.info      \
 news/news.crit \
 news/news.err  \
 news/news.notice

 chgrp adm dmesg
 chown syslog:adm \
 mail.warn       \
 user.log        \
 daemon.log      \
 messages        \
 debug           \
 auth.log        \
 mail.err        \
 syslog          \
 mail.log        \
 kern.log        \
 lpr.log         \
 mail.info

 chown news:news news
 chown root:news news/*
}

case "$1" in
 start)
 do_start
 ;;
 restart|reload|force-reload)
 echo "Error: argument '$1' not supported" &gt;&amp;2
 exit 3
 ;;
 stop)
 # No-op
 ;;
 *)
 echo "Usage: $0 start|stop" &gt;&amp;2
 exit 3
 ;;
esac</pre>
<p style="padding-left: 30px;">I saved it in /etc/init.d/madoka, and added it to my default runlevel to execute before <em><strong>init.d/bootlogs.sh</strong></em> and <strong><em>/etc/init.d/sysklogd</em></strong></p>
<pre style="padding-left: 30px">update-rc.d madoka start 05 2 .</pre>
<h3>Adding some more goodies</h3>
<ul>
<li>mldonkey: I just made symbolic links to an external drive. <em><strong>/var/lib/mldonkey/incoming</strong></em>, <em><strong>/var/lib/mldonkey/temp</strong></em> and <strong>/var/lib/mldonkey/torrents</strong> are the most frequently written directories by far. It also rewrites the configuration files whenever changes are made. Those are also stored under <em><strong>/var/lib/mldonkey/.<br />
</strong></em></li>
</ul>
<ul>
<li>/etc/usbmount/usbmount.conf: this is great if you are going to have lots of external drives. It automatically mounts the devices wherever you choose to (in my case, under my shared samba directory). It just works after rebooting. I only edited the file to specify the mount point and to add more file-systems that I wish automatically mounted:</li>
</ul>
<pre style="padding-left: 30px;">FILESYSTEMS="ntfs vfat ext2 ext3"</pre>
<ul>
<li>/etc/samba/smb.conf: to share files and printers, edit yours to resemble these pointers.</li>
</ul>
<pre style="padding-left: 30px"># add to [global] section, and edit the rest to your heart's contempt
workgroup = WARPCORE
printcap name = cups
printing = cups
security = share
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
# make sure [printers] section looks like this
[printers]
browseable = yes
printable = yes
public = yes
create mode = 0700
guest only = yes
use client driver = yes
path = /tmp</pre>
<pre style="padding-left: 30px">#define at least one share point
[shared]
comment = Shared media
path = /media
guest ok = Yes</pre>
<p style="padding-left: 30px;">To have the printers actually work you&#8217;ll need to configure them with cups. After having everything tuned, remember to mount the root file-system read-only. Adding the printer is trivial thanks to the administration web interface. Just forward the needed port or make <strong><em>cups</em></strong> accept connections from interfaces other than localhost, and launch your web browser.</p>
<pre class="prettyprint" style="padding-left: 30px;">ssh -L 2000:localhost:631 10.0.0.100</pre>
<p style="padding-left: 30px;">Then, access the configuration wizard visiting http://localhost:2000. On Windows systems you can add this by simply add ing a new printer with the wizard and browse your samba shares. You should see the printer there, hanging from your samba server. User your disks with the drivers and it should be a done deal.</p>
<ul>
<li>/etc/exports: remember to set up this if you are using NFS shares. I export the same things as with Samba.</li>
</ul>
<pre style="padding-left: 30px">/media 10.0.0.0/24(rw,sync,no_subtree_check)</pre>
<h3>Copying the image to the CF</h3>
<p>Ok, so now you have a perfectly working system in your virtual machine. That&#8217;s great. Time to copy it to the CF. Convert your VDI file to a raw image as shown below, and dump it to the CF.</p>
<p>If you are using the OSE edition of VirtualBox:</p>
<pre style="padding-left: 30px">vditool DD machine.vdi raw_image.img</pre>
<p>If it is the closed-source release, vditool is not available. You&#8217;ll have to do it like this:</p>
<pre style="padding-left: 30px">VBoxManage internalcommands converttoraw machine.vdi raw_image.img</pre>
<p>Once you have that, simply dump it to your CF with <em><strong>dd</strong></em> and you are good to go! Mine is detected on /dev/sdc</p>
<pre style="padding-left: 30px">dd if=raw_image.img of=/dev/sdc bs=1024</pre>
<h3>Other installation tips</h3>
<p>Going for a completely read-only system, even running something as mldonkey, is not that complicated either. Just trace the paths that need to be written frequently with <strong><em>&#8220;lsof /&#8221;</em></strong> and if you find something that has to modify many files, either replicate the file-structure on tmpfs/ramfs (preferably the former), or better yet, use <a href="http://aufs.sourceforge.net/">aufs</a>/<a href="http://www.unionfs.org/">unionfs</a> on a temporary file system.  Thats the great thing about the live-system approach that I&#8221;ll be using next. I&#8217;m still working on some rough edges, but I&#8217;ll blog about it as soon as the results are perfect :)</p>
<p>Another, simpler approach if you don&#8217;t mind the hassle and some extra wear on your CF, simply make a PXE install and customize afterwards following my steps. Here is a nice and easy tutorial to make an <a href="https://help.ubuntu.com/community/Installation/QuickNetboot">Ubuntu  net installation</a> in case you want to try that.</p>
<p>Anyway I hope you find this useful. It certainly was for me. Let me know if you find a cheap thin client on Ebay and follow this tutorial. A noiseless server does really make a difference!</p>
]]></content:encoded>
			<wfw:commentRss>http://unixwars.com/2009/03/07/jaunty-server-on-compact-flash-running-ubuntu-904-on-a-thin-client/feed/</wfw:commentRss>
		<slash:comments>27</slash:comments>
		</item>
		<item>
		<title>Fattening up a Thin Client: silent cheap home server</title>
		<link>http://unixwars.com/2009/02/19/fattening-up-a-thin-client/</link>
		<comments>http://unixwars.com/2009/02/19/fattening-up-a-thin-client/#comments</comments>
		<pubDate>Thu, 19 Feb 2009 20:45:59 +0000</pubDate>
		<dc:creator>Taher Shihadeh</dc:creator>
				<category><![CDATA[Hardware]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Projects]]></category>
		<category><![CDATA[home server]]></category>

		<guid isPermaLink="false">http://unixwars.com/?p=213</guid>
		<description><![CDATA[Do you have a server at home running 24/7? Having permanent access to your home network can be very useful at times, as is sharing media and printers, or managing your downloads. My last server was actually a downgrade from my previous box in computing terms. It was no powerhouse, but being a fanless Epia [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://unixwars.com/wp-content/2009/02/stand.jpg"><img class="size-medium wp-image-244 alignright" title="Futro S400" src="http://unixwars.com/wp-content/2009/02/stand-156x300.jpg" alt="Futro S400" width="156" height="300" /></a>Do you have a server at home running 24/7? Having permanent access to your home network can be very useful at times, as is sharing media and printers, or managing your downloads. My last server was actually a downgrade from my previous box in computing terms. It was no powerhouse, but being a fanless Epia with minimal power consumption and very low noise was a huge upgrade for me. I just connected the printer, some external USB drives, installed Debian and it has been sitting in a corner for ages, working flawlessly.</p>
<p style="text-align: center;"><a href="http://unixwars.com/wp-content/2009/02/back.jpg"><img class="size-medium wp-image-248 aligncenter" title="Back view" src="http://unixwars.com/wp-content/2009/02/back-300x58.jpg" alt="back 300x58 Fattening up a Thin Client: silent cheap home server" width="210" height="41" /></a></p>
<p>A while ago I was looking for a similar noiseless solution for my brother in law and a friend, and the itch started all over again. I decided it was a good moment to upgrade my system. The low power consumption and being fanless were a must, but I also wanted it to have integrated gigabit ethernet. So I though using a Thin Client would be a good solution. These are normally fanless and have very little power needs, and some even have decent processors and Gigabit Ethernet. After looking for a while, I settled for a <a title="Futro S400 specs" href="http://docs.fujitsu-siemens.com/dl.aspx?id=c1cede3a-686e-4243-a815-6683fb45c411">Fujitsu-Siemens Futro S400</a> that I found dirt cheap in Ebay. <span id="more-213"></span></p>
<p style="text-align: center;"><a href="http://unixwars.com/wp-content/2009/02/cd.jpg"><img class="size-medium wp-image-246 aligncenter" title="Size compared to a CD" src="http://unixwars.com/wp-content/2009/02/cd-300x217.jpg" alt="Compared to a CD" width="210" height="152" /></a></p>
<p>It has GbE, and an AMD Geode NX 1500 processor that is actually an embedded Athlon clocked at 1GHz that runs on 6W: not bad, given it was introduced on <a title="Geode NX 1500@6W presentation" href="http://news.zdnet.co.uk/hardware/0,1000000091,39155696,00.htm">2004.</a> The S400  boots from a 256MB CF and even has a spare IDE connector on-board. It lacks an internal power connector though, so I had to resort to using external media. One could get the 5V/12V from the motherboard, especially since the PCI port is not being used at the moment, but the system already gets hot enough as it is. I don&#8217;t want to add another heat source for now. However, unlike last time, I wanted to keep the OS on the compact flash. Sometimes the external media might not be available to boot, and besides&#8230; CF are fast for these things. I just swapped it for an 8GB/x133 I had laying around, and that&#8217;s much more than I need.</p>
<p style="text-align: center;"><a href="http://unixwars.com/wp-content/2009/02/board.jpg"><img class="size-medium wp-image-247 aligncenter" title="Motherboard" src="http://unixwars.com/wp-content/2009/02/board-300x223.jpg" alt="board 300x223 Fattening up a Thin Client: silent cheap home server" width="210" height="156" /></a></p>
<p>Installing on flash memory, however, requires certain considerations to prevent the installed OS from degrading due to a CF failure. These devices usually have  a limited number of write cycles, so the set up must minimize the write-operations as much as possible. Once it is done, you can use most thin clients exactly as any other computer.</p>
<p>Basically:</p>
<ol>
<li>Create a minimal installation on local machine</li>
<li>Customize it to your needs and add any other required packages</li>
<li>Make it possible for the root FS to run being mounted read-only</li>
<li>Dump the installation to the CF and make it bootable</li>
<li>Profit!</li>
</ol>
<p>It&#8217;s not rocket science, but I&#8217;ll be writing something about it  for those who could find it useful. Check out the <a href="http://unixwars.com/tag/home-server/">home server tag</a> if you are interested, and good luck!</p>
<p style="text-align: left;">UPDATE: Here is a photo of the AC adapter, in case you want to <a href="http://www.google.com/search?q=LAD6019AB5">Google it</a><a href="http://unixwars.com/wp-content/2009/02/S400AC.jpg"><img class="aligncenter size-medium wp-image-621" title="S400AC" src="http://unixwars.com/wp-content/2009/02/S400AC-208x300.jpg" alt="S400AC 208x300 Fattening up a Thin Client: silent cheap home server" width="125" height="180" /></a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://unixwars.com/2009/02/19/fattening-up-a-thin-client/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Cherokee v0.98: Jailbreak</title>
		<link>http://unixwars.com/2009/01/25/cherokee-v098/</link>
		<comments>http://unixwars.com/2009/01/25/cherokee-v098/#comments</comments>
		<pubDate>Sun, 25 Jan 2009 21:40:27 +0000</pubDate>
		<dc:creator>Taher Shihadeh</dc:creator>
				<category><![CDATA[Hardware]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Projects]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://unixwars.com/?p=209</guid>
		<description><![CDATA[It has been a while since my last post. Some rough month this has been, oh boy. Anyway, I wanted to let you know that we have released the new and improved Cherokee a couple of days ago. Since the project has advanced so much over the last months, we have decided to boost the [...]]]></description>
			<content:encoded><![CDATA[<p>It has been a while since my last post. Some rough month this has been, oh boy. Anyway, I wanted to let you know that we have released the new and improved Cherokee a couple of days ago.</p>
<p>Since the project has advanced so much over the last months, we have decided to boost the release closer to the 1.0 milestone. Many things have been improved, in stability, features  and performance. The Windows build has received some attention, and though it still has a lot of issues, Stefan de Konik has built a <a title="Binary Windows build" href="http://kinkrsoftware.nl/contrib/cherokee/cherokee-win32-r2734.zip">beta Windows package</a> for people to try it out and help us sort out the rest of the problems. Great job as always, Stefan! The admin part is still not running under Windows, but you can always create the necessary config files on another environment and try out the Windows binaries.</p>
<p>In this release the caching mechanisms have been fixed, the web server can now be bound to multiple IPs and ports at the same time, a new balancing strategy has been added (so sticky sessions can now be implemented, for instance) &#8230;</p>
<p>To find out more about it, read the <a href="http://lists.octality.com/pipermail/cherokee/2009-January/009697.html">official release note for 0.98</a></p>
<p style="text-align: center"><a title="Cherokee Web Server" href="http://www.cherokee-project.com/"><img src="http://unixwars.com/wp-content/2008/03/cherokee.gif" alt="Cherokee Webserver" title="Cherokee v0.98: Jailbreak" /></a></p>
<p>Try it out. Cherokee is the fastest web server there is right now.</p>
<p>Her you have some links:</p>
<ul>
<li>The <a href="http://cherokee-project.com/cgi-bin/mailman/listinfo/cherokee">mailing lists</a></li>
<li><a title="Donwload Cherokee 0.98" href="http://www.cherokee-project.com/download/0.98/0.98.0/cherokee-0.98.0.tar.gz">Download</a> link</li>
<li><a href="http://www.cherokee-project.com/doc/">Online documentation</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://unixwars.com/2009/01/25/cherokee-v098/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
