<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>kallasoft</title>
	
	<link>http://www.kallasoft.com</link>
	<description>Feed for posts on kallasoft - commercial-friendly, Open Source software development site.</description>
	<lastBuildDate>Tue, 30 Jun 2009 15:57:55 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/kallasoft" type="application/rss+xml" /><feedburner:emailServiceId>kallasoft</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><item>
		<title>UPDATE – Site Cleaned, Malware Removed</title>
		<link>http://feedproxy.google.com/~r/kallasoft/~3/jYQv6VMQhOg/</link>
		<comments>http://www.kallasoft.com/update-site-cleaned-malware-removed/#comments</comments>
		<pubDate>Tue, 30 Jun 2009 15:57:21 +0000</pubDate>
		<dc:creator>Riyad Kalla</dc:creator>
				<category><![CDATA[Servers]]></category>
		<category><![CDATA[clean]]></category>
		<category><![CDATA[fixed]]></category>
		<category><![CDATA[hack]]></category>
		<category><![CDATA[m-analytics]]></category>
		<category><![CDATA[malware]]></category>
		<category><![CDATA[shenanigans]]></category>

		<guid isPermaLink="false">http://www.kallasoft.com/?p=1098</guid>
		<description><![CDATA[
Over the last few weeks you might have seen a warning window like the one above (or similar to it) when visiting the site. Unfortunately it looks like some WordPress plugin-tinkering that I did right before going on vacation introduced an obnoxious malware hook into the site (don&#8217;t worry, it&#8217;s nothing epicly horrible).
I just finished [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://www.breakitdownblog.com/wp-content/uploads/2009/06/safe-ceritifed-logo.JPG"></a><a href="http://www.breakitdownblog.com/wp-content/uploads/2009/06/google-chrome-malware-site-warning.png"><img class="alignnone size-large wp-image-6261" title="google-chrome-malware-site-warning" src="http://www.breakitdownblog.com/wp-content/uploads/2009/06/google-chrome-malware-site-warning-500x257.png" alt="google-chrome-malware-site-warning" width="500" height="257" /></a></p>
<p>Over the last few weeks you might have seen a warning window like the one above (or similar to it) when visiting the site. Unfortunately it looks like some WordPress plugin-tinkering that I did <em>right</em> before going on vacation introduced an obnoxious malware hook into the site (don&#8217;t worry, it&#8217;s nothing epicly horrible).</p>
<p>I just finished manually cleaning it out using talgalili&#8217;s tip <a href="http://wordpress.org/support/topic/282366#post-1111706">here</a>. The infection was an invisible iframe-hack injecting a reference to the m-analytics.net site in every single .php or .html file hosted on the site &#8212; really obnoxious but easy enough to clear out and tighten up everything in the process.</p>
<p>Sorry you guys had to deal with that while I was gone, we should be good now.</p>
<img src="http://www.kallasoft.com/?ak_action=api_record_view&id=1098&type=feed" alt="" /><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/kallasoft?a=jYQv6VMQhOg:3B-kKCPbQNw:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=jYQv6VMQhOg:3B-kKCPbQNw:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=jYQv6VMQhOg:3B-kKCPbQNw:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/kallasoft?i=jYQv6VMQhOg:3B-kKCPbQNw:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=jYQv6VMQhOg:3B-kKCPbQNw:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=jYQv6VMQhOg:3B-kKCPbQNw:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/kallasoft?i=jYQv6VMQhOg:3B-kKCPbQNw:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=jYQv6VMQhOg:3B-kKCPbQNw:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=jYQv6VMQhOg:3B-kKCPbQNw:KwTdNBX3Jqk"><img src="http://feeds.feedburner.com/~ff/kallasoft?i=jYQv6VMQhOg:3B-kKCPbQNw:KwTdNBX3Jqk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=jYQv6VMQhOg:3B-kKCPbQNw:l6gmwiTKsz0"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=l6gmwiTKsz0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=jYQv6VMQhOg:3B-kKCPbQNw:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/kallasoft?i=jYQv6VMQhOg:3B-kKCPbQNw:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=jYQv6VMQhOg:3B-kKCPbQNw:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=TzevzKxY174" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/kallasoft/~4/jYQv6VMQhOg" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.kallasoft.com/update-site-cleaned-malware-removed/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.kallasoft.com/update-site-cleaned-malware-removed/</feedburner:origLink></item>
		<item>
		<title>Did You Know enums Can Define Their Own Methods?</title>
		<link>http://feedproxy.google.com/~r/kallasoft/~3/sf6Gtk6RUH0/</link>
		<comments>http://www.kallasoft.com/did-you-know-enums-can-define-their-own-methods/#comments</comments>
		<pubDate>Mon, 20 Apr 2009 16:06:10 +0000</pubDate>
		<dc:creator>Riyad Kalla</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[definition]]></category>
		<category><![CDATA[enum]]></category>
		<category><![CDATA[how to]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[methods]]></category>
		<category><![CDATA[tip]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://www.kallasoft.com/?p=1094</guid>
		<description><![CDATA[&#8230; I sure as hell didn&#8217;t, but found myself in a position the other day where I was thinking &#8220;Damn, I wish I could define a common method in this enum that I could call and not have to write another utility method&#8230;&#8221; Well, ask and ye shall receive&#8230; or something like that.
Here&#8217;s the enum [...]]]></description>
			<content:encoded><![CDATA[<p>&#8230; I sure as hell didn&#8217;t, but found myself in a position the other day where I was thinking &#8220;Damn, I wish I could define a common method in this <em>enum </em>that I could call and not have to write another utility method&#8230;&#8221; Well, ask and ye shall receive&#8230; or something like that.</p>
<p>Here&#8217;s the <em>enum</em> I had defined in one of my classes:</p>
<pre name="code" class="java">public static enum EventType {
    COMPONENT_ADDED,
    COMPONENT_REMOVED
}</pre>
<p>It&#8217;s fairly straight forward what I was using it for &#8212; every time I fired an event of a certain type, I always make sure to set the <em>type</em> on the event, so the receiver knows what to do with it.</p>
<p>The situation I found myself in, is similar to <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/awt/event/MouseEvent.html"><em>MouseEvent</em></a>&#8217;s use of the <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/awt/event/MouseEvent.html#BUTTON1">BUTTON</a> constants in that when a new event of the specific type is created, the only valid <em>eventType</em> arguments allowed should be of ones defined in the <em>enum</em> itself.</p>
<p><strong>NOTE</strong>: <em>As I write this, it just dawned on me that this specific example is an invalid use-case, but I&#8217;m still going to finish the example because it&#8217;s really cool that you can define methods inside of enums. For those that haven&#8217;t caught my mistake yet, I&#8217;ll explain why this example is invalid at the end of the article.<br />
</em></p>
<p>In order to guarantee that the provided <em>eventType</em> is part of the defined <em>enum</em>, I sat down and started to write a simple <em>boolean contains(EventType eventType)</em> method in the parent event class&#8230; it was then that I realized &#8220;this feels wrong, this method that checks <em>contains</em> state should be defined in the enum itself &#8212; it&#8217;s the logical place one would look for such a thing&#8221;</p>
<p>After some digging online, it turns out defining methods inside <em>enums</em> is completely valid, becuase they are essentially classes. What I ended up with is the following:</p>
<pre name="code" class="java">public static enum EventType {
    COMPONENT_ADDED,
    COMPONENT_REMOVED;

    public static boolean contains(EventType eventType) {
        boolean contains = false;
        EventType[] values = EventType.values();

        for (int i = 0; i &lt; values.length &amp;&amp; !contains; i++) {
            contains = (COMPONENT_ADDED.equals(values[i]) || COMPONENT_REMOVED
                    .equals(values[i]));
        }

        return contains;
    }
}</pre>
<p>So now when I receive an <em>eventType</em> in the constructor of the parent event, I can check it with a simple:</p>
<pre name="code" class="java">if(!EventType.contains(eventType))
    throw new IllegalArgumentException();</pre>
<p>Very cool stuff.</p>
<p><strong>CLARIFICATION</strong>: <em>For those that didn&#8217;t catch my mistake with this example, you&#8217;ll notice the entire purpose for writing the contains(EventType eventType) method in the EventType enum is to verify that a given instance of EventType was defined in the enum &#8212; the answer is &#8220;of course it has been&#8221; &#8212; the only value I have to check for is null, if the value of the eventType argument is not null, it&#8217;s already guaranteed that it is a valid value from the enum, because it is an instance of the enum &#8212; so there is no need to check.</em></p>
<p><em>Even though I mad that glaring mistake with this example, I don&#8217;t want to think of another example on the fly that is more applicable, or dumb this one down to something really generic like the classic fruit-type example &#8212; instead the information provided should still be helpful if you are curious about learning about enums in Java 5 or later in more detail.</em></p>
<p><em><strong>ADDITIONAL NOTE</strong>: I&#8217;m always surprised at the number of people that don&#8217;t know about using multiple-conditions in the standard for-loop above. It&#8217;s an awesome way to short-circuit an itteration when you find what you want.<br />
</em></p>
<img src="http://www.kallasoft.com/?ak_action=api_record_view&id=1094&type=feed" alt="" /><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/kallasoft?a=sf6Gtk6RUH0:9tfu2QvPbxY:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=sf6Gtk6RUH0:9tfu2QvPbxY:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=sf6Gtk6RUH0:9tfu2QvPbxY:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/kallasoft?i=sf6Gtk6RUH0:9tfu2QvPbxY:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=sf6Gtk6RUH0:9tfu2QvPbxY:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=sf6Gtk6RUH0:9tfu2QvPbxY:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/kallasoft?i=sf6Gtk6RUH0:9tfu2QvPbxY:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=sf6Gtk6RUH0:9tfu2QvPbxY:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=sf6Gtk6RUH0:9tfu2QvPbxY:KwTdNBX3Jqk"><img src="http://feeds.feedburner.com/~ff/kallasoft?i=sf6Gtk6RUH0:9tfu2QvPbxY:KwTdNBX3Jqk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=sf6Gtk6RUH0:9tfu2QvPbxY:l6gmwiTKsz0"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=l6gmwiTKsz0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=sf6Gtk6RUH0:9tfu2QvPbxY:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/kallasoft?i=sf6Gtk6RUH0:9tfu2QvPbxY:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=sf6Gtk6RUH0:9tfu2QvPbxY:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=TzevzKxY174" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/kallasoft/~4/sf6Gtk6RUH0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.kallasoft.com/did-you-know-enums-can-define-their-own-methods/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		<feedburner:origLink>http://www.kallasoft.com/did-you-know-enums-can-define-their-own-methods/</feedburner:origLink></item>
		<item>
		<title>Windows 7 on a Lenovo Ideapad S10e Netbook</title>
		<link>http://feedproxy.google.com/~r/kallasoft/~3/xOQndxh-5yg/</link>
		<comments>http://www.kallasoft.com/windows-7-on-a-lenovo-s10e/#comments</comments>
		<pubDate>Mon, 09 Mar 2009 22:24:06 +0000</pubDate>
		<dc:creator>Ray Gomez</dc:creator>
				<category><![CDATA[Hardware]]></category>
		<category><![CDATA[OS]]></category>
		<category><![CDATA[Ideapad]]></category>
		<category><![CDATA[Lenovo]]></category>
		<category><![CDATA[Lenovo S10e]]></category>
		<category><![CDATA[Netbook]]></category>
		<category><![CDATA[Review]]></category>
		<category><![CDATA[Windows 7]]></category>

		<guid isPermaLink="false">http://www.kallasoft.com/?p=1030</guid>
		<description><![CDATA[
At the end of January I ordered a nice shiny Lenovo Ideapad S10e from Buy.com. I managed to get a decent price that didn&#8217;t hurt the pocketbook, and it was a new toy that I could endlessly experiment with. I started to install a wide variety of operating systems to check for support and to [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><img class="size-medium wp-image-1043 aligncenter" title="windows-7-lenovo-s10e-desktop" src="http://www.kallasoft.com/wp-content/uploads/2009/02/screenshot-windows7-one-475x267.png" alt="windows-7-lenovo-s10e-desktop" width="475" height="267" /></p>
<p>At the end of January I ordered a nice shiny Lenovo Ideapad S10e from Buy.com. I managed to get a decent price that didn&#8217;t hurt the pocketbook, and it was a new toy that I could endlessly experiment with. I started to install a wide variety of operating systems to check for support and to put it through the paces.</p>
<p>Now, if you&#8217;re like me, you have a profound dislike for Windows Vista (especially on laptops). Of all the operating systems I&#8217;ve chosen to install on the 10e I decided to skip Vista because it takes forever to boot and nags you like a four year old for doing just about anything.</p>
<p>My interested was piqued when the beta for Windows 7 was released. During the time period that I was deciding to purchase the Ideapad, I managed to sign up for the Windows 7 test and downloaded the iso. I basically just had it lying around until my S10e arrived. What better a machine to install a brand new Windows operating system on than a shiny new netbook. I plunged&#8230;</p>
<p>Before this was possible, I had to get an external cdrom drive. I located a combo on NewEgg that included a <a href="http://www.newegg.com/Product/Product.aspx?Item=N82E16820134549" target="_blank">2GB stick of Kingston RAM</a> and a highly portable, power adapter-less <a href="http://www.newegg.com/Product/Product.aspx?Item=N82E16827151178" target="_blank">Samsung SE-S084 DVD Burner</a>.</p>
<p>With that, the new specs are as follows:</p>
<p style="padding-left: 30px;">10.1&#8243; Screen (1024&#215;576 remember this is the &#8216;e&#8217; model)<br />
1.6Ghz Atom<br />
2 GB Ram (2 gigs is the max the atom can see)<br />
80GB Hard Drive<br />
802.11g<br />
10/100BaseT<br />
ExpressCard Slot</p>
<p>I went ahead, booted up with the Windows 7 install disk, and walked the paces.  My first impressions were good since the install took about 30 minutes (enough time to make a cup of coffee and read the latest Slashdot). Boot up speed was okay, I eyeballed  a little over a minute with my wrist watch, including the time it took to enter my password and log on.</p>
<p>Now, if you haven&#8217;t used Vista before, Windows 7 will look pretty different, and it will most definitely feel like the red headed, alien step child compared to Win2k or XP. Here is a little proof that it did actually install:</p>
<p style="text-align: center;"><img class="size-medium wp-image-1036 aligncenter" title="windows-7-lenovo-s10e-system-information" src="http://www.kallasoft.com/wp-content/uploads/2009/02/screenshot-windows7-two-475x267.png" alt="windows-7-lenovo-s10e-system-information" width="475" height="267" /></p>
<p>You might notice that the RAM registers at 2.5 GB. You might also notice that I said my machines specs are 2GB. I wasn&#8217;t lying. Unfortunately for me, the Atom chipset can only recognize and use 2GB of memory. That means that the standard (and soldered-on) 512MB is nothing more than a space hog internally disabled.</p>
<p>Gripes about the chipset aside,  I really wanted to see how this little Ideapad would stack up so I started the benchmark tools that Windows 7 came with to see how it ranked. After a couple of minutes, the score came to 2.2, the lowest score achieved among all the tests. A screenshot can be seen below.</p>
<p style="text-align: center;"><img class="size-medium wp-image-1037 aligncenter" title="windows-7-lenovo-s10e-windows-experience-performance-results" src="http://www.kallasoft.com/wp-content/uploads/2009/02/performance-results-475x267.png" alt="windows-7-lenovo-s10e-windows-experience-performance-results" width="475" height="267" /></p>
<p>Not too surprised by the score (it IS a netbook), I decided to check Windows Update to make sure there weren&#8217;t any outstanding video, sound, or otherwise performance enhancing updates. Naturally, there were three. I went ahead and updated, rebooted, and started the test over. Nothing changed, I still managed a 2.2. Oh well.</p>
<p style="text-align: center;"><img class="size-medium wp-image-1041 aligncenter" title="windows-7-lenovo-s10e-windows-experience-performance-retest" src="http://www.kallasoft.com/wp-content/uploads/2009/02/performace-after-upgrading-475x267.png" alt="windows-7-lenovo-s10e-windows-experience-performance-retest" width="475" height="267" /></p>
<p>The next  big thing I wanted to test was Power Mangement, and I have to say I was pretty impressed with the sleep/wake function (key for being able to be constantly on the run). Know that I am a Mac user half of the time (the other half an Ubuntu user), and know that Apple has spoiled me pretty bad as far as the Sleep/Wake capabilities of a laptop. Fanboy silenced, I&#8217;m impressed. The Lenovo takes a little bit longer than my Macbook to wake from sleep, but is usable in well under two seconds. The stock XP install took closer to 10 seconds to wake and &#8216;do it&#8217;s thing&#8217;.</p>
<p>Unfortunately, I did notice something a little odd after putting the Ideapad to sleep and then waking it. There seemed to be a high pitch sound that randomly starts within a couple seconds of waking up. I&#8217;ve whittled this down to a driver issue since the high pitch sound goes away when I increase or decrease the volume. I went straight to the RealTek site, grabbed the latest drivers for the sound card  (2-24-09) and installed them. This seemed to do the trick.</p>
<p>Next up was battery life. I know the true purpose for these little machines isn&#8217;t to watch a DVD, but it is is something I&#8217;ll at least want to be doing at every now and again. I wasn&#8217;t going to be using wireless during this time, so I turned it off as well as decreased the screen brightness to half of its normal output. Next, I popped in a 16:9 DVD, and here is what I saw:</p>
<p style="text-align: center;"><img class="size-medium wp-image-1053 aligncenter" title="windows-7-lenovo-s10e-dvd-playback-pans-labyrinth" src="http://www.kallasoft.com/wp-content/uploads/2009/03/watching-a-dvd-475x267.png" alt="windows-7-lenovo-s10e-dvd-playback-pans-labyrinth" width="475" height="267" /></p>
<p>Using Windows Media Player, the DVD opened up in perfect widescreen mode with no black borders. This is thanks to the native 1024&#215;576 resolution on the 10e (remember the .1&#8243; difference in screen size compared to the S10). Normally, I wouldn&#8217;t have accepted the loss in prime 24 pixel real estate, but so far I haven&#8217;t found it a problem. In this case, it actually makes it the perfect screen for viewing widescreen dvds.</p>
<p>Sadly my viewing pleasure came to an end about 10 minutes too early. The battery power had been depleted and Windows started to hibernate the netbook at 6% battery life. I&#8217;m sure there was some sort of modification I could have made to prevent it, but in all honesty 6% wouldn&#8217;t have given me much to work with anyways. I was going for minimal tweaks so beyond changing the the screen brightness and the power saving setting I don&#8217;t think a normal user would think of anything else.  In the end, the 1 hour 51 minute runtime is still a little unimpressive for the machine but it is okay. I have to give some credit to the S10e since the Samsung external DVD drive is completely USB powered.</p>
<p style="text-align: center;"><img class="size-medium wp-image-1049 aligncenter" title="windows-7-lenovo-s10e-dvd-playback-battery-life" src="http://www.kallasoft.com/wp-content/uploads/2009/03/batt-movie-475x267.png" alt="windows-7-lenovo-s10e-dvd-playback-battery-life" width="475" height="267" /></p>
<p>That being said, I didn&#8217;t want to leave the experience with a crutch so I decided to help balance it out by rerunning the battery test with another movie imported to h.264 and on an SD card. This is the more ideal situation for me, since I will mostly be watching movies mostly from SD cards instead of a cumbersome external DVD setup.</p>
<p>Under an hour and a half into the movie I checked to see the time left on the battery. To my dismay, 26 minutes were left. Looks like the external DVD drive didn&#8217;t consume that much power after all. Again, Windows decided to hibernate at 6% and I was still missing about 5 minutes of the movie. As far as Windows 7 is concerned, battery life conservation when watching DVD or DVD quality movies is poor despite enabling &#8216;Power Saving&#8217; and disabling wireless.</p>
<p>After the movie test I decided to ease up a bit and retest the &#8216;Power Saving&#8217; setting in Windows 7. I managed to get about 2.5 hours of &#8216;normal use&#8217; out of the netbook when web surfing, and writing emails. Nothing too spectacular, but on par with other netbooks running XP.</p>
<p>Since I did have the DVD Burner, I wanted to test out Windows 7&#8217;s support for burners. I downloaded the latest MythBuntu ISO, right clicked, and I had an option to burn the ISO. Very nice. I was able to burn the ISO without needing any extra software. I did run into a little problem though. Before I burned the ISO I selected the option to verify the disk when it completes. The verification pop up never completed, and left me with this on screen:</p>
<p style="text-align: center;"><img class="size-medium wp-image-1044 aligncenter" title="windows-7-lenovo-s10e-dvd-burn-stuck-verify" src="http://www.kallasoft.com/wp-content/uploads/2009/02/stuck-verify-475x267.png" alt="windows-7-lenovo-s10e-dvd-burn-stuck-verify" width="475" height="267" /></p>
<p>The disk did, however, burn successfully. Next, I installed Safari to test drive the massive Javascript improvement Apple has been touting. The install went clean, and I was presented with a fairly nice interface on the little netbook screen.</p>
<p style="text-align: center;"><img class="size-medium wp-image-1042 aligncenter" title="windows-7-lenovo-s10e-safari-2-screenshot" src="http://www.kallasoft.com/wp-content/uploads/2009/02/screenshot2-safari-475x267.png" alt="windows-7-lenovo-s10e-safari-2-screenshot" width="475" height="267" /></p>
<p>I almost preferred this to Firefox since the address bar didn&#8217;t take up as much screen real estate. It ran pretty nice making Gmail quite a bit zippier. I also ran some <a title="Sunspider Benchmark" href="http://www2.webkit.org/perf/sunspider-0.9/sunspider.html" target="_blank">Sunspider benchmarks</a> comparing IE and Safari and there wasn&#8217;t really much of a competition.  Safari won hands down with final tests running 5x faster than IE. That just solidified my stance that my prefererence is not for IE and I don&#8217;t think Windows 7 will change it.</p>
<p>After spending a couple days with Windows 7 on the S10e, I feel that it was at least on par with the performance of Windows XP, and much better than the initial Vista release I had experienced on other, more powerful laptops. I was happy with the built in features: a new and clean interface, ability to burn ISOs without extra software, complete hardware support for the netbook, and okay power savings. As it has more time to mature, I&#8217;m sure Windows 7 might be a viable contender on these new Atom-based machines.</p>
<p><strong>Windows 7 Screenshot Gallery</strong></p>
<p><strong>
<a href='http://www.kallasoft.com/windows-7-on-a-lenovo-s10e/screenshot-windows7-two/' title='windows-7-lenovo-s10e-system-information'><img width="150" height="150" src="http://www.kallasoft.com/wp-content/uploads/2009/02/screenshot-windows7-two-150x150.png" class="attachment-thumbnail" alt="" title="windows-7-lenovo-s10e-system-information" /></a>
<a href='http://www.kallasoft.com/windows-7-on-a-lenovo-s10e/performance-results/' title='windows-7-lenovo-s10e-windows-experience-performance-results'><img width="150" height="150" src="http://www.kallasoft.com/wp-content/uploads/2009/02/performance-results-150x150.png" class="attachment-thumbnail" alt="" title="windows-7-lenovo-s10e-windows-experience-performance-results" /></a>
<a href='http://www.kallasoft.com/windows-7-on-a-lenovo-s10e/built-in-image-burn/' title='built-in-image-burn'><img width="150" height="150" src="http://www.kallasoft.com/wp-content/uploads/2009/02/built-in-image-burn-150x150.png" class="attachment-thumbnail" alt="" title="built-in-image-burn" /></a>
<a href='http://www.kallasoft.com/windows-7-on-a-lenovo-s10e/doing-performance/' title='doing-performance'><img width="150" height="150" src="http://www.kallasoft.com/wp-content/uploads/2009/02/doing-performance-150x150.png" class="attachment-thumbnail" alt="" title="doing-performance" /></a>
<a href='http://www.kallasoft.com/windows-7-on-a-lenovo-s10e/performace-after-upgrading/' title='windows-7-lenovo-s10e-windows-experience-performance-retest'><img width="150" height="150" src="http://www.kallasoft.com/wp-content/uploads/2009/02/performace-after-upgrading-150x150.png" class="attachment-thumbnail" alt="" title="windows-7-lenovo-s10e-windows-experience-performance-retest" /></a>
<a href='http://www.kallasoft.com/windows-7-on-a-lenovo-s10e/screenshot2-safari/' title='windows-7-lenovo-s10e-safari-2-screenshot'><img width="150" height="150" src="http://www.kallasoft.com/wp-content/uploads/2009/02/screenshot2-safari-150x150.png" class="attachment-thumbnail" alt="" title="windows-7-lenovo-s10e-safari-2-screenshot" /></a>
<a href='http://www.kallasoft.com/windows-7-on-a-lenovo-s10e/screenshot-windows7-one/' title='windows-7-lenovo-s10e-desktop'><img width="150" height="150" src="http://www.kallasoft.com/wp-content/uploads/2009/02/screenshot-windows7-one-150x150.png" class="attachment-thumbnail" alt="" title="windows-7-lenovo-s10e-desktop" /></a>
<a href='http://www.kallasoft.com/windows-7-on-a-lenovo-s10e/stuck-verify/' title='windows-7-lenovo-s10e-dvd-burn-stuck-verify'><img width="150" height="150" src="http://www.kallasoft.com/wp-content/uploads/2009/02/stuck-verify-150x150.png" class="attachment-thumbnail" alt="" title="windows-7-lenovo-s10e-dvd-burn-stuck-verify" /></a>
<a href='http://www.kallasoft.com/windows-7-on-a-lenovo-s10e/batt-full2/' title='batt-full2'><img width="150" height="150" src="http://www.kallasoft.com/wp-content/uploads/2009/03/batt-full2-150x150.png" class="attachment-thumbnail" alt="" title="batt-full2" /></a>
<a href='http://www.kallasoft.com/windows-7-on-a-lenovo-s10e/batt-movie/' title='windows-7-lenovo-s10e-dvd-playback-battery-life'><img width="150" height="150" src="http://www.kallasoft.com/wp-content/uploads/2009/03/batt-movie-150x150.png" class="attachment-thumbnail" alt="" title="windows-7-lenovo-s10e-dvd-playback-battery-life" /></a>
<a href='http://www.kallasoft.com/windows-7-on-a-lenovo-s10e/batt-while-watching-movie/' title='batt-while-watching-movie'><img width="150" height="150" src="http://www.kallasoft.com/wp-content/uploads/2009/03/batt-while-watching-movie-150x150.png" class="attachment-thumbnail" alt="" title="batt-while-watching-movie" /></a>
<a href='http://www.kallasoft.com/windows-7-on-a-lenovo-s10e/connected-external-dvd/' title='connected-external-dvd'><img width="150" height="150" src="http://www.kallasoft.com/wp-content/uploads/2009/03/connected-external-dvd-150x150.png" class="attachment-thumbnail" alt="" title="connected-external-dvd" /></a>
<a href='http://www.kallasoft.com/windows-7-on-a-lenovo-s10e/turned-wireless-off-power/' title='turned-wireless-off-power'><img width="150" height="150" src="http://www.kallasoft.com/wp-content/uploads/2009/03/turned-wireless-off-power-150x150.png" class="attachment-thumbnail" alt="" title="turned-wireless-off-power" /></a>
<a href='http://www.kallasoft.com/windows-7-on-a-lenovo-s10e/watching-a-dvd/' title='windows-7-lenovo-s10e-dvd-playback-pans-labyrinth'><img width="150" height="150" src="http://www.kallasoft.com/wp-content/uploads/2009/03/watching-a-dvd-150x150.png" class="attachment-thumbnail" alt="" title="windows-7-lenovo-s10e-dvd-playback-pans-labyrinth" /></a>
<a href='http://www.kallasoft.com/windows-7-on-a-lenovo-s10e/explorer/' title='Sun Spider Results in Explorer'><img width="150" height="150" src="http://www.kallasoft.com/wp-content/uploads/2009/03/explorer-150x150.png" class="attachment-thumbnail" alt="" title="Sun Spider Results in Explorer" /></a>
<a href='http://www.kallasoft.com/windows-7-on-a-lenovo-s10e/safari-sunspider/' title='Sunspider Results in Safari Beta'><img width="150" height="150" src="http://www.kallasoft.com/wp-content/uploads/2009/03/safari-sunspider-150x150.png" class="attachment-thumbnail" alt="" title="Sunspider Results in Safari Beta" /></a>
<br />
</strong></p>
<img src="http://www.kallasoft.com/?ak_action=api_record_view&id=1030&type=feed" alt="" /><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/kallasoft?a=xOQndxh-5yg:reAMICR-mZI:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=xOQndxh-5yg:reAMICR-mZI:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=xOQndxh-5yg:reAMICR-mZI:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/kallasoft?i=xOQndxh-5yg:reAMICR-mZI:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=xOQndxh-5yg:reAMICR-mZI:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=xOQndxh-5yg:reAMICR-mZI:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/kallasoft?i=xOQndxh-5yg:reAMICR-mZI:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=xOQndxh-5yg:reAMICR-mZI:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=xOQndxh-5yg:reAMICR-mZI:KwTdNBX3Jqk"><img src="http://feeds.feedburner.com/~ff/kallasoft?i=xOQndxh-5yg:reAMICR-mZI:KwTdNBX3Jqk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=xOQndxh-5yg:reAMICR-mZI:l6gmwiTKsz0"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=l6gmwiTKsz0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=xOQndxh-5yg:reAMICR-mZI:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/kallasoft?i=xOQndxh-5yg:reAMICR-mZI:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=xOQndxh-5yg:reAMICR-mZI:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=TzevzKxY174" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/kallasoft/~4/xOQndxh-5yg" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.kallasoft.com/windows-7-on-a-lenovo-s10e/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		<feedburner:origLink>http://www.kallasoft.com/windows-7-on-a-lenovo-s10e/</feedburner:origLink></item>
		<item>
		<title>Explanations of Common Java Exceptions</title>
		<link>http://feedproxy.google.com/~r/kallasoft/~3/fsRrhE3zMqU/</link>
		<comments>http://www.kallasoft.com/explanations-of-common-java-exceptions/#comments</comments>
		<pubDate>Tue, 24 Feb 2009 15:50:23 +0000</pubDate>
		<dc:creator>Riyad Kalla</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[exceptions]]></category>
		<category><![CDATA[guide]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[reference]]></category>

		<guid isPermaLink="false">http://www.kallasoft.com/?p=1025</guid>
		<description><![CDATA[Huge thanks to Marc Chung for sending along this great reference. It&#8217;s a breakdown of all the JDK exceptions and textual descriptions of what they represent &#8212; so if you are designing your own API or just working on your own app and want to make sure your use of particular exceptions (e.g. IllegalArgumentException) is [...]]]></description>
			<content:encoded><![CDATA[<p>Huge thanks to <strong>Marc Chung</strong> for sending along this great reference. It&#8217;s a breakdown of all the JDK exceptions and textual descriptions of what they represent &#8212; so if you are designing your own API or just working on your own app and want to make sure your use of particular exceptions (e.g. <em>IllegalArgumentException</em>) is correct, <a href="http://rymden.nu/exceptions.html">give it a look</a>.</p>
<p>For a quick reference, here&#8217;s the breakdown of just the <strong>java.lang</strong> Exceptions:</p>
<p style="text-align: center;"><img class="size-medium wp-image-1028 aligncenter" title="java-exception-explanations" src="http://www.kallasoft.com/wp-content/uploads/2009/02/java-exception-explanations-475x484.png" alt="java-exception-explanations" width="475" height="484" /></p>
<img src="http://www.kallasoft.com/?ak_action=api_record_view&id=1025&type=feed" alt="" /><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/kallasoft?a=fsRrhE3zMqU:b_CPTLfgFV4:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=fsRrhE3zMqU:b_CPTLfgFV4:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=fsRrhE3zMqU:b_CPTLfgFV4:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/kallasoft?i=fsRrhE3zMqU:b_CPTLfgFV4:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=fsRrhE3zMqU:b_CPTLfgFV4:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=fsRrhE3zMqU:b_CPTLfgFV4:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/kallasoft?i=fsRrhE3zMqU:b_CPTLfgFV4:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=fsRrhE3zMqU:b_CPTLfgFV4:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=fsRrhE3zMqU:b_CPTLfgFV4:KwTdNBX3Jqk"><img src="http://feeds.feedburner.com/~ff/kallasoft?i=fsRrhE3zMqU:b_CPTLfgFV4:KwTdNBX3Jqk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=fsRrhE3zMqU:b_CPTLfgFV4:l6gmwiTKsz0"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=l6gmwiTKsz0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=fsRrhE3zMqU:b_CPTLfgFV4:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/kallasoft?i=fsRrhE3zMqU:b_CPTLfgFV4:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=fsRrhE3zMqU:b_CPTLfgFV4:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=TzevzKxY174" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/kallasoft/~4/fsRrhE3zMqU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.kallasoft.com/explanations-of-common-java-exceptions/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.kallasoft.com/explanations-of-common-java-exceptions/</feedburner:origLink></item>
		<item>
		<title>Global, Mac-like Menubar on GNOME with gnome2-globalmenu</title>
		<link>http://feedproxy.google.com/~r/kallasoft/~3/VT99pJPW-6M/</link>
		<comments>http://www.kallasoft.com/global-mac-like-menubar-on-gnome-with-gnome2-globalmenu/#comments</comments>
		<pubDate>Mon, 16 Feb 2009 16:05:49 +0000</pubDate>
		<dc:creator>Riyad Kalla</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Apple]]></category>
		<category><![CDATA[desktop]]></category>
		<category><![CDATA[GNOME]]></category>
		<category><![CDATA[gnome2-globalmenu]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[UI]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://www.kallasoft.com/?p=1011</guid>
		<description><![CDATA[
Caught the introduction of this story over on OS News &#8212; apparently folks have been voting on the addition of a global, application-context sensitive menubar in Gnome for a while. The design of the bar is very similar to the way the global bar in Mac works. For those that don&#8217;t know, there is a [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><img class="size-full wp-image-1017 aligncenter" title="gnome2-globalmenu-mac-terminal-example" src="http://www.kallasoft.com/wp-content/uploads/2009/02/gnome2-globalmenu-mac-terminal-example.png" alt="gnome2-globalmenu-mac-terminal-example" width="452" height="192" /></p>
<p>Caught the introduction of this story over on <a href="http://www.osnews.com/story/20978/The_State_of_the_Global_Menubar_in_GNOME">OS News</a> &#8212; apparently folks have been voting on the addition of a global, application-context sensitive menubar in Gnome for a while. The design of the bar is very similar to the way the global bar in Mac works. For those that don&#8217;t know, there is a universal menubar across the top of any Mac OS X desktop:</p>
<p style="text-align: center;"><img class="size-medium wp-image-1019 aligncenter" title="mac-osx-desktop-annotated" src="http://www.kallasoft.com/wp-content/uploads/2009/02/mac-osx-desktop-annotated-475x296.jpg" alt="mac-osx-desktop-annotated" width="475" height="296" /></p>
<p>the contents of the menubar changes depending on the application that is currently focused. This is different (and sometimes strange) for Windows users that expect to see the application&#8217;s menubar inside the application itself (File, Edit, View, etc. menus).</p>
<p>The Linux/Unix desktop environment, <a href="http://www.gnome.org/">GNOME</a>, has always behaved similarly to a Windows desktop, with the applications managing their own menubars. However, given GNOME&#8217;s drive to be a simple/intuitive desktop (and the default for the popular <a href="http://www.ubuntu.com/">Ubuntu Linux distribution</a>), there has always been a very Mac-esque feel to the advancements that GNOME has taken with UI development&#8230; almost a hybrid between what Windows would do and what Mac would do. Because of this line that GNOME tended to walk, the desire to have a Mac-esque universal menubar isn&#8217;t too far of a stretch for the imagination.</p>

<p>Having this battle fought back <a href="http://bugzilla.gnome.org/show_bug.cgi?id=353076">in 2006 on Bugzilla</a> resulting in some buggy and initial attempts at a global menubar, the effort never really got the steam it needed to be a viable solution for folks (or make it into GNOME proper). Fast-forward to today, and enter the very intuitive and flexible solution: <a href="http://code.google.com/p/gnome2-globalmenu/">gnome2-globalmenu project<br />
</a></p>
<p style="text-align: center;"><img class="size-full wp-image-1012 aligncenter" title="gnome2-globalmenu-mac-about-dialog" src="http://www.kallasoft.com/wp-content/uploads/2009/02/gnome2-globalmenu-mac-about-dialog.png" alt="gnome2-globalmenu-mac-about-dialog" width="427" height="227" /></p>
<p>As you can see from the screenshot above, globalmenu is a GNOME applet, requiring no hacked GTK builds or special GNOME builds &#8212; simply follow the dead-easy <a href="http://code.google.com/p/gnome2-globalmenu/wiki/InstallingonUbuntu">Ubuntu install instructions</a> (or <a href="http://code.google.com/p/gnome2-globalmenu/wiki/Installation">generic install instructions</a>). For the Ubuntu folks, you&#8217;ll want to register the following repository depending on the Ubuntu version you are on:</p>
<ul>
<li><a href="https://wiki.ubuntu.com/JauntyReleaseSchedule">Ubuntu 9.04</a> &#8211; Jaunty Jackalope:
<ul>
<li>deb <strong>http://ppa.launchpad.net/globalmenu-team/ppa/ubuntu</strong> jaunty main</li>
<li>deb-src http://ppa.launchpad.net/globalmenu-team/ppa/ubuntu jaunty main</li>
</ul>
</li>
<li><a href="http://releases.ubuntu.com/intrepid/">Ubuntu 8.10</a> &#8211; Intrepid Ibex:
<ul>
<li>deb <strong>http://ppa.launchpad.net/globalmenu-team/ppa/ubuntu intrepid</strong> main</li>
<li>deb-src http://ppa.launchpad.net/globalmenu-team/ppa/ubuntu intrepid main</li>
</ul>
</li>
<li><a href="http://releases.ubuntu.com/hardy/">Ubuntu 8.04</a> &#8211; Hardy Heron (LTS):
<ul>
<li>deb <strong>http://ppa.launchpad.net/globalmenu-team/ppa/ubuntu hardy</strong> main</li>
<li>deb-src http://ppa.launchpad.net/globalmenu-team/ppa/ubuntu hardy main</li>
</ul>
</li>
</ul>
<p><strong>NOTE</strong>: <em>When registering the repository, be sure to check the <strong>Add Source</strong> box as well, that will automatically add the deb-src entries above to your sources list.</em></p>
<p>Next, on the <strong>Authentication Tab</strong>, you can import the <a href="http://gnome2-globalmenu.googlecode.com/files/GlobalMenuKey.gpg">gnome2-globalmenu GPG repository key</a> to authenticate the software against, and then hit <strong>Reload</strong> and you are all set. When you are done the applet installed and listed in the GNOME <em>Add to Panel</em> dialog:</p>
<p style="text-align: center;"><img class="size-medium wp-image-1013 aligncenter" title="gnome2-globalmenu-mac-add-to-panel" src="http://www.kallasoft.com/wp-content/uploads/2009/02/gnome2-globalmenu-mac-add-to-panel-475x430.png" alt="gnome2-globalmenu-mac-add-to-panel" width="475" height="430" /></p>
<p>and away you go!</p>
<p>Configuring globalmenu is straight forward, with some basic preferences you can choose:</p>
<p style="text-align: center;"><img class="size-full wp-image-1014 aligncenter" title="gnome2-globalmenu-mac-applet-preferences" src="http://www.kallasoft.com/wp-content/uploads/2009/02/gnome2-globalmenu-mac-applet-preferences.png" alt="gnome2-globalmenu-mac-applet-preferences" width="365" height="283" /></p>
<p>and usage is automatic&#8230; when you fire up an application, it&#8217;s menu-bar does not exist in the application&#8217;s window, but is instead promoted to the top of the screen to the global menubar:</p>
<p style="text-align: center;"><img class="size-medium wp-image-1016 aligncenter" title="gnome2-globalmenu-mac-gimp-scrolling-popout-menus" src="http://www.kallasoft.com/wp-content/uploads/2009/02/gnome2-globalmenu-mac-gimp-scrolling-popout-menus-475x128.png" alt="gnome2-globalmenu-mac-gimp-scrolling-popout-menus" width="475" height="128" /></p>
<p>Right now only GTK-based applications are supported, so for applications like Firefox and OpenOffice, the menubars will still exist inside the application&#8217;s main menu, but this is an excellent start to the work.</p>
<p>Let&#8217;s hope this rolled into a future GNOME release and built on!</p>
<img src="http://www.kallasoft.com/?ak_action=api_record_view&id=1011&type=feed" alt="" /><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/kallasoft?a=VT99pJPW-6M:GgNSJUEFUKM:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=VT99pJPW-6M:GgNSJUEFUKM:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=VT99pJPW-6M:GgNSJUEFUKM:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/kallasoft?i=VT99pJPW-6M:GgNSJUEFUKM:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=VT99pJPW-6M:GgNSJUEFUKM:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=VT99pJPW-6M:GgNSJUEFUKM:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/kallasoft?i=VT99pJPW-6M:GgNSJUEFUKM:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=VT99pJPW-6M:GgNSJUEFUKM:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=VT99pJPW-6M:GgNSJUEFUKM:KwTdNBX3Jqk"><img src="http://feeds.feedburner.com/~ff/kallasoft?i=VT99pJPW-6M:GgNSJUEFUKM:KwTdNBX3Jqk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=VT99pJPW-6M:GgNSJUEFUKM:l6gmwiTKsz0"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=l6gmwiTKsz0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=VT99pJPW-6M:GgNSJUEFUKM:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/kallasoft?i=VT99pJPW-6M:GgNSJUEFUKM:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=VT99pJPW-6M:GgNSJUEFUKM:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=TzevzKxY174" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/kallasoft/~4/VT99pJPW-6M" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.kallasoft.com/global-mac-like-menubar-on-gnome-with-gnome2-globalmenu/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		<feedburner:origLink>http://www.kallasoft.com/global-mac-like-menubar-on-gnome-with-gnome2-globalmenu/</feedburner:origLink></item>
		<item>
		<title>FOG as a web-based Ghost Replacement</title>
		<link>http://feedproxy.google.com/~r/kallasoft/~3/DkWFcy5OF34/</link>
		<comments>http://www.kallasoft.com/fog-as-a-web-based-ghost-replacement/#comments</comments>
		<pubDate>Sun, 01 Feb 2009 13:20:27 +0000</pubDate>
		<dc:creator>Ray Gomez</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[OS]]></category>
		<category><![CDATA[Servers]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[drive image management]]></category>
		<category><![CDATA[FOG]]></category>
		<category><![CDATA[freeghost]]></category>
		<category><![CDATA[linux drive imaging]]></category>
		<category><![CDATA[linux Ghost]]></category>

		<guid isPermaLink="false">http://www.kallasoft.com/?p=985</guid>
		<description><![CDATA[
Lets face it, some sectors just can&#8217;t move to Linux due to legacy application support, lack of personnel support, employee training, and especially due to the jump in vastly different user interfaces. Each company has their own incredibly (insert sarcasm) unique reason for holding back. So, what is left for the network admins to do [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><img class="aligncenter size-medium wp-image-996" title="Login Screen" src="http://www.kallasoft.com/wp-content/uploads/2009/01/login-474x361.png" alt="Login Screen" width="379" height="289" /></p>
<p>Lets face it, some sectors just can&#8217;t move to Linux due to legacy application support, lack of personnel support, employee training, and especially due to the jump in vastly different user interfaces. Each company has their own incredibly (insert sarcasm) unique reason for holding back. So, what is left for the network admins to do other than to support the Windows base? What if there were more than 10, 50, or even 100 computer involved and your admin staff is less than 5?</p>
<p>As some of you might know, I use to manage a network of computers for a small office supply way back in the day. The one thing that I wanted most was to have a standard image to distribute to all the machines at any given time. Being the sole administrator working part time, remotely, and basically with no budget my options were severely limited. I longed for a solution that gave me the power to use 1 machine to create a custom image that could easily distribute security updates, software configurations, printer setups, and network shares. Those days are long gone, but a solution to this common problem has cropped up. Enter <a title="FOG" href="http://www.fogproject.org/" target="_blank">FOG</a>, &#8220;a free computer cloning solution.&#8221;</p>
<p>FOG was created as a solution to a non web-based, expensive re-imaging product that often required the use of driver disks. FOG incorporates the use of TFTP and PXE to do its remote imaging, and a webserver to do the administration.</p>
<p>The install is pretty easy, and the wiki has step-by-step instructions for <a title="FOG on Ubuntu" href="http://www.fogproject.org/wiki/index.php?title=FOGUserGuide#Ubuntu" target="_blank">Ubuntu</a> and for <a title="FOG on Fedora" href="http://www.fogproject.org/wiki/index.php?title=FOGUserGuide#Fedora" target="_blank">Fedora</a>. Since the wiki has some great information on setting up FOG, I&#8217;ll refrain from duplicating documentation. Check out the <a title="User Guide Wiki" href="http://www.fogproject.org/wiki/index.php?title=FOGUserGuide" target="_blank">User Guide wiki here</a>.</p>
<p>Once you startup the install script you&#8217;ll be prompted for a Server type, your server address, your DHCP router address, and if you want to use your server install as a DHCP server. I went with the defaults giving the ip address of my server, using my router as the dhcp server, and not enabling FOG as the default DHCP server. Once the install gets going you should see a similar window:</p>
<p style="text-align: center;"><img class="aligncenter size-medium wp-image-993" title="Configuring the server with the install script" src="http://www.kallasoft.com/wp-content/uploads/2009/01/configuring2-475x213.png" alt="Configuring the server with the install script" width="380" height="170" /></p>
<p>After that is done, you&#8217;ll be able to login to your freshly installed imaging server. There are a couple of things to note here. Since you need to be able to network boot your boxes, your DHCP server has to know the alternate location to send the netboot clients to. This is briefly described <a title="Modifying Existing DHCP server to work with FOG" href="http://www.fogproject.org/wiki/index.php?title=FOGUserGuide#Modifying_existing_DHCP_server_to_work_with_FOG" target="_blank">here</a>. Also note, if you had a MySQL server installed before you added FOG you&#8217;ll need to modify the /var/www/fog/commons/config.php file to reflect the MySQL root password.</p>
<p>If you direct yourself over to <a href="http://localhost/fog/management">http://localhost/fog/management</a>. You can then use username: fog and password: password to get to the status/home page:</p>
<p style="text-align: center;"><img class="aligncenter size-medium wp-image-990" title="Status page after loggin in the first time." src="http://www.kallasoft.com/wp-content/uploads/2009/01/after-login-474x397.png" alt="Status page after loggin in the first time." width="379" height="318" /></p>
<p style="text-align: left;">I would suggest adding a new user to do the management work. You can get to the user management page by clicking on the icon next to the &#8216;home&#8217; icon in the toolbar (second from the left), click New User in the left hand menu, entering a username and password  and then clicking Create User.  Next, you&#8217;ll want to add some hosts. Click on the icon that has a single monitor (third from the left), click Add New Host, and then enter the hostname and hardware address of the Windows machine you wish to image. If you don&#8217;t know the hardware address of the host you want to add, and are on the same network you can look it up using the arp table.</p>
<p style="text-align: left;">First, ping the host (using your hosts ip in place of the 192.168.0.101) to make sure it is alive. Then check the arp table:</p>
<pre class="console">~$ ping -c 1 192.168.0.101
~$ arp -a</pre>
<p>After adding a host successfully you should see something similar to this:<br />
<img class="aligncenter size-medium wp-image-994" title="Host Added Successfully window" src="http://www.kallasoft.com/wp-content/uploads/2009/01/host_added-474x397.png" alt="Host Added Successfully window" width="474" height="397" /></p>
<p>Since I didn&#8217;t have much space on my image server to begin with, I modified the default storage node to point to a samba mounted filesystem on my fileserver. This is where you&#8217;ll store all of your backup images. Since this can get big pretty fast, you&#8217;ll want have lots of dedicated storage. You can modify the aforementioned settings by clicking on the Storage Management icon (the sixth icon from the left).</p>
<p><img class="aligncenter size-medium wp-image-999" title="Storage management page" src="http://www.kallasoft.com/wp-content/uploads/2009/01/storage_management-475x389.png" alt="Storage management page" width="475" height="389" /></p>
<p>Now we need to add an image. You can do this by clicking on the icon labeled Image Management (the fifth icon from the left). Click New Image, enter in a name, select a Storage Group, an image filename, and then select the type of image to be stored (Single Partition, Multiple Partition, Multiple Partition all Disks, or RAW). As far as the server management goes, you are done. Before uploading drive images to the FOG server, though, you will need to install the client package on the machine you wish to image. that software can be obtained by going to http://[fog server]/fog/client.</p>
<p style="text-align: left;">Overall, I found the interface fairly intuitive. I would have given it a very intuitive rating had the advanced host tasks been easier to find. I mean, this is one of the really cool features of FOG and the amount of tools that it packs is enough to blow your socks off. If you click on the Tasks Management Icon ( the Star ) on the main site, click on List All Hosts, and then click on the little Advanced icon you get a chance to see what I&#8217;m talking about. There are a slew of great utilities to run on the host:</p>
<ul>
<li>Debug features for Uploading and Deploying images</li>
<li>Memtest86+</li>
<li> Wake-On-Lan</li>
<li>Fast Wipe (destroys MBR)</li>
<li>Normal Wipe (one pass zeroing out data)</li>
<li>Full Wipe (writes random data over a couple full passes)</li>
<li>a Disk Surface Test</li>
<li>Test Disk</li>
<li>Recover (using PhotoRec)</li>
<li>Antivirus (using ClamAV)</li>
<li>and a Hardware Inventory Utility</li>
</ul>
<p style="text-align: center;"><img class="aligncenter size-medium wp-image-1001" title="Management tasks available for each host." src="http://www.kallasoft.com/wp-content/uploads/2009/01/host-tasks-475x388.png" alt="Management tasks available for each host." width="380" height="310" /></p>
<p style="text-align: left;">If you are looking into how to maintain a small to large amount of computers in a SMB or campus setting, you really should consider checking out FOG. Leveraging the best of Open Source you&#8217;ll be able to easily deploy standard images to loads of computers in a minimal amount of time. You can even manage computers using your <a title="Mobile management Interface" href="http://www.fogproject.org/wiki/index.php?title=FOGUserGuide&amp;Itemid=51#Mobile_Management_Interface" target="_blank">iPod or iPhone</a>!</p>
<p style="text-align: left;">
<p style="text-align: center;"><img class="aligncenter size-full wp-image-1002" title="iPod Screenshot taken from Fogs Documentation site" src="http://www.kallasoft.com/wp-content/uploads/2009/01/ipod_results.jpg" alt="iPod Screenshot taken from Fogs Documentation site" width="256" height="384" /></p>
<p style="text-align: left;">Check it out, and let us know what you think!</p>
<img src="http://www.kallasoft.com/?ak_action=api_record_view&id=985&type=feed" alt="" /><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/kallasoft?a=DkWFcy5OF34:PP2APUf_TKc:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=DkWFcy5OF34:PP2APUf_TKc:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=DkWFcy5OF34:PP2APUf_TKc:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/kallasoft?i=DkWFcy5OF34:PP2APUf_TKc:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=DkWFcy5OF34:PP2APUf_TKc:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=DkWFcy5OF34:PP2APUf_TKc:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/kallasoft?i=DkWFcy5OF34:PP2APUf_TKc:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=DkWFcy5OF34:PP2APUf_TKc:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=DkWFcy5OF34:PP2APUf_TKc:KwTdNBX3Jqk"><img src="http://feeds.feedburner.com/~ff/kallasoft?i=DkWFcy5OF34:PP2APUf_TKc:KwTdNBX3Jqk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=DkWFcy5OF34:PP2APUf_TKc:l6gmwiTKsz0"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=l6gmwiTKsz0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=DkWFcy5OF34:PP2APUf_TKc:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/kallasoft?i=DkWFcy5OF34:PP2APUf_TKc:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=DkWFcy5OF34:PP2APUf_TKc:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=TzevzKxY174" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/kallasoft/~4/DkWFcy5OF34" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.kallasoft.com/fog-as-a-web-based-ghost-replacement/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		<feedburner:origLink>http://www.kallasoft.com/fog-as-a-web-based-ghost-replacement/</feedburner:origLink></item>
		<item>
		<title>Using Fail2Ban to prevent Brute Force Attacks</title>
		<link>http://feedproxy.google.com/~r/kallasoft/~3/-3RpuO1Kg0U/</link>
		<comments>http://www.kallasoft.com/using-fail2ban-to-prevent-brute-force-attacks/#comments</comments>
		<pubDate>Sat, 31 Jan 2009 15:39:09 +0000</pubDate>
		<dc:creator>Ray Gomez</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Servers]]></category>
		<category><![CDATA[brute force]]></category>
		<category><![CDATA[fail2ban]]></category>
		<category><![CDATA[SSH]]></category>
		<category><![CDATA[ubuntu fail2ban setup]]></category>

		<guid isPermaLink="false">http://www.kallasoft.com/?p=908</guid>
		<description><![CDATA[ Has your SOHO server been seeing a lot of failed ssh attempts from ipaddresses unknown to you? If so, you might be suffering from a brute force attack. These types of attack attempt to break into your box by trying to guess usernames and passwords. They are typically run on zombified computers from all [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: left;"><img class="aligncenter size-full 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="lock screen" width="128" height="128" /> Has your SOHO server been seeing a lot of failed ssh attempts from ipaddresses unknown to you? If so, you might be suffering from a brute force attack. These types of attack attempt to break into your box by trying to guess usernames and passwords. They are typically run on zombified computers from all over the world. What can you do about it you ask? Well, fortunately there are programs out there that read failed authentication attempts and modify your firewall to ignore requests from those locations. One such nifty application is called Fail2Ban. I&#8217;m going to give you a quick run through on how to setup Fail2Ban to protect against brute force attacks on your Ubuntu ssh server.</p>
<p style="text-align: left;">To install, you can grab the <a title="Fail2Ban Sourceforge Site" href="http://sourceforge.net/project/showfiles.php?group_id=121032" target="_blank">source code</a>, or use apt:</p>
<pre class="console" style="text-align: left;">~$ sudo apt-get install fail2ban</pre>
<p style="text-align: left;">Next we need to modify the config files to suit our needs a little better. Go into your /etc/fail2ban folder and make a copy of the jail.conf. Name it jail.local:</p>
<pre class="console" style="text-align: left;">~$ cd /etc/fail2ban
~$ sudo cp jail.conf jail.local</pre>
<p style="text-align: left;">There are a couple of things I want to change from the default settings.  The first would be increasing the bantime from 10 minutes to an hour. Then I want to change the max number of tries to 3.  This will go for all services that are currently protected by fail2ban. So, lets go ahead and edit the [Default] section of the jail.local that we just copied to look like this:</p>
<pre class="console" style="text-align: left;">[DEFAULT]
# "ignoreip" can be an IP address, a CIDR mask or a DNS host
ignoreip = 127.0.0.1
bantime  = 3600
maxretry = 3</pre>
<p>Now lets give it a go! Save the file, and lets restart the fail2ban process.</p>
<pre class="console">~$ sudo /etc/init.d/fail2ban restart</pre>
<p style="text-align: left;">For the sake of the article I&#8217;ve tested the setup, and you can see what I&#8217;ve found. In the top screenshot below I tried logging into my local ssh server, and in the bottom screenshot you&#8217;ll see the fail2ban.log and auth.log&#8217;s tailed output from the SSH server.</p>
<p style="text-align: center;"><img class="size-medium wp-image-977 aligncenter" title="Bad ssh client!" src="http://www.kallasoft.com/wp-content/uploads/2009/01/zombie1-475x296.png" alt="Bad ssh client!" width="285" height="178" /> <img class="size-medium wp-image-978 aligncenter" title="fail2ban.log and auth.log on ssh server" src="http://www.kallasoft.com/wp-content/uploads/2009/01/screenshot2-475x373.png" alt="fail2ban.log and auth.log on ssh server" width="285" height="224" /></p>
<p style="text-align: left;">
<p style="text-align: left;">Normally, I don&#8217;t think a box on my network is going to fail authentication a bunch of times, or, rather, I don&#8217;t want to ban any boxes on my network.  What do we do? If you go back into the /etc/fail2ban/jail.conf file, you should notice the ignoreip option. You can modify this file again to ignore all bans for a 192.168.0.x IP by setting this option:</p>
<pre class="console" style="text-align: left;">[DEFAULT]
# "ignoreip" can be an IP address, a CIDR mask or a DNS host
ignoreip = 127.0.0.1 192.168.0.0/24
bantime  = 3600
maxretry = 3</pre>
<p style="text-align: left;">Save the file, and restart the fail2ban process again, and you are in business. This should keep script kiddies and brute force attacks away. Happy Hacking!</p>
<img src="http://www.kallasoft.com/?ak_action=api_record_view&id=908&type=feed" alt="" /><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/kallasoft?a=-3RpuO1Kg0U:grIFwv4W16A:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=-3RpuO1Kg0U:grIFwv4W16A:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=-3RpuO1Kg0U:grIFwv4W16A:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/kallasoft?i=-3RpuO1Kg0U:grIFwv4W16A:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=-3RpuO1Kg0U:grIFwv4W16A:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=-3RpuO1Kg0U:grIFwv4W16A:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/kallasoft?i=-3RpuO1Kg0U:grIFwv4W16A:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=-3RpuO1Kg0U:grIFwv4W16A:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=-3RpuO1Kg0U:grIFwv4W16A:KwTdNBX3Jqk"><img src="http://feeds.feedburner.com/~ff/kallasoft?i=-3RpuO1Kg0U:grIFwv4W16A:KwTdNBX3Jqk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=-3RpuO1Kg0U:grIFwv4W16A:l6gmwiTKsz0"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=l6gmwiTKsz0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=-3RpuO1Kg0U:grIFwv4W16A:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/kallasoft?i=-3RpuO1Kg0U:grIFwv4W16A:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=-3RpuO1Kg0U:grIFwv4W16A:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=TzevzKxY174" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/kallasoft/~4/-3RpuO1Kg0U" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.kallasoft.com/using-fail2ban-to-prevent-brute-force-attacks/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://www.kallasoft.com/using-fail2ban-to-prevent-brute-force-attacks/</feedburner:origLink></item>
		<item>
		<title>Mephisto Backup</title>
		<link>http://feedproxy.google.com/~r/kallasoft/~3/6vGBSC3c4Qw/</link>
		<comments>http://www.kallasoft.com/mephisto-backup/#comments</comments>
		<pubDate>Fri, 30 Jan 2009 14:37:49 +0000</pubDate>
		<dc:creator>Ray Gomez</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[Imager]]></category>
		<category><![CDATA[Mephisto Backup]]></category>
		<category><![CDATA[remote backup]]></category>

		<guid isPermaLink="false">http://www.kallasoft.com/?p=972</guid>
		<description><![CDATA[
I&#8217;ve recently ran across a unique little backup utility called Mephisto. The program is a command line tool written in Java that incorporates rsync and tar to do filesystem backups to a remote filesystem or local image. Of course utilities like this are great for doing system duplication, and especially great when you roll your [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><img class="aligncenter size-medium wp-image-973" title="Mephisto Screenshot" src="http://www.kallasoft.com/wp-content/uploads/2009/01/mephisto-475x383.jpg" alt="Mephisto Screenshot" width="370" height="299" /></p>
<p style="text-align: left;">I&#8217;ve recently ran across a unique little backup utility called <a title="Mephisto's SourceForge site" href="http://sourceforge.net/projects/mephistobackup/">Mephisto</a>. The program is a command line tool written in Java that incorporates rsync and tar to do filesystem backups to a remote filesystem or local image. Of course utilities like this are great for doing system duplication, and especially great when you roll your own LiveDVDs for disaster recovery or general backups. To backup to a remote server you&#8217;ll first need to copy over your ssh id (the utility has a little information on that when you go to create a configuration file), and then create a configuration file with the specs for your remote fileserver. I had a chance to test the remote sync feature from my laptop to a ssh server, and while the utility is a little rough around the edges it does function well. One thing that drove me a little nuts was the lack of a status bar during file transfer. While the utility does have a little room to grow, I think this is a pretty good starting point and definitely a great piece of Java code to disect.</p>
<p style="text-align: left;">
<p style="text-align: center;"><img class="aligncenter size-medium wp-image-974" title="Network Backup Screen" src="http://www.kallasoft.com/wp-content/uploads/2009/01/network-backup-475x295.png" alt="Network Backup Screen" width="380" height="236" /></p>
<p style="text-align: left;">You can grab a copy from the <a title="Mephisto Backup Blog" href="http://sourceforge.net/projects/mephistobackup/">blog site</a> in two flavors: one including a JRE or one with just the base program. Check it out, and let us know what you think!</p>
<img src="http://www.kallasoft.com/?ak_action=api_record_view&id=972&type=feed" alt="" /><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/kallasoft?a=6vGBSC3c4Qw:R2q3MlG4zVM:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=6vGBSC3c4Qw:R2q3MlG4zVM:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=6vGBSC3c4Qw:R2q3MlG4zVM:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/kallasoft?i=6vGBSC3c4Qw:R2q3MlG4zVM:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=6vGBSC3c4Qw:R2q3MlG4zVM:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=6vGBSC3c4Qw:R2q3MlG4zVM:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/kallasoft?i=6vGBSC3c4Qw:R2q3MlG4zVM:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=6vGBSC3c4Qw:R2q3MlG4zVM:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=6vGBSC3c4Qw:R2q3MlG4zVM:KwTdNBX3Jqk"><img src="http://feeds.feedburner.com/~ff/kallasoft?i=6vGBSC3c4Qw:R2q3MlG4zVM:KwTdNBX3Jqk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=6vGBSC3c4Qw:R2q3MlG4zVM:l6gmwiTKsz0"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=l6gmwiTKsz0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=6vGBSC3c4Qw:R2q3MlG4zVM:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/kallasoft?i=6vGBSC3c4Qw:R2q3MlG4zVM:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=6vGBSC3c4Qw:R2q3MlG4zVM:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=TzevzKxY174" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/kallasoft/~4/6vGBSC3c4Qw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.kallasoft.com/mephisto-backup/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://www.kallasoft.com/mephisto-backup/</feedburner:origLink></item>
		<item>
		<title>VitualBox 2.1.2 Released</title>
		<link>http://feedproxy.google.com/~r/kallasoft/~3/jf8uDGjpKRw/</link>
		<comments>http://www.kallasoft.com/vitualbox-212-released/#comments</comments>
		<pubDate>Tue, 27 Jan 2009 13:32:57 +0000</pubDate>
		<dc:creator>Ray Gomez</dc:creator>
				<category><![CDATA[OS]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[Sun]]></category>
		<category><![CDATA[VirtualBox]]></category>
		<category><![CDATA[Virtualization]]></category>
		<category><![CDATA[VM]]></category>

		<guid isPermaLink="false">http://www.kallasoft.com/?p=940</guid>
		<description><![CDATA[You might have noticed that VirtualBox 2.1.2 has been released into the wild. While there is a laundry list of changes, a few performance and stability enhancements for Mac OS X were on the top of want my list.
While Parallels and VMWare offer commercial solutions, Sun backed VirtualBox offers many similar features for free. As [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone size-thumbnail wp-image-941" style="float: left; margin-left: 8px; margin-right: 8px;" title="virtual-box-logo" src="http://www.kallasoft.com/wp-content/uploads/2009/01/requestzgitrdun8705-bynagaya-150x150.png" alt="virtual-box-logo" width="150" height="150" />You might have noticed that <a title="Virtual Box website" href="http://www.virtualbox.org/" target="_blank">VirtualBox 2.1.2</a> has been released into the wild. While there is a <a title="Virtualbox Changelog" href="http://www.virtualbox.org/wiki/Changelog">laundry list of changes</a>, a few performance and stability enhancements for Mac OS X were on the top of want my list.</p>
<p>While Parallels and VMWare offer commercial solutions, Sun backed VirtualBox offers many similar features for free. As mentioned before, however, stability issues have kept me from using it on my Macbook. After having some time to play with this new .1.2 update, I&#8217;ve found that most of my previous issues have been resolved. I haven&#8217;t experienced random crashes, and I was successfully able to boot OpenSolaris 8.11, Ubuntu Intrepid Ibex, SymphonyOne, and PC-BSD with no hiccups. I even managed to get through almost all of the ESXi bootup disk (a task that would fail within seconds before)!</p>
<p style="text-align: center;"><img class="size-medium wp-image-949 aligncenter" title="Macbook Ubuntu CPU" src="http://www.kallasoft.com/wp-content/uploads/2009/01/macbook-ubuntu-475x190.png" alt="Macbook Ubuntu CPU" width="475" height="190" /></p>
<p>I have been very happy with VMPlayer on my Linux boxes, but felt the lack of a viable free solution for Mac OS X. After a couple of hours, I think I can safely say that Sun contributed greatly to this very impressive, and free, application. I also wasn&#8217;t too disappointed in speed considering my Macbook didn&#8217;t grind to a halt when starting up Majong. So, if you need a quick virtualization setup that has all the tools to get a guest system installed in one go, then you might want to try VirtualBox.</p>
<p>Check out the <a href="http://www.virtualbox.org/wiki/Downloads">latest release</a>, and let us know what you think! Here are some of the screen shots from my experience:</p>

<a href='http://www.kallasoft.com/vitualbox-212-released/requestzgitrdun8705-bynagaya/' title='virtual-box-logo'><img width="150" height="150" src="http://www.kallasoft.com/wp-content/uploads/2009/01/requestzgitrdun8705-bynagaya-150x150.png" class="attachment-thumbnail" alt="" title="virtual-box-logo" /></a>
<a href='http://www.kallasoft.com/vitualbox-212-released/initialize-mem/' title='ESXi Almost There'><img width="150" height="150" src="http://www.kallasoft.com/wp-content/uploads/2009/01/initialize-mem-150x150.png" class="attachment-thumbnail" alt="" title="ESXi Almost There" /></a>
<a href='http://www.kallasoft.com/vitualbox-212-released/macbook-ubuntu/' title='Macbook Ubuntu CPU'><img width="150" height="150" src="http://www.kallasoft.com/wp-content/uploads/2009/01/macbook-ubuntu-150x150.png" class="attachment-thumbnail" alt="" title="Macbook Ubuntu CPU" /></a>
<a href='http://www.kallasoft.com/vitualbox-212-released/opensolaris/' title='OpenSolaris Screenshot'><img width="150" height="150" src="http://www.kallasoft.com/wp-content/uploads/2009/01/opensolaris-150x150.png" class="attachment-thumbnail" alt="" title="OpenSolaris Screenshot" /></a>
<a href='http://www.kallasoft.com/vitualbox-212-released/virtualbox-ubuntu/' title='virtualbox-ubuntu'><img width="150" height="150" src="http://www.kallasoft.com/wp-content/uploads/2009/01/virtualbox-ubuntu-150x150.png" class="attachment-thumbnail" alt="" title="virtualbox-ubuntu" /></a>
<a href='http://www.kallasoft.com/vitualbox-212-released/symphonyone/' title='Symphony One Screenshot'><img width="150" height="150" src="http://www.kallasoft.com/wp-content/uploads/2009/01/symphonyone-150x150.png" class="attachment-thumbnail" alt="" title="Symphony One Screenshot" /></a>
<a href='http://www.kallasoft.com/vitualbox-212-released/virtualbox-ubuntu-mac/' title='Ubuntu Intrepid Ibex on VirtualBox'><img width="150" height="150" src="http://www.kallasoft.com/wp-content/uploads/2009/01/virtualbox-ubuntu-mac-150x150.png" class="attachment-thumbnail" alt="" title="Ubuntu Intrepid Ibex on VirtualBox" /></a>

<img src="http://www.kallasoft.com/?ak_action=api_record_view&id=940&type=feed" alt="" /><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/kallasoft?a=jf8uDGjpKRw:eMDfoLw3rm4:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=jf8uDGjpKRw:eMDfoLw3rm4:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=jf8uDGjpKRw:eMDfoLw3rm4:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/kallasoft?i=jf8uDGjpKRw:eMDfoLw3rm4:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=jf8uDGjpKRw:eMDfoLw3rm4:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=jf8uDGjpKRw:eMDfoLw3rm4:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/kallasoft?i=jf8uDGjpKRw:eMDfoLw3rm4:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=jf8uDGjpKRw:eMDfoLw3rm4:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=jf8uDGjpKRw:eMDfoLw3rm4:KwTdNBX3Jqk"><img src="http://feeds.feedburner.com/~ff/kallasoft?i=jf8uDGjpKRw:eMDfoLw3rm4:KwTdNBX3Jqk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=jf8uDGjpKRw:eMDfoLw3rm4:l6gmwiTKsz0"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=l6gmwiTKsz0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=jf8uDGjpKRw:eMDfoLw3rm4:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/kallasoft?i=jf8uDGjpKRw:eMDfoLw3rm4:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=jf8uDGjpKRw:eMDfoLw3rm4:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=TzevzKxY174" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/kallasoft/~4/jf8uDGjpKRw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.kallasoft.com/vitualbox-212-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.kallasoft.com/vitualbox-212-released/</feedburner:origLink></item>
		<item>
		<title>Beginners Guide to Quick File Listing Using Ruby</title>
		<link>http://feedproxy.google.com/~r/kallasoft/~3/hOA1QAIPo_Y/</link>
		<comments>http://www.kallasoft.com/beginners-guide-to-quick-file-listing-using-ruby/#comments</comments>
		<pubDate>Sun, 25 Jan 2009 17:10:48 +0000</pubDate>
		<dc:creator>Ray Gomez</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Bash]]></category>
		<category><![CDATA[directory listing]]></category>
		<category><![CDATA[introduction]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://www.kallasoft.com/?p=930</guid>
		<description><![CDATA[ As a beginner to the Ruby language, I often found myself needing feedback listing which files are in a given directory. Ruby, for that reason alone, has been a quick savior. A couple of Google searches on this topic will land you somewhere near the Ruby class Dir. Dir is a part of the [...]]]></description>
			<content:encoded><![CDATA[<p><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" /> As a beginner to the Ruby language, I often found myself needing feedback listing which files are in a given directory. Ruby, for that reason alone, has been a quick savior. A couple of Google searches on this topic will land you somewhere near the Ruby class Dir. Dir is a part of the standard Ruby distribution, and offers many unique ways of dealing with directories, and the files they hold. You can find out more on the <a href="http://www.ruby-doc.org/core/classes/Dir.html">specifics here</a>. </p>
<p>So, my very basic problem was this: I want to search the current directory, and list all the files and folders in the current directory recursively. If you are familiar with bash shell scripting, you&#8217;ll know that this task is pretty basic and can be completed with the following:</p>
<pre class="console">
#!/bin/bash
for i in $(ls -R ./)
do
  echo "$i"
done
</pre>
<p>So, why Ruby then? Well, bash doesn&#8217;t have all the wonderful pieces of Object Oriented goodness that Ruby does, and most specifically I couldn&#8217;t easily tell Bash to spit everything out in an XML file. Besides, this was good practice preparing me for doing production level scripting. To get started, you will need Ruby, so if you are on Ubuntu your life is pretty easy. Just run this command in a terminal:</p>
<pre class="console">
~$ sudo apt-get install ruby
</pre>
<p>Now, create a file called listing.rb and put the following in:</p>
<pre name="code" class="ruby">
Dir.chdir("./")
for i in Dir['**/**']
 puts i
end
</pre>
<p>You can run this script by doing the following:</p>
<pre class="console">
~$ ruby listing.rb
</pre>
<p>This should work exactly as the bash script above did. So whats so great? Lets go on adding a method call that accepts a directory, and allow a user to input the directory they wish to list. Modify your listing.rb file to look like this:</p>
<pre name="code" class="ruby">
 def search(dir)
   Dir.chdir(dir)
   for i in Dir['**/**']
     puts i
   end
 end
#Start of the script
dir = ARGV.shift
search(dir)
</pre>

<p>If you are unfamiliar with how Ruby handles command line input, the ARGV variable is an array that stores all the arguments a user can specify. Since this is a <a href="http://www.ruby-doc.org/core/classes/Array.html">Ruby array</a>, the <a href="http://www.ruby-doc.org/core/classes/Array.html#M002193">shift</a> method will cause the first argument to be popped off and stored in the variable dir.  Moving along, let&#8217;s see the output this produces. Remember now that this script requires an input directory to be given. To run it you can enter the following:</p>
<pre class="console">
~$ ruby listing.rb ./
</pre>
<p>You should see, again, output that shows at least your listing.rb file, and one entry for every other file in the current directory. In both forms of the script I used the Dir[**/**]. The **/** says to match all files and all folders, so if a directory exists in the folder I specified the script will proceed to list the files and folders in that directory. To get an idea of what I mean, try running this command:</p>
<pre class="console">
~$ ruby listing.rb /etc
</pre>
<p>Now that we can list a ton the files, how should we store them? That is a bit more of an intermediate topic for another day. For now we can muck around with the Dir class to limit our output. Try changing the **/** to something else, or using <a href="http://www.ruby-doc.org/core/classes/Dir.html#M002348">wildcards to match something specific</a> in your folder. Try it out, and let us know what you think!</p>
<img src="http://www.kallasoft.com/?ak_action=api_record_view&id=930&type=feed" alt="" /><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/kallasoft?a=hOA1QAIPo_Y:g5p9RBJAGCI:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=hOA1QAIPo_Y:g5p9RBJAGCI:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=hOA1QAIPo_Y:g5p9RBJAGCI:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/kallasoft?i=hOA1QAIPo_Y:g5p9RBJAGCI:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=hOA1QAIPo_Y:g5p9RBJAGCI:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=hOA1QAIPo_Y:g5p9RBJAGCI:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/kallasoft?i=hOA1QAIPo_Y:g5p9RBJAGCI:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=hOA1QAIPo_Y:g5p9RBJAGCI:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=hOA1QAIPo_Y:g5p9RBJAGCI:KwTdNBX3Jqk"><img src="http://feeds.feedburner.com/~ff/kallasoft?i=hOA1QAIPo_Y:g5p9RBJAGCI:KwTdNBX3Jqk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=hOA1QAIPo_Y:g5p9RBJAGCI:l6gmwiTKsz0"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=l6gmwiTKsz0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=hOA1QAIPo_Y:g5p9RBJAGCI:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/kallasoft?i=hOA1QAIPo_Y:g5p9RBJAGCI:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=hOA1QAIPo_Y:g5p9RBJAGCI:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=TzevzKxY174" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/kallasoft/~4/hOA1QAIPo_Y" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.kallasoft.com/beginners-guide-to-quick-file-listing-using-ruby/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://www.kallasoft.com/beginners-guide-to-quick-file-listing-using-ruby/</feedburner:origLink></item>
		<item>
		<title>Zero Install Allows Installs for Unpriviledged Users</title>
		<link>http://feedproxy.google.com/~r/kallasoft/~3/mZuWdOavUOc/</link>
		<comments>http://www.kallasoft.com/zero-install-allows-installs-for-unpriviledged-users/#comments</comments>
		<pubDate>Wed, 21 Jan 2009 03:57:01 +0000</pubDate>
		<dc:creator>Ray Gomez</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[installer]]></category>
		<category><![CDATA[packaging]]></category>
		<category><![CDATA[permissions]]></category>
		<category><![CDATA[priviledges]]></category>
		<category><![CDATA[Zero Install]]></category>

		<guid isPermaLink="false">http://www.kallasoft.com/?p=922</guid>
		<description><![CDATA[ I recently ran across an interesting application that allows unprivileged users to install programs. While this maybe a good surface idea, the concept and coolness factor runs a little deeper.
The idea behind 0Install is to give the &#8217;standard user&#8217; install privileges without compromising a system if malicious software is installed. While this is cool [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-923" style="float: left; margin-left: 8px; margin-right: 8px;" title="package icon" src="http://www.kallasoft.com/wp-content/uploads/2009/01/package.png" alt="package icon" width="48" height="48" /> I recently ran across an interesting application that allows unprivileged users to install programs. While this maybe a good surface idea, the concept and coolness factor runs a little deeper.</p>
<p>The idea behind <a href="http://0install.net/" target="_blank">0Install</a> is to give the &#8217;standard user&#8217; install privileges without compromising a system if malicious software is installed. While this is cool for the user, it is even cooler for the application developer. As you might know, package maintenance can be both tedious and time consuming, but 0Install offers to ease that by giving you a useful tool to easily deploy your app on any distribution. In other words, instead of needing to be &#8220;blessed&#8221;, as the author states, &#8220;by a distribution,&#8221; all you need is a URI to give to your potential user. If the user has 0Install on their system, all they need to do is drag the URI onto the 0Install application, and install. This can be done regardless of distribution, and regardless of the package manager employed by the system.</p>
<p>Of course, the cautious may ask about system security, and rightly so. I mean, it is true we don&#8217;t want our less knowledgeable users installing applications that could potentially harm our rather big 100+ user system! Instead of taking one package and making it available to everybody on the box, 0Install protects the system by using that URI as a unique identifier.</p>
<p>In a traditional system, &#8220;if one user installs the Gimp from <strong>http://evil.com</strong> then it  might save the executable as <strong>/usr/bin/gimp</strong>. Another user might run this, thinking it was from  <a href="http://gimp.org/">http://gimp.org</a>.&#8221;</p>
<p>Different from how the traditional system works, 0Install relies on the aforementioned URI to determine which application to run. The user that installed from http://gimp.org will never run the binary from http://evil.com because of that URI protection. Of course, the caching system is also smart enough to be space efficient, and not continue to cache applications of the same URI. These features can greatly increase security and ease of deployment while <a href="http://0install.net/faq.html#id678070" target="_blank">providing better software</a> for users. The 0Install system supports Linux, FreeBSD, Solaris, and MacOSX (using MacPorts), and offers a <a href="http://0install.net/injector-packagers.html" target="_blank">tutorial</a> that goes through the explaination of how to convert an existing binary tarball into a 0install feed. Check it out, and let us know what you think!</p>
<img src="http://www.kallasoft.com/?ak_action=api_record_view&id=922&type=feed" alt="" /><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/kallasoft?a=mZuWdOavUOc:jnYl0RnmR98:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=mZuWdOavUOc:jnYl0RnmR98:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=mZuWdOavUOc:jnYl0RnmR98:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/kallasoft?i=mZuWdOavUOc:jnYl0RnmR98:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=mZuWdOavUOc:jnYl0RnmR98:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=mZuWdOavUOc:jnYl0RnmR98:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/kallasoft?i=mZuWdOavUOc:jnYl0RnmR98:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=mZuWdOavUOc:jnYl0RnmR98:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=mZuWdOavUOc:jnYl0RnmR98:KwTdNBX3Jqk"><img src="http://feeds.feedburner.com/~ff/kallasoft?i=mZuWdOavUOc:jnYl0RnmR98:KwTdNBX3Jqk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=mZuWdOavUOc:jnYl0RnmR98:l6gmwiTKsz0"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=l6gmwiTKsz0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=mZuWdOavUOc:jnYl0RnmR98:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/kallasoft?i=mZuWdOavUOc:jnYl0RnmR98:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=mZuWdOavUOc:jnYl0RnmR98:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=TzevzKxY174" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/kallasoft/~4/mZuWdOavUOc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.kallasoft.com/zero-install-allows-installs-for-unpriviledged-users/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.kallasoft.com/zero-install-allows-installs-for-unpriviledged-users/</feedburner:origLink></item>
		<item>
		<title>QT 4.5 as LGPL</title>
		<link>http://feedproxy.google.com/~r/kallasoft/~3/NlNrY_TpaQo/</link>
		<comments>http://www.kallasoft.com/qt-45-as-lgpl/#comments</comments>
		<pubDate>Tue, 20 Jan 2009 19:58:06 +0000</pubDate>
		<dc:creator>Ray Gomez</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Platform Development]]></category>
		<category><![CDATA[QT]]></category>
		<category><![CDATA[QT 4.5]]></category>
		<category><![CDATA[Trolltech]]></category>

		<guid isPermaLink="false">http://www.kallasoft.com/?p=916</guid>
		<description><![CDATA[If you haven&#8217;t heard yet, there is good news on the application development platform front. Recently Qt Software, owned by Nokia, announced that the next version of their flagship product, QT 4.5, will be distributed under the LGPL. Prior to this announcement, the platform was free for open source use, while the price of a [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-917" style="float: left; margin-left: 8px; margin-right: 8px;" title="qt-logo" src="http://www.kallasoft.com/wp-content/uploads/2009/01/logo.png" alt="qt-logo" width="59" height="70" />If you haven&#8217;t heard yet, there is good news on the application development platform front. Recently <a href="http://www.qtsoftware.com/" target="_blank">Qt Software</a>, owned by Nokia, announced that the next version of their flagship product, QT 4.5, will be distributed under the LGPL. Prior to this announcement, the platform was free for open source use, while the price of a license for developing a commercial application was in the thousands.  This means great things for not only the development platform, but also for the developers seeking to build applications running on multiple operating systems, or even embedded devices.</p>
<p>You can see QT in commercial use by major companies like Google (Google Earth Pro), Netflix (Roku player), and even Adobe (Adobe Elements). It currently supports two languages: C++ and Java, and has an <a href="http://www.qtsoftware.com/developer/eclipse-integration" target="_blank">Eclipse plugin</a> for both languages. If you want your new concept or production app to reach audiences on Windows, Linux, and Mac, you may want to consider QT as your platform. You can grab the current <a href="http://www.qtsoftware.com/developer/preview-qt-4.5#download-the-beta" target="_blank">4.5 beta here</a>. Check it out and let us know what you think!</p>
<img src="http://www.kallasoft.com/?ak_action=api_record_view&id=916&type=feed" alt="" /><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/kallasoft?a=NlNrY_TpaQo:-wXO2znp228:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=NlNrY_TpaQo:-wXO2znp228:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=NlNrY_TpaQo:-wXO2znp228:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/kallasoft?i=NlNrY_TpaQo:-wXO2znp228:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=NlNrY_TpaQo:-wXO2znp228:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=NlNrY_TpaQo:-wXO2znp228:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/kallasoft?i=NlNrY_TpaQo:-wXO2znp228:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=NlNrY_TpaQo:-wXO2znp228:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=NlNrY_TpaQo:-wXO2znp228:KwTdNBX3Jqk"><img src="http://feeds.feedburner.com/~ff/kallasoft?i=NlNrY_TpaQo:-wXO2znp228:KwTdNBX3Jqk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=NlNrY_TpaQo:-wXO2znp228:l6gmwiTKsz0"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=l6gmwiTKsz0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=NlNrY_TpaQo:-wXO2znp228:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/kallasoft?i=NlNrY_TpaQo:-wXO2znp228:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=NlNrY_TpaQo:-wXO2znp228:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=TzevzKxY174" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/kallasoft/~4/NlNrY_TpaQo" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.kallasoft.com/qt-45-as-lgpl/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.kallasoft.com/qt-45-as-lgpl/</feedburner:origLink></item>
		<item>
		<title>Ruby 1.9 Quick Speed Test</title>
		<link>http://feedproxy.google.com/~r/kallasoft/~3/aTPPZyXkWow/</link>
		<comments>http://www.kallasoft.com/ruby-19-quick-speed-test/#comments</comments>
		<pubDate>Mon, 05 Jan 2009 02:29:56 +0000</pubDate>
		<dc:creator>Ray Gomez</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Ruby 1.8]]></category>
		<category><![CDATA[Ruby 1.9]]></category>
		<category><![CDATA[upgrade]]></category>

		<guid isPermaLink="false">http://www.kallasoft.com/?p=895</guid>
		<description><![CDATA[It has been a while since I&#8217;ve had a chance to play with Ruby, and with 1.9.1 coming out in January I figured I&#8217;d go ahead and install 1.9 to get a feel.  
Since speed was always an issue in 1.8 I figured I&#8217;d re-run my fib.rb script to find the fibonacci number for 35.  [...]]]></description>
			<content:encoded><![CDATA[<p><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" />It has been a while since I&#8217;ve had a chance to play with Ruby, and with 1.9.1 coming out in January I figured I&#8217;d go ahead and install 1.9 to get a feel.  </p>
<p>Since speed was always an issue in 1.8 I figured I&#8217;d re-run my fib.rb script to find the fibonacci number for 35.  I ran it against ruby 1.8.7 (2008-08-11 patchlevel 72) and 1.9.0 (2008-06-20 revision 17482), the standard versions for Ubuntu Intrepid Ibex.</p>
<p>Here&#8217;s that script:</p>
<pre name="code" class="Ruby">
#!/usr/bin/ruby
require 'time'

puts "starting fibonacci"

def fib(num)
 if(num < 2)
   return 1
 else
   return fib(num-1) + fib(num-2)
 end
end

if ARGV[0] != nil
 if (ARGV[0].to_i >= 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>The test machine is fairly old, which makes it a good candidate to see the speed improvements.  It is an old 1.8 GHz P4 with 768MB RAM running KDE4. Here&#8217;s what I got:</p>
<pre class="console">
~/Code/fib$ ruby1.8 fib.rb 35
starting fibonacci
This might take a bit....
14930352
Finding the fib of 35 took:
97.311404
seconds
~/Code/fib$ ruby1.9 fib.rb 35
starting fibonacci
This might take a bit....
14930352
Finding the fib of 35 took:
11.752508888
seconds
</pre>
<p>Now, it is no news that 1.9 is faster than 1.8, but an 8x improvement on this simple recursive script? I was astonished!  This is better than using <a href="http://www.kallasoft.com/using-xruby-to-speed-up-ruby-script-performance/">XRuby to speedup Ruby performance</a>!</p>
<img src="http://www.kallasoft.com/?ak_action=api_record_view&id=895&type=feed" alt="" /><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/kallasoft?a=aTPPZyXkWow:zX59ZqoYudA:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=aTPPZyXkWow:zX59ZqoYudA:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=aTPPZyXkWow:zX59ZqoYudA:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/kallasoft?i=aTPPZyXkWow:zX59ZqoYudA:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=aTPPZyXkWow:zX59ZqoYudA:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=aTPPZyXkWow:zX59ZqoYudA:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/kallasoft?i=aTPPZyXkWow:zX59ZqoYudA:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=aTPPZyXkWow:zX59ZqoYudA:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=aTPPZyXkWow:zX59ZqoYudA:KwTdNBX3Jqk"><img src="http://feeds.feedburner.com/~ff/kallasoft?i=aTPPZyXkWow:zX59ZqoYudA:KwTdNBX3Jqk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=aTPPZyXkWow:zX59ZqoYudA:l6gmwiTKsz0"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=l6gmwiTKsz0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=aTPPZyXkWow:zX59ZqoYudA:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/kallasoft?i=aTPPZyXkWow:zX59ZqoYudA:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=aTPPZyXkWow:zX59ZqoYudA:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=TzevzKxY174" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/kallasoft/~4/aTPPZyXkWow" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.kallasoft.com/ruby-19-quick-speed-test/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://www.kallasoft.com/ruby-19-quick-speed-test/</feedburner:origLink></item>
		<item>
		<title>Develop using the Play! Framework: The JPA Model</title>
		<link>http://feedproxy.google.com/~r/kallasoft/~3/wzvxJnjZxtA/</link>
		<comments>http://www.kallasoft.com/develop-using-the-play-framework-the-jpa-model/#comments</comments>
		<pubDate>Sun, 04 Jan 2009 17:27:58 +0000</pubDate>
		<dc:creator>Ray Gomez</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Hibernate]]></category>
		<category><![CDATA[JPA]]></category>
		<category><![CDATA[JPAModel]]></category>
		<category><![CDATA[Play! framework]]></category>

		<guid isPermaLink="false">http://www.kallasoft.com/?p=842</guid>
		<description><![CDATA[ A couple weeks ago I wrote an article on a fantastic framework called Play!. I want to revisit the project I created with the framework and introduce one of the coolest features that Play! has to offer: the use of Persistence through their JPAModel. I&#8217;m going to modify the CarLot application (Download ZIP) to [...]]]></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" /> A couple weeks ago I wrote <a href="http://www.kallasoft.com/develop-using-the-play-framework/" target="_blank">an article</a> on a fantastic framework called <a href="http://www.playframework.org/" target="_blank">Play!</a>. I want to revisit the project I created with the framework and introduce one of the coolest features that Play! has to offer: the use of Persistence through their JPAModel. I&#8217;m going to modify the CarLot application (<a href="http://www.kallasoft.com/wp-content/uploads/2008/12/carlot.zip">Download ZIP</a>) to use this feature while keeping my existing database in place. </p>
<p>To get started, lets setup the database. If you have Ubuntu, but don&#8217;t have MySQL installed run this in your favorite terminal emulator:</p>
<pre class="console">
~$ sudo apt-get install mysql-server
</pre>
<p>During the install, it will ask you for a root password, this is what you use to admin your server so choose something you&#8217;ll remember. After that finishes, we can create the database. First, download the <a href="http://www.kallasoft.com/wp-content/uploads/2008/12/carlot-sql.zip">carlot-sql.zip</a> file to your home folder. Now lets unzip it, and build the cars table:</p>
<pre class="console">
~$ unzip carlot-sql.zip
~$ mysql -u root -p &lt; carlot.sql
</pre>
<p>When prompted, use the password you gave during your MySQL install. If you followed along with the first article, and already have the database setup up you will need to make one change.  Each row must have a unique, identifiable object so that Hibernate can keep track of them. Currently the cars table doesn&#8217;t have this so we will need to add a column that is a BigInt with name Id, not null, auto increments, and is the primary key. You can make this change by getting into a mysql command prompt and issuing an alter command:</p>
<pre name="code" class="sql">
ALTER TABLE `carlot`.`cars` ADD COLUMN `Id` BIGINT
NOT NULL AUTO_INCREMENT AFTER `VIN`,
ADD PRIMARY KEY (`Id`);
</pre>
<p>Note: Keep this step in mind when you are trying to use Play! with an existing database. </p>
<p>Next you&#8217;ll need to grab a copy of the <a href="http://www.kallasoft.com/wp-content/uploads/2008/12/carlot.zip">Eclipse project file carlot.zip</a> and import it as an existing project into Eclipse. Last, make sure that the Play! framework is in your path (documented in the <a href="http://www.kallasoft.com/develop-using-the-play-framework/">first post</a>), and now we can begin!</p>
<p>Using the Persistence feature we can change quite a bit of the current code and even remove a whole class from the project, specifically the CarLot class. Initially, that class served as a way of connecting to the database, grouping, and storing a list of cars to be handed over to the view. We can cut this out entirely and let the framework to take care of all database ugliness. Lets get started by removing the CarLot class from the project. Next modify the Car class to look like this:</p>
<pre name="code" class="java">
package models;

// Round 3
import javax.persistence.Entity;
import javax.persistence.Table;
import play.db.jpa.JPAModel;

@Entity
@Table(name="cars")
public class Car extends JPAModel {
	//vars that make a car
	public String make, model, vin;
}
</pre>
<p>You will see that the Car class now extends the JPAModel giving the class all the necessary properties to be correctly managed. When the Play! framework sees the @Entity annotation it will do all the grunt work of keeping track of the Car objects by starting a JPA <a href="http://java.sun.com/javaee/5/docs/api/javax/persistence/EntityManager.html">EntityManager</a>. Now we can find, update, delete, and a <a href="http://www.playframework.org/docs/play/db/jpa/JPAModel.html">whole lot more</a> to these Car objects stored in the database through that Entity Manager.</p>
<p>Since we are working with a pre-existing database, I had to specify the <a href="http://java.sun.com/javaee/5/docs/api/javax/persistence/Table.html">@Table(</a>name=&#8221;cars&#8221;) annotation to tell the framework which table we are working with. Had I not specified the annotation, the Play! framework would have modified the CarLot schema to have an extra table called Car (assuming the username specified in the application.conf file had sufficient authorities). </p>
<p>Moving along, we will now need to modify the Application class to look like this:</p>
<pre name="code" class="java">
package controllers;

import play.*;
import play.mvc.*;
import play.libs.*;
import java.util.*;
import models.Car;

public class Application extends Controller {

	/**
	 * Default action.
	 * renders the app/views/Application/index.html template
	 */
	public static void index() {
	    List cars = Car.findAll();
	    render(cars);
	}
}
</pre>
<p>Now, in your project open up the eclipse folder, right-click on CarLot.launch, and select Run As CarLot. You can access your page at <a href="http://localhost:9000">http://localhost:9000</a>, and should see something similar to this:</p>
<p><center><br />
<img src="http://www.kallasoft.com/wp-content/uploads/2008/12/firefox-exception-dialect-475x330.png" alt="Carlot Dialect Exception" title="Carlot Dialect Exception" width="475" height="330" class="aligncenter size-medium wp-image-853" /><br />
</center></p>
<p>We forgot to tell JPA that we are using the MySQL dialect. Open up your Application.conf file in the conf/ folder and uncomment the jpa.dialect=org.hibernate.dialect.MySQLDialect line:</p>
<pre class="console">
# JPA Configuration (hibernate)
# ~~~~~
#
# Specify the custom JPA dialect to use here (default to guess) :
 jpa.dialect=org.hibernate.dialect.MySQLDialect
</pre>
<p>Stop the server by clicking on the terminate button in Eclipse, and re-run the application by right-clicking on the CarLot.launch file and selecting Run As CarLot. You should now see something like this:</p>
<p><center><br />
<img src="http://www.kallasoft.com/wp-content/uploads/2008/12/firefox-successful-475x330.png" alt="CarLot Successful Run" title="CarLot Successful Run" width="475" height="330" class="aligncenter size-medium wp-image-854" /><br />
</center></p>
<p>In under 35 lines of code (mostly auto-generated, and including comments!) we were able to connect to an existing database, grab values, display those values, and all without even seeing database connection code. If this doesn&#8217;t get you excited, I doubt much will. The Play! framework is very impressive, and far exceeds the declaration of &#8220;mak[ing] it easier to build Web applications with Java&#8221;. Check out <a href="http://www.playframework.org/">Play!</a> and let us know what you think!</p>
<p>For your reference, the <a href="http://www.kallasoft.com/wp-content/uploads/2008/12/carlot-jpamodel.zip">Eclipse Project file is available</a>.</p>
<img src="http://www.kallasoft.com/?ak_action=api_record_view&id=842&type=feed" alt="" /><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/kallasoft?a=wzvxJnjZxtA:OUNH7wsYZDU:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=wzvxJnjZxtA:OUNH7wsYZDU:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=wzvxJnjZxtA:OUNH7wsYZDU:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/kallasoft?i=wzvxJnjZxtA:OUNH7wsYZDU:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=wzvxJnjZxtA:OUNH7wsYZDU:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=wzvxJnjZxtA:OUNH7wsYZDU:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/kallasoft?i=wzvxJnjZxtA:OUNH7wsYZDU:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=wzvxJnjZxtA:OUNH7wsYZDU:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=wzvxJnjZxtA:OUNH7wsYZDU:KwTdNBX3Jqk"><img src="http://feeds.feedburner.com/~ff/kallasoft?i=wzvxJnjZxtA:OUNH7wsYZDU:KwTdNBX3Jqk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=wzvxJnjZxtA:OUNH7wsYZDU:l6gmwiTKsz0"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=l6gmwiTKsz0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=wzvxJnjZxtA:OUNH7wsYZDU:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/kallasoft?i=wzvxJnjZxtA:OUNH7wsYZDU:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=wzvxJnjZxtA:OUNH7wsYZDU:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=TzevzKxY174" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/kallasoft/~4/wzvxJnjZxtA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.kallasoft.com/develop-using-the-play-framework-the-jpa-model/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://www.kallasoft.com/develop-using-the-play-framework-the-jpa-model/</feedburner:origLink></item>
		<item>
		<title>SmugMug Java API Download Links Fixed</title>
		<link>http://feedproxy.google.com/~r/kallasoft/~3/6jpIzYwxKJc/</link>
		<comments>http://www.kallasoft.com/smugmug-java-api-download-links-fixed/#comments</comments>
		<pubDate>Mon, 29 Dec 2008 15:28:30 +0000</pubDate>
		<dc:creator>Riyad Kalla</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.kallasoft.com/?p=838</guid>
		<description><![CDATA[Guys, sorry for the SmugMug Java API Download links being broken for a bit, I did an upgrade and forgot to update the paths. All the download links have been fixed.
Thanks for using the API!
]]></description>
			<content:encoded><![CDATA[<p>Guys, sorry for the <a href="http://www.kallasoft.com/smugmug-java-api/download/">SmugMug Java API Download links</a> being broken for a bit, I did an upgrade and forgot to update the paths. All the <a href="http://www.kallasoft.com/smugmug-java-api/download/">download links</a> have been fixed.</p>
<p>Thanks for using the API!</p>
<img src="http://www.kallasoft.com/?ak_action=api_record_view&id=838&type=feed" alt="" /><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/kallasoft?a=6jpIzYwxKJc:ayz8a_1RP9E:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=6jpIzYwxKJc:ayz8a_1RP9E:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=6jpIzYwxKJc:ayz8a_1RP9E:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/kallasoft?i=6jpIzYwxKJc:ayz8a_1RP9E:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=6jpIzYwxKJc:ayz8a_1RP9E:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=6jpIzYwxKJc:ayz8a_1RP9E:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/kallasoft?i=6jpIzYwxKJc:ayz8a_1RP9E:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=6jpIzYwxKJc:ayz8a_1RP9E:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=6jpIzYwxKJc:ayz8a_1RP9E:KwTdNBX3Jqk"><img src="http://feeds.feedburner.com/~ff/kallasoft?i=6jpIzYwxKJc:ayz8a_1RP9E:KwTdNBX3Jqk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=6jpIzYwxKJc:ayz8a_1RP9E:l6gmwiTKsz0"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=l6gmwiTKsz0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=6jpIzYwxKJc:ayz8a_1RP9E:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/kallasoft?i=6jpIzYwxKJc:ayz8a_1RP9E:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=6jpIzYwxKJc:ayz8a_1RP9E:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=TzevzKxY174" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/kallasoft/~4/6jpIzYwxKJc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.kallasoft.com/smugmug-java-api-download-links-fixed/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.kallasoft.com/smugmug-java-api-download-links-fixed/</feedburner:origLink></item>
		<item>
		<title>Develop using the Play! Framework</title>
		<link>http://feedproxy.google.com/~r/kallasoft/~3/moWycWOfqvc/</link>
		<comments>http://www.kallasoft.com/develop-using-the-play-framework/#comments</comments>
		<pubDate>Thu, 18 Dec 2008 00:15:45 +0000</pubDate>
		<dc:creator>Ray Gomez</dc:creator>
				<category><![CDATA[Programming]]></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=803</guid>
		<description><![CDATA[Not too long ago I posted an article on the Play! framework. The framework has some promising features that really helps develop web applications in Java. To show how easy it is to use, I wanted to demonstrate with an example. 
Update #1: Since the article posting there have been a couple of suggestions for [...]]]></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" />Not too long ago I posted <a href="http://www.kallasoft.com/the-play-framework/">an article</a> on the Play! framework. The framework has some promising features that really helps develop web applications in Java. To show how easy it is to use, I wanted to demonstrate with an example. </p>
<p><strong>Update #1</strong>: <em>Since the article posting there have been a couple of suggestions for updating the tutorial to further take advantage of Play!&#8217;s features. I have updated the article to reflect those changes, and wanted to thank you those who sent in the suggestions!</em></p>
<p><strong>Update #2</strong>: <em>After finishing this article, you may want to check-out <a href="http://www.kallasoft.com/develop-using-the-play-framework-the-jpa-model/">the followup article</a> on how to use an even smaller JPA-enabled model to lessen the DB legwork even further.</em></p>
<p>For the example I will use a database, CarLot, that contains 3 cars stored with their make, model, and VIN. What I want to do is connect to the database, grab the cars, and simply display them in a standard html table. I will need to create a Model to grab the cars, and modify the Controller to tell what the view should render.  Lastly, I&#8217;ll modify the view to show how to display the car objects.</p>
<p>To begin this example you will need an existing mysql installation and the jdbc driver which you can get on Ubuntu by issuing the following command:</p>
<pre class="console">~$ sudo apt-get install mysql-server libmysql-java</pre>
<p>The setup script that runs during the installation will ask you for a root password. You can use whatever you like, but in practice it is more secure to use a password different from that of your superuser.</p>
<p>Now, create a new file called carlot.sql and put this in it:</p>
<pre name="code" class="sql">
CREATE DATABASE IF NOT EXISTS carlot;
USE carlot;

DROP TABLE IF EXISTS `carlot`.`cars`;
CREATE TABLE  `carlot`.`cars` (
  `Make` char(20) default NULL,
  `Model` char(20) default NULL,
  `VIN` int(11) default NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

LOCK TABLES `cars` WRITE;
INSERT INTO `carlot`.`cars` VALUES
 ('Ford','Ranger',123456789),
 ('Nissan','Altima',123456790),
 ('Toyota','Corolla',123456791);
UNLOCK TABLES;</pre>
<p>You can then use this file to create the needed database by running:</p>
<pre class="console">
~$ mysql -u root -p &lt; carlot.sql
Enter password: &lt;password specified during install&gt;
</pre>
<p>Next we&#8217;ll need to install the Play! framework. Grab a copy from the <a title="Play Framework Download Site" href="http://www.playframework.org/download/">download site</a> and then run the following in a terminal (with the assumption that you downloaded the zipped file to your home folder):</p>
<pre class="console">
~$ unzip play-1.0-stable4.zip
~$ sudo mv play-1.0-stable4 /opt/play
</pre>
<p>To make the framework executable without specifying the full path we&#8217;ll add the play directory to the environment path. You can do this by editing your /etc/profile as a superuser and adding the following line to the bottom:</p>
<pre class="console">
export PATH=$PATH:/opt/play
</pre>
<p>Then run:</p>
<pre class="console">
~$ source /etc/profile
</pre>
<p>The &#8216;play&#8217; executable should now be in your path, and ready to run. We can finally create our project. Do this by running this:</p>
<pre class="console">~$ play create car-lot</pre>
<p>This will create our project&#8217;s folder structure and configuration files in ~/car-lot. To make it easier to reference in the article, I will use &lt;car-lot&gt; to specify that newly created project directory. </p>
<p>Lets move on to the code starting with the Model. There are two parts to the model in this project: the Car object and the CarLot object. The Car object will have 3 private variables (make, model, and vin) that will be accessible through accessor methods. The CarLot database will be responsible for grabbing information from the database, and putting that information into a usable form (a Car object).  Keeping these separate will allow us to expand in the future (like adding more features to a car or adding different tables to the CarLot database) without breaking the current application.</p>
<p>Go ahead and create a file called Car.java in your &lt;car-lot&gt;/app/models/ folder and add the following to it:</p>
<pre name="code" class="java">
package models;
public class Car {

	//vars that make a car
	public String make, model, vin;

	public Car(String make, String model, String vin){
		this.make 	= make;
		this.model	= model;
		this.vin 	= vin;
	}
}</pre>
<p>If you notice, this code doesn&#8217;t have the standard accessors (commonly referred to as getters and setters). You might even ask yourself why? If that&#8217;s the case you&#8217;ve just noted one of the cool features of Play! called <a href="http://www.playframework.org/manual/contents/model#properties_simulation">Properties Simulation</a>. This Properties Simulation is a great way to keep code clean without sacrificing the usability. You have full access to your variables without having to write superfluous code.</p>
<p>Moving along, create another file called CarLot.java inside your &lt;car-lot&gt;/app/models/ folder with the following:</p>
<pre name="code" class="java">
package models;
import java.sql.*;
import java.util.ArrayList;
import models.Car;

public class CarLot {

  public static ArrayList getListOfCars(){
    ArrayList cars = new ArrayList();
    Connection connection = null;
    Statement statement = null;
    ResultSet resultset = null;

      try {
        Class.forName("com.mysql.jdbc.Driver").newInstance();
        connection = DriverManager.getConnection(
                     "jdbc:mysql://127.0.0.1/carlot",
                     "user", "secret");
        statement = connection.createStatement();
        statement.executeUpdate("USE carlot");
        statement.executeQuery("SELECT * from cars");

        resultset = statement.getResultSet();
        while(resultset.next()){
	  cars.add( new Car( resultset.getString("make"),
                             resultset.getString("model"),
                             resultset.getString("vin") ) );
        }
        connection.close();
      }
      catch(Exception e){
        System.out.println("exception: " + e.toString());
      }
      return cars;
  }
}</pre>
<p>Your Model for accessing the database is complete. Of course, though, there is another way of approaching this. The authors of Play! took database access <a href="http://www.playframework.org/manual/contents/model#setup_a_database_to_persist_your_model_objects">into consideration</a>, most especially due to models needing to store and retrieve data. The default project configuration file (conf/application.conf) has a special section for database configurations:</p>
<pre class="console">
# Database configuration
# ~~~~~
# Enable a database engine if needed.
# There are two built in values :
#   - mem : for a transient in memory database (HSQL in memory)
#   - fs  : for a simple file written database (HSQL file stored)
#
# db=mem
#
# If you need a full jdbc configuration use the following :
#
# db.url=jdbc:mysql://localhost/test
# db.driver=com.mysql.jdbc.Driver
# db.user=root
# db.pass=
#
# Connections pool configuration :
#
# db.pool.timeout=1000
# db.pool.maxSize=30
# db.pool.minSize=10
</pre>
<p>lets modify this file to our needs:</p>
<pre class="console">
# Database configuration
# ~~~~~
# Enable a database engine if needed.
# There are two built in values :
#   - mem : for a transient in memory database (HSQL in memory)
#   - fs  : for a simple file written database (HSQL file stored)
#
# db=mem
#
# If you need a full jdbc configuration use the following :
#
 db.url=jdbc:mysql://localhost/carlot
 db.driver=com.mysql.jdbc.Driver
 db.user=user
 db.pass=secret
#
# Connections pool configuration :
#
# db.pool.timeout=1000
# db.pool.maxSize=30
# db.pool.minSize=10
</pre>
<p>Of course we will need to modify our code in CarLot.java to reflect these changes. Go ahead and edit the getListOfCars() method to look like this:</p>
<pre name="code" class="java">
	//Round 2
	// Let the Play framework help out by modifying your
	// database configuration in the application.conf file

	public static ArrayList<Car> getListOfCars(){
		ArrayList<Car> cars = new ArrayList<Car>();
		ResultSet resultset = null;
		resultset = DB.executeQuery("SELECT * from cars");
		try {
			while(resultset.next()){
				cars.add( new Car( resultset.getString("make"),
						resultset.getString("model"),
						resultset.getString("vin") ) );
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return cars;
	}
</pre>
<p>Now our Model is complete, incorporating some of the database features that Play! has to offer. Next we&#8217;ll need to setup the Controller to get the car data from the database and tell the View what to display using the render(Object) method. If you look inside the &lt;car-lot&gt;/apps/controllers/ folder you will see that an Application.java file exists. This is the default Controller class that Play! created for you. All of the controller specific code for this example needs to be placed in this file. </p>
<p>Edit the file &lt;car-lot&gt;/app/controllers/Application.java to have the following:</p>
<pre name="code" class="java">
package controllers;
import play.*;
import play.mvc.*;
import play.libs.*;

//User added imports
import java.util.*;
import models.CarLot;  //needed to connect to the database
import models.Car;     //needed because these are the objects
                           //we wish to render in the view

public class Application extends Controller {
  /**
   * Default action.
   * renders the app/views/Application/index.html template
   */
  public static void index() {
    List cars = CarLot.getListOfCars();
    render(cars); //the cars list is what is sent to the view
  }
}</pre>
<p>That should do it for the controller. We grabbed our list using the CarLot class, and told the View to render it. Now we move along to actually coding how to display this data.</p>
<p>Like the Controller, the Play! framework created a default View.  That view is in the form of an index.html file located in the &lt;car-lot&gt;/app/views/Applications/ folder.  Since all we want to do is display the Car objects in an html table we can modify the code from this:</p>
<pre name="code" class="html">
#{extends 'main.html' /}
#{set title:'Home' /}

&lt;h1&gt;It works !&lt;/h1&gt;
</pre>
<p>to something like this:</p>
<pre name="code" class="html">
#{extends 'main.html' /}
#{set title:'Cars in the car lot' /}

&lt;h1&gt;Cars in Lot&lt;/h1&gt;
&lt;table border=1&gt;
&lt;tr&gt;
&lt;td&gt;Make&lt;/td&gt;
&lt;td&gt;Model&lt;/td&gt;
&lt;td&gt;Vin&lt;/td&gt;
&lt;/tr&gt;
#{list items:cars, as:'car'}
&lt;tr&gt;
&lt;td&gt;${car.getMake()}&lt;/td&gt;
&lt;td&gt;${car.getModel()}&lt;/td&gt;
&lt;td&gt;${car.getVin()}&lt;/td&gt;
&lt;/tr&gt;

#{/list}
&lt;/table&gt;
</pre>
<p>You should be able to see that object referencing is quite easy, as well as setting up an iteration over the car list grabbed in the controller. Go ahead and save this file. Open up a terminal and run this command to deploy the application:</p>
<pre class="console">~$ play start car-lot</pre>
<p>Direct your browser to <a href="http://localhost:9000">http://localhost:9000</a> and see what you get. It should be something similar to this:</p>
<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>That&#8217;s not quite what we wanted.  Well, there is one last change we need to make. We need to specify the default route, and you can do this by modifying the routes file located in the &lt;car-lot&gt;/app/conf/ folder. All that you need to do is change this :</p>
<pre class="console">
# Uncomment this default route to start !
# GET        /                                Application.index
</pre>
<p>to this</p>
<pre class="console">
# Uncomment this default route to start !
 GET        /                                Application.index
</pre>
<p>This route establishes where to send those objects put in the render() function.</p>
<p>Refresh your browser and you should get something similar to this:</p>
<p style="text-align: center;"><img class="aligncenter size-medium wp-image-768" title="Finished Car Lot Example" src="http://www.kallasoft.com/wp-content/uploads/2008/12/car-lot-finished-475x362.png" alt="Finished Car Lot Example" width="428" height="326" /></p>
<p>You now have a customized web application that accesses a database and displays the contents in under 75 lines of code including the database schema!! This line count could be trimmed even more by cutting out the Schema altogether using the amazing Hibernate integration through <a href="http://java.sun.com/developer/technicalArticles/J2EE/jpa/"> JPA</a>. This feature is described a little more in the online<a href="http://www.playframework.org/manual/contents/model#persist_you_object_model_with_hibernate"> documentation on Play!&#8217;s website</a>.</p>
<p>Cool&#8230; beans?? Sorry, I had to&#8230;  </p>
<p>Go ahead and stop your server now by running:</p>
<pre class="console">~$ play stop car-lot</pre>
<p>What about tools or IDE&#8217;s that can be used to help speed a projects creation? Wonder not. As I had mentioned in my previous article, the Play! framework has special commands to convert your project into an Eclipse or Netbeans compatible project. To make this particular project Eclipse capable, run:</p>
<pre class="console">~$ play eclipsify car-lot</pre>
<p>Then import into Eclipse using the &#8220;Existing Project&#8221; selection:</p>
<p style="text-align: center;"><img class="aligncenter size-medium wp-image-770" title="Eclipse Existing Project Import" src="http://www.kallasoft.com/wp-content/uploads/2008/12/eclipse-import.png" alt="Eclipse Existing Project Import" width="282" height="330" /></p>
<p style="text-align: left;">Needless to say the project should be imported in all its hierarchy goodness:</p>
<p style="text-align: center;"><img class="size-medium wp-image-772 aligncenter" title="Eclipse Package Explorer " src="http://www.kallasoft.com/wp-content/uploads/2008/12/eclipse-package-explorer1.png" alt="Eclipse Package Explorer" width="204" height="487" /></p>
<p style="text-align: left;">
<p>You will see a couple more folders that you didn&#8217;t originally have when you ran &#8220;play create car-lot&#8221;. Some are Eclipse specific folders, but one of them is pretty cool. In the eclipse folder of your hierarchy you&#8217;ll find a bunch of .launch files. If you select the project&#8217;s main launch file (CarLot.launch) and then go to Run -&gt; Run your server will be initialized and started! Refresh your web browser and everything should be there.  You are truly ready to rock and roll with this framework.  Just note, if any Eclipse configuration files are changed you are required to re-run &#8220;play eclipsify car-lot&#8221; on your project (now located in your eclipse workspace).  That should get you going use the Play! framework. Check it out, and let us know what you think!</p>
<p>For your reference, a <a href="http://www.kallasoft.com/wp-content/uploads/2008/12/carlot.zip">download of this eclipse project is available</a>.</p>
<img src="http://www.kallasoft.com/?ak_action=api_record_view&id=803&type=feed" alt="" /><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/kallasoft?a=moWycWOfqvc:GNuc0KznYAY:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=moWycWOfqvc:GNuc0KznYAY:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=moWycWOfqvc:GNuc0KznYAY:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/kallasoft?i=moWycWOfqvc:GNuc0KznYAY:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=moWycWOfqvc:GNuc0KznYAY:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=moWycWOfqvc:GNuc0KznYAY:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/kallasoft?i=moWycWOfqvc:GNuc0KznYAY:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=moWycWOfqvc:GNuc0KznYAY:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=moWycWOfqvc:GNuc0KznYAY:KwTdNBX3Jqk"><img src="http://feeds.feedburner.com/~ff/kallasoft?i=moWycWOfqvc:GNuc0KznYAY:KwTdNBX3Jqk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=moWycWOfqvc:GNuc0KznYAY:l6gmwiTKsz0"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=l6gmwiTKsz0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=moWycWOfqvc:GNuc0KznYAY:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/kallasoft?i=moWycWOfqvc:GNuc0KznYAY:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=moWycWOfqvc:GNuc0KznYAY:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=TzevzKxY174" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/kallasoft/~4/moWycWOfqvc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.kallasoft.com/develop-using-the-play-framework/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		<feedburner:origLink>http://www.kallasoft.com/develop-using-the-play-framework/</feedburner:origLink></item>
		<item>
		<title>The Play! Framework</title>
		<link>http://feedproxy.google.com/~r/kallasoft/~3/ZSbERCAtEyU/</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[Programming]]></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>
<img src="http://www.kallasoft.com/?ak_action=api_record_view&id=698&type=feed" alt="" /><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/kallasoft?a=ZSbERCAtEyU:dFOOay8wkc0:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=ZSbERCAtEyU:dFOOay8wkc0:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=ZSbERCAtEyU:dFOOay8wkc0:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/kallasoft?i=ZSbERCAtEyU:dFOOay8wkc0:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=ZSbERCAtEyU:dFOOay8wkc0:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=ZSbERCAtEyU:dFOOay8wkc0:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/kallasoft?i=ZSbERCAtEyU:dFOOay8wkc0:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=ZSbERCAtEyU:dFOOay8wkc0:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=ZSbERCAtEyU:dFOOay8wkc0:KwTdNBX3Jqk"><img src="http://feeds.feedburner.com/~ff/kallasoft?i=ZSbERCAtEyU:dFOOay8wkc0:KwTdNBX3Jqk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=ZSbERCAtEyU:dFOOay8wkc0:l6gmwiTKsz0"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=l6gmwiTKsz0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=ZSbERCAtEyU:dFOOay8wkc0:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/kallasoft?i=ZSbERCAtEyU:dFOOay8wkc0:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=ZSbERCAtEyU:dFOOay8wkc0:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=TzevzKxY174" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/kallasoft/~4/ZSbERCAtEyU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.kallasoft.com/the-play-framework/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://www.kallasoft.com/the-play-framework/</feedburner:origLink></item>
		<item>
		<title>AQEMU Frontend for QEMU</title>
		<link>http://feedproxy.google.com/~r/kallasoft/~3/dMvuVURStBg/</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[OS]]></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>
<img src="http://www.kallasoft.com/?ak_action=api_record_view&id=737&type=feed" alt="" /><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/kallasoft?a=dMvuVURStBg:KCaud1-hzVw:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=dMvuVURStBg:KCaud1-hzVw:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=dMvuVURStBg:KCaud1-hzVw:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/kallasoft?i=dMvuVURStBg:KCaud1-hzVw:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=dMvuVURStBg:KCaud1-hzVw:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=dMvuVURStBg:KCaud1-hzVw:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/kallasoft?i=dMvuVURStBg:KCaud1-hzVw:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=dMvuVURStBg:KCaud1-hzVw:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=dMvuVURStBg:KCaud1-hzVw:KwTdNBX3Jqk"><img src="http://feeds.feedburner.com/~ff/kallasoft?i=dMvuVURStBg:KCaud1-hzVw:KwTdNBX3Jqk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=dMvuVURStBg:KCaud1-hzVw:l6gmwiTKsz0"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=l6gmwiTKsz0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=dMvuVURStBg:KCaud1-hzVw:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/kallasoft?i=dMvuVURStBg:KCaud1-hzVw:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=dMvuVURStBg:KCaud1-hzVw:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=TzevzKxY174" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/kallasoft/~4/dMvuVURStBg" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.kallasoft.com/aqemu-frontend-for-qemu/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.kallasoft.com/aqemu-frontend-for-qemu/</feedburner:origLink></item>
		<item>
		<title>UI Design Can Be Funny Sometimes… Again</title>
		<link>http://feedproxy.google.com/~r/kallasoft/~3/wLmHAafOSKQ/</link>
		<comments>http://www.kallasoft.com/ui-design-can-be-funny-sometimes-again/#comments</comments>
		<pubDate>Mon, 15 Dec 2008 22:45:32 +0000</pubDate>
		<dc:creator>Riyad Kalla</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[Friend Connect]]></category>
		<category><![CDATA[funny]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[UI]]></category>

		<guid isPermaLink="false">http://www.kallasoft.com/?p=758</guid>
		<description><![CDATA[Right after we got done laughing about Mixx&#8217;s somewhat mixed message on it&#8217;s &#8220;do more!&#8221; submission confirmation page, we tried out Google&#8217;s Friend Connect (integrated on the right hand side of the site if you are interested) and saw an even more interesting placement of conflicting functions:

Pretty great if you ask us&#8230; immediately after you [...]]]></description>
			<content:encoded><![CDATA[<p>Right after we got done laughing about <a href="http://www.kallasoft.com/ui-design-can-be-funny-sometimes/">Mixx&#8217;s somewhat mixed message</a> on it&#8217;s &#8220;do more!&#8221; submission confirmation page, we tried out Google&#8217;s Friend Connect (integrated on the right hand side of the site if you are interested) and saw an even <em>more</em> interesting placement of conflicting functions:</p>
<p style="text-align: center;"><img class="size-full wp-image-759 aligncenter" title="google-friend-connect-add-friend-block-user-confusion" src="http://www.kallasoft.com/wp-content/uploads/2008/12/google-friend-connect-add-friend-block-user-confusion.png" alt="google-friend-connect-add-friend-block-user-confusion" width="300" height="275" /></p>
<p>Pretty great if you ask us&#8230; <em>immediately</em> after you be-friend someone, your screen refreshes and you are given a link right under the notification to Block the user&#8230; the one you <em>just</em> got done be-friending.</p>
<p>I feel bad for all the bi-polar folks that will be using this app, it&#8217;s just not fair&#8230;</p>
<img src="http://www.kallasoft.com/?ak_action=api_record_view&id=758&type=feed" alt="" /><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/kallasoft?a=wLmHAafOSKQ:nP_V-DQn8AE:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=wLmHAafOSKQ:nP_V-DQn8AE:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=wLmHAafOSKQ:nP_V-DQn8AE:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/kallasoft?i=wLmHAafOSKQ:nP_V-DQn8AE:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=wLmHAafOSKQ:nP_V-DQn8AE:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=wLmHAafOSKQ:nP_V-DQn8AE:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/kallasoft?i=wLmHAafOSKQ:nP_V-DQn8AE:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=wLmHAafOSKQ:nP_V-DQn8AE:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=wLmHAafOSKQ:nP_V-DQn8AE:KwTdNBX3Jqk"><img src="http://feeds.feedburner.com/~ff/kallasoft?i=wLmHAafOSKQ:nP_V-DQn8AE:KwTdNBX3Jqk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=wLmHAafOSKQ:nP_V-DQn8AE:l6gmwiTKsz0"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=l6gmwiTKsz0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=wLmHAafOSKQ:nP_V-DQn8AE:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/kallasoft?i=wLmHAafOSKQ:nP_V-DQn8AE:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=wLmHAafOSKQ:nP_V-DQn8AE:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=TzevzKxY174" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/kallasoft/~4/wLmHAafOSKQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.kallasoft.com/ui-design-can-be-funny-sometimes-again/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.kallasoft.com/ui-design-can-be-funny-sometimes-again/</feedburner:origLink></item>
		<item>
		<title>Object Oriented-Style CSS Inheritance Tip</title>
		<link>http://feedproxy.google.com/~r/kallasoft/~3/r3iu-F-D_h8/</link>
		<comments>http://www.kallasoft.com/object-oriented-style-css-inheritance/#comments</comments>
		<pubDate>Sun, 14 Dec 2008 16:20:29 +0000</pubDate>
		<dc:creator>Riyad Kalla</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[inheritance]]></category>
		<category><![CDATA[tips]]></category>
		<category><![CDATA[web page]]></category>
		<category><![CDATA[XHTML]]></category>

		<guid isPermaLink="false">http://www.kallasoft.com/?p=81</guid>
		<description><![CDATA[I was trying to figure out recently how to apply multiple CSS styles to a single element. What I wanted to be able to do was define a single base style for a particular element, let&#8217;s say the P tag, and then define a multitude of differing additional styles for that same tag, like a [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone size-full wp-image-741" style="float: left; margin-left: 8px; margin-right: 8px;" title="w3-css-logo" src="http://www.kallasoft.com/wp-content/uploads/2008/12/w3-css-logo.gif" alt="w3-css-logo" width="138" height="140" />I was trying to figure out recently how to apply multiple CSS styles to a single element. What I wanted to be able to do was define a single base style for a particular element, let&#8217;s say the <em>P</em> tag, and then define a multitude of differing additional styles for that same tag, like a <em>tooltip</em> or <em>warning</em> style.</p>
<p>What I <em>didn&#8217;t</em> want to do was define all the possible combinations of the base-style and extended-styles in the CSS file so I could just apply the one I needed depending on the logic in my application&#8230; I just wanted the base-style applied and then depending on some additional criteria, I wanted to apply some <em>additional</em> styles ontop of that.</p>
<p>I&#8217;m not that great at CSS, and was completely bamboozled as to how I could do this until I ran across <a href="http://dorward.me.uk/www/css/inheritance/">this post</a> talking about how CSS inheritance works, and wouldn&#8217;t you know it, it&#8217;s as easy as you might have guessed.</p>
<p>The way to apply multiple classes to a single element is to simply list them off in a space-delimited style, more specifically:</p>
<pre class="console">&lt;div class="baseStyle extendedStyle"&gt;</pre>
<p>So yea&#8230; sometimes things <em>are</em> as easy as you had hoped. I was fully expecting that to either not be supported or be way more complicated.</p>
<img src="http://www.kallasoft.com/?ak_action=api_record_view&id=81&type=feed" alt="" /><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/kallasoft?a=r3iu-F-D_h8:Dy0JLmOQ0gI:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=r3iu-F-D_h8:Dy0JLmOQ0gI:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=r3iu-F-D_h8:Dy0JLmOQ0gI:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/kallasoft?i=r3iu-F-D_h8:Dy0JLmOQ0gI:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=r3iu-F-D_h8:Dy0JLmOQ0gI:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=r3iu-F-D_h8:Dy0JLmOQ0gI:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/kallasoft?i=r3iu-F-D_h8:Dy0JLmOQ0gI:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=r3iu-F-D_h8:Dy0JLmOQ0gI:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=r3iu-F-D_h8:Dy0JLmOQ0gI:KwTdNBX3Jqk"><img src="http://feeds.feedburner.com/~ff/kallasoft?i=r3iu-F-D_h8:Dy0JLmOQ0gI:KwTdNBX3Jqk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=r3iu-F-D_h8:Dy0JLmOQ0gI:l6gmwiTKsz0"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=l6gmwiTKsz0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=r3iu-F-D_h8:Dy0JLmOQ0gI:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/kallasoft?i=r3iu-F-D_h8:Dy0JLmOQ0gI:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=r3iu-F-D_h8:Dy0JLmOQ0gI:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=TzevzKxY174" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/kallasoft/~4/r3iu-F-D_h8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.kallasoft.com/object-oriented-style-css-inheritance/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.kallasoft.com/object-oriented-style-css-inheritance/</feedburner:origLink></item>
		<item>
		<title>UI Design Can Be Funny Sometimes</title>
		<link>http://feedproxy.google.com/~r/kallasoft/~3/q442f8NwkHU/</link>
		<comments>http://www.kallasoft.com/ui-design-can-be-funny-sometimes/#comments</comments>
		<pubDate>Sun, 14 Dec 2008 14:01:41 +0000</pubDate>
		<dc:creator>Riyad Kalla</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[funny]]></category>
		<category><![CDATA[Mixx]]></category>
		<category><![CDATA[social news]]></category>
		<category><![CDATA[UI]]></category>

		<guid isPermaLink="false">http://www.kallasoft.com/?p=738</guid>
		<description><![CDATA[The other day I was posting something to Mixx (it&#8217;s a social news site, like Digg) and noticed on the submission confirmation page there was something interesting about the flow of additional &#8220;promotion&#8221; work I could do for my story:

It&#8217;s minor and I think overall (even this screen) that Mixx has an excellent UI across [...]]]></description>
			<content:encoded><![CDATA[<p>The other day I was posting something to <a href="http://www.mixx.com">Mixx</a> (it&#8217;s a social news site, like Digg) and noticed on the submission confirmation page there was something interesting about the flow of additional &#8220;promotion&#8221; work I could do for my story:</p>
<p style="text-align: center;"><img class="size-medium wp-image-739 aligncenter" title="mixx-submission-mixed-messages-do-more-delete" src="http://www.kallasoft.com/wp-content/uploads/2008/12/mixx-submission-mixed-messages-do-more-delete-475x182.png" alt="mixx-submission-mixed-messages-do-more-delete" width="475" height="182" /></p>
<p>It&#8217;s minor and I think overall (even this screen) that Mixx has an excellent UI across the site, I just got a kick out of reading that flow. Almost like Mixx didn&#8217;t think much of my story and would prefer if I would just buzz off <img src='http://www.kallasoft.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<img src="http://www.kallasoft.com/?ak_action=api_record_view&id=738&type=feed" alt="" /><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/kallasoft?a=q442f8NwkHU:f5FMd2fC5ps:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=q442f8NwkHU:f5FMd2fC5ps:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=q442f8NwkHU:f5FMd2fC5ps:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/kallasoft?i=q442f8NwkHU:f5FMd2fC5ps:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=q442f8NwkHU:f5FMd2fC5ps:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=q442f8NwkHU:f5FMd2fC5ps:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/kallasoft?i=q442f8NwkHU:f5FMd2fC5ps:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=q442f8NwkHU:f5FMd2fC5ps:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=q442f8NwkHU:f5FMd2fC5ps:KwTdNBX3Jqk"><img src="http://feeds.feedburner.com/~ff/kallasoft?i=q442f8NwkHU:f5FMd2fC5ps:KwTdNBX3Jqk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=q442f8NwkHU:f5FMd2fC5ps:l6gmwiTKsz0"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=l6gmwiTKsz0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=q442f8NwkHU:f5FMd2fC5ps:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/kallasoft?i=q442f8NwkHU:f5FMd2fC5ps:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=q442f8NwkHU:f5FMd2fC5ps:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=TzevzKxY174" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/kallasoft/~4/q442f8NwkHU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.kallasoft.com/ui-design-can-be-funny-sometimes/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://www.kallasoft.com/ui-design-can-be-funny-sometimes/</feedburner:origLink></item>
		<item>
		<title>Python 3.0: New and Backwards Incompatible!?</title>
		<link>http://feedproxy.google.com/~r/kallasoft/~3/TjAuIOUIYr0/</link>
		<comments>http://www.kallasoft.com/python-30-new-and-backwards-incompatible/#comments</comments>
		<pubDate>Fri, 12 Dec 2008 19:39:53 +0000</pubDate>
		<dc:creator>Ray Gomez</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[backward compatibility]]></category>
		<category><![CDATA[changelog]]></category>
		<category><![CDATA[problem]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Python 3.0]]></category>

		<guid isPermaLink="false">http://www.kallasoft.com/?p=722</guid>
		<description><![CDATA[For those looking to use Python 3.0 for all their development work, be warned. Changes in the latest version of Python were created to be intentionally not backwards compatible. According to the Python site &#8220;there are more changes than in a typical release, and more that are important for all Python users.&#8221; They also state [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-725" style="margin-left: 8px; margin-right: 8px;" title="python-logo" src="http://www.kallasoft.com/wp-content/uploads/2008/12/python-logo.jpeg" alt="python-logo" width="95" height="94" />For those looking to use <a title="Python's Website" href="http://www.python.org/">Python 3.0</a> for all their development work, be warned. Changes in the latest version of Python were created to be intentionally not backwards compatible. According to the Python site &#8220;there are more changes than in a typical release, and more that are important for all Python users.&#8221; They also state that &#8220;Python really hasn’t changed all that much – by and large, we’re mostly fixing well-known annoyances and warts, and removing a lot of old cruft.&#8221; That being said what exactly has changed?</p>
<p>Well, for starters:</p>
<ul>
<li>Print is now a function invoked as print() instead of print</li>
<li>Lists are no longer returned for well known methods (dict.keys(), dict.items(), dict.values()). Instead these methods return Views. map() and filter now return iterators instead as well.</li>
<li>Ordering comparison operators now raise a TypeError Exception when the operators don&#8217;t have a &#8220;meaningful natural ordering&#8221;</li>
<li>Long has been renamed to int so there is only one built-in integer type which behaves like the old long type.</li>
<li>Expressions like 1/2 will return a float while 1//2 will give you the truncated behavior</li>
<li>Binary data and Unicode use has changed. Python uses the concepts of text and binary data instead of Unicode strings and 8-bit strings. If your application is using these old concepts, you will be required to make modifications. Check the doc <a title="TextVsData" href="http://docs.python.org/3.0/whatsnew/3.0.html#text-vs-data-instead-of-unicode-vs-8-bit" target="_blank">here</a></li>
</ul>
<p>There have also been quite a few new syntax additions and some changes as <a title="syntax changes" href="http://docs.python.org/3.0/whatsnew/3.0.html#overview-of-syntax-changes" target="_blank">well</a>:</p>
<ul>
<li>Binary and Octal literals are specified as 0b0110 and 0o720 respectively. (this was present in 2.6)</li>
<li>Keyword-only arguments have been added to function calls</li>
<li>New annotations for functions and return values potentially help 3rd party libraries (the example they give on the Python website allows libraries to use this to <a title="PEP3107" href="http://www.python.org/dev/peps/pep-3107/" target="_blank">improve help messages</a></li>
<li>Nonlocal has been added for variables increasing scope but not making global.</li>
<li>Extended Iterable Unpacking</li>
</ul>
<p>Of course, this is just a small list of the over all changes, there is still a list of syntax changes and, furthermore, a list removals. You can check the full list <a title="What's new in 3.0" href="http://docs.python.org/3.0/whatsnew/3.0.html" target="_blank">here</a> and the actual <a title="Changelog" href="http://www.python.org/download/releases/3.0/NEWS.txt">changelog</a> for the down-and-dirty facts. So do these changes have a negative impact? For now, the Python website lists 3.0 as being 10% slower over 2.5, and stated  that this is possibily due to the removal of small casing for small integers. Of course this is still an x.0 release and there is plenty of room for improvements so don&#8217;t let that dissuade you.</p>
<p>One thing to note for code maintainers, it was suggested not to write code meant to be runnable on 2.6 and 3.0. Due to the wide list of changes supporting both versions would will result in a &#8220;very contorted coding style.&#8221; All of that being said, the new version comes with a source-to-source conversion utility called <a title="2to3" href="http://docs.python.org/library/2to3.html">2to3</a> to help with getting up to speed on the latest and greatest. Check out the <a title="Release 3.0 Download Site" href="http://www.python.org/download/releases/3.0/" target="_blank">new release</a>, and happy coding!</p>
<img src="http://www.kallasoft.com/?ak_action=api_record_view&id=722&type=feed" alt="" /><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/kallasoft?a=TjAuIOUIYr0:_zEp6YzkVZU:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=TjAuIOUIYr0:_zEp6YzkVZU:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=TjAuIOUIYr0:_zEp6YzkVZU:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/kallasoft?i=TjAuIOUIYr0:_zEp6YzkVZU:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=TjAuIOUIYr0:_zEp6YzkVZU:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=TjAuIOUIYr0:_zEp6YzkVZU:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/kallasoft?i=TjAuIOUIYr0:_zEp6YzkVZU:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=TjAuIOUIYr0:_zEp6YzkVZU:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=TjAuIOUIYr0:_zEp6YzkVZU:KwTdNBX3Jqk"><img src="http://feeds.feedburner.com/~ff/kallasoft?i=TjAuIOUIYr0:_zEp6YzkVZU:KwTdNBX3Jqk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=TjAuIOUIYr0:_zEp6YzkVZU:l6gmwiTKsz0"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=l6gmwiTKsz0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=TjAuIOUIYr0:_zEp6YzkVZU:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/kallasoft?i=TjAuIOUIYr0:_zEp6YzkVZU:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=TjAuIOUIYr0:_zEp6YzkVZU:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=TzevzKxY174" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/kallasoft/~4/TjAuIOUIYr0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.kallasoft.com/python-30-new-and-backwards-incompatible/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.kallasoft.com/python-30-new-and-backwards-incompatible/</feedburner:origLink></item>
		<item>
		<title>Meld for Easy File Comparison / Diff-ing</title>
		<link>http://feedproxy.google.com/~r/kallasoft/~3/6FI-6ytSlVQ/</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[Programming]]></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>
<img src="http://www.kallasoft.com/?ak_action=api_record_view&id=686&type=feed" alt="" /><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/kallasoft?a=6FI-6ytSlVQ:xDeWbHNYoqc:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=6FI-6ytSlVQ:xDeWbHNYoqc:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=6FI-6ytSlVQ:xDeWbHNYoqc:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/kallasoft?i=6FI-6ytSlVQ:xDeWbHNYoqc:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=6FI-6ytSlVQ:xDeWbHNYoqc:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=6FI-6ytSlVQ:xDeWbHNYoqc:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/kallasoft?i=6FI-6ytSlVQ:xDeWbHNYoqc:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=6FI-6ytSlVQ:xDeWbHNYoqc:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=6FI-6ytSlVQ:xDeWbHNYoqc:KwTdNBX3Jqk"><img src="http://feeds.feedburner.com/~ff/kallasoft?i=6FI-6ytSlVQ:xDeWbHNYoqc:KwTdNBX3Jqk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=6FI-6ytSlVQ:xDeWbHNYoqc:l6gmwiTKsz0"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=l6gmwiTKsz0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=6FI-6ytSlVQ:xDeWbHNYoqc:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/kallasoft?i=6FI-6ytSlVQ:xDeWbHNYoqc:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=6FI-6ytSlVQ:xDeWbHNYoqc:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=TzevzKxY174" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/kallasoft/~4/6FI-6ytSlVQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.kallasoft.com/meld-for-file-comparison/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://www.kallasoft.com/meld-for-file-comparison/</feedburner:origLink></item>
		<item>
		<title>Cryptkeeper for Encrypting User Files</title>
		<link>http://feedproxy.google.com/~r/kallasoft/~3/XJ2M9wn_1VM/</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[OS]]></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>
<img src="http://www.kallasoft.com/?ak_action=api_record_view&id=667&type=feed" alt="" /><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/kallasoft?a=XJ2M9wn_1VM:aZJdIT-8BsE:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=XJ2M9wn_1VM:aZJdIT-8BsE:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=XJ2M9wn_1VM:aZJdIT-8BsE:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/kallasoft?i=XJ2M9wn_1VM:aZJdIT-8BsE:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=XJ2M9wn_1VM:aZJdIT-8BsE:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=XJ2M9wn_1VM:aZJdIT-8BsE:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/kallasoft?i=XJ2M9wn_1VM:aZJdIT-8BsE:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=XJ2M9wn_1VM:aZJdIT-8BsE:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=XJ2M9wn_1VM:aZJdIT-8BsE:KwTdNBX3Jqk"><img src="http://feeds.feedburner.com/~ff/kallasoft?i=XJ2M9wn_1VM:aZJdIT-8BsE:KwTdNBX3Jqk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=XJ2M9wn_1VM:aZJdIT-8BsE:l6gmwiTKsz0"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=l6gmwiTKsz0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=XJ2M9wn_1VM:aZJdIT-8BsE:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/kallasoft?i=XJ2M9wn_1VM:aZJdIT-8BsE:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=XJ2M9wn_1VM:aZJdIT-8BsE:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=TzevzKxY174" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/kallasoft/~4/XJ2M9wn_1VM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.kallasoft.com/cryptkeeper-for-encrypting-user-files/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.kallasoft.com/cryptkeeper-for-encrypting-user-files/</feedburner:origLink></item>
		<item>
		<title>JaxaFX 1.0 Released – Not a Great First User Experience</title>
		<link>http://feedproxy.google.com/~r/kallasoft/~3/YuxfZDcHit0/</link>
		<comments>http://www.kallasoft.com/jaxafx-10-released-not-a-great-first-user-experience/#comments</comments>
		<pubDate>Sat, 06 Dec 2008 17:27:33 +0000</pubDate>
		<dc:creator>Riyad Kalla</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[announcement]]></category>
		<category><![CDATA[example]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[JavaFX]]></category>
		<category><![CDATA[media player]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[release]]></category>
		<category><![CDATA[Sun]]></category>

		<guid isPermaLink="false">http://www.kallasoft.com/?p=654</guid>
		<description><![CDATA[Please keep in mind I&#8217;m wearing my &#8220;Joe average user&#8221; hat that this platform is suppose to target as a delivery platform (and simplify developer&#8217;s lives in the process).
I&#8217;ll admit that I&#8217;ve always had trouble with the Java plugin and Firefox on my old Windows XP SP2 desktop, Windows XP SP3 laptop and my Windows [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.kallasoft.com/wp-content/uploads/2008/12/javafx-logo.png"><img class="alignnone size-medium wp-image-655" style="float: left; margin-left: 8px; margin-right: 8px;" title="javafx-logo" src="http://www.kallasoft.com/wp-content/uploads/2008/12/javafx-logo.png" alt="" width="196" height="91" /></a>Please keep in mind I&#8217;m wearing my &#8220;Joe average user&#8221; hat that this platform is suppose to target as a delivery platform (and simplify developer&#8217;s lives in the process).</p>
<p>I&#8217;ll admit that I&#8217;ve <em>always</em> had trouble with the Java plugin and Firefox on my old Windows XP SP2 desktop, Windows XP SP3 laptop and my Windows Vista SP1 desktop; for some reason, usually after a Firefox update the plugin will crap out and stop loading whenever I go to a page with an Applet.</p>
<p>Working with JDK 1.6.0_10 was no different.</p>
<p>Here&#8217;s a bit of info about my system:</p>
<ul>
<li>Windows Vista &#8211; SP1</li>
<li>JDK 1.6.0_10 w/ Browser Plugin set as Default for all Browsers</li>
<li>Internet Explorer 7 (latest)</li>
<li>Firefox 3 (latest)</li>
<li>Chrome (latest)</li>
</ul>
<h3>My Experience</h3>
<p>When I visited the new <a href="http://www.javafx.com">JavaFX homepage</a> with both Firefox and IE, I got the two following results:</p>
<table border="0" align="center">
<tbody>
<tr>
<td><a href="http://www.kallasoft.com/wp-content/uploads/2008/12/javafx-firefox-no-video-player.png"><img class="alignnone size-thumbnail wp-image-656" title="javafx-firefox-no-video-player" src="http://www.kallasoft.com/wp-content/uploads/2008/12/javafx-firefox-no-video-player.png" alt="" width="150" height="80" /></a></td>
<td><a href="http://www.kallasoft.com/wp-content/uploads/2008/12/javafx-internet-explorer-video-player.png"><img class="alignnone size-thumbnail wp-image-657" title="javafx-internet-explorer-video-player" src="http://www.kallasoft.com/wp-content/uploads/2008/12/javafx-internet-explorer-video-player.png" alt="" width="150" height="84" /></a></td>
</tr>
</tbody>
</table>
<p>&#8230; more specifically, in Firefox the video player (<em>com.sun.mediaplayer.MediaPlayerApplet</em> from <em>mediaplayer.jar</em>) did not load. On IE it loaded, but I sat and watched the spinning loading animation for about 20 secs:</p>
<p style="text-align: center;"><a href="http://www.kallasoft.com/wp-content/uploads/2008/12/java-plugin-loading-splash.png"><img class="size-medium wp-image-658 aligncenter" title="java-plugin-loading-splash" src="http://www.kallasoft.com/wp-content/uploads/2008/12/java-plugin-loading-splash.png" alt="" width="475" height="276" /></a></p>
<p>and then another 8 secs of the actual media player loading (what I guess was the stream buffering) before the video started playing:</p>
<p style="text-align: center;"><a href="http://www.kallasoft.com/wp-content/uploads/2008/12/javafx-media-player-loading.png"><img class="size-medium wp-image-659 aligncenter" title="javafx-media-player-loading" src="http://www.kallasoft.com/wp-content/uploads/2008/12/javafx-media-player-loading.png" alt="" width="475" height="275" /></a></p>
<p>Seriously?</p>
<p>How many people would use <a href="http://www.youtube.com">YouTube</a>, <a href="http://www.vimeo.com">Vimeo</a>, <a href="http://www.break.com">Break</a>, etc. if every single time you visited a page you were faced with that type of loading experience?</p>
<p>Just to make sure, I hit Refresh on the page to see if it would come up instantly&#8230; and still no luck. The first Plugin splash screen spun for 9 secs that second time and then the buffering screen for another 4 before playing.</p>
<p>{smartads}</p>
<p>I have no idea how Flash avoids these long load times OR why it keeps working in my browsers&#8230; all my browsers&#8230; after an update and the Java plugin cannot. But I shouldn&#8217;t have to know this stuff &#8212; I should be given a fluid development and deployment platform to target my applications for and Sun hasn&#8217;t been able to do that for me with Java on the Desktop, Java WebStart or Java Applets &#8212; why is JavaFX any different?</p>
<p><strong>NOTE</strong>: <em>There is probably a Flash ad displaying on the left right here&#8230; you didn&#8217;t notice the page load delay because of it did you? You probably would have if that were JavaFX.</em></p>
<p>This was the entire reason Applets failed &#8212; slow load times. When you got to a page with an Applet on it back in the day, your computer locked up and ground to a halt. We complained about it for 12 years until we got the Java-at-boot-time service with JDK 1.6.0_10 and the rewritten browser plugin. What I&#8217;m seeing is a <em>much reduced</em> pause time compared to previous Java/Applet experience, but <strong>still not as fast as Flash</strong>.</p>
<p>It&#8217;s almost like Sun is content competing with itself (e.g. &#8220;We are 810% faster than previous Applet loads!&#8221;), which is awesome assuming anyone cared about the previous benchmark, and no one does; they&#8217;ve all moved onto Flash or JavaScript.</p>
<p>So instead of benchmarking and designing against the current preffered solutions, we are still getting sub-par deliverables when it comes to performance.</p>
<h3>But, But, But&#8230;</h3>
<p>I know, I&#8217;m going to get hate-comments for this. I&#8217;m sure Java 7.0 has additional enhancements planned, and the tooling support from NetBeans may be quite nice in the upcoming future &#8212; I&#8217;ll hold off absolute judgement until then. All I&#8217;m saying, is that with JavaFX 1.0, the user-experience from my end is not much different than Applets before it&#8230; I&#8217;m still not enticed to deploy a product on this platform. Is <em>this</em> the best Sun can give me as far as a product-platform goes?</p>
<p>Also, how come the <a href="http://www.javafx.com/samples/">Sample Gallery</a> is all written using AJAX and the individual sample pages (e.g. <a href="http://www.javafx.com/samples/BrickBreaker/index.html">BrickBreaker</a>) all require the samples fire off using WebStart? Did anyone else expect this to be done with JavaFX Applets besides me?</p>
<p><strong>NOTE</strong>: <em>These are some of the nicest example app/source code samplings I&#8217;ve seen for an API, I&#8217;m not knocking that quality.</em></p>
<h3>Closing Thoughts&#8230;</h3>
<p>It&#8217;s about two things:</p>
<ul>
<li>Convenience (for the user primarily and the developer secondarily)</li>
<li>Performance</li>
</ul>
<p>It&#8217;s <strong>always</strong> been about those two things. Unfortunately JavaScript and Flash dominated the first point and caught up with the second point (with JavaScript getting huge boosts with <a href="http://www.breakitdownblog.com/tracing-javascript-engine-coming-in-firefox-3-could-give-20-40x-performance-boost-in-some-scenarios/">JavaScript VM work going on</a>) while Java missed the first point for 10 years, and got about 80% of the way in the second point only this year &#8212; while the 1st point still isn&#8217;t totally solved with the JDK 1.6.0_10 release &#8212; there are still plugin/browser problems and you cannot begin to compare the &#8220;convenience&#8221; and widespread deployment of JavaScript engines or Flash to Java.</p>
<p>These are the reasons I&#8217;m not excited.</p>
<p>If JavaFX had shown me <em>either</em> of the following:</p>
<ul>
<li>Drop-dead-easy plugin installation in all browsers</li>
<li>Flash-like performance with seemingly instant-app-loading</li>
</ul>
<p>I would have been excited&#8230;  I haven&#8217;t seen either of those things yet. It really seems like JavaFX is a reboot of a failed paradigm/technology: The Applet. That didn&#8217;t work in the past, is it really going to work now?</p>
<h3>Success Obviously Still on the Table</h3>
<p>There is obviously still a possibility that JavaFX comes through (otherwise Sun wouldn&#8217;t be pouring so much into it), these are the hot-ticket items I see dragging it from the realm of &#8220;Applet 2.0&#8243; into the realm of &#8220;Alternative to Flash&#8221;:</p>
<ul>
<li>Resilient Plugin &#8211; Stays hooked into your browser as well as Flash</li>
<li>Performance Boost &#8211; Besides an ignorable pause, loads up with the page the first time, and no perceivable wait on subsequent JavaFX-enabled-page views (just copy Flash here&#8230; go look at YouTube)</li>
<li>Visual Designers &#8211; Not sure what NetBeans plan is here, but this will be a must.</li>
<li>Simplified Deployment Creation &#8211; Again, on NetBeans&#8217;s plate and not sure what is planned here.</li>
</ul>
<p>Those items are in order of importance. You could have the best developer tools <em>in the world</em>, but if your end-user experience is still iffy, companies aren&#8217;t going to buy in, etc. etc.</p>
<img src="http://www.kallasoft.com/?ak_action=api_record_view&id=654&type=feed" alt="" /><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/kallasoft?a=YuxfZDcHit0:ndjky1_B8aI:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=YuxfZDcHit0:ndjky1_B8aI:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=YuxfZDcHit0:ndjky1_B8aI:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/kallasoft?i=YuxfZDcHit0:ndjky1_B8aI:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=YuxfZDcHit0:ndjky1_B8aI:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=YuxfZDcHit0:ndjky1_B8aI:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/kallasoft?i=YuxfZDcHit0:ndjky1_B8aI:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=YuxfZDcHit0:ndjky1_B8aI:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=YuxfZDcHit0:ndjky1_B8aI:KwTdNBX3Jqk"><img src="http://feeds.feedburner.com/~ff/kallasoft?i=YuxfZDcHit0:ndjky1_B8aI:KwTdNBX3Jqk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=YuxfZDcHit0:ndjky1_B8aI:l6gmwiTKsz0"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=l6gmwiTKsz0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=YuxfZDcHit0:ndjky1_B8aI:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/kallasoft?i=YuxfZDcHit0:ndjky1_B8aI:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=YuxfZDcHit0:ndjky1_B8aI:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=TzevzKxY174" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/kallasoft/~4/YuxfZDcHit0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.kallasoft.com/jaxafx-10-released-not-a-great-first-user-experience/feed/</wfw:commentRss>
		<slash:comments>21</slash:comments>
		<feedburner:origLink>http://www.kallasoft.com/jaxafx-10-released-not-a-great-first-user-experience/</feedburner:origLink></item>
		<item>
		<title>Programming a Simple Client/Server Application with Ruby</title>
		<link>http://feedproxy.google.com/~r/kallasoft/~3/iMBhKQp1x3k/</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[OS]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Servers]]></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>
<img src="http://www.kallasoft.com/?ak_action=api_record_view&id=636&type=feed" alt="" /><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/kallasoft?a=iMBhKQp1x3k:NpA7Plyqyj8:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=iMBhKQp1x3k:NpA7Plyqyj8:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=iMBhKQp1x3k:NpA7Plyqyj8:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/kallasoft?i=iMBhKQp1x3k:NpA7Plyqyj8:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=iMBhKQp1x3k:NpA7Plyqyj8:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=iMBhKQp1x3k:NpA7Plyqyj8:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/kallasoft?i=iMBhKQp1x3k:NpA7Plyqyj8:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=iMBhKQp1x3k:NpA7Plyqyj8:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=iMBhKQp1x3k:NpA7Plyqyj8:KwTdNBX3Jqk"><img src="http://feeds.feedburner.com/~ff/kallasoft?i=iMBhKQp1x3k:NpA7Plyqyj8:KwTdNBX3Jqk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=iMBhKQp1x3k:NpA7Plyqyj8:l6gmwiTKsz0"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=l6gmwiTKsz0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=iMBhKQp1x3k:NpA7Plyqyj8:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/kallasoft?i=iMBhKQp1x3k:NpA7Plyqyj8:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=iMBhKQp1x3k:NpA7Plyqyj8:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=TzevzKxY174" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/kallasoft/~4/iMBhKQp1x3k" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.kallasoft.com/programming-a-simple-clientserver-with-ruby/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		<feedburner:origLink>http://www.kallasoft.com/programming-a-simple-clientserver-with-ruby/</feedburner:origLink></item>
		<item>
		<title>Floola as iPod Management Software</title>
		<link>http://feedproxy.google.com/~r/kallasoft/~3/D4ZlUe4OI_g/</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>
<img src="http://www.kallasoft.com/?ak_action=api_record_view&id=546&type=feed" alt="" /><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/kallasoft?a=D4ZlUe4OI_g:19nnKy37wxc:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=D4ZlUe4OI_g:19nnKy37wxc:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=D4ZlUe4OI_g:19nnKy37wxc:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/kallasoft?i=D4ZlUe4OI_g:19nnKy37wxc:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=D4ZlUe4OI_g:19nnKy37wxc:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=D4ZlUe4OI_g:19nnKy37wxc:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/kallasoft?i=D4ZlUe4OI_g:19nnKy37wxc:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=D4ZlUe4OI_g:19nnKy37wxc:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=D4ZlUe4OI_g:19nnKy37wxc:KwTdNBX3Jqk"><img src="http://feeds.feedburner.com/~ff/kallasoft?i=D4ZlUe4OI_g:19nnKy37wxc:KwTdNBX3Jqk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=D4ZlUe4OI_g:19nnKy37wxc:l6gmwiTKsz0"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=l6gmwiTKsz0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=D4ZlUe4OI_g:19nnKy37wxc:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/kallasoft?i=D4ZlUe4OI_g:19nnKy37wxc:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=D4ZlUe4OI_g:19nnKy37wxc:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=TzevzKxY174" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/kallasoft/~4/D4ZlUe4OI_g" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.kallasoft.com/floola-as-ipod-management-software/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://www.kallasoft.com/floola-as-ipod-management-software/</feedburner:origLink></item>
		<item>
		<title>AjaXplorer: a Web-based File Manager</title>
		<link>http://feedproxy.google.com/~r/kallasoft/~3/uqtK9_gqoIA/</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 width="150" height="96" src="http://www.kallasoft.com/wp-content/uploads/2008/11/ajaxplorer-firefox.png" class="attachment-thumbnail" alt="" title="AjaXplorer View in Firefox on Ubuntu 8.10" /></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 width="150" height="148" src="http://www.kallasoft.com/wp-content/uploads/2008/11/ajaxplorer-about-small.png" class="attachment-thumbnail" alt="" title="About AjaXplorer View in Firefox on Ubuntu 8.10" /></a>
<a href='http://www.kallasoft.com/ajaxplorer-a-web-based-file-manager/mac-admin-repository/' title='AjaXplorer Admin Repository View in Safari'><img width="150" height="96" src="http://www.kallasoft.com/wp-content/uploads/2008/11/mac-admin-repository.png" class="attachment-thumbnail" alt="" title="AjaXplorer Admin Repository View in Safari" /></a>
<a href='http://www.kallasoft.com/ajaxplorer-a-web-based-file-manager/mac-admin-screenshot/' title='AjaXplorer Admin Screenshot in Safari'><img width="150" height="96" src="http://www.kallasoft.com/wp-content/uploads/2008/11/mac-admin-screenshot.png" class="attachment-thumbnail" alt="" title="AjaXplorer Admin Screenshot in Safari" /></a>
<a href='http://www.kallasoft.com/ajaxplorer-a-web-based-file-manager/mac-camino-filebrowser/' title='AjaXplorer Filebrowser View in Camino'><img width="150" height="94" src="http://www.kallasoft.com/wp-content/uploads/2008/11/mac-camino-filebrowser.png" class="attachment-thumbnail" alt="" title="AjaXplorer Filebrowser View in Camino" /></a>
<a href='http://www.kallasoft.com/ajaxplorer-a-web-based-file-manager/mac-camino-repository/' title='AjaXplorer Repository View in Camino'><img width="150" height="94" src="http://www.kallasoft.com/wp-content/uploads/2008/11/mac-camino-repository.png" class="attachment-thumbnail" alt="" title="AjaXplorer Repository View in Camino" /></a>
<a href='http://www.kallasoft.com/ajaxplorer-a-web-based-file-manager/mac-camino-users/' title='AjaXplorer Users View'><img width="150" height="94" src="http://www.kallasoft.com/wp-content/uploads/2008/11/mac-camino-users.png" class="attachment-thumbnail" alt="" title="AjaXplorer Users View" /></a>
<a href='http://www.kallasoft.com/ajaxplorer-a-web-based-file-manager/mac-camino-view-larger/' title='AjaXplorer View File in Camino'><img width="150" height="94" src="http://www.kallasoft.com/wp-content/uploads/2008/11/mac-camino-view-larger.png" class="attachment-thumbnail" alt="" title="AjaXplorer View File in Camino" /></a>
<a href='http://www.kallasoft.com/ajaxplorer-a-web-based-file-manager/mysql-connection/' title='mysql-connection'><img width="150" height="107" src="http://www.kallasoft.com/wp-content/uploads/2008/11/mysql-connection.png" class="attachment-thumbnail" alt="" title="mysql-connection" /></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>
<img src="http://www.kallasoft.com/?ak_action=api_record_view&id=603&type=feed" alt="" /><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/kallasoft?a=uqtK9_gqoIA:sKhyLKhmPdw:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=uqtK9_gqoIA:sKhyLKhmPdw:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=uqtK9_gqoIA:sKhyLKhmPdw:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/kallasoft?i=uqtK9_gqoIA:sKhyLKhmPdw:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=uqtK9_gqoIA:sKhyLKhmPdw:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=uqtK9_gqoIA:sKhyLKhmPdw:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/kallasoft?i=uqtK9_gqoIA:sKhyLKhmPdw:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=uqtK9_gqoIA:sKhyLKhmPdw:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=uqtK9_gqoIA:sKhyLKhmPdw:KwTdNBX3Jqk"><img src="http://feeds.feedburner.com/~ff/kallasoft?i=uqtK9_gqoIA:sKhyLKhmPdw:KwTdNBX3Jqk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=uqtK9_gqoIA:sKhyLKhmPdw:l6gmwiTKsz0"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=l6gmwiTKsz0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=uqtK9_gqoIA:sKhyLKhmPdw:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/kallasoft?i=uqtK9_gqoIA:sKhyLKhmPdw:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=uqtK9_gqoIA:sKhyLKhmPdw:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=TzevzKxY174" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/kallasoft/~4/uqtK9_gqoIA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.kallasoft.com/ajaxplorer-a-web-based-file-manager/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.kallasoft.com/ajaxplorer-a-web-based-file-manager/</feedburner:origLink></item>
		<item>
		<title>ClamTk 4.04 – A GUI Front End for ClamAV – Released</title>
		<link>http://feedproxy.google.com/~r/kallasoft/~3/4euXl1u_d74/</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[OS]]></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>
<img src="http://www.kallasoft.com/?ak_action=api_record_view&id=576&type=feed" alt="" /><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/kallasoft?a=4euXl1u_d74:0SiO9noUY-k:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=4euXl1u_d74:0SiO9noUY-k:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=4euXl1u_d74:0SiO9noUY-k:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/kallasoft?i=4euXl1u_d74:0SiO9noUY-k:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=4euXl1u_d74:0SiO9noUY-k:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=4euXl1u_d74:0SiO9noUY-k:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/kallasoft?i=4euXl1u_d74:0SiO9noUY-k:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=4euXl1u_d74:0SiO9noUY-k:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=4euXl1u_d74:0SiO9noUY-k:KwTdNBX3Jqk"><img src="http://feeds.feedburner.com/~ff/kallasoft?i=4euXl1u_d74:0SiO9noUY-k:KwTdNBX3Jqk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=4euXl1u_d74:0SiO9noUY-k:l6gmwiTKsz0"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=l6gmwiTKsz0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=4euXl1u_d74:0SiO9noUY-k:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/kallasoft?i=4euXl1u_d74:0SiO9noUY-k:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=4euXl1u_d74:0SiO9noUY-k:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=TzevzKxY174" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/kallasoft/~4/4euXl1u_d74" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.kallasoft.com/clamtk-404-a-gui-front-end-for-clamav-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.kallasoft.com/clamtk-404-a-gui-front-end-for-clamav-released/</feedburner:origLink></item>
		<item>
		<title>How to Setup an SVN Server to use in Eclipse</title>
		<link>http://feedproxy.google.com/~r/kallasoft/~3/aOz8Es-gyNA/</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[Programming]]></category>
		<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[how to]]></category>
		<category><![CDATA[plugin]]></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>
<img src="http://www.kallasoft.com/?ak_action=api_record_view&id=557&type=feed" alt="" /><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/kallasoft?a=aOz8Es-gyNA:hR4Ki9Hmn-Y:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=aOz8Es-gyNA:hR4Ki9Hmn-Y:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=aOz8Es-gyNA:hR4Ki9Hmn-Y:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/kallasoft?i=aOz8Es-gyNA:hR4Ki9Hmn-Y:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=aOz8Es-gyNA:hR4Ki9Hmn-Y:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=aOz8Es-gyNA:hR4Ki9Hmn-Y:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/kallasoft?i=aOz8Es-gyNA:hR4Ki9Hmn-Y:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=aOz8Es-gyNA:hR4Ki9Hmn-Y:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=aOz8Es-gyNA:hR4Ki9Hmn-Y:KwTdNBX3Jqk"><img src="http://feeds.feedburner.com/~ff/kallasoft?i=aOz8Es-gyNA:hR4Ki9Hmn-Y:KwTdNBX3Jqk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=aOz8Es-gyNA:hR4Ki9Hmn-Y:l6gmwiTKsz0"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=l6gmwiTKsz0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=aOz8Es-gyNA:hR4Ki9Hmn-Y:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/kallasoft?i=aOz8Es-gyNA:hR4Ki9Hmn-Y:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=aOz8Es-gyNA:hR4Ki9Hmn-Y:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=TzevzKxY174" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/kallasoft/~4/aOz8Es-gyNA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.kallasoft.com/how-to-setup-an-svn-server-to-use-in-eclipse/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.kallasoft.com/how-to-setup-an-svn-server-to-use-in-eclipse/</feedburner:origLink></item>
		<item>
		<title>Using host.allow and hosts.deny for Quick Network Security</title>
		<link>http://feedproxy.google.com/~r/kallasoft/~3/fQJ13l0KlK0/</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>
<img src="http://www.kallasoft.com/?ak_action=api_record_view&id=533&type=feed" alt="" /><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/kallasoft?a=fQJ13l0KlK0:K9RwL4WJffw:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=fQJ13l0KlK0:K9RwL4WJffw:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=fQJ13l0KlK0:K9RwL4WJffw:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/kallasoft?i=fQJ13l0KlK0:K9RwL4WJffw:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=fQJ13l0KlK0:K9RwL4WJffw:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=fQJ13l0KlK0:K9RwL4WJffw:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/kallasoft?i=fQJ13l0KlK0:K9RwL4WJffw:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=fQJ13l0KlK0:K9RwL4WJffw:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=fQJ13l0KlK0:K9RwL4WJffw:KwTdNBX3Jqk"><img src="http://feeds.feedburner.com/~ff/kallasoft?i=fQJ13l0KlK0:K9RwL4WJffw:KwTdNBX3Jqk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=fQJ13l0KlK0:K9RwL4WJffw:l6gmwiTKsz0"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=l6gmwiTKsz0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=fQJ13l0KlK0:K9RwL4WJffw:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/kallasoft?i=fQJ13l0KlK0:K9RwL4WJffw:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=fQJ13l0KlK0:K9RwL4WJffw:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=TzevzKxY174" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/kallasoft/~4/fQJ13l0KlK0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.kallasoft.com/using-hostallow-and-hostsdeny-for-quick-security/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.kallasoft.com/using-hostallow-and-hostsdeny-for-quick-security/</feedburner:origLink></item>
		<item>
		<title>Sockso Personal Music Server</title>
		<link>http://feedproxy.google.com/~r/kallasoft/~3/oQ6vMI3eWHc/</link>
		<comments>http://www.kallasoft.com/sockso-personal-music-server/#comments</comments>
		<pubDate>Thu, 06 Nov 2008 13:44:51 +0000</pubDate>
		<dc:creator>Ray Gomez</dc:creator>
				<category><![CDATA[Servers]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[media server]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[server]]></category>
		<category><![CDATA[service]]></category>
		<category><![CDATA[Sockso]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[streaming music]]></category>

		<guid isPermaLink="false">http://www.kallasoft.com/?p=522</guid>
		<description><![CDATA[
If you have ever wanted to have access to your personal music collection from anywhere on the road Sockso Personal Music Server just might be the answer you were looking for. All that is required for the installation is Java and a Windows, Linux, or Mac box to run the server on. The software has [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://www.kallasoft.com/wp-content/uploads/2008/11/socksoplayer.png"><img class="aligncenter size-medium wp-image-527" title="Sockso player" src="http://www.kallasoft.com/wp-content/uploads/2008/11/socksoplayer.png" alt="" width="315" height="244" /></a></p>
<p>If you have ever wanted to have access to your personal music collection from anywhere on the road <a href="http://sockso.pu-gh.com/">Sockso Personal Music Server</a> just might be the answer you were looking for. All that is required for the installation is Java and a Windows, Linux, or Mac box to run the server on. The software has both a GUI for controlling the server, and a web interface for accessing your music remotely.  The software seems pretty robust, and is incredibly easy to set up.  Inside the zip file there is a batch file for double-clickability in Windows, a shell script that needs to be made executable for Linux or Unix, and an executable Jar for double-clickability in Mac OS X.</p>
<p>Both the web and server gui interfaces are pretty straight forward, and have quite a few features.  The server gui allows you to add Collections of music, create playlists, restricting access to users or to features like uploading music, and it even gives you the ability to specify an encoder for re-encoding your music for slower connections or for compatibility.</p>
<p style="text-align: center;"><a href="http://www.kallasoft.com/wp-content/uploads/2008/11/socksowindows.png"><img class="size-medium wp-image-526 aligncenter" title="Sockso Running in Windows" src="http://www.kallasoft.com/wp-content/uploads/2008/11/socksowindows.png" alt="" width="450" height="320" /></a></p>
<p>The web interface can be seen below with the Sockso flash player along with a view of the Sockso server gui in Linux, and a custom playlist.</p>

<a href='http://www.kallasoft.com/sockso-personal-music-server/sockso-with-playlist/' title='Sockso with Playlist'><img width="150" height="107" src="http://www.kallasoft.com/wp-content/uploads/2008/11/sockso-with-playlist.png" class="attachment-thumbnail" alt="" title="Sockso with Playlist" /></a>
<a href='http://www.kallasoft.com/sockso-personal-music-server/socksoplayer/' title='Sockso player'><img width="150" height="116" src="http://www.kallasoft.com/wp-content/uploads/2008/11/socksoplayer.png" class="attachment-thumbnail" alt="" title="Sockso player" /></a>
<a href='http://www.kallasoft.com/sockso-personal-music-server/socksowindows/' title='Sockso Running in Windows'><img width="150" height="106" src="http://www.kallasoft.com/wp-content/uploads/2008/11/socksowindows.png" class="attachment-thumbnail" alt="" title="Sockso Running in Windows" /></a>
<a href='http://www.kallasoft.com/sockso-personal-music-server/socksolinux/' title='socksolinux'><img width="150" height="84" src="http://www.kallasoft.com/wp-content/uploads/2008/11/socksolinux.png" class="attachment-thumbnail" alt="" title="socksolinux" /></a>

<p style="text-align: left;">If you&#8217;ve ever wanted a quick, easy way to setup a music server, or to just be able to have access to your personal music collection while on the road, Sockso might be a solution worth looking into.  It is lightweight, multi platform, and easy to use.  Just be sure to forward port 4444 from your router to your Sockso server, start up Sockso and you are good to go.  I haven&#8217;t seen an easier Open Source and multiplatform solution yet!</p>
<p style="text-align: left;">Check it out and let us know what you think!</p>
<img src="http://www.kallasoft.com/?ak_action=api_record_view&id=522&type=feed" alt="" /><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/kallasoft?a=oQ6vMI3eWHc:xT85OvhgcDU:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=oQ6vMI3eWHc:xT85OvhgcDU:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=oQ6vMI3eWHc:xT85OvhgcDU:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/kallasoft?i=oQ6vMI3eWHc:xT85OvhgcDU:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=oQ6vMI3eWHc:xT85OvhgcDU:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=oQ6vMI3eWHc:xT85OvhgcDU:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/kallasoft?i=oQ6vMI3eWHc:xT85OvhgcDU:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=oQ6vMI3eWHc:xT85OvhgcDU:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=oQ6vMI3eWHc:xT85OvhgcDU:KwTdNBX3Jqk"><img src="http://feeds.feedburner.com/~ff/kallasoft?i=oQ6vMI3eWHc:xT85OvhgcDU:KwTdNBX3Jqk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=oQ6vMI3eWHc:xT85OvhgcDU:l6gmwiTKsz0"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=l6gmwiTKsz0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=oQ6vMI3eWHc:xT85OvhgcDU:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/kallasoft?i=oQ6vMI3eWHc:xT85OvhgcDU:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/kallasoft?a=oQ6vMI3eWHc:xT85OvhgcDU:TzevzKxY174"><img src="http://feeds.feedburner.com/~ff/kallasoft?d=TzevzKxY174" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/kallasoft/~4/oQ6vMI3eWHc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.kallasoft.com/sockso-personal-music-server/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.kallasoft.com/sockso-personal-music-server/</feedburner:origLink></item>
	</channel>
</rss><!-- Dynamic page generated in 0.756 seconds. --><!-- Cached page generated by WP-Super-Cache on 2009-07-08 21:44:03 -->
