<?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/"
	>

<channel>
	<title>kallasoft &#187; Linux</title>
	<atom:link href="http://www.kallasoft.com/category/linux/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.kallasoft.com</link>
	<description>Commercial-Friendly Open Source Software Development</description>
	<pubDate>Mon, 05 Jan 2009 02:30:22 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>The Play! Framework</title>
		<link>http://www.kallasoft.com/the-play-framework/</link>
		<comments>http://www.kallasoft.com/the-play-framework/#comments</comments>
		<pubDate>Thu, 18 Dec 2008 00:14:45 +0000</pubDate>
		<dc:creator>Ray Gomez</dc:creator>
		
		<category><![CDATA[Linux]]></category>

		<category><![CDATA[Servers]]></category>

		<category><![CDATA[Software Development]]></category>

		<category><![CDATA[software]]></category>

		<category><![CDATA[deployment]]></category>

		<category><![CDATA[framework]]></category>

		<category><![CDATA[guide]]></category>

		<category><![CDATA[JSP]]></category>

		<category><![CDATA[Play!]]></category>

		<category><![CDATA[tutorial]]></category>

		<category><![CDATA[web application]]></category>

		<guid isPermaLink="false">http://www.kallasoft.com/?p=698</guid>
		<description><![CDATA[In an endless search for efficiently building Web applications, one might stumble upon a new framework called Play! Using enterprise backed Java with a Rails-esque feel, the Play! framework seems to offer quite a bit over traditional web development tools with its straightforward development environment and ease of deploying.
Taken from the website:
The Play! framework makes [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-776" style="float: left; margin-left: 8px; margin-right: 8px;" title="Play Icon" src="http://www.kallasoft.com/wp-content/uploads/2008/12/play.png" alt="Play Icon" width="177" height="64" />In an endless search for efficiently building Web applications, one might stumble upon a new framework called <a href="http://www.playframework.org/">Play!</a> Using enterprise backed Java with a Rails-esque feel, the Play! framework seems to offer quite a bit over traditional web development tools with its straightforward development environment and ease of deploying.</p>
<p>Taken from the website:</p>
<p style="padding-left: 30px;"><em>The Play! framework makes it easier to build Web applications with Java. It&#8217;s a clean alternative to bloated Enterprise Java stacks.</em></p>
<p>First off, I have to say I am a fan of Rails for deploying web applications, and the Play! framework is just as easy. Once installed you can create a project</p>
<pre class="console">~$play new project</pre>
<p>and then easily deploy (albeit boring and default) it:</p>
<pre class="console">~$play start project</pre>
<p style="text-align: center;"><img class="aligncenter size-full wp-image-765" title="New Running Project" src="http://www.kallasoft.com/wp-content/uploads/2008/12/new-project.png" alt="New Running Project" width="472" height="301" /></p>
<p>No setup files and no need for Tomcat, simple and awesome. Of course, Rails developers won&#8217;t be too impressed, but it is a breathe of fresh air for those Java folks. As far as development goes, using the Play! framework is pretty straightforward. The project adheres to the MVC paradigm and forces you to as well. You place all of your Models in the app/models folder, all of your Controllers in the app/controllers folder and you place all of your Views (html files in this case) in the app/views folder. Keeping this setup and maintaining the MVC ideal gives you great power out of the box, and all without needing to program any glue to make these pieces work seamlessly together.</p>
<p>Of course there are other features that make the Play! framework appealing. For one, it does offer an &#8220;instant compile&#8221;, which really isn&#8217;t instant but allows you to view code changes as soon as your page is refreshed.  Another feature is the increased support for debugging source code. Any compile errors will be displayed in your browser:</p>
<p style="text-align: center;"><img class="size-medium wp-image-766 aligncenter" title="New Project Compilation Error " src="http://www.kallasoft.com/wp-content/uploads/2008/12/new-project-compilation-error-475x344.png" alt="New Project Compilation Error" width="475" height="344" /></p>
<p>This is especially nice for those accustomed to JSP because your view will actually show you where the break occurs. This and other system messages are logged in the logs/ directory. Enticed yet? Along with all of this, the Play! framework has the ability to &#8220;eclipsify&#8221; your project so that it can be modified and tested using the Eclipse IDE. To do this you go to the parent directory of your project and simply run:</p>
<pre class="console">~$ play eclipsify project</pre>
<p>Then you can import into Eclipse using the &#8220;Existing Project&#8221; import option. Netbeans is also supported with a similar one line command. With a fast deployment scheme, instant compiles, better debug feedback from JSP, and multiple IDE support the Play! framework truly makes it easier to build web applications with Java.</p>
<p>Check it out and let us know what you think!</p>
<p>Also keep an eye out for our upcoming guide to getting started with Play!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kallasoft.com/the-play-framework/feed/</wfw:commentRss>
		</item>
		<item>
		<title>AQEMU Frontend for QEMU</title>
		<link>http://www.kallasoft.com/aqemu-frontend-for-qemu/</link>
		<comments>http://www.kallasoft.com/aqemu-frontend-for-qemu/#comments</comments>
		<pubDate>Wed, 17 Dec 2008 05:09:03 +0000</pubDate>
		<dc:creator>Ray Gomez</dc:creator>
		
		<category><![CDATA[Linux]]></category>

		<category><![CDATA[Operating System]]></category>

		<category><![CDATA[AQEMU]]></category>

		<category><![CDATA[emulation]]></category>

		<category><![CDATA[QEMU]]></category>

		<category><![CDATA[VirtualBox]]></category>

		<category><![CDATA[visualization]]></category>

		<category><![CDATA[VMPlayer]]></category>

		<guid isPermaLink="false">http://www.kallasoft.com/?p=737</guid>
		<description><![CDATA[
Virtualization has always held a special place in my toolset because it allows me to make modifications to my environment without the headache of potentially breaking something. So, any improvements on this front tend to grab my attention.
Recently, I came across AQEMU a GUI frontend to QEMU. For those of you who may not know, [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><img class="aligncenter size-full wp-image-749" title="Default Settings for VM" src="http://www.kallasoft.com/wp-content/uploads/2008/12/default-settings.png" alt="default-settings" width="383" height="320" /></p>
<p>Virtualization has always held a special place in my toolset because it allows me to make modifications to my environment without the headache of potentially breaking something. So, any improvements on this front tend to grab my attention.</p>
<p>Recently, I came across <a href="http://sourceforge.net/projects/aqemu/">AQEMU</a> a GUI frontend to QEMU. For those of you who may not know, QEMU is an Open Source command line application that has support for CPU and System emulation. Now when it comes to virtualization I am a big fan of <a href="http://www.virtualbox.org/">Virtualbox</a> and <a href="http://www.vmware.com/products/player/">VMplayer</a> because of their straightforward GUIs and speed of setup. So, that being said, one of the things that has always turned me off from QEMU was the lack of a decent frontend.  AQEMU has given me new hope, and with an interface similar to Virtualbox I find myself up and running AQEMU with very little headache.</p>
<p>Of course the greatest benefit of running QEMU is the fact that architectures other than x86 are slowly being added to the support list.  In other words, you can emulate an old PowerPC or SPARC system on a more readily available x86 using QEMU. For those brave developers needing to develop cross architecture applications, this is just one more tool to make their lives easier.  If you know all the dirt on what processor you need to run, AQEMU&#8217;s sleek interface allows you to setup that configuration quickly and easily.</p>
<p style="text-align: center;"><img class="aligncenter size-full wp-image-751" title="Supported System Emulations on x86 host system" src="http://www.kallasoft.com/wp-content/uploads/2008/12/supported-cpu-emulations.png" alt="Supported System Emulations on x86 host system" width="383" height="320" /></p>
<p>Adding a new VM for the standard x86 System emulation is also easy:  click the Plus sign, give the VM a name, then specify your hard drive images in the HDD tab or cdrom iso in the CD/DVD/Floppy tab, and hit the play button.  To get up and running with AQEMU you will need to install QEMU and grab the AQEMU package from <a href="http://sourceforge.net/project/showfiles.php?group_id=229794&amp;package_id=278450"> here</a>. If you are running Ubuntu you can just grab the .deb package and then issue these commands in a terminal to install:</p>
<pre class="console">~$ sudo apt-get install qemu
~$ sudo dpkg -i aqemu-0.6.deb</pre>
<p>When you first startup the application it will ask you to set up your configuration:</p>
<p style="text-align: center;"><img class="aligncenter size-full wp-image-750" title="Startup Screen" src="http://www.kallasoft.com/wp-content/uploads/2008/12/start-screen.png" alt="Startup Screen" width="272" height="357" /></p>
<p>If you don&#8217;t need any special features, or if you just want to get running, click okay and the default settings will be applied. After that you should be good to go! Check it out and let us know what you think.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kallasoft.com/aqemu-frontend-for-qemu/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Meld for Easy File Comparison / Diff-ing</title>
		<link>http://www.kallasoft.com/meld-for-file-comparison/</link>
		<comments>http://www.kallasoft.com/meld-for-file-comparison/#comments</comments>
		<pubDate>Tue, 09 Dec 2008 21:06:54 +0000</pubDate>
		<dc:creator>Ray Gomez</dc:creator>
		
		<category><![CDATA[Linux]]></category>

		<category><![CDATA[Software Development]]></category>

		<category><![CDATA[diff]]></category>

		<category><![CDATA[diff gui]]></category>

		<category><![CDATA[file difference]]></category>

		<category><![CDATA[folder difference]]></category>

		<category><![CDATA[kdiff]]></category>

		<category><![CDATA[Meld]]></category>

		<guid isPermaLink="false">http://www.kallasoft.com/?p=686</guid>
		<description><![CDATA[
If you have ever needed to work with multiple version of a  file, you&#8217;ve probably worked with diff. If you were ever wondering if there was a straightforward GUI compliment to diff, well, Meld might do the trick. At version 1.2.1 Meld offers many features like 3 way compare, directory compare, and a version [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://www.kallasoft.com/wp-content/uploads/2008/12/folder-diff.png"><img class="aligncenter size-medium wp-image-687" title="Folder Difference" src="http://www.kallasoft.com/wp-content/uploads/2008/12/folder-diff.png" alt="" width="338" height="293" /></a></p>
<p>If you have ever needed to work with multiple version of a  file, you&#8217;ve probably worked with diff. If you were ever wondering if there was a straightforward GUI compliment to diff, well, Meld might do the trick. At version 1.2.1 Meld offers many features like 3 way compare, directory compare, and a version control browser (subversion, cvs, bazaar-ng, Mercurial). It is a great utility for a developer doing source comparison. The program is written in python and offers a sleek gnome2 based interface that is quite intuitive. Meld offers an easy way to transition code from one version to another with a simple mouse click. This feature alone makes merging branches easy:</p>
<p style="text-align: center;"><a href="http://www.kallasoft.com/wp-content/uploads/2008/12/meld-file-diff.png"><img class="aligncenter size-medium wp-image-688" title="Meld File Difference" src="http://www.kallasoft.com/wp-content/uploads/2008/12/meld-file-diff.png" alt="" width="380" height="328" /></a></p>
<p style="text-align: left;">Did I also mention that files can be modified in place, and the file comparison will be updated dynamically?  Meld will greatly enhance your work efficiency and help eliminate typos while making branch maintenance a breeze. You can grab Meld <a title="Meld Website" href="http://meld.sourceforge.net/">here</a>, but be sure you have the gnome2 libs, at least python 2.3, pygtk2 and gnome-python2 installed. If you are running Ubuntu, you can do all of that in one line:</p>
<pre class="console">~$ sudo apt-get install python-gnome2 libgnome2-0 python-gtk2 python</pre>
<p>Next you can unzip the archive and run it. In the example below I actually installed Meld to my /usr/local/bin making it a one line executable from anywhere:</p>
<pre class="console">~$ tar -xvzf meld-1.2.1.tar.gz
meld-1.2.1/
meld-1.2.1/misc.py
...
meld-1.2.1/prefs.py
meld-1.2.1/MAINTAINERS
~$ cd meld-1.2.1/
~/meld-1.2.1$ sudo make prefix=/usr/local install
~/meld-1.2.1$ cd
~$ meld</pre>
<p style="text-align: left;">You are now good to go. Check it out, and let us know what you think!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kallasoft.com/meld-for-file-comparison/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Cryptkeeper for Encrypting User Files</title>
		<link>http://www.kallasoft.com/cryptkeeper-for-encrypting-user-files/</link>
		<comments>http://www.kallasoft.com/cryptkeeper-for-encrypting-user-files/#comments</comments>
		<pubDate>Mon, 08 Dec 2008 15:44:08 +0000</pubDate>
		<dc:creator>Ray Gomez</dc:creator>
		
		<category><![CDATA[Linux]]></category>

		<category><![CDATA[Operating System]]></category>

		<category><![CDATA[Cryptkeeper]]></category>

		<category><![CDATA[Encfs]]></category>

		<category><![CDATA[encryption]]></category>

		<category><![CDATA[GNOME]]></category>

		<category><![CDATA[home folder encryption]]></category>

		<category><![CDATA[k-encfs]]></category>

		<category><![CDATA[KDE]]></category>

		<guid isPermaLink="false">http://www.kallasoft.com/?p=667</guid>
		<description><![CDATA[
In this day and age, encryption has become the focus for securing sensitive data like bank account information, software licenses, or even social security numbers. If you have ever wanted to keep specific folders in your home directory encrypted in Linux there are a multitude of ways. Cryptkeeper and K-encfs come to mind. Both applications [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://www.kallasoft.com/wp-content/uploads/2008/12/crypt-keeper_menu.png"><img class="aligncenter size-medium wp-image-670" title="Cryptkeeper Menu in KDE4" src="http://www.kallasoft.com/wp-content/uploads/2008/12/crypt-keeper_menu.png" alt="" width="309" height="144" /></a></p>
<p>In this day and age, encryption has become the focus for securing sensitive data like bank account information, software licenses, or even social security numbers. If you have ever wanted to keep specific folders in your home directory encrypted in Linux there are a multitude of ways. <a href="http://tom.noflag.org.uk/cryptkeeper.html">Cryptkeeper</a> and <a href="http://www.kde-apps.org/content/show.php?content=54078">K-encfs</a> come to mind. Both applications use <a title="Encfs" href="http://www.arg0.net/encfs">Encfs</a> to create and access encrypted folders. I have found Cryptkeeper to run well in KDE4, and since it is in Ubuntu&#8217;s Universal repository it was natural to quickly adopt. To install head on over to a terminal and (if you have the Universal repository in your repository list) enter the following:</p>
<pre class="console">~$ sudo apt-get install cryptkeeper</pre>
<p>You should now be good to go, and find Cryptkeeper in your System applications folder. Now that it is installed, this might be a good application to add to your startup so you don&#8217;t have to do the pre-coffee click-all-fancy-app jig in the morning. To add to Cryptkeeper to your KDE startup create a link in your ~/.kde/Autostart folder. To do that we need to get to the Autostart folder.  Open up a terminal session and type in the following:</p>
<pre class="console">~$ dolphin ~/.kde/Autostart</pre>
<p>Right click in the newly created Dolphin window and select Create New -&gt; Link to Application and enter the following:</p>
<p style="text-align: center;"><a href="http://www.kallasoft.com/wp-content/uploads/2008/12/adding-to-startup.png"><img class="aligncenter size-medium wp-image-668" title="Adding Cryptkeeper to Startup" src="http://www.kallasoft.com/wp-content/uploads/2008/12/adding-to-startup.png" alt="" width="334" height="335" /></a></p>
<p>Now it should come up every time you log in. Go ahead and start it up now, and create a new folder by clicking on the Cryptkeeper tray and selecting &#8220;New Encrypted Folder.&#8221;  You should get a window like this:</p>
<p style="text-align: center;"><a href="http://www.kallasoft.com/wp-content/uploads/2008/12/create-new-folder.png"><img class="aligncenter size-medium wp-image-669" title="Create New Folder" src="http://www.kallasoft.com/wp-content/uploads/2008/12/create-new-folder.png" alt="" width="315" height="317" /></a></p>
<p>Enter in the name of the folder you wish to create, click Forward, and then enter a password. You will now be able to mount or unmount this folder easily through the system tray.</p>
<p style="text-align: center;"><a href="http://www.kallasoft.com/wp-content/uploads/2008/12/new-encrypted-folder.png"><img class="aligncenter size-medium wp-image-673" title="new-encrypted-folder" src="http://www.kallasoft.com/wp-content/uploads/2008/12/new-encrypted-folder.png" alt="" width="324" height="158" /></a></p>
<p>After playing around with Cryptkeeper, you&#8217;ll find that the application itself is pretty simple, giving you the ability to create, import, mount or unmount an Encfs folders. For anybody looking to keep prying eyes out of personal files, Cryptkeeper does the trick.</p>
<p><span style="font-size: small;">Since Cryptkeeper does use Encfs under the covers it might be good to know a few disadvantages exist. First, lets start by saying <strong>remember your password</strong>, Encfs doesn&#8217;t have a multiple key system so if you lose your password an admin can&#8217;t help you out. Also file attributes remain viewable. I have created a folder called &#8220;secret&#8221; which can be found as .secret_enfs in my home folder. I&#8217;ve opened up my .secret_enfs folder and then used Cryptkeeper to mount this folder so you can see below:</span></p>
<p style="text-align: center;"><span style="font-size: small;"><a href="http://www.kallasoft.com/wp-content/uploads/2008/12/encrypted-folder-mounted.png"><img class="alignnone size-medium wp-image-672" title="encrypted-folder-mounted" src="http://www.kallasoft.com/wp-content/uploads/2008/12/encrypted-folder-mounted.png" alt="" width="251" height="147" /></a> <a href="http://www.kallasoft.com/wp-content/uploads/2008/12/secret-folder.png"><img class="alignnone size-medium wp-image-674" title="secret-folder" src="http://www.kallasoft.com/wp-content/uploads/2008/12/secret-folder.png" alt="" width="266" height="144" /></a></span></p>
<p style="text-align: left;"><span style="font-size: small;">Even though the attributes remain in place, filenames and contents are hidden. Lastly encryption is done in real time and very CPU costly so I wouldn&#8217;t suggest using it with large files. All that being said,  it is a quick and easy way to protect files in your home directory or on a pendrive. </span></p>
<p style="text-align: left;">Check it out and let us know what you think!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kallasoft.com/cryptkeeper-for-encrypting-user-files/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Programming a Simple Client/Server Application with Ruby</title>
		<link>http://www.kallasoft.com/programming-a-simple-clientserver-with-ruby/</link>
		<comments>http://www.kallasoft.com/programming-a-simple-clientserver-with-ruby/#comments</comments>
		<pubDate>Mon, 24 Nov 2008 06:09:31 +0000</pubDate>
		<dc:creator>Ray Gomez</dc:creator>
		
		<category><![CDATA[Linux]]></category>

		<category><![CDATA[Operating System]]></category>

		<category><![CDATA[Servers]]></category>

		<category><![CDATA[Software Development]]></category>

		<category><![CDATA[client]]></category>

		<category><![CDATA[Ruby]]></category>

		<category><![CDATA[server]]></category>

		<category><![CDATA[sockets]]></category>

		<category><![CDATA[TCPServer]]></category>

		<category><![CDATA[TCPSocket]]></category>

		<guid isPermaLink="false">http://www.kallasoft.com/?p=636</guid>
		<description><![CDATA[
Being able to add some sort of client/server model to your programs is pretty essential these days, and Ruby does a fine job making your life easier.
For this article, I&#8217;ll show you a quick, down-and-dirty way of getting a very simple server up and running and a client that will say &#8220;Hello Server World&#8221; and [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.kallasoft.com/wp-content/uploads/2008/11/ruby-logo.png"><img class="alignnone size-medium wp-image-637" style="float: left; margin-left: 8px; margin-right: 8px;" title="Ruby Logo" src="http://www.kallasoft.com/wp-content/uploads/2008/11/ruby-logo.png" alt="" width="107" height="123" /></a></p>
<p>Being able to add some sort of client/server model to your programs is pretty essential these days, and Ruby does a fine job making your life easier.</p>
<p>For this article, I&#8217;ll show you a quick, down-and-dirty way of getting a very simple server up and running and a client that will say &#8220;Hello Server World&#8221; and disconnect. You will, of course, need Ruby installed, for Ubuntu users</p>
<pre class="console">sudo apt-get install ruby</pre>
<p>and for Fedora users</p>
<pre class="console">sudo yum install ruby</pre>
<p>Now, the first plan of action for a client/server assignment is to map out what exactly you want to occur.  Setting those expectations in comments before you even think about code a good practice and will make your life a whole lot easier. That being said, let&#8217;s start with the server,  by adding the following to a file we&#8217;ll name server.rb:</p>
<pre name="code" class="ruby">
#establish server
#setup to listen and accept connections
#start new thread conversation
#reply with goodbye
#end loop</pre>
<p>Now let&#8217;s do the same thing for the client script but name it client.rb</p>
<pre name="code" class="ruby">
#establish connection
#send a quick message
#wait for messages from the server
#if one of the messages contains 'Goodbye' we'll disconnect
#end loop</pre>
<p>Okay, now, lets get coding. There is only one requirement for writing these scripts, you will need to add:</p>
<pre class="console">require 'socket'</pre>
<p>to the top of your script so that you have access to the TCPServer class. The TCPServer constructor needs at least port number, so I&#8217;ll set it up with port 2008. Also, we want to be able to have the server allow many clients to connect so we will need some sort of Thread structure built in to handle multiple requests. We will then accept any incoming TCP connections on port, 2008 say &#8220;Welcome&#8221; to the client, and wait for any response.&#8221;  To keep this tutorial short, the server will be implemented in a forever loop that constantly listens for connections.  Edit your server.rb file to follow what I&#8217;ve outlined above (I&#8217;ve used ## to denote comments further explaining what is going on) :</p>
<pre name="code" class="ruby">
#!/usr/bin/ruby
require 'socket'

puts "Starting up server..."

# establish the server
## Server established to listen for connections on port 2008
server = TCPServer.new(2008)

# setup to listen and accept connections
while (session = server.accept)

 #start new thread conversation
 ## Here we will establish a new thread for a connection client
 Thread.start do

   ## I want to be sure to output something on the server side
   ## to show that there has been a connection
   puts "log: Connection from #{session.peeraddr[2]} at
          #{session.peeraddr[3]}"
   puts "log: got input from client"

   ## lets see what the client has to say by grabbing the input
   ## then display it. Please note that the session.gets will look
   ## for an end of line character "\n" before moving forward.
   input = session.gets
   puts input

   ## Lets respond with a nice warm welcome message
   session.puts "Server: Welcome #{session.peeraddr[2]}\n"

   # reply with goodbye
   ## now lets end the session since all we wanted to do is
   ## acknowledge the client
   puts "log: sending goodbye"
   session.puts "Server: Goodbye\n"

 end  #end thread conversation
end   #end loop</pre>
<p>Cool, the server is written.  If you run this script, it won&#8217;t look like much so lets just let it go for now. The client is pretty simple, we just want to say Hello, wait for any messages back from our super sophisticated server, and disconnect if the server says &#8216;Goodbye&#8217;.</p>
<p>Modify your client.rb file to look something like this:</p>
<pre name="code" class="ruby">
#!/usr/bin/ruby
require 'socket'

# establish connection
## We need to tell the client where to connect
## Conveniently it is on localhost at port 2008!
clientSession = TCPSocket.new( "localhost", 2008 )

puts "log: starting connection"

#send a quick message
## Note that this has a carriage return. Remember our server
## uses the method gets() to get input back from the server.
puts "log: saying hello"
clientSession.puts "Client: Hello Server World!\n"

#wait for messages from the server
## You've sent your message, now we need to make sure
## the session isn't closed, spit out any messages the server
## has to say, and check to see if any of those messages
## contain 'Goodbye'. If they do we can close the connection
 while !(clientSession.closed?) &amp;&amp;
          (serverMessage = clientSession.gets)
  ## lets output our server messages
  puts serverMessage

  #if one of the messages contains 'Goodbye' we'll disconnect
  ## we disconnect by 'closing' the session.
  if serverMessage.include?("Goodbye")
   puts "log: closing connection"
   clientSession.close
  end
 end #end loop</pre>
<p>Now open up two terminal sessions, and, from the directory you were editing your client and server scripts from, run them.</p>
<p>Localhost Terminal Session 1</p>
<pre class="console">~$ ruby server.rb
Starting up server...
log: Connection from localhost at ::1
log: got input from client
Client: Hello Server World!
log: sending goodbye</pre>
<p>Localhost Terminal Session 2</p>
<pre class="console">~$ ruby client.rb
log: starting connection
log: saying hello
Server: Welcome localhost
Server: Goodbye
log: closing connection
~$</pre>
<p>Of course the server running in terminal session 1 will continue running until you hit Control-C to stop it. If you have port 2008 open, you should now be able to run the client script from a remote computer if you change &#8216;localhost&#8217; to the ipaddress of your server.  My server resides at &#8220;192.168.0.127&#8243; and my client resides at &#8220;192.168.0.141&#8243;.  I modified the &#8216;clientSession&#8221; line to look like this:</p>
<pre name="code" class="ruby">
clientSession = TCPSocket.new( "192.168.0.127", 2008 )</pre>
<p>Then, I ran this across my small network and saw:</p>
<p>on Server Side terminal:</p>
<pre class="console">macbook:~ presenter$ ruby server.rb
Starting up server...
log: Connection from sparta at 192.168.0.141
log: got input from client
Client: Hello Server World!
log: sending goodbye</pre>
<p>on Client side terminal:</p>
<pre class="console">codenomad@sparta:~$ ruby client.rb
log: starting connection
log: saying hello
Server: Welcome sparta
Server: Goodbye
log: closing connection
codenomad@sparta:~$</pre>
<p>Now, if you really wanted to add some more features, try adding the ability to respond to messages sent by the client in the server script or try to raise or rescue exceptions when a connection is lost.  You can see the types of exceptions that TCPServer raises <a href="http://www.ruby-doc.org/stdlib/libdoc/socket/rdoc/classes/TCPServer.html">here</a> under either Unix-based Exceptions or Windows Exceptions.  Good luck with creating your client/server app, and happy coding!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kallasoft.com/programming-a-simple-clientserver-with-ruby/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Floola as iPod Management Software</title>
		<link>http://www.kallasoft.com/floola-as-ipod-management-software/</link>
		<comments>http://www.kallasoft.com/floola-as-ipod-management-software/#comments</comments>
		<pubDate>Sat, 22 Nov 2008 16:16:44 +0000</pubDate>
		<dc:creator>Ray Gomez</dc:creator>
		
		<category><![CDATA[Linux]]></category>

		<category><![CDATA[Floola]]></category>

		<category><![CDATA[iPod]]></category>

		<category><![CDATA[management]]></category>

		<guid isPermaLink="false">http://www.kallasoft.com/?p=546</guid>
		<description><![CDATA[Looking for that great iTunes replacement app to run on Linux? Have you ever heard of Floola? Offering most of the features of iTunes, Floola now gives Linux users the ability to copy Music, Photos, Movies, and even YouTube and MySpace videos to their treasured ipods.
For those whose music is encoded in ogg or FLAC, [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.floola.com/modules/wiwimod/"><img class="alignleft size-medium wp-image-548" style="float: left; margin-left: 8px; margin-right: 8px;" title="Floola Logo" src="http://www.kallasoft.com/wp-content/uploads/2008/11/floola.jpeg" alt="" width="85" height="83" /></a>Looking for that great iTunes replacement app to run on Linux? Have you ever heard of <a href="http://www.floola.com/modules/wiwimod/">Floola</a>? Offering most of the features of iTunes, Floola now gives Linux users the ability to copy Music, Photos, Movies, and even YouTube and MySpace videos to their treasured ipods.</p>
<p>For those whose music is encoded in ogg or FLAC, well, Floola can also convert these formats so that they are playable on the iPod. You can even manage the notes on your iPod. The greatest part is that the software is cross platform and runs on Windows, Mac OS X, and Linux. If you are running Ubuntu you will need either libxine or gstreamer and libstdc++5 (for notifications you&#8217;ll need libnotify as well). These can all be installed pretty easy by running:</p>
<pre class="console">sudo apt-get install libstdc++5 libxine1 libnotify-bin</pre>
<p>After that completes you can grab the Floola download <a href="http://www.floola.com/modules/wiwimod/index.php?page=download_linux">here</a></p>
<p>You will then need to unzip the archive and copy to your /usr/bin.  Assuming you downloaded it to the desktop you can issue these commands:</p>
<pre class="console">~/Desktop$ tar -xvzf Floola-linux.tar.gz
~/Desktop$ cd Floola-linux/
~/Desktop/Floola-linux$ sudo cp Floola /usr/bin/</pre>
<p>Be sure your ipod is plugged in and now you can run it:</p>
<pre class="console">~$ Floola</pre>
<p>The first time you run Floola you will need to go through a simple setup:</p>
<p style="text-align: center;"><a href="http://www.kallasoft.com/wp-content/uploads/2008/11/floola-screenshot1.png"><img class="size-medium wp-image-626 aligncenter" title="floola-screenshot1" src="http://www.kallasoft.com/wp-content/uploads/2008/11/floola-screenshot1.png" alt="" width="475" height="320" /></a></p>
<p>Select your iPod version:</p>
<p style="text-align: center;"><a href="http://www.kallasoft.com/wp-content/uploads/2008/11/floola-screenshot2.png"><img class="size-medium wp-image-627 aligncenter" title="floola-screenshot2" src="http://www.kallasoft.com/wp-content/uploads/2008/11/floola-screenshot2.png" alt="" width="475" height="320" /></a></p>
<p>And now you are good to go:</p>
<p style="text-align: center;"><a href="http://www.kallasoft.com/wp-content/uploads/2008/11/floola-screenshot.png"><img class="size-medium wp-image-625 aligncenter" title="floola-screenshot" src="http://www.kallasoft.com/wp-content/uploads/2008/11/floola-screenshot.png" alt="" width="475" height="298" /></a></p>
<p>You like Floola? Let us know what you think!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kallasoft.com/floola-as-ipod-management-software/feed/</wfw:commentRss>
		</item>
		<item>
		<title>AjaXplorer: a Web-based File Manager</title>
		<link>http://www.kallasoft.com/ajaxplorer-a-web-based-file-manager/</link>
		<comments>http://www.kallasoft.com/ajaxplorer-a-web-based-file-manager/#comments</comments>
		<pubDate>Fri, 21 Nov 2008 14:40:10 +0000</pubDate>
		<dc:creator>Ray Gomez</dc:creator>
		
		<category><![CDATA[Linux]]></category>

		<category><![CDATA[Servers]]></category>

		<category><![CDATA[Ajax Explorer]]></category>

		<category><![CDATA[Ajax file access]]></category>

		<category><![CDATA[AjaXplorer]]></category>

		<category><![CDATA[explorer]]></category>

		<category><![CDATA[file manager]]></category>

		<category><![CDATA[remote file management]]></category>

		<category><![CDATA[web based file manager]]></category>

		<guid isPermaLink="false">http://www.kallasoft.com/?p=603</guid>
		<description><![CDATA[
AjaXplorer is quite a unique tool, and if you haven&#8217;t heard of it you might want to check out the latest 2.3.8 version.  Essentially, AjaXplorer creates a web-based file manager using, you guessed it, Ajax.  You can upload and view files, edit text files, create folders, and move or rename files and folders. [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://www.kallasoft.com/wp-content/uploads/2008/11/ajaxplorer-firefox.png"><img class="size-medium wp-image-605 aligncenter" title="AjaXplorer View in Firefox on Ubuntu 8.10" src="http://www.kallasoft.com/wp-content/uploads/2008/11/ajaxplorer-firefox.png" alt="" width="450" height="290" /></a></p>
<p style="text-align: left;"><a href="http://www.ajaxplorer.info/">AjaXplorer</a> is quite a unique tool, and if you haven&#8217;t heard of it you might want to check out the latest 2.3.8 version.  Essentially, AjaXplorer creates a web-based file manager using, you guessed it, Ajax.  You can upload and view files, edit text files, create folders, and move or rename files and folders. Standard stuff maybe, but the beauty is that it can all be done from within your web browser at home, at work, or on the road. The setup is pretty easy, all you need is a working Apache server with PHP support. From Ubuntu you can enter:</p>
<pre class="console">~$ sudo apt-get install php5 apache2 libapache2-mod-php5</pre>
<p>Then, go grab the latest <a href="http://sourceforge.net/project/showfiles.php?group_id=192639">version</a>. Then you will need to unzip the contents of the file and put it into the Apache web folder.</p>
<pre class="console">~$ unzip ajaxplorer-core-2.3.8-dist.zip
~$ sudo mv AjaXplorer-2.3.8/ /var/www/explorer</pre>
<p>We need to change some permissions on the files folder and on the server folder. These folders need to be writable, and we&#8217;ll restart apache to make sure everything is in place.</p>
<pre class="console">~$ sudo chmod -R 777 /var/www/explorer/files
~$ sudo chmod -R 777 /var/www/explorer/server
~$ sudo /etc/init.d/apache2 restart</pre>
<p>Now you can check to make sure it is here by clicking <a href="http://localhost/explorer">http://localhost/explorer</a>. As soon as the AjaXplorer loads you should be prompted to change your default admin password from &#8216;admin&#8217;.  After doing that you can start to setup your repositories and users. Now this setup might be good enough for an internal trusted network, but I would recommend that anything done over the open web should be encrypted.  Luckily AjaXplorer also kept this in mind and has a bit of documentation on how to set that up in section 8.7 of their <a href="http://www.ajaxplorer.info/documentation/chapter-8-faq/">F.A.Q</a>. You will also need to be sure to restrict access to</p>
<pre class="console">/var/www/explorer/server/conf</pre>
<p>and</p>
<pre class="console">/var/www/explorer/server/users</pre>
<p>as soon as you have completed your configuration.  According to the website, AjaXplorer uses .htaccess files to protect these directories. The interface is pretty easy to navigate, though there are still a few interface bugs.  You can see some screenshots below of my tests using Firefox 3, Camino 1.6.5, and Safari 3.2.</p>

<a href='http://www.kallasoft.com/ajaxplorer-a-web-based-file-manager/ajaxplorer-firefox/' title='AjaXplorer View in Firefox on Ubuntu 8.10'><img src="http://www.kallasoft.com/wp-content/uploads/2008/11/ajaxplorer-firefox.png" width="150" height="96" class="attachment-thumbnail" alt="" /></a>
<a href='http://www.kallasoft.com/ajaxplorer-a-web-based-file-manager/ajaxplorer-about-small/' title='About AjaXplorer View in Firefox on Ubuntu 8.10'><img src="http://www.kallasoft.com/wp-content/uploads/2008/11/ajaxplorer-about-small.png" width="150" height="148" class="attachment-thumbnail" alt="" /></a>
<a href='http://www.kallasoft.com/ajaxplorer-a-web-based-file-manager/mac-admin-repository/' title='AjaXplorer Admin Repository View in Safari'><img src="http://www.kallasoft.com/wp-content/uploads/2008/11/mac-admin-repository.png" width="150" height="96" class="attachment-thumbnail" alt="" /></a>
<a href='http://www.kallasoft.com/ajaxplorer-a-web-based-file-manager/mac-admin-screenshot/' title='AjaXplorer Admin Screenshot in Safari'><img src="http://www.kallasoft.com/wp-content/uploads/2008/11/mac-admin-screenshot.png" width="150" height="96" class="attachment-thumbnail" alt="" /></a>
<a href='http://www.kallasoft.com/ajaxplorer-a-web-based-file-manager/mac-camino-filebrowser/' title='AjaXplorer Filebrowser View in Camino'><img src="http://www.kallasoft.com/wp-content/uploads/2008/11/mac-camino-filebrowser.png" width="150" height="94" class="attachment-thumbnail" alt="" /></a>
<a href='http://www.kallasoft.com/ajaxplorer-a-web-based-file-manager/mac-camino-repository/' title='AjaXplorer Repository View in Camino'><img src="http://www.kallasoft.com/wp-content/uploads/2008/11/mac-camino-repository.png" width="150" height="94" class="attachment-thumbnail" alt="" /></a>
<a href='http://www.kallasoft.com/ajaxplorer-a-web-based-file-manager/mac-camino-users/' title='AjaXplorer Users View'><img src="http://www.kallasoft.com/wp-content/uploads/2008/11/mac-camino-users.png" width="150" height="94" class="attachment-thumbnail" alt="" /></a>
<a href='http://www.kallasoft.com/ajaxplorer-a-web-based-file-manager/mac-camino-view-larger/' title='AjaXplorer View File in Camino'><img src="http://www.kallasoft.com/wp-content/uploads/2008/11/mac-camino-view-larger.png" width="150" height="94" class="attachment-thumbnail" alt="" /></a>
<a href='http://www.kallasoft.com/ajaxplorer-a-web-based-file-manager/mysql-connection/' title='mysql-connection'><img src="http://www.kallasoft.com/wp-content/uploads/2008/11/mysql-connection.png" width="150" height="107" class="attachment-thumbnail" alt="" /></a>

<p>One of the coolest features is the ability to use a MySQL database as your &#8216;repository&#8217;.</p>
<p style="text-align: center;"><a href="http://www.kallasoft.com/wp-content/uploads/2008/11/mac-admin-repository.png"><img class="size-medium wp-image-612 aligncenter" title="AjaXplorer Admin Repository View in Safari" src="http://www.kallasoft.com/wp-content/uploads/2008/11/mac-admin-repository.png" alt="" width="450" height="289" /></a></p>
<p>If you are creative there are a lot of great things you can do with this, like manage a dynamic photo album&#8217;s pictures or even use the explorer as a type of collaboration tool. Check it out and let us know what you think!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kallasoft.com/ajaxplorer-a-web-based-file-manager/feed/</wfw:commentRss>
		</item>
		<item>
		<title>ClamTk 4.04 - A GUI Front End for ClamAV - Released</title>
		<link>http://www.kallasoft.com/clamtk-404-a-gui-front-end-for-clamav-released/</link>
		<comments>http://www.kallasoft.com/clamtk-404-a-gui-front-end-for-clamav-released/#comments</comments>
		<pubDate>Tue, 18 Nov 2008 16:34:49 +0000</pubDate>
		<dc:creator>Ray Gomez</dc:creator>
		
		<category><![CDATA[Linux]]></category>

		<category><![CDATA[Operating System]]></category>

		<category><![CDATA[antivirus]]></category>

		<category><![CDATA[Clam AntiVirus]]></category>

		<category><![CDATA[Clamtk]]></category>

		<category><![CDATA[Open Source]]></category>

		<guid isPermaLink="false">http://www.kallasoft.com/?p=576</guid>
		<description><![CDATA[
ClamTk just released the latest version of their frontend to Clam AntiVirus which &#8220;brings back the Debian builds.&#8221;
If you&#8217;ve never heard of Clam AntiVirus (aka ClamAV) before it is an Open Source antivirus solution for Linux. Over the years ClamAV has gained much popularity, and has been used by many companies small and big alike [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://www.kallasoft.com/wp-content/uploads/2008/11/clamavtk1.png"><img class="size-medium wp-image-577 aligncenter" title="ClamTk" src="http://www.kallasoft.com/wp-content/uploads/2008/11/clamavtk1.png" alt="The ClamTk front end" width="298" height="210" /></a></p>
<p>ClamTk just released the latest version of their frontend to <a href="http://www.clamav.net/">Clam AntiVirus</a> which &#8220;brings back the Debian builds.&#8221;</p>
<p>If you&#8217;ve never heard of <a href="http://www.clamav.net/">Clam AntiVirus</a> (aka ClamAV) before it is an Open Source antivirus solution for Linux. Over the years ClamAV has gained much popularity, and has been used by many companies small and big alike to scan incoming email. With ClamTk you can harness this power on the desktop, and with the new 4.04 release you are only a <em>dpk -i</em> away from trying it out, sort of&#8230;</p>
<p>As the homepage <a href="http://clamtk.sourceforge.net/">states</a> ClamTk 4.04 is the first 4.x release to have a Debian package. That being said the latest version hasn&#8217;t hit the repositories. If you are running Ubuntu or Debian you can still try out the latest version of ClamTk by grabbing a copy <a href="http://sourceforge.net/project/showfiles.php?group_id=131278&amp;package_id=144061&amp;release_id=640823&lt;br &gt;&lt;/a&gt;">here</a>.</p>
<p style="text-align: center;"><a href="http://www.kallasoft.com/wp-content/uploads/2008/11/clamavtk2.png"><img class="aligncenter size-medium wp-image-578" title="Clamtk in action" src="http://www.kallasoft.com/wp-content/uploads/2008/11/clamavtk2.png" alt="" width="298" height="269" /></a></p>
<p>Be sure to install gtk2-perl to satisfy dependencies by running</p>
<pre class="console">sudo apt-get install libgtk2-perl</pre>
<p>Then you can install the .deb package by running</p>
<pre class="console">sudo dpkg -i clamtk_4.04-1_all.deb</pre>
<p>Check it out, and let us know what you think!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kallasoft.com/clamtk-404-a-gui-front-end-for-clamav-released/feed/</wfw:commentRss>
		</item>
		<item>
		<title>How to Setup an SVN Server to use in Eclipse</title>
		<link>http://www.kallasoft.com/how-to-setup-an-svn-server-to-use-in-eclipse/</link>
		<comments>http://www.kallasoft.com/how-to-setup-an-svn-server-to-use-in-eclipse/#comments</comments>
		<pubDate>Mon, 17 Nov 2008 14:13:36 +0000</pubDate>
		<dc:creator>Ray Gomez</dc:creator>
		
		<category><![CDATA[Linux]]></category>

		<category><![CDATA[Software Development]]></category>

		<category><![CDATA[Eclipse]]></category>

		<category><![CDATA[how to]]></category>

		<category><![CDATA[plugin]]></category>

		<category><![CDATA[programming]]></category>

		<category><![CDATA[source repository]]></category>

		<category><![CDATA[Subversion]]></category>

		<category><![CDATA[Subversive]]></category>

		<category><![CDATA[SVN]]></category>

		<category><![CDATA[team]]></category>

		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://www.kallasoft.com/?p=557</guid>
		<description><![CDATA[
So, after thousands of lines of code you&#8217;ve managed to build an awesome, feature rich program, and you are really to label it 1.0.  You want to bring in more developers because it is doing so great&#8230; What do you do?  Well, regardless of whether you have hit 1.0, version control is something [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://www.kallasoft.com/wp-content/uploads/2008/11/eclipse-file-new.png"><img class="alignnone size-medium wp-image-564" title="Eclipse File New" src="http://www.kallasoft.com/wp-content/uploads/2008/11/eclipse-file-new.png" alt="" width="450" height="303" /></a></p>
<p>So, after thousands of lines of code you&#8217;ve managed to build an awesome, feature rich program, and you are really to label it 1.0.  You want to bring in more developers because it is doing so great&#8230; What do you do?  Well, regardless of whether you have hit 1.0, version control is something that should be considered from a project&#8217;s inception.  It will allow you to collaborate and share code with a team, or the world.  That being said, how does one set up control versioning? Enter Subversion, this article will show you how-to setup a subversion server and Eclipse for sharing?  Read on!</p>
<p>If you are running Ubuntu, the install is fast and easy.</p>
<pre class="console">codenomad@sparta:~$ sudo apt-get install subversion</pre>
<p>If you are running Fedora, you have a simple one line command as well:</p>
<pre class="console">codenomad@sparta:~$ sudo yum install subversion</pre>
<p><span style="font-size: x-small;">(Note: There is also a good graphical front-end to subversion for KDE called kdesvn that allows you to create and manage subversion repositories.  For now, lets do this the command line way, it&#8217;s pretty easy.)</span></p>
<p>We are now ready to start. You must first create a repository to store all of your configuration files for subversion, and, of course, your code.  I like keeping server information in my /var directory so lets create a subdirectory for subversion:</p>
<pre class="console">codenomad@sparta:~$ sudo mkdir -p /var/subversion/</pre>
<p>Now lets add the repository (Note: Standard security practices should be considered here. I&#8217;m creating a directory that I can have access to without requiring admin privileges):</p>
<pre class="console">codenomad@sparta:~$ sudo chown codenomad subversion
codenomad@sparta:~$ chmod 755 subversion
codenomad@sparta:~$ svnadmin create /var/subversion/my_project</pre>
<p>This should setup everything you need to get started. Go into the /var/subversion/my_project/conf folder and you should see some files:</p>
<pre class="console">codenomad@sparta:/var/subversion/my_project$ cd conf
codenomad@sparta:/var/subversion/my_project/conf$ ls
authz  passwd  svnserve.conf
codenomad@sparta:/var/subversion/my_project/conf$</pre>
<p>You will need to modify the passwd and svnserve.conf file with the usernames and passwords of those who need to have access to the repository.  First, lets modify the passwd file. Since the &#8216;#&#8217; are comment lines, lets remove those and add a user name (I will use codenomad as my username and supersecret as my password) :</p>
<pre class="console">### This file is an example password file for svnserve.
### Its format is similar to that of svnserve.conf. As shown in the
### example below it contains one section labelled [users].
### The name and password for each user follow, one account per line.

[users]
# harry = harryssecret
# sally = sallyssecret</pre>
<p>should now look something like this:</p>
<pre class="console">### This file is an example password file for svnserve.
### Its format is similar to that of svnserve.conf. As shown in the
### example below it contains one section labelled [users].
### The name and password for each user follow, one account per line.

[users]
codenomad = supersecret</pre>
<p>Now we need to modify the svnserve.conf file.  This file allows you to edit all the server specifics.  For this situation we will need to give authorization to codenomad and tell subversion to look for the user information (the user password) in the passwd file.  Looking at this file, you will note there is a [general] section.  This is where you need to give authorization to your users.</p>
<p>My section looks like:</p>
<pre class="console">[general]
### These options control access to the repository for unauthenticated
### and authenticated users.  Valid values are "write", "read",
### and "none".  The sample settings below are the defaults.
codenomad = write
# anon-access = read
# auth-access = write</pre>
<p>Just below the access section, uncomment this line:</p>
<pre class="console">password-db = passwd</pre>
<p>NOTE: Be sure when you make these modifcations, there should be NO spaces at the beginning of the lines. In other words, the c in codenomad lines up with the very first space of the file.  This will cause problems later on if you don&#8217;t take care</p>
<p>Now we can start the svn server in daemon mode giving it the root directory of our project:</p>
<pre class="console"> svnserve -d -r /var/subversion/my_project/</pre>
<p>Everything is now setup from the subversion side!</p>
<p>Since I use Eclipse for a good majority of my work I&#8217;ll use this new repository to house &#8220;My_Project&#8221;. If you don&#8217;t already have the Subversive plugin installed in Eclipse, go to Help &gt; Software Updates. Then from there, select the Available software tab, Click on Ganymede, and then expand Collaboration Tools. Select all the Subversive packages</p>
<p style="text-align: center;"><a href="http://www.kallasoft.com/wp-content/uploads/2008/11/eclipse1.png"><img class="size-medium wp-image-566 aligncenter" title="eclipse1" src="http://www.kallasoft.com/wp-content/uploads/2008/11/eclipse1.png" alt="" width="450" height="303" /></a></p>
<p>Then, on the right, you&#8217;ll need to click &#8220;Add site&#8221; and enter the plugin connectors information from <a href="http://www.polarion.com/products/svn/subversive.php?src=eclipseproject">Polarion&#8217;s website</a>:</p>
<p>http://www.polarion.org/projects/subversive/download/eclipse/2.0/update-site</p>
<p>This is needed to be able to connect to your subversion repository in Eclipse.  Hit okay, then select all the packages in that list:</p>
<p style="text-align: center;"><a href="http://www.kallasoft.com/wp-content/uploads/2008/11/eclipse3.png"><img class="size-medium wp-image-568 aligncenter" title="Screen shot of installing subversion connector" src="http://www.kallasoft.com/wp-content/uploads/2008/11/eclipse3.png" alt="" width="450" height="303" /></a></p>
<p style="text-align: left;">Next, hit install, accept the agreements, and then say okay to restart Eclipse.  Eclipse should then be ready to go and will be able to share your files.  Right click on your Project, select Team, and then select Share Project.</p>
<p style="text-align: center;"><a href="http://www.kallasoft.com/wp-content/uploads/2008/11/eclipse-share.png"><img class="size-medium wp-image-565 aligncenter" title="Right Clicking on My_Project for Sharing" src="http://www.kallasoft.com/wp-content/uploads/2008/11/eclipse-share.png" alt="" width="450" height="303" /></a></p>
<p style="text-align: left;">Give the repository information (for this case it will be localhost since I am developing on the same box I am serving from).</p>
<p style="text-align: center;"><a href="http://www.kallasoft.com/wp-content/uploads/2008/11/share-my_project.png"><img class="size-medium wp-image-571 aligncenter" title="share-my_project" src="http://www.kallasoft.com/wp-content/uploads/2008/11/share-my_project.png" alt="" width="450" height="303" /></a></p>
<p style="text-align: left;">Enter your username and password that you stored in the passwd file in the next window. Then, to promote good practice, enter in a detailed message about the code you are about to commit.</p>
<p style="text-align: center;"><a href="http://www.kallasoft.com/wp-content/uploads/2008/11/commit-options.png"><img class="size-medium wp-image-562 aligncenter" title="Commit Options and Message" src="http://www.kallasoft.com/wp-content/uploads/2008/11/commit-options.png" alt="" width="450" height="303" /></a></p>
<p style="text-align: left;">If you tweak your router settings or your firewall, you should be able to give access to others outside of your network and not just on this box.  For that you should open up or forward external 3690 to your box. When all is said and done, you should have your project stored in a repository available to share with others!  Happy Coding!</p>
<p style="text-align: center;"><a href="http://www.kallasoft.com/wp-content/uploads/2008/11/committed-source-tree.png"><img class="size-medium wp-image-563 aligncenter" title="This is the Committed Source Tree" src="http://www.kallasoft.com/wp-content/uploads/2008/11/committed-source-tree.png" alt="" width="450" height="303" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.kallasoft.com/how-to-setup-an-svn-server-to-use-in-eclipse/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Using host.allow and hosts.deny for Quick Network Security</title>
		<link>http://www.kallasoft.com/using-hostallow-and-hostsdeny-for-quick-security/</link>
		<comments>http://www.kallasoft.com/using-hostallow-and-hostsdeny-for-quick-security/#comments</comments>
		<pubDate>Thu, 13 Nov 2008 15:19:30 +0000</pubDate>
		<dc:creator>Ray Gomez</dc:creator>
		
		<category><![CDATA[Linux]]></category>

		<category><![CDATA[Servers]]></category>

		<category><![CDATA[DMZ]]></category>

		<category><![CDATA[firewall]]></category>

		<category><![CDATA[hosts.allow]]></category>

		<category><![CDATA[hosts.deny]]></category>

		<category><![CDATA[networking]]></category>

		<category><![CDATA[quick security]]></category>

		<category><![CDATA[restrict access]]></category>

		<category><![CDATA[security]]></category>

		<category><![CDATA[SSH]]></category>

		<guid isPermaLink="false">http://www.kallasoft.com/?p=533</guid>
		<description><![CDATA[
While configuring a firewall is by far the best way to secure your system, there are times when you need a way to access a remote server that doesn&#8217;t compromise security.
A quick fix for boxes that need to be in the De Militarized Zone (DMZ) for a short period of time is to modify your [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.kallasoft.com/wp-content/uploads/2008/11/gnome-lockscreen.png"><img class="alignleft size-medium wp-image-534" style="float: left; margin-left: 8px; margin-right: 8px;" title="lock screen" src="http://www.kallasoft.com/wp-content/uploads/2008/11/gnome-lockscreen.png" alt="" width="77" height="77" /></a></p>
<p>While configuring a firewall is by far the best way to secure your system, there are times when you need a way to access a remote server that doesn&#8217;t compromise security.</p>
<p>A quick fix for boxes that need to be in the De Militarized Zone (DMZ) for a short period of time is to modify your <em>hosts.deny</em> and <em>hosts.allow</em> files, normally located in the /etc directory. Simply, and as you can probably gather from the filenames, the files will either deny or allow access to servers running on your box. The <em>hosts.deny</em> allows you to specify hostnames, IP addresses, or domains you wish to deny access and the <em>hosts.allow</em> will let you allow access.</p>
<p>For a quick, down and dirty configuration denying all access to your box make sure your <em>/etc/hosts.deny</em> has the following:</p>
<pre class="console">ALL: ALL</pre>
<p>With this simple addition your <em>/etc/hosts.deny</em> should look similar to this:</p>
<pre class="console"># /etc/hosts.deny: list of hosts that are _not_ allowed to access the system.
#                  See the manual pages hosts_access(5) and hosts_options(5).
#
# Example:    ALL: some.host.name, .some.domain
#             ALL EXCEPT in.fingerd: other.host.name, .other.domain
#
# If you're going to protect the portmapper use the name "portmap" for the
# daemon name. Remember that you can only use the keyword "ALL" and IP
# addresses (NOT host or domain names) for the portmapper, as well as for
# rpc.mountd (the NFS mount daemon). See portmap(8) and rpc.mountd(8)
# for further information.
#
# The PARANOID wildcard matches any host whose name does not match its
# address.

# You may wish to enable this to ensure any programs that don't
# validate looked up hostnames still leave understandable logs. In past
# versions of Debian this has been the default.
# ALL: PARANOID
ALL:ALL</pre>
<p>Note: Similar to shell scripts the &#8220;#&#8221; is a comment line.  Also be sure to add an extra blank line at the bottom of the file.</p>
<p>Moving on, the <em>hosts.allow</em> has a lot more power with the default configuration because it will override anything that is listed in the <em>hosts.deny</em> file. Please take care to note the previous statement because the more information you know about which networks or IP&#8217;s you want to have access to your box the better. For now, lets say I want to connect to my computer at home when I am at work.  Before we can start, you&#8217;ll have to make sure your home server is placed in the DMZ area of your network.  Most routers have this feature built in so please check your manual for the specifics.</p>
<p>Let&#8217;s get started. At work I have the IP address 65.0.12.4. Since I only need SSH access from this location I can add</p>
<pre class="console">SSHD : 65.0.12.4</pre>
<p>Of course, I use my laptop at work and there are a pool of IP addresses that I can potentially get, in other words, I might not always get the same address &#8216;65.0.12.4&#8242;. So what can we do? Well, the <em>hosts.allow</em> file also gives you the ability to specify a complete domain. I can give access to systems at mycompany.com by adding the following:</p>
<pre class="console">SSHD : .mycompany.com</pre>
<p>Lets modify the <em>/etc/hosts.allow</em> file. Yours should look similar to this:</p>
<pre class="console"># /etc/hosts.allow: list of hosts that are allowed to access the system.
#                   See the manual pages hosts_access(5) and hosts_options(5).
#
# Example:    ALL: LOCAL @some_netgroup
#             ALL: .foobar.edu EXCEPT terminalserver.foobar.edu
#
# If you're going to protect the portmapper use the name "portmap" for the
# daemon name. Remember that you can only use the keyword "ALL" and IP
# addresses (NOT host or domain names) for the portmapper, as well as for
# rpc.mountd (the NFS mount daemon). See portmap(8) and rpc.mountd(8)
# for further information.
#
SSHD : 65.0.12.4, .mycompany.com</pre>
<p>Now I have access from any of the IP addresses that are from my company&#8217;s domain. This should give you the basic idea of how to restrict services on a remote server with these files. With a little more Google searching you should be able to find that you can restrict access to different types of servers as long as they are &#8216;wrapped&#8217; by TCP. In other words, pretty much any service compiled with the <em>libwrap.a</em> library can be restricted using this method.</p>
<p>You can read more about the <em>hosts.allow</em> and <em>hosts.deny</em> by looking at their manpages by entering the following in a terminal:</p>
<pre class="console">~$ man hosts.allow</pre>
<p>or</p>
<pre class="console">~$ man hosts.deny</pre>
<p>Of course this is not meant as a full time solution, but it does offer a quick fix for boxes that are on the open net for a limited time. Try it out, and let us know how it goes!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kallasoft.com/using-hostallow-and-hostsdeny-for-quick-security/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Untangle offers VPN, Snort, Firewall, and Much More!</title>
		<link>http://www.kallasoft.com/untangle-offers-vpn-snort-firewall-and-much-more/</link>
		<comments>http://www.kallasoft.com/untangle-offers-vpn-snort-firewall-and-much-more/#comments</comments>
		<pubDate>Fri, 31 Oct 2008 18:08:22 +0000</pubDate>
		<dc:creator>Ray Gomez</dc:creator>
		
		<category><![CDATA[Linux]]></category>

		<category><![CDATA[Operating System]]></category>

		<category><![CDATA[Servers]]></category>

		<category><![CDATA[Linux Server]]></category>

		<category><![CDATA[OpenVPN]]></category>

		<category><![CDATA[Snort]]></category>

		<category><![CDATA[Untangle]]></category>

		<category><![CDATA[Virtualized Server]]></category>

		<category><![CDATA[Web Filter]]></category>

		<guid isPermaLink="false">http://www.kallasoft.com/?p=173</guid>
		<description><![CDATA[
If you have ever been involved in setting up a small to mid size network that requires full access to roadwarriors, the ability to detect intrusions, and the need for a firewall, then you will know that it is no easy task.  The commercial cost of this alone is enough to consume your entire [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://www.kallasoft.com/wp-content/uploads/2008/10/untangle-boot-screen.png"><img class="size-medium wp-image-508 aligncenter" title="Untangle Boot Screen" src="http://www.kallasoft.com/wp-content/uploads/2008/10/untangle-boot-screen.png" alt="" width="450" height="366" /></a></p>
<p>If you have ever been involved in setting up a small to mid size network that requires full access to roadwarriors, the ability to detect intrusions, and the need for a firewall, then you will know that it is no easy task.  The commercial cost of this alone is enough to consume your entire budget for the network, and quite possibly, eat into the budget you need to buy the computers to run on the network.  Try asking for that from a startup that can barely afford the computers!  Of course, there are many opensource solutions that can give you all of what you need for free, but with a one man IT shop expect many long nights and truck loads of hot pockets.</p>
<p>There is a quick and very cheap alternative: <a title="Untangle" href="http://www.untangle.com/" target="_blank">Untangle</a>.  Offering quite possibly the best free network solutions I have seen thus far, Untangle is the one stop shop for any networking requirement.  From VPN to intrusion detection, Untangle offers the best of the open source community and rolls it up into a very nice package that is easy to manage. The interface is clean, and each open source offering is presented as a rack mount server.</p>
<p style="text-align: center;"><a href="http://www.kallasoft.com/wp-content/uploads/2008/10/untangle.png"><img class="size-medium wp-image-504 aligncenter" title="untangle" src="http://www.kallasoft.com/wp-content/uploads/2008/10/untangle.png" alt="" width="450" height="340" /></a></p>
<p>Below you can see a wide variety of offerings (taken straight from their site) that are available for free, and some commercial offerings that help make the most of your Untangle server.</p>
<table style="height: 215px;" border="0" width="405" align="center">
<tbody>
<tr valign="top">
<td><strong>A list of Open Source offerings are below:</strong></p>
<ul>
<li>Web Filter</li>
<li>Spam Blocker</li>
<li>Spyware Blocker</li>
<li>Protocol Control</li>
<li>Virus Blocking</li>
<li>Phish Blocker</li>
<li>IPS</li>
<li>Attack Blocker</li>
<li>Firewall</li>
<li>OpenVPN</li>
<li>Untangle Reports</li>
<li>Routing and QoS</li>
</ul>
</td>
<td><strong>Commercial offerings below:</strong></p>
<ul>
<li>Live Support</li>
<li>AD Connector</li>
<li>Policy Manager</li>
<li>Kaspersky Virus Blocker</li>
<li>PC Remote</li>
<li>Remote Access Portal</li>
</ul>
</td>
</tr>
</tbody>
</table>
<p>Don&#8217;t have a server to spare?  Not a problem, virtualization is the key.  Not only did the Untangle team spend countless hours creating such a seamless, feature rich product that encompasses some of the best of the open source world (and a few pay for goodies), they went the extra mile and wrote an amazing tutorial on how to get Untangle up and running in a virtual environment <a title="Untangle as Virtual Appliance on VMware" href="http://wiki.untangle.com/index.php/Untangle_Virtual_Appliance_on_VMware" target="_blank">here</a>.</p>
<p>Check it out, and let us know what you think!!</p>

<a href='http://www.kallasoft.com/untangle-offers-vpn-snort-firewall-and-much-more/attack-blocker/' title='attack-blocker'><img src="http://www.kallasoft.com/wp-content/uploads/2008/10/attack-blocker.png" width="150" height="122" class="attachment-thumbnail" alt="" /></a>
<a href='http://www.kallasoft.com/untangle-offers-vpn-snort-firewall-and-much-more/attack-blocker1/' title='attack-blocker1'><img src="http://www.kallasoft.com/wp-content/uploads/2008/10/attack-blocker1.png" width="150" height="112" class="attachment-thumbnail" alt="" /></a>
<a href='http://www.kallasoft.com/untangle-offers-vpn-snort-firewall-and-much-more/untangle/' title='untangle'><img src="http://www.kallasoft.com/wp-content/uploads/2008/10/untangle.png" width="150" height="113" class="attachment-thumbnail" alt="" /></a>
<a href='http://www.kallasoft.com/untangle-offers-vpn-snort-firewall-and-much-more/untangle1/' title='untangle1'><img src="http://www.kallasoft.com/wp-content/uploads/2008/10/untangle1.png" width="150" height="113" class="attachment-thumbnail" alt="" /></a>
<a href='http://www.kallasoft.com/untangle-offers-vpn-snort-firewall-and-much-more/untangle3/' title='untangle3'><img src="http://www.kallasoft.com/wp-content/uploads/2008/10/untangle3.png" width="150" height="113" class="attachment-thumbnail" alt="" /></a>
<a href='http://www.kallasoft.com/untangle-offers-vpn-snort-firewall-and-much-more/untangle4/' title='untangle4'><img src="http://www.kallasoft.com/wp-content/uploads/2008/10/untangle4.png" width="150" height="104" class="attachment-thumbnail" alt="" /></a>
<a href='http://www.kallasoft.com/untangle-offers-vpn-snort-firewall-and-much-more/untangle-boot-screen/' title='Untangle Boot Screen'><img src="http://www.kallasoft.com/wp-content/uploads/2008/10/untangle-boot-screen.png" width="150" height="122" class="attachment-thumbnail" alt="" /></a>

]]></content:encoded>
			<wfw:commentRss>http://www.kallasoft.com/untangle-offers-vpn-snort-firewall-and-much-more/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Handling Exceptions in Ruby</title>
		<link>http://www.kallasoft.com/handling-exceptions-in-ruby/</link>
		<comments>http://www.kallasoft.com/handling-exceptions-in-ruby/#comments</comments>
		<pubDate>Tue, 28 Oct 2008 12:35:44 +0000</pubDate>
		<dc:creator>Ray Gomez</dc:creator>
		
		<category><![CDATA[Linux]]></category>

		<category><![CDATA[Operating System]]></category>

		<category><![CDATA[Software Development]]></category>

		<category><![CDATA[Exception handling]]></category>

		<category><![CDATA[exceptions]]></category>

		<category><![CDATA[Raising Exceptions]]></category>

		<category><![CDATA[Rescuing Exceptions]]></category>

		<category><![CDATA[Ruby]]></category>

		<category><![CDATA[try catch]]></category>

		<guid isPermaLink="false">http://www.kallasoft.com/?p=495</guid>
		<description><![CDATA[
Dealing with exceptions is a big part of any object oriented programmer&#8217;s job. We need to be able to recover from things like connect failures or syntax errors, and do so gracefully. Thankfully, raising and &#8220;rescuing&#8221; exceptions in Ruby is a fairly easy task.  Let&#8217;s start with a basic example.  We all know [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.kallasoft.com/wp-content/uploads/2008/10/ruby-logo.png"><img class="alignleft size-medium wp-image-496" style="float: left; margin-left: 8px; margin-right: 8px;" title="Ruby Logo" src="http://www.kallasoft.com/wp-content/uploads/2008/10/ruby-logo.png" alt="" width="107" height="123" /></a></p>
<p>Dealing with exceptions is a big part of any object oriented programmer&#8217;s job. We need to be able to recover from things like connect failures or syntax errors, and do so gracefully. Thankfully, raising and &#8220;rescuing&#8221; exceptions in Ruby is a fairly easy task.  Let&#8217;s start with a basic example.  We all know that  dividing by zero is a <a href="http://www.wired.com/science/discoveries/news/1998/07/13987">very bad thing</a>, so lets tackle that scenario.</p>
<p>For fun let&#8217;s test this scenario out in irb. If you didn&#8217;t know already, irb is a ruby shell that allows you to execute ruby code on a line-per-line basis and is a great way of checking those one-liners. Lets fire it up and give you a very brief exposure to it.</p>
<p>Note: Ubuntu/Debian users, if you don&#8217;t have irb you can install it simply by running:</p>
<pre class="console">sudo apt-get install irb</pre>
<p>On to the goods&#8230; Open up your favorite terminal session and type in the following into an irb session:</p>
<pre class="console">i=1
i/0</pre>
<p>Your output should look like this:</p>
<pre class="console">codenomad@sparta:~$ irb
irb(main):001:0&gt; i=1
=&gt; 1
irb(main):002:0&gt; i/0
ZeroDivisionError: divided by 0
  from (irb):2:in `/'
  from (irb):2</pre>
<p>As you can see you can assign values to a variable, and perform a quick operation on it in irb.  You can go ahead and quit irb by typing in &#8220;quit&#8221;, and we&#8217;ll start writing a script to catch this troublemaking scenario.</p>
<p>Handing exceptions in Ruby is referred to as &#8220;Rescuing&#8221;.  In Ruby to rescue exceptions we need to surround our trouble code with a begin/end statement. Below you&#8217;ll find that I&#8217;ve surrounded our divide by zero scenario by this begin/end structure, and rescued the exception by putting a rescue clause right before the &#8216;end&#8217;. Add the following to a file called rescue.rb:</p>
<pre name="code" class="ruby">#!/usr/bin/ruby
begin
  i = 1
  i/0
  rescue ZeroDivisionError
    puts "you divided by zero putts"
end</pre>
<p>Make the file executable and let&#8217;s run it:</p>
<pre class="console">~$ chmod +x rescue.rb
~$ ./rescue.rb
you divided by zero putts
~$</pre>
<p>What if you just wanted to rescue any type of standard error?  Well, lets modify our script again to rescue a file open error using StandardError:</p>
<pre name="code" class="ruby">#!/usr/bin/ruby
begin
  i = 1
  File.open("ABSsdt.xyz")
  i/0
  rescue ZeroDivisionError
    puts "you divided by zero putz"
  rescue StandardError
    puts "you had an error of some sort"
end</pre>
<p>Run it, and you should get something like this:</p>
<pre class="console">~$ ./rescue.rb
you had an error of some sort</pre>
<p>Be sure to check the Ruby documentation when writing your code, and you can see what exceptions can be through by different method calls. (ie look at the <a href="http://www.ruby-doc.org/core/classes/Array.html#M002186">Array.fetch() method call.</a> )</p>
<p>Now that you know how to rescue exceptions and where to look for the types of exceptions a method call can make, what about raising exceptions?  Well, thats just as easy lets make a new script named raise.rb and add the following:</p>
<pre name="code" class="ruby">#!/usr/bin/ruby
begin
 if (File.exist? "file_1.rb")
  puts "file found"
 else
  raise "File not found"
 end
end</pre>
<p>If you don&#8217;t have file_1.rb in your running directory, this code will raise an exception!  It&#8217;s as easy as that! For a quick list of exceptions check out <a href="http://www.zenspider.com/Languages/Ruby/QuickRef.html#34">Zenspider&#8217;s QuickRef site</a>. At this point you have a basic idea of how to handle exceptions, whether you raise them or rescue them, in Ruby. Get out there and get scripting, and be sure to let us know how it goes!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kallasoft.com/handling-exceptions-in-ruby/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Setting up Apache Tomcat 6.x and ZK in Ubuntu</title>
		<link>http://www.kallasoft.com/setting-up-apache-tomcat-6x-and-zk-in-ubuntu/</link>
		<comments>http://www.kallasoft.com/setting-up-apache-tomcat-6x-and-zk-in-ubuntu/#comments</comments>
		<pubDate>Mon, 27 Oct 2008 18:58:11 +0000</pubDate>
		<dc:creator>Ray Gomez</dc:creator>
		
		<category><![CDATA[Linux]]></category>

		<category><![CDATA[Servers]]></category>

		<category><![CDATA[Software Development]]></category>

		<category><![CDATA[Java]]></category>

		<category><![CDATA[Java Server Pages]]></category>

		<category><![CDATA[JSP]]></category>

		<category><![CDATA[Tomcat 6]]></category>

		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://www.kallasoft.com/?p=481</guid>
		<description><![CDATA[Apache Tomcat is the name in JSP, and you&#8217;ll need to get a copy before being able to try out the many cool web applications and frameworks out there (like ZKoss&#8217;s ZK).  Finding a development need to run JSP pages (and wanting to try out ZK), I decided to get the latest Tomcat version [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://tomcat.apache.org/"><img class="alignleft size-medium wp-image-482" style="float: left; margin-left: 8px; margin-right: 8px;" title="Tomcat Logo" src="http://www.kallasoft.com/wp-content/uploads/2008/10/tomcat.gif" alt="" width="130" height="92" /></a>Apache Tomcat is <em>the</em> name in JSP, and you&#8217;ll need to get a copy before being able to try out the many cool web applications and frameworks out there (like <a title="ZK" href="http://www.kallasoft.com/zk-351-released-ria-framework-netbeans-plugin-and-tutorial/" target="_blank">ZKoss&#8217;s ZK</a>).  Finding a development need to run JSP pages (and wanting to try out ZK), I decided to get the latest Tomcat version (<small>6.0.18</small>) installed, and give you the scoop on getting it up and running.  It is a pretty easy install, you just need to have Java 6.  If you are running Ubuntu, the easiest way is to run a simple apt-get install:</p>
<pre class="console">$ sudo apt-get install sun-java6-jdk</pre>
<p>I really like to have full control over my development environments, so I&#8217;m not going to grab Tomcat using apt (besides, I said the latest version). Go ahead and grab a zipped copy of the core distribution from the <a title="Apache Tomcat website" href="http://tomcat.apache.org/download-60.cgi" target="_blank">Tomcat website</a>. Now that you have the latest and greatest lets unzip the contents of your .zip into a /usr/local/tomcat folder.</p>
<pre class="console">~$ unzip apache-tomcat-6.0.18.zip
~$ sudo mv apache-tomcat-6.0.18 /usr/local/tomcat</pre>
<p>Now, before we can start the Tomcat server, we&#8217;ll need to make some of the script files executable (note: if you downloaded the tar.gz archive instead, these scripts might already have the executable bit on. To avoid any potential snags, I&#8217;d issue these regardless of which compressed file you downloaded).</p>
<pre class="console">~$ cd /usr/local/tomcat/bin
~$ sudo chmod +x *.sh</pre>
<p>Since I&#8217;d like to check out the neat framework demo <a title="ZKoss Download Site" href="http://www.zkoss.org/download/" target="_blank">ZK has</a>, I need to be able to deploy their WAR in my webapps.  To make deploying point and click, I&#8217;ll be using the Tomcat Manager. If you want to use the Tomcat Manager you&#8217;ll need to modify the users and roles specified in the tomcat-users.xml file located in the /usr/local/tomcat/conf folder.  Modify this xml file to have something similar to what is below.  Be sure to change username to something more creative and change the password (I don&#8217;t suggest using your real password considering this is a flat file). The file should contains something like this;</p>
<pre class="console">&lt;tomcat-users&gt;
  &lt;role rolename="manager"/&gt;
  &lt;role rolename="tomcat"/&gt;
  &lt;role rolename="admin"/&gt;
  &lt;user username="codenomad" password="supersecret" roles="tomcat,admin,manager"/&gt;
  &lt;user username="admin" password="secret" roles="manager,admin"/&gt;
&lt;/tomcat-users&gt;</pre>
<p>That should just about do it.  Let&#8217;s start up the server by running:</p>
<pre class="console">~$ sudo /usr/local/tomcat/bin/startup.sh</pre>
<p>You can test your install by clicking <a title="Apache install" href="http://localhost:8080" target="_blank">here</a>. You should see something like this:</p>
<p><a href="http://www.kallasoft.com/wp-content/uploads/2008/10/tomcatscreen.png"><img class="aligncenter size-medium wp-image-486" title="Tomcat Server Screen" src="http://www.kallasoft.com/wp-content/uploads/2008/10/tomcatscreen.png" alt="" width="450" height="425" /></a></p>
<p>If you need to shutdown the server you can issue a similar command:</p>
<pre class="console">~$ sudo /usr/local/tomcat/bin/shutdown.sh</pre>
<p>Now that we have Tomcat installed, lets check out that ZK demo I was talking about.  First, you&#8217;ll need a couple things. You&#8217;ll need the ZK binary and the ZK demo.  Download both of those <a href="http://www.zkoss.org/download/">here</a>.</p>
<p>Unzip those files and copy the .jar&#8217;s over to your Tomcat library (this will allow you to include all of the greatness that is ZK in your future webapps).</p>
<pre class="console">~$ unzip zk-bin-prof-3.5.1.zip
~$ unzip zk-demo-3.5.1.zip
~$ cd zk-bin-prof-3.5.1/dist/lib
~$ sudo cp *.jar /usr/local/tomcat/lib/
~$ sudo cp ext/*.jar /usr/local/tomcat/lib
~$ sudo cp zkforge/*.jar /usr/local/tomcat/lib</pre>
<p>Next, you&#8217;ll have to restart your Tomcat server:</p>
<pre class="console">~$ sudo /usr/local/tomcat/bin/shutdown.sh
~$ sudo /usr/local/tomcat/bin/startup.sh</pre>
<p>Head back to the Tomcat page <a title="Apache install" href="localhost:8080" target="_blank">here</a>, and click on the Tomcat Manager link in the top left. Enter in the username and password you modified in the XML file above, and scroll to the very bottom where it says &#8220;WAR file to deploy&#8221;.  Click browse, and find the zkdemo.war file in the unzipped zk-demo-3.5.1 folder that was unzipped earlier.</p>
<p><a href="http://www.kallasoft.com/wp-content/uploads/2008/10/tomcatscreen3.png"><img class="aligncenter size-medium wp-image-487" title="Tomcat Deploy Snippet Screenshot" src="http://www.kallasoft.com/wp-content/uploads/2008/10/tomcatscreen3.png" alt="" width="450" height="56" /></a></p>
<p>Next, click on the Deploy button.  You should see that the zkdemo is now in the Applications list, and if you click on the link that Tomcat provides you&#8217;ll get a welcome screen:</p>
<p><a href="http://www.kallasoft.com/wp-content/uploads/2008/10/tomcatscreen2.png"><img class="aligncenter size-medium wp-image-488" title="ZK Demo Welcome screen" src="http://www.kallasoft.com/wp-content/uploads/2008/10/tomcatscreen2.png" alt="" width="450" height="167" /></a></p>
<p>Thats it!  You have a fully functional Tomcat Server, and you can start developing with the ZK platform!  Check out <a href="http://www.zkoss.org/support/training/webinar/zkintro.dsp">ZK&#8217;s site</a> for more development information.  Good luck, and happy coding!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kallasoft.com/setting-up-apache-tomcat-6x-and-zk-in-ubuntu/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Linux Alternatives to Apple&#8217;s Time Machine</title>
		<link>http://www.kallasoft.com/linux-alternatives-to-apples-time-machine/</link>
		<comments>http://www.kallasoft.com/linux-alternatives-to-apples-time-machine/#comments</comments>
		<pubDate>Fri, 24 Oct 2008 03:46:42 +0000</pubDate>
		<dc:creator>Ray Gomez</dc:creator>
		
		<category><![CDATA[Linux]]></category>

		<category><![CDATA[Operating System]]></category>

		<category><![CDATA[Apple]]></category>

		<category><![CDATA[Back-In-Time]]></category>

		<category><![CDATA[Backup]]></category>

		<category><![CDATA[Flyback]]></category>

		<category><![CDATA[Mac OS X]]></category>

		<category><![CDATA[Snapshot]]></category>

		<category><![CDATA[Time Machine]]></category>

		<category><![CDATA[TimeVault]]></category>

		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://www.kallasoft.com/?p=444</guid>
		<description><![CDATA[Have you ever caught yourself drooling over Apples Time Machine, but just couldn&#8217;t bare jumping ship to MacOS X?  You are in luck because you have a few projects to choose from.  Most of these applications use rsync (a filesyncing program for *nix) and cron (a task scheduler) to mimic the characteristics of [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.kallasoft.com/wp-content/uploads/2008/10/timemachine_icon20071016.png"><img class="alignnone size-medium wp-image-445" style="float: left; margin-left: 8px; margin-right: 8px;" title="Time Machine Logo" src="http://www.kallasoft.com/wp-content/uploads/2008/10/timemachine_icon20071016.png" alt="" width="86" height="86" /></a>Have you ever caught yourself drooling over Apples Time Machine, but just couldn&#8217;t bare jumping ship to MacOS X?  You are in luck because you have a few projects to choose from.  Most of these applications use rsync (a filesyncing program for *nix) and cron (a task scheduler) to mimic the characteristics of Time Machine.</p>
<p>A savvy scripter could get similar features using these tools, but space for maintain backups can really become an issue.  From my experience, there are 3 main gui driving projects out there: <a href="https://wiki.ubuntu.com/TimeVault">Timevault</a>, <a href="http://code.google.com/p/flyback/">Flyback</a>, and <a href="http://www.le-web.org/back-in-time/">Back-In-Time</a>.</p>
<p style="text-align: center;"><a href="http://www.kallasoft.com/wp-content/uploads/2008/10/popupnotification-timevault.png"><img class="size-medium wp-image-450 aligncenter" title="Popup Notification for TimeVault in Ubuntu" src="http://www.kallasoft.com/wp-content/uploads/2008/10/popupnotification-timevault.png" alt="" width="351" height="156" /></a></p>
<p>TimeVault, an integrated, and advanced backup utility that is currently in <a href="https://launchpad.net/timevault">launchpad for Ubuntu</a>, offers features comparable to Time Machine.  It includes pop up notifications and a snapshot browser that allows you to filter search results.  On top of that you are even given a graphical representation of a file change at the very top of the snapshot browser.</p>
<p>For those wishing everything to be maintained by the Operating System, this seems like a pretty solid choice and doesn&#8217;t skimp on the details when needed.  It is probably the best bet when looking for a solution that is system integrated, and for those looking to come as close to Apple&#8217;s Time Machine as possible (minus the eyecandy).</p>
<p style="text-align: center;"><a href="http://www.kallasoft.com/wp-content/uploads/2008/10/snapshotbrowser-timevault.png"><img class="size-medium wp-image-451 aligncenter" title="snapshotbrowser-timevault" src="http://www.kallasoft.com/wp-content/uploads/2008/10/snapshotbrowser-timevault.png" alt="" width="450" height="355" /></a><a href="http://www.kallasoft.com/wp-content/uploads/2008/10/snapshotbrowser-timevault.png"><br />
</a></p>
<p>Above you can see a screenshot of TimeVault&#8217;s snapshot browser, including the aforementioned representation of file changes.  The next couple of solutions feel a bit more hands on, that&#8217;s probably because they don&#8217;t have the tight system integration that TimeVault does.</p>
<p><a href="http://www.kallasoft.com/wp-content/uploads/2008/10/screenshot-flyback.jpg"><img class="size-medium wp-image-452 alignnone" style="float: left; margin-left: 8px; margin-right: 8px;" title="Flyback Screenshot" src="http://www.kallasoft.com/wp-content/uploads/2008/10/screenshot-flyback.jpg" alt="" width="201" height="206" /></a>Flyback and Back-In-Time are the two other frontends I spoke of.  Using rsync and cron to maintain backups, they both maintain pretty similar features.</p>
<p>Both applications have snapshot capabilities, and have the basic usermode backup where a filesystems/folder with write permission can be backed up and restored.   Their main windows are pretty straight forward and give you the standard views of timestamped snapshots for a given folder structure.</p>
<p>Each application can schedule when a backup is to take place and when backups are deleted. Of course you don&#8217;t want all those /tmp files so each application gives you the ability to enter exclude parameters for backups.</p>
<p><a href="http://www.kallasoft.com/wp-content/uploads/2008/10/mainwindow-back-in-time.png"><img class="alignnone size-medium wp-image-453" style="float: right; margin-left: 8px; margin-right: 8px;" title="Back In Time Screenshot" src="http://www.kallasoft.com/wp-content/uploads/2008/10/mainwindow-back-in-time.png" alt="" width="266" height="167" /></a></p>
<p>It all comes down to preference, and with multiple products out we have the best thing possible: choice.</p>
<p>While TimeVault offers features comparable to Time Machine and system integration, Flyback and Back-In-Time might be easier to dive into for some homebrew modifications.  You can check out TimeVault <a href="https://wiki.ubuntu.com/TimeVault">here</a>, Back-In-Time <a href="http://www.le-web.org/back-in-time/">here</a>, or Flyback <a href="http://flyback-project.org/">here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kallasoft.com/linux-alternatives-to-apples-time-machine/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Stream Your Video Feeds with Palantir</title>
		<link>http://www.kallasoft.com/stream-your-video-feeds-with-palantir/</link>
		<comments>http://www.kallasoft.com/stream-your-video-feeds-with-palantir/#comments</comments>
		<pubDate>Wed, 22 Oct 2008 23:57:50 +0000</pubDate>
		<dc:creator>Ray Gomez</dc:creator>
		
		<category><![CDATA[Linux]]></category>

		<category><![CDATA[daemon]]></category>

		<category><![CDATA[monitoring software]]></category>

		<category><![CDATA[Palantir]]></category>

		<category><![CDATA[project]]></category>

		<category><![CDATA[security]]></category>

		<category><![CDATA[streaming]]></category>

		<category><![CDATA[webcam]]></category>

		<guid isPermaLink="false">http://www.kallasoft.com/?p=428</guid>
		<description><![CDATA[Snapshot from palantir.santinoli.com:

Over the past couple of weeks I&#8217;ve dabbled with the idea to add a webcam to my personal site that monitored a couple of pet furballs.  The task was not too straight forward.  I ran into many hiccups with alpha software and missing libraries.  Most of the software related to [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;">Snapshot from palantir.santinoli.com:<br />
<a href="http://www.fastpath.it/products/palantir/index.php"><img class="aligncenter" src="http://palantir.santinoli.com:14334/?mode=single" alt="[Snapshot]" /></a></p>
<p>Over the past couple of weeks I&#8217;ve dabbled with the idea to add a webcam to my personal site that monitored a couple of pet furballs.  The task was not too straight forward.  I ran into many hiccups with alpha software and missing libraries.  Most of the software related to setting up a webcam server was severely outdated, and hadn&#8217;t received an update in many months.  I tried <a href="http://linuxbrit.co.uk/camE/">camE</a> and webcam (the two most standard daemon webcam servers), but they required far more thought in the security realm than I would have liked to invest in the project.</p>
<p>Minutes from assuming all was lost, I ran into a nice little piece of software named <a title="Palantir website" href="http://www.fastpath.it/products/palantir/index.php" target="_blank">Palantir</a> (yes, after that crystal ball thing in Lord of the Rings).  The program was built with performance in mind, and can handle a fair  load with old hardware.  Offering streaming pix, sound, and even the ability to control (assuming you have the hardware) the motion of a camera, my search was finally at an end.</p>
<p>Adding a stream to my website was as easy as embedding an image in my webserver index.html file, and starting up the Palantir server. All you need is the address of the box running the server, and modifying the following line (replacing the 192.168.0.20 ip with your server&#8217;s address):</p>
<pre class="console">&lt;<span class="start-tag">img</span><span class="attribute-name"> border</span>=<span class="attribute-value">"1" </span><span class="attribute-name">src</span>=<span class="attribute-value">"http://192.168.0.20:3000/" </span><span class="attribute-name">alt</span>=<span class="attribute-value">"[Live stream]"</span>&gt;</pre>
<p>You instantly have a live feed that will stay alive for the default 120 seconds.  The project also gives you the ability to use a stand alone client instead of a browser to stream your shots (choose from a native QT linux app, a Java app, or even a Windows app).</p>
<p>You can see a demo stream where the above snapshot was taken at the Palantir site <a href="http://www.fastpath.it/products/palantir/demo_video.php?s=palantir.santinoli.com&amp;p=14334&amp;t=120">here</a>. Check it out, and let us know what you think!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kallasoft.com/stream-your-video-feeds-with-palantir/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Sneak Peak at KDE 4.2</title>
		<link>http://www.kallasoft.com/sneak-peak-at-kde-42/</link>
		<comments>http://www.kallasoft.com/sneak-peak-at-kde-42/#comments</comments>
		<pubDate>Tue, 21 Oct 2008 12:57:34 +0000</pubDate>
		<dc:creator>Riyad Kalla</dc:creator>
		
		<category><![CDATA[Linux]]></category>

		<category><![CDATA[desktop]]></category>

		<category><![CDATA[KDE 4.2]]></category>

		<category><![CDATA[screenshots]]></category>

		<category><![CDATA[sneak peak]]></category>

		<guid isPermaLink="false">http://www.kallasoft.com/?p=413</guid>
		<description><![CDATA[
polishlinux.org has put together a great sneak-peak at the current incarnation of what will become KDE 4.2 directly from the SVN repo.
Overall 4.2 is looking to be a natural evolution to 4.1, which was a surprising leap over 4.0 from a user&#8217;s perspective given how disappointingly 4.0 was received from the end-user community (4.0 laid [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://www.kallasoft.com/wp-content/uploads/2008/10/kde-42-screenshot-dolphin-file-manager.png"><img class="size-medium wp-image-416 aligncenter" title="kde-42-screenshot-dolphin-file-manager" src="http://www.kallasoft.com/wp-content/uploads/2008/10/kde-42-screenshot-dolphin-file-manager.png" alt="" width="449" height="313" /></a></p>
<p><a href="http://polishlinux.org/kde/quick-look-at-kde-42-svn/">polishlinux.org</a> has put together a great sneak-peak at the current incarnation of what will become KDE 4.2 directly from the SVN repo.</p>
<p>Overall 4.2 is looking to be a natural evolution to 4.1, which was a surprising leap over 4.0 from a user&#8217;s perspective given how disappointingly 4.0 was received from the end-user community (4.0 laid all the technical groundwork for the infrastructure, but still had a lot of UI rough edges that were all ironed out in 4.1).</p>
<p>Dolphin has gotten some minor tweaks and enhancements to make it a better everyday file manager like GNOME has or Finder, leaving Konqueror to be the browser (or advanced file manager for folks that liked that more complex interface).</p>
<p>Improvements to Konqueror include back-ported SVG support from WebKit along with KJS (KDE JavaScript Engine) and KHTML (KDE HTML Rendering Engine) seeing improvements inline with the WebKit work as well to improve rendering speed.</p>
<p>Okular has replaced KPDF as the default viewer for PDF, CHM, DJVU and graphic files.</p>
<p>Improvements to the Plasma manager and it&#8217;s embeddable components, Plasmoids, has been done but there are still instabilities there. Kickoff4 can be integrated as a Plasmoid and has some additional searching enhancements (that are a little wonky right now).</p>
<p>The author, Piotr, recommends people wait for the 4.2.1 release of KDE if they are planning on switching. <em>This</em> author cannot help but appreciate the irony of that statement given he has read that, and adhered to it, since he first got into Linux almost 10 years ago&#8230; &#8220;XYZ is looking awesome, but wait for the patch release ABC&#8230;&#8221;</p>
<p>As far as I can tell, Linux has been <em>almost</em> great on the desktop for 10 years, but continues to loose the battle against Audio, Video and Gaming which keeps it out of the mainstream every single time.</p>
<p>I also fully expect 100 people to tell me why I&#8217;m wrong&#8230; I was one of you from 1998 until about 2005 when I finally realized that Linux would never <em>really</em> be dominant on the desktop because it cannot deliver what the majority of people want.</p>
<p>That&#8217;s not saying it doesn&#8217;t deliver a great experience to some people&#8230; those people will post here <em>rabidl</em> about why it&#8217;s superior, but it still cannot deliver the experience that <strong>most</strong> people want.</p>
<p>I&#8217;d suggest waiting for the patch release <img src='http://www.kallasoft.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>

<a href='http://www.kallasoft.com/sneak-peak-at-kde-42/kde-42-screenshot-amarok-juk-mp3-players/' title='kde-42-screenshot-amarok-juk-mp3-players'><img src="http://www.kallasoft.com/wp-content/uploads/2008/10/kde-42-screenshot-amarok-juk-mp3-players.png" width="150" height="84" class="attachment-thumbnail" alt="" /></a>
<a href='http://www.kallasoft.com/sneak-peak-at-kde-42/kde-42-screenshot-dolphin-ark-desktop/' title='kde-42-screenshot-dolphin-ark-desktop'><img src="http://www.kallasoft.com/wp-content/uploads/2008/10/kde-42-screenshot-dolphin-ark-desktop.jpg" width="150" height="93" class="attachment-thumbnail" alt="" /></a>
<a href='http://www.kallasoft.com/sneak-peak-at-kde-42/kde-42-screenshot-dolphin-file-manager/' title='kde-42-screenshot-dolphin-file-manager'><img src="http://www.kallasoft.com/wp-content/uploads/2008/10/kde-42-screenshot-dolphin-file-manager.png" width="150" height="104" class="attachment-thumbnail" alt="" /></a>
<a href='http://www.kallasoft.com/sneak-peak-at-kde-42/kde-42-screenshot-kget-download-manager/' title='kde-42-screenshot-kget-download-manager'><img src="http://www.kallasoft.com/wp-content/uploads/2008/10/kde-42-screenshot-kget-download-manager.png" width="150" height="84" class="attachment-thumbnail" alt="" /></a>
<a href='http://www.kallasoft.com/sneak-peak-at-kde-42/kde-42-screenshot-kickoff-4/' title='kde-42-screenshot-kickoff-4'><img src="http://www.kallasoft.com/wp-content/uploads/2008/10/kde-42-screenshot-kickoff-4.png" width="150" height="63" class="attachment-thumbnail" alt="" /></a>
<a href='http://www.kallasoft.com/sneak-peak-at-kde-42/kde-42-screenshot-okular/' title='kde-42-screenshot-okular'><img src="http://www.kallasoft.com/wp-content/uploads/2008/10/kde-42-screenshot-okular.png" width="150" height="91" class="attachment-thumbnail" alt="" /></a>

]]></content:encoded>
			<wfw:commentRss>http://www.kallasoft.com/sneak-peak-at-kde-42/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Add Logging to Ruby Scripts with Log4r</title>
		<link>http://www.kallasoft.com/add-logging-to-ruby-scripts-with-log4r/</link>
		<comments>http://www.kallasoft.com/add-logging-to-ruby-scripts-with-log4r/#comments</comments>
		<pubDate>Tue, 14 Oct 2008 15:37:33 +0000</pubDate>
		<dc:creator>Ray Gomez</dc:creator>
		
		<category><![CDATA[Linux]]></category>

		<category><![CDATA[Software Development]]></category>

		<category><![CDATA[apache log4j]]></category>

		<category><![CDATA[java logging]]></category>

		<category><![CDATA[Log4j]]></category>

		<category><![CDATA[Log4r]]></category>

		<category><![CDATA[logging]]></category>

		<category><![CDATA[logging ruby]]></category>

		<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://www.kallasoft.com/?p=336</guid>
		<description><![CDATA[Log4r is a logging library inspired by Apache Foundation&#8217;s Log4j, &#8220;but is not a direct implementation or clone.&#8221;  Of course this doesn&#8217;t change the fact that log4r is a very efficient, fast, and easy to use library. I&#8217;m going give a quick tutorial how to add logging capabilities to your Ruby scripts using Log4r. [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://log4r.sourceforge.net/"><img class="alignnone size-medium wp-image-143" style="float: left; margin-left: 8px; margin-right: 8px;" title="log4r-logo" src="http://www.kallasoft.com/wp-content/uploads/2008/10/log4r-logo.png" alt="" width="167" height="60" /></a><a href="http://log4r.sourceforge.net/">Log4r</a> is a logging library inspired by Apache Foundation&#8217;s <a href="http://logging.apache.org/log4j/1.2/index.html">Log4j</a>, &#8220;but is not a direct implementation or clone.&#8221;  Of course this doesn&#8217;t change the fact that log4r is a very efficient, fast, and easy to use library. I&#8217;m going give a quick tutorial how to add logging capabilities to your Ruby scripts using Log4r. First, let&#8217;s get everything we need installed and then I&#8217;ll show how I added logging capabilities to fibonacci Ruby script I&#8217;ve written in a previous post.</p>
<p>We have two basic ways of installing the log4r library.  We can either install directly by grabbing the source or we can install using ruby-gems.</p>
<p>To install using the source head on over to the Sourceforge <a href="http://sourceforge.net/project/showfiles.php?group_id=43396">download page</a>.</p>
<p>Extract the .zip or .tar.gz, enter the directory, and issue the install command</p>
<pre class="console">~$unzip log4r-1.0.5.zip
~$ cd log4r-1.0.5/
~/log4r-1.0.5$ sudo ruby install.rb</pre>
<p>To install using ruby-gems, first make sure you have gems installed:</p>
<pre class="console">~$ sudo apt-get install rubygems</pre>
<p>Then install the library:</p>
<pre class="console">~$ sudo gem install Log4jr</pre>
<p>This should get you everything you need to get started.  Now, lets look at the previously written<br />
script:</p>
<pre name="code" class="ruby">#!/usr/bin/ruby
require 'time'

puts "starting fibonacci"

def fib(num)
 if(num &lt; 2)
   return 1
 else
   return fib(num-1) + fib(num-2)
 end
end

if ARGV[0] != nil
 if (ARGV[0].to_i &gt;= 35)
  puts "This might take a bit...."
 end
 start = Time.now
 puts fib(ARGV[0].to_i)
 stop = Time.now - start
 puts "Finding the fib of #{ARGV[0]} took:"
 puts stop
 puts "seconds"
end</pre>
<p>We will need to add:</p>
<pre name="code" class="ruby">require 'log4r'
include Log4r</pre>
<p>to the top to get access to the Log4r library.</p>
<p>Then we will need to create a logger. We&#8217;ll do this by adding another method to setup the global<br />
logger. You can do this by adding:</p>
<pre name="code" class="ruby">def setupLogger()
  # create a logger
  @logger = Logger.new 'logger'
  @logger.outputters = Outputter.stdout
  @logger.debug "Logger is now setup"
end</pre>
<p>{smartads}</p>
<p>to just before the fib() method call in your script.</p>
<p>Normally, I would set this up in an initialize method (for those unfamiliar with Ruby, this is like a<br />
constructor method), but we&#8217;ll keep this simple for later examples.</p>
<p>I&#8217;m also going to replace all of the standard out (ie &#8220;puts&#8221;) messages, and<br />
replace them to be logged with the DEBUG logger.  Replace all &#8216;puts&#8217; messages with &#8220;@logger.debug&#8221;.</p>
<p>For instance:</p>
<pre class="console">puts "Finding the fib of #{ARGV[0]} took: #{stop} seconds"</pre>
<p>should now look like this:</p>
<pre class="console">@logger.debug "Finding the fib of #{ARGV[0]} took: #{stop} seconds"</pre>
<p>Of course, we still want feedback from our program so let&#8217;s change the logger to output directly<br />
to the console.  You can actually see that this is already being done with this line:</p>
<pre class="console">  @logger.outputters = Outputter.stdout</pre>
<p>After all of your edits, your script should now look like this:</p>
<pre name="code" class="ruby">#!/usr/bin/ruby
require 'time'
require 'log4r'
include Log4r

def setupLogger()
  # create a logger
  @logger = Logger.new 'logger'
  @logger.outputters = Outputter.stdout
  @logger.debug "Logger is now setup"
end

def fib(num)
 if(num &lt; 2)
   return num
 else
   return fib(num-1) + fib(num-2)
 end
end

#start of main script
@logger.debug "starting fibonacci"

if ARGV[0] != nil
 if (ARGV[0].to_i &gt;= 35)
  @logger.debug "This might take a bit...."
 end
 setupLogger()
 start = Time.now
 @logger.debug fib(ARGV[0].to_i)
 stop = Time.now - start
 @logger.debug "Finding the fib of #{ARGV[0]} took: "
 @logger.debug "#{stop}"
 @logger.debug "seconds"
end</pre>
<p>If you try and run your script at this point you&#8217;ll notice an &#8220;undefined method `info&#8217; for nil:NilClass (NoMethodError)&#8221; error.  This is because you haven&#8217;t setup the logger before you started debugging.  Lets move this log line to after the setupLogger() method call:</p>
<pre name="code" class="ruby">...
#start of main script

if ARGV[0] != nil
 if (ARGV[0].to_i &gt;= 35)
  @logger.debug "This might take a bit...."
 end
 setupLogger()
 @logger.debug "starting fibonacci"
 start = Time.now
 @logger.debug fib(ARGV[0].to_i)
 stop = Time.now - start
 @logger.debug "Finding the fib of #{ARGV[0]} took: "
 @logger.debug "#{stop}"
 @logger.debug "seconds"
end</pre>
<p>If you run your script now, it should work.  Here is output from my run:</p>
<pre class="console">~$ ruby fib-log.rb 10
DEBUG logger: Logger is now setup
DEBUG logger: starting fibonacci
DEBUG logger: Fixnum: 55
DEBUG logger: Finding the fib of 10 took:
DEBUG logger: 0.000828
DEBUG logger: seconds</pre>
<p>As you can see, adding a logger to your existing script is very easy, and you can get even more<br />
fancy with the types of logs you wish to create. Since there are multiple<br />
levels of logging (DEBUG&lt; INFO &lt; WARN &lt; ERROR &lt; FATAL), you can customize which level&#8217;s you use by changing the second qualifier (ie. @logger.debug could become @logger.info).  Lets do that for<br />
a couple of lines.</p>
<p>Change</p>
<pre class="console">@logger.debug "Logger is now setup"</pre>
<p>to</p>
<pre class="console">@logger.info "Logger is now setup"</pre>
<p>and change</p>
<pre class="console">@logger.debug "starting fibonacci"</pre>
<p>to</p>
<pre class="console">@logger.info "starting fibonacci"</pre>
<p>Your final script should look like this:</p>
<pre name="code" class="ruby">#!/usr/bin/ruby
require 'time'
require 'log4r'
include Log4r

def setupLogger()
  # create a logger named 'mylog' that logs to stdout
  @logger = Logger.new 'logger'
  @logger.outputters = Outputter.stdout
 @logger.info "Logger is now setup"
end

def fib(num)
 if(num &lt; 2)
   return num
 else
   return fib(num-1) + fib(num-2)
 end
end

#start of main script

if ARGV[0] != nil
 if (ARGV[0].to_i &gt;= 35)
  @logger.debug "This might take a bit...."
 end
 setupLogger()
 @logger.info "starting fibonacci"
 start = Time.now
 @logger.debug fib(ARGV[0].to_i)
 stop = Time.now - start
 @logger.debug "Finding the fib of #{ARGV[0]} took: "
 @logger.debug "#{stop}"
 @logger.debug "seconds"
end</pre>
<p>Now let&#8217;s run the final script.  You should have received output like this:</p>
<pre class="console">~$ ruby fib-log.rb 10
 INFO logger: Logger is now setup
 INFO logger: starting fibonacci
DEBUG logger: Fixnum: 55
DEBUG logger: Finding the fib of 10 took:
DEBUG logger: 0.000823
DEBUG logger: seconds</pre>
<p>If you are looking for a quick way to add log messages to your ruby scripts, log4r might be a<br />
very quick and easy to implement solution for you.  Offering features comparable to Apache<br />
Foundation&#8217;s log4j, you will find quite it quite capable of handing any of your current project&#8217;s<br />
logging needs.  Check it out, and let us know what you think.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kallasoft.com/add-logging-to-ruby-scripts-with-log4r/feed/</wfw:commentRss>
		</item>
		<item>
		<title>A Quick Introduction to C#</title>
		<link>http://www.kallasoft.com/a-quick-intro-into-csharp/</link>
		<comments>http://www.kallasoft.com/a-quick-intro-into-csharp/#comments</comments>
		<pubDate>Wed, 08 Oct 2008 19:38:41 +0000</pubDate>
		<dc:creator>Ray Gomez</dc:creator>
		
		<category><![CDATA[Linux]]></category>

		<category><![CDATA[Software Development]]></category>

		<category><![CDATA[.NET]]></category>

		<category><![CDATA[C#]]></category>

		<category><![CDATA[Mono]]></category>

		<category><![CDATA[MSDN]]></category>

		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://www.kallasoft.com/?p=306</guid>
		<description><![CDATA[With Mono&#8217;s 2.0 release it seems there&#8217;s no better time than now to start investing in C#, especially if you are looking for platform independence.  To help move that investment along, I&#8217;ve written up a small tutorial that should get you up and running with C#.  Before we begin, you&#8217;ll need to grab [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.mono-project.com/CSharp_Compiler"><img class="alignnone size-thumbnail wp-image-70" style="float: left; margin-left: 8px; margin-right: 8px;" title="mono-c-sharp" src="http://www.kallasoft.com/wp-content/uploads/2008/10/mono_logo.png" alt="" width="86" height="104" /></a>With <a href="http://www.kallasoft.com/mono-20-brings-net-20-features-to-the-oss-community/">Mono&#8217;s 2.0 release</a> it seems there&#8217;s no better time than now to start investing in C#, especially if you are looking for platform independence.  To help move that investment along, I&#8217;ve written up a small tutorial that should get you up and running with C#.  Before we begin, you&#8217;ll need to grab a couple of things like the Mono runtime environment and the Mono compiler gmcs.</p>
<p>If you are running Ubuntu the install is pretty trivial:</p>
<pre class="console">$ sudo apt-get install mono-2.0-devel mono-gmcs</pre>
<p>Now we are ready to start.</p>
<p>Java developers will find that C# feels like a very familiar language.  Being a Java coder there were some nuances that caught me off guard while writing my first basic programs.  For instance, a basic &#8220;Hello World!&#8221; example can be written in a variety of <a title="MSDN hello world examples" href="http://msdn.microsoft.com/en-us/library/aa288463(VS.71).aspx" target="_blank">ways</a>.</p>
<p>For now, we&#8217;ll stick to the absolute basics which is conveniently the closest to Java. Add the following code to a file called hello.cs:</p>
<pre name="code" class="java">public class HelloWorld {
  public static void Main(){
    System.Console.WriteLine("Hello World!");
  }
}</pre>
<p>Then, compile the example using gmcs:</p>
<pre class="console">$ gmcs hello.cs</pre>
<p>You will see that the compiler created a hello.exe file which can be run using the Mono runtime.</p>
<pre class="console">$ mono hello.exe
Hello World!
$</pre>
<p>One of the nuances I was talking about earlier was in reference to namespaces.  If you are familiar with C++, you will find that namespaces in C# function similarly. If, however, a bulk of your education was invested in Java, such as mine, you might be a little confused at first. Let me assuage any of those fears by stating that namespaces help more with code organization than anything else.  Let us rewrite the &#8220;Hello World!&#8221; example one more time using a namespace.</p>
<p>Add the following code to a file called hellonamespace.cs:</p>
<pre name="code" class="java">using System;

public class HelloWorld {
  public static void Main(){
    //Notice how the following line
    //is different from the first example
    Console.WriteLine("Hello World!");
  }
}</pre>
<p>Now compile and run it&#8230;.</p>
<pre class="console">$ gmcs hellonamespace.cs
$ mono hellonamespace.exe
Hello Namespace...errr World!</pre>
<p>{smartads}</p>
<p>To explain a bit, the second hello world example used the System namespace. By using this namespace we were able to call WriteLine from the Console class without needing to fully qualify the class (ie. System.Console.Writeline). Imagine, for a moment, that a namespace is like a tool shed where multiple tools are housed.  If you exist in the tool shed you have the ability to use a hammer object or a saw object that also exist in the same shed.  That being said, multiple tool sheds can exist and some  may even have similar objects like a hammer or a saw.</p>
<p>If you are a Java programmer you might be thinking that package names are the equivalent.  You would be correct, but C# does not require class files to be stored in certain locations like Java convention does.  This is a great way to organize and allow for more flexiblility in a single file.</p>
<p>This is just a quick tutorial, however, and there are some more neat tricks that can be done with namespaces like namespace aliasing, external aliasing, and using the global:: operator which you can read more about <a title="MSDN Site on Namespaces" href="http://msdn.microsoft.com/en-us/library/0d941h9d(VS.80).aspx" target="_blank">here</a>.</p>
<p>Let&#8217;s continue on.  Since I like the golden ratio, and because I think it makes pretty pictures,<br />
lets go ahead and implement a Fibonacci example using C#.</p>
<p>Start by adding the following to a fib.cs file:</p>
<pre name="code" class="java">//Namespace
using System;

public class Fib {
  public static void Main(){
    Fib fibGenerator = new Fib();
    //Notice the subtle difference in outputting
    //variables.  This is similar to C/C++
    Console.WriteLine("The fib number of {0} is {1}",
                      10, fibGenerator.grabFib(10));
  }
  //Constructor Class
  public Fib(){}

  //Fibonacci Computer
  public int grabFib(int num){
    if(num &lt; 2)
      return num;
    else
      return grabFib(num-1)+grabFib(num-2);
  }
}</pre>
<p>Now compile and run it&#8230;.</p>
<pre class="console">$ gmcs fib.cs
$ mono fib.exe
The fib number of 10 is 55
$</pre>
<p>You should note that writing to the console was a little different here.  I was able to specify multiple variables in the Console.WriteLine call by using the &#8220;{0}&#8221; and &#8220;{1}&#8221; notation and placing the variables at the end respectively.  This borrows a bit from the earlier C languages, and is a nice way to keep console messages clean.</p>
<p>As you can see, if you want to learn C# and you have a Java background you will be able to pick the syntax up very quickly.  If you have had any object oriented experience it will definitely help in understanding basic C# conventions. The only way to find out is to dive in.  Give it a shot, and let us know what you think.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kallasoft.com/a-quick-intro-into-csharp/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Mono 2.0 Brings .NET 2.0 Features to the OSS Community</title>
		<link>http://www.kallasoft.com/mono-20-brings-net-20-features-to-the-oss-community/</link>
		<comments>http://www.kallasoft.com/mono-20-brings-net-20-features-to-the-oss-community/#comments</comments>
		<pubDate>Wed, 08 Oct 2008 15:44:49 +0000</pubDate>
		<dc:creator>Ray Gomez</dc:creator>
		
		<category><![CDATA[Linux]]></category>

		<category><![CDATA[Software Development]]></category>

		<category><![CDATA[ADO.NET]]></category>

		<category><![CDATA[ASP.NET]]></category>

		<category><![CDATA[C#]]></category>

		<category><![CDATA[Mono]]></category>

		<category><![CDATA[Novell]]></category>

		<category><![CDATA[Windows.Forms]]></category>

		<category><![CDATA[Ximian]]></category>

		<guid isPermaLink="false">http://www.kallasoft.com/?p=300</guid>
		<description><![CDATA[With Mono 2.0 being released yesterday I bet you are wondering &#8220;What is this new and great wonder that keeps popping up in the news every now and again?&#8221;
Well, Mono is an Open Source, ECMA compliant answer to Microsoft&#8217;s .NET set of tools.  Mono has been famed for it&#8217;s C# compiler and Common Language Runtime [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.kallasoft.com/wp-content/uploads/2008/10/mono-logo.png"><img class="alignnone size-medium wp-image-143" style="float: left; margin-left: 8px; margin-right: 8px;" title="Mono Logo" src="http://www.kallasoft.com/wp-content/uploads/2008/10/mono-logo.png" alt="" width="168" height="85" /></a>With Mono 2.0 being released <a title="Mono" href="http://www.mono-project.com/news/archive/2008/Oct-06.html" target="_blank">yesterday</a> I bet you are wondering &#8220;What is this new and great wonder that keeps popping up in the news every now and again?&#8221;</p>
<p>Well, Mono is an Open Source, ECMA compliant answer to Microsoft&#8217;s <a title=".NET Website" href="http://www.microsoft.com/NET/" target="_blank">.NET</a> set of tools.  Mono has been famed for it&#8217;s C# compiler and Common Language Runtime and has .NET compatible toolset that runs on a wide variety of *nix platforms including Linux, Mac OS X, Solaris, BSD, and yes, of course, Windows.</p>
<p>The Mono project was started by Miguel De Icaza of <a title="Wikipedia Ximian Entry" href="http://en.wikipedia.org/wiki/Ximian" target="_blank">Ximian</a> fame back in 2001. It made great progress on a seemingly impossible task with only a handful developers.  It was also well received in the OSS community and received corporate backing when the founding company, Ximian, was purchased by Novell in 2003.</p>
<p>With this release, Mono brings a whole slew of new features (straight from the website) including Compatibility with Microsoft&#8217;s:</p>
<ul>
<li>ADO.NET 2.0 API</li>
<li>ASP.NET 2.0 API</li>
<li>Windows.Forms 2.0 API</li>
<li>System.XML 2.0</li>
<li>System.Core</li>
<li>System.Xml.Linq</li>
<li>System.Drawing 2.0 API</li>
</ul>
<p>Along with Microsoft API compatibility, the Mono project has also managed to expand its own APIs to include (again straight from the site):</p>
<ul>
<li>Gtk# 2.12 support</li>
<li>Mono.Cecil</li>
<li>Mono.Cairo</li>
<li>Mono SQLite support</li>
<li>Mono.Posix</li>
</ul>
<p>{smartads}</p>
<p>The new release also features a Visual Basic 8 compiler and C# 3.0 compiler implementation fully supporting <a title="LINQ" href="http://msdn.microsoft.com/en-us/netframework/aa904594.aspx" target="_blank">LINQ</a> (A project started by Microsoft to create a set of extensions for the .NET framework which help simplify querying, selecting, and filtering all kinds of data sources ranging from arrays to XML files).</p>
<p>This release should be great news for those either needing to port .NET applications to other platforms or with projects requiring platform independence. Just in case you didn&#8217;t know how big this project has become you can check out the huge list of applications already using the Mono runtime <a title="Software using Mono" href="http://www.mono-project.com/Software" target="_blank">here</a>.</p>
<p>If you are a Windows developer that has an existing .NET 2.0 application in the field or are a *nix developer looking for cross platform tools consider using Mono.  After all, using Mono to develop your applications can only help increase your existing user base.   For more information check out the release notes <a title="Mono 2.0 Release Notes" href="http://www.mono-project.com/Release_Notes_Mono_2.0" target="_blank">here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kallasoft.com/mono-20-brings-net-20-features-to-the-oss-community/feed/</wfw:commentRss>
		</item>
		<item>
		<title>CrossOver Chromium, first impressions</title>
		<link>http://www.kallasoft.com/crossover-chromium-first-impressions/</link>
		<comments>http://www.kallasoft.com/crossover-chromium-first-impressions/#comments</comments>
		<pubDate>Mon, 22 Sep 2008 17:25:46 +0000</pubDate>
		<dc:creator>Ray Gomez</dc:creator>
		
		<category><![CDATA[Linux]]></category>

		<category><![CDATA[Chrome]]></category>

		<category><![CDATA[Chromium Linux]]></category>

		<category><![CDATA[Chromium Mac]]></category>

		<category><![CDATA[Codeweavers]]></category>

		<category><![CDATA[CrossOver Chromium]]></category>

		<category><![CDATA[Google]]></category>

		<category><![CDATA[WINE]]></category>

		<guid isPermaLink="false">http://www.kallasoft.com/?p=221</guid>
		<description><![CDATA[
Like all internet enthusiasts, I was ecstatic to see Google release a new browser.  Unfortunately, like all *nix enthusiasts, my heart dropped at the sight of &#8220;Google Chrome (BETA) for Windows&#8221; and no sign of a corresponding Linux or Mac version.  Fortunately, the good guys over at Codeweavers released a version of Chromium [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://www.google.com/chrome"><img class="size-medium wp-image-238 alignnone" title="Chrome screenshot from Google" src="http://www.kallasoft.com/wp-content/uploads/2008/09/chrome-screenshot-from-google.jpg" alt="" width="440" height="359" /></a></p>
<p style="text-align: left;">Like all internet enthusiasts, I was ecstatic to see Google release a new <a title="Google's Chrome Browser" href="http://www.google.com/chrome" target="_blank">browser</a>.  Unfortunately, like all *nix enthusiasts, my heart dropped at the sight of &#8220;Google Chrome (BETA) for Windows&#8221; and no sign of a corresponding Linux or Mac version.  Fortunately, the good guys over at <a title="Codeweavers" href="http://www.codeweavers.com/" target="_blank">Codeweavers</a> released a version of <a title="Crossover Chromium" href="http://www.codeweavers.com/services/ports/chromium/" target="_blank">Chromium</a> (the codebase for which Chrome was built on top of) for both Linux and Mac<a title="WINE" href="http://www.winehq.org/" target="_blank"></a>.  Being the curious little bugger that I am, I decided to give it a go on an old Pentium 4 Ubuntu desktop and my Core 2 Duo Macbook.  Granted, my Linux desktop is a little old, but I figured it would be a good candidate for noticing speed improvements.</p>
<p style="text-align: left;">Since this test was for kicks, I only ran the SunSpider JavaScript benchmarks to get a simple idea of performance. JavaScript, as we now know, was one of the huge performance areas Google tried to tackle with their new process model. The SunSpider benchmark just happened to be a nice test to expose performance benefits (just like it did with <a title="Squirrelfish Announcement" href="http://webkit.org/blog/189/announcing-squirrelfish/" target="_blank">SquirrelFish</a>). Here is how Chromium panned out&#8230;</p>
<p style="text-align: left;"><strong>Part 1: Linux Results<br />
</strong></p>
<p style="text-align: left;">On the Linux front, I was using a 1.8 Ghz Pentium 4 with 768MB RAM running KDE under Ubuntu 8.04. In the nature of simplicity, Codeweavers offers up a .deb package so the install was a simple one line dpkg command.  To be more complete I wanted a comparison between a couple of browsers, so on Ubuntu I picked Opera and Firefox to compare against.  I then ran the <a title="SunSpider Javascript Benchmarks" href="http://www2.webkit.org/perf/sunspider-0.9/sunspider.html" target="_blank">SunSpider</a> benchmarks with Opera 9.52, Firefox 3.0.1, and CrossOver Chromium v. 0.9.  The test was run in each browser one at a time and with no other applications running.</p>
<p style="text-align: center;"><a href="http://www.kallasoft.com/wp-content/uploads/2008/09/opera-vs-crossoverchromium.png"><img class="size-medium wp-image-234 aligncenter" title="Chromium and Opera SunSpider Javascript Benchmark results on Ubuntu." src="http://www.kallasoft.com/wp-content/uploads/2008/09/opera-vs-crossoverchromium-450x335.png" alt="" width="450" height="335" /></a><a href="http://www.kallasoft.com/wp-content/uploads/2008/09/opera-and-crossover-chromium.png"><br />
</a></p>
<p style="text-align: left;">Initially, I thought Chromium felt pretty zippy on the Ubuntu box, and the benchmarks proved it.  It was the solid winner in all categories with a speed 3.66 times faster than Opera and 2.08 times faster than Firefox. Each category total was recorded and those values are graphed below (shorter bars are better):</p>
<p style="text-align: center;"><a href="http://www.kallasoft.com/wp-content/uploads/2008/09/linux-benchmarks-chromium1.png"><img class="aligncenter size-medium wp-image-232" title="Chromium, Opera, and Firefox individual benchmarks on Ubuntu" src="http://www.kallasoft.com/wp-content/uploads/2008/09/linux-benchmarks-chromium1-450x270.png" alt="" width="450" height="270" /></a></p>
<p style="text-align: left;">The aforementioned speedup came from the total time benchmark tallies of 9590.4 ms for CrossOver Chromium, 35103.2 ms for Opera, and 19975 ms for Firefox.  There was no doubt that CrossOver Chromium was the clear winner here.  For the visually oriented the total runtimes can be seen below:</p>
<p style="text-align: center;"><a href="http://www.kallasoft.com/wp-content/uploads/2008/09/linux-total-runtime.png"><img class="size-medium wp-image-224 aligncenter" title="Chromium, Opera, and Firefox total runtimes on Ubuntu" src="http://www.kallasoft.com/wp-content/uploads/2008/09/linux-total-runtime-450x287.png" alt="" width="450" height="287" /></a></p>
<p style="text-align: center;">
<p style="text-align: left;"><strong>Part 2: Mac Results</strong></p>
<p style="text-align: left;">{smartads}</p>
<p style="text-align: left;">The Mac test machine packs a bit more of a punch with a 2.0 Ghz Core 2 Duo processor and 2 gigs of RAM running Leopard (10.5.5).</p>
<p style="text-align: left;">For the installation Codeweavers offers a standard .dmg file that mounts as a disk image.  To install you are left to drag and drop Chromium onto the provided Applications alias.</p>
<p style="text-align: left;">Once all the applications were installed and up to date, I started the benchmark the same as with Ubuntu: one application at a time with nothing else running.</p>
<p style="text-align: left;">Below is a screenshot of Opera, Safari, and CrossOver Chromium with their respective results.</p>
<p style="text-align: center;"><a href="http://www.kallasoft.com/wp-content/uploads/2008/09/crossover-chromium-vs-safari-opera-mac.png"><img class="size-medium wp-image-243 aligncenter" title="Chromium, Safari, and Opera SunSpider Javascript Benchmark results on Leopard" src="http://www.kallasoft.com/wp-content/uploads/2008/09/crossover-chromium-vs-safari-opera-mac-450x281.png" alt="" width="450" height="281" /></a></p>
<p style="text-align: left;">Once the tests had finished on Safari version 3.1.2 (build 5525.20.1), Opera version 9.52 (build 4916), and CrossOver Chromium v. 0.9 I compiled the results.  Similar to the Ubuntu run, CrossOver Chromium for Mac performed very well breezing past Opera and Safari in all of the tests. Here are the individual results for Leopard (shorter bars are better):</p>
<p style="text-align: center;"><a href="http://www.kallasoft.com/wp-content/uploads/2008/09/mac-benchmarks-chromium.png"><img class="size-medium wp-image-225 aligncenter" title="Chromium, Opera, and Safari individual benchmarks run on Leopard" src="http://www.kallasoft.com/wp-content/uploads/2008/09/mac-benchmarks-chromium-450x271.png" alt="" width="450" height="271" /></a></p>
<p style="text-align: left;">The total benchmark tallies for the Mac run were 1592.6 ms for CrossOver Chromium, 6923.4 ms for Opera, and 3934.8 ms for Safari. For this run Chromium turns out to be 4.34 times faster than Opera for Mac and 2.47 times faster than Safari. Of course, Chromium was unquestionably the winner. Again, for a visual taste of the test:</p>
<p style="text-align: center;"><a href="http://www.kallasoft.com/wp-content/uploads/2008/09/mac-total-runtime.png"><img class="aligncenter size-medium wp-image-226" title="Chromium, Opera, and Safari total runtimes on Leopard" src="http://www.kallasoft.com/wp-content/uploads/2008/09/mac-total-runtime-450x270.png" alt="" width="450" height="270" /></a></p>
<p style="text-align: left;">Even though the Chrome Beta was intended for a Windows-based audience, Codeweavers managed to put out a nice appetizer for those lacking (by chance or choice) a Windows installation.  This test&#8217;s purpose was just to see the performance of CrossOver Chromium compared to existing browsers of the same platform.</p>
<p style="text-align: left;">Please keep in mind that the software is still Beta, and no native version has been announced for Linux or Mac.  That being said, CrossOver Chromium seems to be the sure winner on both test boxes with doubling and even quadrupling the speed of javascript execution comparatively.  For Linux and Mac users, this should be a pretty good indication that a speedy new contender in the browser arena will be with us shortly.</p>
<p style="text-align: left;">Check it out <a title="Crossover Chromium" href="http://www.codeweavers.com/services/ports/chromium/" target="_blank">here</a>, and let us know what you think!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kallasoft.com/crossover-chromium-first-impressions/feed/</wfw:commentRss>
		</item>
		<item>
		<title>System Rescue Cd, an Administrator&#8217;s toolbox</title>
		<link>http://www.kallasoft.com/system-rescue-cd-an-administrators-toolbox/</link>
		<comments>http://www.kallasoft.com/system-rescue-cd-an-administrators-toolbox/#comments</comments>
		<pubDate>Thu, 18 Sep 2008 15:25:27 +0000</pubDate>
		<dc:creator>Ray Gomez</dc:creator>
		
		<category><![CDATA[Linux]]></category>

		<category><![CDATA[Servers]]></category>

		<category><![CDATA[bootable cd]]></category>

		<category><![CDATA[emergency disk]]></category>

		<category><![CDATA[linux repair disk]]></category>

		<category><![CDATA[recovery disk]]></category>

		<category><![CDATA[repair cd]]></category>

		<category><![CDATA[system rescue cd]]></category>

		<guid isPermaLink="false">http://www.kallasoft.com/?p=210</guid>
		<description><![CDATA[
Since the dawn of the IT department there has always been 1 disk to rule them all.   A single rescue disk to save ailed hard drives, or, if all else fails, grab the last remnants of your frantic employee&#8217;s 400 page handbook on cold fusion.
Of course the reign began with bootable floppies, then bootable [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://www.kallasoft.com/wp-content/uploads/2008/09/systemrescuecd-bootsplash.png"><img class="size-medium wp-image-213 aligncenter" title="System Rescue Cd Bootsplash Screen" src="http://www.kallasoft.com/wp-content/uploads/2008/09/systemrescuecd-bootsplash-450x337.png" alt="" width="450" height="337" /></a></p>
<p>Since the dawn of the IT department there has always been 1 disk to rule them all.   A single rescue disk to save ailed hard drives, or, if all else fails, grab the last remnants of your frantic employee&#8217;s 400 page handbook on cold fusion.</p>
<p>Of course the reign began with bootable floppies, then bootable CD-ROMs, and now the ever-so-versatile bootable USB drive.  Since the media technology has become more advanced so have the distributions.  While you can install Linux on portable USB drives, I still prefer a good, old-fashioned, unborkable CD-ROM based rescue distribution. Enter <a title="SystemRescueCd" href="http://www.sysresccd.org/Main_Page" target="_blank">SystemRescueCd</a>, a simple, yet full-featured bootable CD-ROM that offers up the latest and greatest in workstation repair tools (taken straight from the website):</p>
<ul>
<li>GNU Parted</li>
<li>GParted</li>
<li>Partimage</li>
<li>File systems tools</li>
<li>NTFS-3G</li>
<li>sfdisk</li>
<li>Test-disk</li>
<li>Network tools</li>
</ul>
<p>For a long time I&#8217;ve felt that Linux-based rescue CDs were great for Linux workstations, and they even worked great if you needed to repair a FAT32 partition or mount NTFS as read-only (because read/write support was still experimental).</p>
<p>{smartads}</p>
<p>Since the completion of <a title="NTFS-3G" href="http://www.ntfs-3g.org/" target="_blank">NTFS-3G</a>, however, there is nothing to keep a Windows administrator tied down to commercial software.</p>
<p>This particular distribution does a great job reminding me of that.  Using Partimage I was able to backup a partition to another hard drive. With Test-disk I was able to undelete FAT32 partitions I mistakenly borked, and I was able to resize my NTFS partition with GParted without the disclaimer stating that my drive could become unusable.</p>
<p>Accompanying all that is the ability to use SystemRescueCd remotely with the built-in VNC Server, backstore to keep your changes when you reboot the SystemRescueCd, and rsync for backing up laptop post-trauma data.</p>
<p style="text-align: center;"><a href="http://www.kallasoft.com/wp-content/uploads/2008/09/sysresccd-001-640x480.png"><img class="size-medium wp-imag