<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Kevin&#039;s Blog &#187; Ubuntu Linux</title>
	<atom:link href="http://blog.lckymn.com/category/it/ubuntu-linux/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.lckymn.com</link>
	<description>IT, Java, Ubuntu, Linux</description>
	<lastBuildDate>Thu, 12 Jan 2012 05:48:59 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Catch-Up 01 May, 2010</title>
		<link>http://blog.lckymn.com/2010/05/01/catch-up-2010-05-01/</link>
		<comments>http://blog.lckymn.com/2010/05/01/catch-up-2010-05-01/#comments</comments>
		<pubDate>Fri, 30 Apr 2010 19:04:16 +0000</pubDate>
		<dc:creator>Kevin</dc:creator>
				<category><![CDATA[Fundamental]]></category>
		<category><![CDATA[IT]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Java Web Application Development]]></category>
		<category><![CDATA[Mine]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Spring Framework]]></category>
		<category><![CDATA[Ubuntu Linux]]></category>
		<category><![CDATA[Bug]]></category>
		<category><![CDATA[Continuous Integration]]></category>
		<category><![CDATA[equals]]></category>
		<category><![CDATA[hashCode]]></category>
		<category><![CDATA[Hudson]]></category>
		<category><![CDATA[Issue Tracking System]]></category>
		<category><![CDATA[Java Reflection]]></category>
		<category><![CDATA[javac]]></category>
		<category><![CDATA[JDK7]]></category>
		<category><![CDATA[Kevin]]></category>
		<category><![CDATA[M2Eclipse]]></category>
		<category><![CDATA[Maven]]></category>
		<category><![CDATA[Maven2]]></category>
		<category><![CDATA[Objects]]></category>
		<category><![CDATA[Reflection]]></category>
		<category><![CDATA[Sonatype]]></category>
		<category><![CDATA[Spring MVC]]></category>

		<guid isPermaLink="false">http://blog.lckymn.com/?p=496</guid>
		<description><![CDATA[<div class="txc-textbox" style="border: 3px solid rgb(243, 197, 52); padding: 10px; background-color: rgb(254, 254, 184);"> Some part of <a href="#3. Shadowing Declarations?">3. Bug in Java compiler?Shadowing Declarations?</a> is <a href="#update1-2010-05-10">updated</a> <a href="#update2-2010-05-10">twice</a> on the 10th of May in 2010. </div> <p>I have been very busy and am still busy so haven&#8217;t written anything for quite a while on my blog except for those entries with only one or two sentences. So I&#8217;m quickly writing what I do these days and some <p style="border: 3px solid rgb(243, 197, 52); padding: 5px; background-color: rgb(254, 254, 184); width: 600px; text-align: center;">[...Continue reading <a href="http://blog.lckymn.com/2010/05/01/catch-up-2010-05-01/">Catch-Up 01 May, 2010</a>...]</p>]]></description>
			<content:encoded><![CDATA[<div class="txc-textbox" style="border: 3px solid rgb(243, 197, 52); padding: 10px; background-color: rgb(254, 254, 184);">
Some part of <a href="#3. Shadowing Declarations?">3. <span style="text-decoration: line-through;"> Bug in Java compiler?</span>Shadowing Declarations?</a> is <a href="#update1-2010-05-10">updated</a> <a href="#update2-2010-05-10">twice</a> on the 10th of May in 2010.
</div>
<p>I have been very busy and am still busy so haven&#8217;t written anything for quite a while on my blog except for those entries with only one or two sentences. So I&#8217;m quickly writing what I do these days and some issues I have dealt with.</p>
<h3><a name="1. Issue with the new m2eclipse (version: 0.10.0.20100209-0800)">1. Issue with the new m2eclipse (version: 0.10.0.20100209-0800)</a></h3>
<p><a href="http://www.sonatype.com/">Sonatype</a> released the new version of <a href="http://m2eclipse.sonatype.org/">m2eclipse</a> in February 2010. Since I updated with it, I had got some problem with maven build through <a href="http://hudson-ci.org/">Hudson</a>.</p>
<p>The new version of m2eclipse comes with maven3 embedded yet my server uses maven2 so does my Linux on my Desktop PC.  So it was only m2eclipse which uses maven3 (SNAPSHOT version) and I deployed some of my libraries used in one web application development project. Problem was that I deployed the dependency libraries several times with the same version number. With maven2, it&#8217;s OK as it uses time-stamp to distinguish one version from another within the same version, yet with maven3, having the same version is not allowed. Well, I am not 100% sure about this as once I solved the problem I didn&#8217;t really check the details as I didn&#8217;t have enough time. Anyway, so as shown in the following image, the project status icon once became dark rain clouds which mean really bad.<br />
<div id="attachment_501" class="wp-caption alignnone" style="width: 530px"><a href="http://blog.lckymn.com/wp-content/uploads/2010/05/00_build_failure01.jpg"><img src="http://blog.lckymn.com/wp-content/uploads/2010/05/00_build_failure01.jpg" alt="Build Failure: Project status icon became dark rain clouds" title="00 build failure01" width="520" height="294" class="size-full wp-image-501" /></a><p class="wp-caption-text">Build Failure: Project status icon became dark rain clouds</p></div></p>
<p>My project build failed seven times due to the difference between maven2 and maven3 I described above, or it can be something else yet it is caused by some difference between those two versions.<br />
<div id="attachment_502" class="wp-caption alignnone" style="width: 336px"><a href="http://blog.lckymn.com/wp-content/uploads/2010/05/00_build_failure02.jpg"><img src="http://blog.lckymn.com/wp-content/uploads/2010/05/00_build_failure02.jpg" alt="Build Failure: It failed seven times due to the difference between maven2 and maven3" title="00 build failure02" width="326" height="446" class="size-full wp-image-502" /></a><p class="wp-caption-text">Build Failure: It failed seven times due to the difference between maven2 and maven3</p></div><br />
(It happened in February. The build number in the image is 108 but it is now 305).</p>
<p>So why did I not just keep the old version of m2eclipse with maven2 embedded? Well, the old one comes with some old version of maven2 which does not support <a href="http://maven.apache.org/guides/mini/guide-encryption.html">password encryption</a> while the maven2 on both my PC and my server does support it as it is a newer version. Thus I updated with the new m2eclipse as soon as it was available yet didn&#8217;t really expect that it comes with maven3. Anyway, It&#8217;s solved by using maven2 installed on my PC when deploying project packages. The other times such as solving dependencies and building package without deployment, I can still use the embedded maven3 in the new m2eclipse without any problems.</p>
<h3><a name="2. I have been working on...">2. I have been working on&#8230;</a></h3>
<p>I founded a start-up company with my friend a few months ago, and we are currently working on a web application development for our own start-up, but it is probably too premature to announce what it is as it&#8217;s still an early stage of development.<br />
The issues listed in the following image is a part of the issues I and my colleague have solved and been working on.<br />
<div id="attachment_503" class="wp-caption alignnone" style="width: 650px"><a href="http://blog.lckymn.com/wp-content/uploads/2010/05/01_issueTracking_00.jpg"><img src="http://blog.lckymn.com/wp-content/uploads/2010/05/01_issueTracking_00.jpg" alt="I&#039;m currently working on this project." title="01 Issue Tracking 00" width="640" height="477" class="size-full wp-image-503" /></a><p class="wp-caption-text">I'm currently working on this project.</p></div></p>
<p>In addition, I have been developing my own Java libraries which can be commonly used in many other projects (and my friend has also been developing reusable JavaScript libraries). However, I did not record all the issues belong to these reusable components and recently felt that I should do it before I go any further. Otherwise, I may later forget what problems I solved and how I did as well as all the issues covered previously. So I wrote all the tickets for those libraries.<br />
<div id="attachment_504" class="wp-caption alignnone" style="width: 650px"><a href="http://blog.lckymn.com/wp-content/uploads/2010/05/01_issueTracking_01.jpg"><img src="http://blog.lckymn.com/wp-content/uploads/2010/05/01_issueTracking_01.jpg" alt="Issues of commonly used libraries built by myself" title="01 Issue Tracking 01" width="640" height="335" class="size-full wp-image-504" /></a><p class="wp-caption-text">Issues of commonly used libraries built by myself</p></div></p>
<p>I&#8217;ve also been developing &#8216;Java object to JSON&#8217; library and did the same as what I just explained (that is creating issue tickets).  There are already a number of the libraries which convert Java object into <a href="http://json.org/">JSON</a> so why would I make another?  Well, there can be several reasons but major ones are</p>
<ol>
<li>I need it to convert any <a href="http://en.wikipedia.org/wiki/POJO">POJO</a> with only <a href="http://en.wikipedia.org/wiki/Java_annotation">annotations</a> into <a href="http://json.org/">JSON</a>.</li>
<li>It has to be simple as I do not want to have any complex functions or heavy library for a simple conversion (some libraries are too heavy for such a simple task).</li>
<li>When customisation is required or bug is found in the library, I want to be able to change and fix it however I want so that I do not have to waste my time on waiting for others to solve it.</li>
<li>I want it to work in some environments where using bytecode manipulation is not an option. So if I programme one with bytecode manipulation then it works faster when it&#8217;s available whereas the other one is without it so that it can be used in those enviornments (I currently have only the latter one and will do the former one when I have time later).</li>
</ol>
<p>The following issues are what I have solved for the Java to JSON library.<br />
<div id="attachment_505" class="wp-caption alignnone" style="width: 650px"><a href="http://blog.lckymn.com/wp-content/uploads/2010/05/01_issueTracking_02.jpg"><img src="http://blog.lckymn.com/wp-content/uploads/2010/05/01_issueTracking_02.jpg" alt="Issues of my Java object to JSON library" title="01 Issue Tracking 02" width="640" height="451" class="size-full wp-image-505" /></a><p class="wp-caption-text">Issues of my Java object to JSON library</p></div></p>
<p>Finally, I have another project to help Ajax enabled web application development. From my experience, I found that it is sharing the information about the available server-side functions with the client-side developers that causes the most waste of time between the front-end development and the back-end development.  The first time one function is made or whenever the existing ones are changed, I have to write or rewrite the document explaining it and the client-side developer has to find the changed parts in the document.  It is annoying and a non-productive moment in the development so I and my colleague discussed about this issue and came up with the idea of having a library which exposes all the available server-side functions to the front-end (It can understand Spring <code>@MVC</code> controllers).  For now, it has only this, yet I will add more features to help Ajax web application development.<br />
<div id="attachment_506" class="wp-caption alignnone" style="width: 650px"><a href="http://blog.lckymn.com/wp-content/uploads/2010/05/01_issueTracking_03.jpg"><img src="http://blog.lckymn.com/wp-content/uploads/2010/05/01_issueTracking_03.jpg" alt="Issues of my web method library" title="01 IssueTracking 03" width="640" height="146" class="size-full wp-image-506" /></a><p class="wp-caption-text">Issues of my web method library</p></div></p>
<p>* As I used more and more reflection to develop those libraries, I realised that Java Reflection has no method to get the names of method parameters. Well, there can be some ways for instance, using -g (generating debugging info) option when compiling or using some libraries such as <a href="http://asm.ow2.org/">ASM</a> or use <a href="http://paranamer.codehaus.org/">ParaNamer</a> (It requires an additional step when compiling to add the constants having the parameter names in the class) but not by just Java reflection.  Anyway, none of these is the solution I want, and unfortunately if I heard right, this problem will remain in JDK 7. <img src='http://blog.lckymn.com/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> </p>
<h3><a name ="3. Shadowing Declarations?">3. <span style="text-decoration: line-through;">Bug in Java compiler?</span> Shadowing Declarations?</a></h3>
<p>I created the Objects utility class based on <a href="http://download.java.net/jdk7/docs/api/java/util/Objects.html">http://download.java.net/jdk7/docs/api/java/util/Objects.html</a>. This will be available in JDK 7 yet I wanted to use it before JDK 7 is released so I made my own one. I can use it now, and it can easily be replaced by the one in JDK when it&#8217;s available.  <span style="text-decoration: line-through;">After I made it, I found some weird bug, I believe, in Java compiler.</span> After I used it, I had some problem and though it could be a bug in Java compiler yet <a href="#update2-2010-05-10">it looks like &#8216;shadowing declarations&#8217;.</a></p>
<p>This is the part of Objects class I coded.</p>
<pre class="brush: java; title: ; notranslate">
package com.lckymn.kevin.common.util;

/**
 * @author Lee, SeongHyun (Kevin)
 * @version 0.0.1 (2010-04-30)
 */
public final class Objects
{
    private Objects()
    {
        throw new IllegalStateException(getClass().getName() + &quot; cannot be instantiated.&quot;);
    }

    // other code omitted ...

    /**
     * Returns the hash code of a non-{@code null} argument and 0 for a {@code null} argument.
     *
     * @param o
     *            an object
     * @return the hash code of a non-{@code null} argument and 0 for a {@code null} argument
     * @see {@link Object#hashCode()}
     */
    public static int hashCode(final Object o)
    {
        return (null == o ? 0 : o.hashCode());
    }

    // other code omitted ...
}
</pre>
<p>The following code is a POJO in which I want to use the Objects.hashCode(Object) method.</p>
<pre class="brush: java; title: ; notranslate">
package com.lckymn.kevin.test.bean;

/**
 * @author Lee, SeongHyun (Kevin)
 * @version 0.0.1 (2010-04-30)
 */
public class SomePojo
{
    private final int number;
    private final String name;

    public SomePojo(int number, String name)
    {
        this.number = number;
        this.name = name;
    }

    public int getNumber()
    {
        return number;
    }

    public String getName()
    {
        return name;
    }

    @Override
    public int hashCode()
    {
        final int prime = 31;
        int result = 1;
        result = prime * result + number;
        result = prime * result + ((name == null) ? 0 : name.hashCode());
        return result;
    }

    @Override
    public boolean equals(Object obj)
    {
        if (this == obj)
        {
            return true;
        }
        if (!(obj instanceof SomePojo))
        {
            return false;
        }
        final SomePojo that = (SomePojo) obj;
        return (this.number == that.getNumber())
                &amp;&amp; (this.name == that.getName() ||
                        (null != this.name &amp;&amp; this.name.equals(that.getName())));
    }
}
</pre>
<p>So I changed this code snippet</p>
<pre class="brush: java; gutter: false; highlight: [7]; title: ; notranslate">
@Override
public int hashCode()
{
    final int prime = 31;
    int result = 1;
    result = prime * result + number;
    result = prime * result + ((name == null) ? 0 : name.hashCode());
    return result;
}
</pre>
<p>to this.</p>
<pre class="brush: java; gutter: false; highlight: [3,15]; title: ; notranslate">
package com.lckymn.kevin.test.bean;

import static com.lckymn.kevin.common.util.Objects.*;

public class SomePojo
{
    // ...

    @Override
    public int hashCode()
    {
        final int prime = 31;
        int result = 1;
        result = prime * result + number;
        result = prime * result + hashCode(name);
        return result;
    }
}
</pre>
<p>I used static import and hashCode(Object) method in the Objects class. Although, nothing&#8217;s wrong in the code, my Eclipse complains that there is a compile-time error. The following image shows that.<br />
<div id="attachment_511" class="wp-caption alignnone" style="width: 929px"><a href="http://blog.lckymn.com/wp-content/uploads/2010/05/02_objects_hashcode_01.jpg"><img src="http://blog.lckymn.com/wp-content/uploads/2010/05/02_objects_hashcode_01.jpg" alt="Objects.hashCode(Object) with static import does not work." title="02 Objects.hashCode 01" width="919" height="837" class="size-full wp-image-511" /></a><p class="wp-caption-text">Objects.hashCode(Object) with static import does not work.</p></div></p>
<p>Yet the same code with no-static import but using class name as the qualifier to use <code>hashCode(Object)</code> method works perfectly. The following code has <code>Objects.hashCode(name)</code> and no compile-time error.</p>
<pre class="brush: java; highlight: [36]; title: ; notranslate">
package com.lckymn.kevin.test.bean;

import com.lckymn.kevin.common.util.Objects;

/**
 * @author Lee, SeongHyun (Kevin)
 * @version 0.0.1 (2010-04-30)
 */
public class SomePojo
{
    private final int number;
    private final String name;

    public SomePojo(int number, String name)
    {
        this.number = number;
        this.name = name;
    }

    public int getNumber()
    {
        return number;
    }

    public String getName()
    {
        return name;
    }

    @Override
    public int hashCode()
    {
        final int prime = 31;
        int result = 1;
        result = prime * result + number;
        result = prime * result + Objects.hashCode(name);
        return result;
    }

    @Override
    public boolean equals(Object obj)
    {
        if (this == obj)
        {
            return true;
        }
        if (null == obj)
        {
            return false;
        }
        if (!(obj instanceof SomePojo))
        {
            return false;
        }
        final SomePojo that = (SomePojo) obj;
        return (this.number == that.getNumber())
                &amp;&amp; (this.name == that.getName() || (null != this.name &amp;&amp; this.name.equals(that.getName())));
    }
}
</pre>
<p>The following image shows it has no error in the part where <code>Objects.hashCode(Object)</code> is used..<br />
<div id="attachment_508" class="wp-caption alignnone" style="width: 515px"><a href="http://blog.lckymn.com/wp-content/uploads/2010/05/02_objects_hashcode_02.jpg"><img src="http://blog.lckymn.com/wp-content/uploads/2010/05/02_objects_hashcode_02.jpg" alt="Using Class as qualifier to use hashCode works." title="02 Objects.hashCode 02" width="505" height="622" class="size-full wp-image-508" /></a><p class="wp-caption-text">Using Class as qualifier to use hashCode works.</p></div></p>
<p>I wondered if it&#8217;s a bug in the Eclipse or a bug in the Java compiler. So I opened the terminal and tested it.</p>
<pre class="brush: bash; gutter: false; title: ; notranslate">
$ javac -version
javac 1.6.0_15

$ javac com/lckymn/kevin/test/bean/SomePojo.java
com/lckymn/kevin/test/bean/SomePojo.java:39: cannot find symbol
symbol  : method hashCode(java.lang.String)
location: class com.lckymn.kevin.test.bean.SomePojo
        result = prime * result + hashCode(name);
                                  ^
com/lckymn/kevin/test/bean/SomePojo.java:39: operator + cannot be applied to int,hashCode
        result = prime * result + hashCode(name);
                       ^
com/lckymn/kevin/test/bean/SomePojo.java:39: incompatible types
found   : &lt;nulltype&gt;
required: int
        result = prime * result + hashCode(name);
                                ^
3 errors
</pre>
<p>As it shows, the compiler does totally not understand that the hashCode(Object) method from the Objects class is available and valid.</p>
<p>Is a bug only in the SUN JDK in the Ubuntu Linux repository? So I tried with OpenJDK 6 as well.</p>
<pre class="brush: bash; gutter: false; title: ; notranslate">
$ /usr/lib/jvm/java-6-openjdk/bin/javac -version
javac 1.6.0_0

$ /usr/lib/jvm/java-6-openjdk/bin/javac com/lckymn/kevin/test/bean/SomePojo.java
com/lckymn/kevin/test/bean/SomePojo.java:39: cannot find symbol
symbol  : method hashCode(java.lang.String)
location: class com.lckymn.kevin.test.bean.SomePojo
        result = prime * result + hashCode(name);
                                  ^
com/lckymn/kevin/test/bean/SomePojo.java:39: operator + cannot be applied to int,hashCode
        result = prime * result + hashCode(name);
                       ^
com/lckymn/kevin/test/bean/SomePojo.java:39: incompatible types
found   : &lt;nulltype&gt;
required: int
        result = prime * result + hashCode(name);
                                ^
3 errors
</pre>
<p>The same result&#8230;</p>
<p>OK, it might be a bug in that particular version. Fortunately, the most recent version of SUN JDK 6 was released yesterday. It was officially released before (the 15th of April, 2010) yet the version managed by Ubuntu was not available before yesterday. So I installed it and tested it again with the Java compiler in the new JDK6.<br />
<div id="attachment_509" class="wp-caption alignnone" style="width: 622px"><a href="http://blog.lckymn.com/wp-content/uploads/2010/05/03_update_jdk.jpg"><img src="http://blog.lckymn.com/wp-content/uploads/2010/05/03_update_jdk.jpg" alt="New version of SUN JDK6 is available in the Ubuntu repository" title="03 Update JDK" width="612" height="640" class="size-full wp-image-509" /></a><p class="wp-caption-text">New version of SUN JDK6 is available in the Ubuntu repository</p></div></p>
<p>It still has the same problem.</p>
<pre class="brush: bash; gutter: false; title: ; notranslate">
$ javac -version
javac 1.6.0_20

$ javac com/lckymn/kevin/test/bean/SomePojo.java
com/lckymn/kevin/test/bean/SomePojo.java:39: cannot find symbol
symbol  : method hashCode(java.lang.String)
location: class com.lckymn.kevin.test.bean.SomePojo
        result = prime * result + hashCode(name);
                                  ^
com/lckymn/kevin/test/bean/SomePojo.java:39: operator + cannot be applied to int,hashCode
        result = prime * result + hashCode(name);
                       ^
com/lckymn/kevin/test/bean/SomePojo.java:39: incompatible types
found   : &lt;nulltype&gt;
required: int
        result = prime * result + hashCode(name);
                                ^
3 errors
</pre>
<p>I probably need to test with the Java compiler in the JDK6 for Windows but I have no stomach for that now nor do I have time to do that.</p>
<div class="txc-textbox" style="border: 3px solid rgb(243, 197, 52); padding: 10px; background-color: rgb(254, 254, 184);">
<a name="update1-2010-05-10">* Update1 (2010-05-10)</a><br />
I also tested it with the Java compiler in the JDK 6 (1.6.0_16) for Windows and got the same result. <span style="text-decoration: line-through">It seem like static import cannot handle method overloading. I didn&#8217;t have time to research to find the details but based on my testing, method overloading cannot be used with static import.<br />
If so then there should be a good reason for that, and the only one I can think of right now is that it might have something to do with varargs.</span><br />
Take a look at the following code.</p>
<pre class="brush: java; title: ; notranslate">
package com.lckymn.kevin.common.util;

public final class SomeHelper
{
    private SomeHelper()
    {
        throw new IllegalStateException(getClass().getName() + &quot; cannot be instantiated.&quot;);
    }

    public static void test(Object... object)
    {
        System.out.println(&quot;SomeHelper.test()&quot;);
    }
}
</pre>
<pre class="brush: java; highlight: [3,14,17]; title: ; notranslate">
package com.lckymn.kevin.test;

import static com.lckymn.kevin.common.util.SomeHelper.test;

public class Test
{
    public void test()
    {
        System.out.println(&quot;Test.test()&quot;);
    }

    public void callTest()
    {
        test();            // no error here.

        Object object = new Object();
        test(object);    // compile-time error
    }
}
</pre>
<p><span style="text-decoration: line-through">Since a method with varargs can take no argument when it&#8217;s called, Test.test() and SomeHelper.test(Object&#8230; object) can be indistinguishable with static import. This is, I think, probably one of the reasons why method overloading is not allowed with static import. Nevertheless, it is still very weird as calling test() does not cause any compile-time error while test(object) does.</span><br />
So the following code has no compile-time error and displays <code>Test.test()</code>.</p>
<pre class="brush: java; highlight: [3]; title: ; notranslate">
package com.lckymn.kevin.test;

import static com.lckymn.kevin.common.util.SomeHelper.test;

public class Test
{
    public void test()
    {
        System.out.println(&quot;Test.test()&quot;);
    }

    public void callTest()
    {
        test();    // static import of SomeHelper.test has no effect here.
    }

    public static void main(String[] args)
    {
        new Test().callTest();
        System.exit(0);
    }
}
</pre>
<p>It displays <code>Test.test()</code>.</p>
<p>What if the helper class has test() method with no arguments and the Test class has test() method with varargs then call <code>test()</code>? The same result! It still calls Test&#8217;s test() method with varargs (<code>Test.test(Object... object)</code>).</p>
<pre class="brush: java; highlight: [10]; title: ; notranslate">
package com.lckymn.kevin.common.util;

public final class SomeHelper
{
    private SomeHelper()
    {
        throw new IllegalStateException(getClass().getName() + &quot; cannot be instantiated.&quot;);
    }

    public static void test()
    {
        System.out.println(&quot;SomeHelper.test()&quot;);
    }
}
</pre>
<pre class="brush: java; highlight: [3,7]; title: ; notranslate">
package com.lckymn.kevin.test;

import static com.lckymn.kevin.common.util.SomeHelper.test;

public class Test
{
    public void test(Object... object)
    {
        System.out.println(&quot;Test.test(Object...object)&quot;);
    }

    public void callTest()
    {
        test(); // it calls the Test.test(Object... object) method NOT SomeHelper.test().
    }

    public static void main(String[] args)
    {
        new Test().callTest();
        System.exit(0);
    }
}
</pre>
<p>It displays <code>Test.test(Object...object)</code>
</div>
<div class="txc-textbox" style="border: 3px solid rgb(243, 197, 52); padding: 10px; background-color: rgb(254, 254, 184);">
<a name="update2-2010-05-10">Update2 (2010-05-10)</a><br />
It is more likely to be <a href="http://java.sun.com/docs/books/jls/third_edition/html/names.html#34133">&#8216;Shadowing Declarations&#8217;</a>. Although, I couldn&#8217;t find the exactly matching case from the <a href="http://java.sun.com/docs/books/jls/">JLS</a> yet, it makes more sense if the method imported by static-import is shadowed.
</div>
<h3><a name="4. Using Objects">4. Using Objects</a></h3>
<p>By the way, the Objects class is simple but very useful.<br />
with it, the highlighted parts of the following code can</p>
<pre class="brush: java; highlight: [53,54,55,56,57,72,73,74,75]; title: ; notranslate">
package com.lckymn.kevin.test.bean;

public class Bank
{
    private Long id;
    private String bankName;
    private String bsbNumber;
    private String address;

    public Long getId()
    {
        return id;
    }

    public void setId(Long id)
    {
        this.id = id;
    }

    public String getBankName()
    {
        return bankName;
    }

    public void setBankName(String bankName)
    {
        this.bankName = bankName;
    }

    public String getBsbNumber()
    {
        return bsbNumber;
    }

    public void setBsbNumber(String bsbNumber)
    {
        this.bsbNumber = bsbNumber;
    }

    public String getAddress()
    {
        return address;
    }

    public void setAddress(String address)
    {
        this.address = address;
    }

    @Override
    public int hashCode()
    {
        final int prime = 31;
        int result = 1;
        result = prime * result + ((bankName == null) ? 0 : bankName.hashCode());
        result = prime * result + ((bsbNumber == null) ? 0 : bsbNumber.hashCode());
        return result;
    }

    @Override
    public boolean equals(Object bank)
    {
        if (this == bank)
        {
            return true;
        }
        if (!(bank instanceof Bank))
        {
            return false;
        }
        final Bank that = (Bank) bank;
        return (this.bankName == that.getBankName() ||
               (null != this.bankName &amp;&amp; this.bankName.equals(that.getBankName())))
                &amp;&amp; (this.bsbNumber == that.getBsbNumber() ||
                   (null != this.bsbNumber &amp;&amp; this.bsbNumber.equals(that.getBsbNumber())));
    }
}
</pre>
<p>become like this</p>
<pre class="brush: java; highlight: [55,70,71]; title: ; notranslate">
package com.lckymn.kevin.test.bean;

import com.lckymn.kevin.common.util.Objects;

public class Bank
{
    private Long id;
    private String bankName;
    private String bsbNumber;
    private String address;

    public Long getId()
    {
        return id;
    }

    public void setId(Long id)
    {
        this.id = id;
    }

    public String getBankName()
    {
        return bankName;
    }

    public void setBankName(String bankName)
    {
        this.bankName = bankName;
    }

    public String getBsbNumber()
    {
        return bsbNumber;
    }

    public void setBsbNumber(String bsbNumber)
    {
        this.bsbNumber = bsbNumber;
    }

    public String getAddress()
    {
        return address;
    }

    public void setAddress(String address)
    {
        this.address = address;
    }

    @Override
    public int hashCode()
    {
        return Objects.hash(bankName, bankName);
    }

    @Override
    public boolean equals(Object bank)
    {
        if (this == bank)
        {
            return true;
        }
        if (!(bank instanceof Bank))
        {
            return false;
        }
        final Bank that = (Bank) bank;
        return Objects.equals(this.bankName, that.getBankName())
               &amp;&amp; Objects.equals(this.bsbNumber, that.getBsbNumber());
    }
}
</pre>
<p>So these five lines in the hashCode method</p>
<pre class="brush: java; gutter: false; title: ; notranslate">
final int prime = 31;
int result = 1;
result = prime * result + ((bankName == null) ? 0 : bankName.hashCode());
result = prime * result + ((bsbNumber == null) ? 0 : bsbNumber.hashCode());
return result;
</pre>
<p>become</p>
<pre class="brush: java; gutter: false; title: ; notranslate">
return Objects.hash(bankName, bankName);
</pre>
<p>and these four lines in the equals method</p>
<pre class="brush: java; gutter: false; title: ; notranslate">
return (this.bankName == that.getBankName() ||
       (null != this.bankName &amp;&amp; this.bankName.equals(that.getBankName())))
        &amp;&amp; (this.bsbNumber == that.getBsbNumber() ||
           (null != this.bsbNumber &amp;&amp; this.bsbNumber.equals(that.getBsbNumber())));
</pre>
<p>become</p>
<pre class="brush: java; gutter: false; title: ; notranslate">
return Objects.equals(this.bankName, that.getBankName())
       &amp;&amp; Objects.equals(this.bsbNumber, that.getBsbNumber());
</pre>
<p>Although one might say that I can use <a href="http://projectlombok.org/">Lombok</a> instead, I prefer to see what is going on in my code. Those hashCode and equals methods are not additional info of the class. It tells what makes instances of the class equal thus I prefer to have it in there to see and want to freely change it whenever and however I want. Well, in other words, just a matter of personal preference. <img src='http://blog.lckymn.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
That&#8217;s it.<br />
I perhaps have more to say yet am getting tired (4:55 AM :O). So I&#8217;m calling it a night. <img src='http://blog.lckymn.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.lckymn.com/2010/05/01/catch-up-2010-05-01/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Eclipse &#8211; &#8220;Too many open files&#8221; Problem</title>
		<link>http://blog.lckymn.com/2009/08/11/eclipse-too-many-open-files-problem/</link>
		<comments>http://blog.lckymn.com/2009/08/11/eclipse-too-many-open-files-problem/#comments</comments>
		<pubDate>Tue, 11 Aug 2009 07:39:39 +0000</pubDate>
		<dc:creator>Kevin</dc:creator>
				<category><![CDATA[Development Tools]]></category>
		<category><![CDATA[IT]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Ubuntu Linux]]></category>
		<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[Eclipse Ganymede]]></category>
		<category><![CDATA[Error]]></category>
		<category><![CDATA[Ganymede]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Problem]]></category>
		<category><![CDATA[Too many open files]]></category>

		<guid isPermaLink="false">http://blog.lckymn.com/?p=365</guid>
		<description><![CDATA[<p>If your OS is Linux and you are using Eclipse, you might possibly see the following error messages or similar after installing lots of plug-ins in Eclipse. In my case, it usually happened after installing <a href="http://www.eclipse.org/tptp/" target="_blank">TPTP</a> (I&#8217;m using Ubuntu Linux 9.04 Jaunty Jackalope Desktop 64bit by the way).</p> Plug-in org.eclipse.jst.server.tomcat.core was unable to load class org.eclipse.jst.server.tomcat.core.internal.TomcatLaunchConfigurationDelegate. /eclipse_installed_path/eclipse/configuration/org.eclipse.osgi/.lazy.15 (Too many open files) <p>or</p> Problems occurred while trying to save the state of the workbench. Could not read master table. <p style="border: 3px solid rgb(243, 197, 52); padding: 5px; background-color: rgb(254, 254, 184); width: 600px; text-align: center;">[...Continue reading <a href="http://blog.lckymn.com/2009/08/11/eclipse-too-many-open-files-problem/">Eclipse &#8211; &#8220;Too many open files&#8221; Problem</a>...]</p>]]></description>
			<content:encoded><![CDATA[<p>If your OS is Linux and you are using Eclipse, you might possibly see the following error messages or similar after installing lots of plug-ins in Eclipse. In my case, it usually happened after installing <a href="http://www.eclipse.org/tptp/" target="_blank">TPTP</a> (I&#8217;m using Ubuntu Linux 9.04 Jaunty Jackalope Desktop 64bit by the way).</p>
<pre class="brush: plain; gutter: false; title: ; notranslate">
Plug-in org.eclipse.jst.server.tomcat.core was unable to load class org.eclipse.jst.server.tomcat.core.internal.TomcatLaunchConfigurationDelegate.
 /eclipse_installed_path/eclipse/configuration/org.eclipse.osgi/.lazy.15 (Too many open files)
</pre>
<p>or</p>
<pre class="brush: plain; gutter: false; title: ; notranslate">
Problems occurred while trying to save the state of the workbench.
 Could not read master table.
 /your_workspace/.metadata/.plugins/org.eclipse.core.resources/.safetable/org.eclipse.core.resources (Too many open files)
</pre>
<p>or</p>
<pre class="brush: plain; gutter: false; title: ; notranslate">
java.util.zip.ZipException: error in opening zip file
</pre>
<p>This is because there are too many files opened and these are more files than the number of open files allowed . So Eclipse cannot open more files and displays the errors above.</p>
<p>Let&#8217;s see the number of open files.</p>
<pre class="brush: bash; gutter: false; title: ; notranslate">
$ lsof | wc -l
</pre>
<p>e.g.)</p>
<pre class="brush: bash; gutter: false; title: ; notranslate">
$ lsof | wc -l
8965
</pre>
<p>In my case, it was 8965.</p>
<p>What about the number of files Eclipse opens. To see it, use </p>
<pre class="brush: bash; gutter: false; title: ; notranslate">
$ lsof | grep eclipse | wc -l
</pre>
<p>In my case, </p>
<pre class="brush: bash; gutter: false; title: ; notranslate">
$ lsof | grep eclipse | wc -l
2094
</pre>
<p>2094 files are opened.</p>
<p>Now check the limitation of open files</p>
<pre class="brush: bash; gutter: false; highlight: [9]; title: ; notranslate">
$ ulimit -a
core file size          (blocks, -c) #
data seg size           (kbytes, -d) #
scheduling priority             (-e) #
file size               (blocks, -f) #
pending signals                 (-i) #
max locked memory       (kbytes, -l) #
max memory size         (kbytes, -m) #
open files                      (-n) 1024
pipe size            (512 bytes, -p) #
POSIX message queues     (bytes, -q) #
real-time priority              (-r) #
stack size              (kbytes, -s) #
cpu time               (seconds, -t) #
max user processes              (-u) #
virtual memory          (kbytes, -v) #
file locks                      (-x) #
</pre>
<p>or just use</p>
<pre class="brush: bash; gutter: false; title: ; notranslate">
$ ulimit -n
1024
</pre>
<p>To change it, open the file /etc/security/limits.conf and put a greater number than 1024 depending on the number of open files you checked with <code>lsof | wc -l</code> just before.<br />
For example,<br />
Open the file</p>
<pre class="brush: plain; gutter: false; highlight: [3,4]; title: ; notranslate">
$ gksudo gedit /etc/security/limits.conf
add these lines
*                soft    nofile          9216
*                hard    nofile          9216
</pre>
<p>I just chose some big number that is 9216 (9 * 1024) as it&#8217;s greater than 8965 </p>
<p>Log out and in then check with ulimit. It should show like this.</p>
<pre class="brush: bash; gutter: false; title: ; notranslate">
$ ulimit -n
9216
</pre>
<p>You may try this</p>
<pre class="brush: bash; gutter: false; title: ; notranslate">
$ ulimit -n 9216
</pre>
<p>yet I don&#8217;t believe it changes the limit for open files permanently. So you&#8217;d better modify <code>/etc/security/limits.conf</code> file.</p>
<p>If it is still not changed. Restart the computer and check again. If it still doesn&#8217;t show the changed value, open /etc/pam.d/common-session file and add <code>session required pam_limits.so</code>.</p>
<p>Open the file to edit</p>
<pre class="brush: bash; gutter: false; title: ; notranslate">
$ gksudo gedit /etc/pam.d/common-session
</pre>
<p>Add the following line</p>
<pre class="brush: bash; gutter: false; title: ; notranslate">
session required pam_limits.so
</pre>
<p>Log out and in. Now it should work!</p>
<pre class="brush: bash; gutter: false; title: ; notranslate">
$ ulimit -n
9216
</pre>
]]></content:encoded>
			<wfw:commentRss>http://blog.lckymn.com/2009/08/11/eclipse-too-many-open-files-problem/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Installing 64bit Flash Player in Ubuntu Linux</title>
		<link>http://blog.lckymn.com/2009/06/07/installing-64bit-flash-player-in-ubuntu-linux/</link>
		<comments>http://blog.lckymn.com/2009/06/07/installing-64bit-flash-player-in-ubuntu-linux/#comments</comments>
		<pubDate>Sat, 06 Jun 2009 14:05:07 +0000</pubDate>
		<dc:creator>Kevin</dc:creator>
				<category><![CDATA[IT]]></category>
		<category><![CDATA[Ubuntu Linux]]></category>
		<category><![CDATA[64bit Flash Player]]></category>
		<category><![CDATA[Crash]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Flash Player]]></category>
		<category><![CDATA[Flash Player Plug-in]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Opera]]></category>
		<category><![CDATA[Ubuntu Linux 64bit]]></category>
		<category><![CDATA[Web Browser]]></category>

		<guid isPermaLink="false">http://blog.lckymn.com/?p=341</guid>
		<description><![CDATA[<div class="txc-textbox" style="border: 3px solid rgb(243, 197, 52); padding: 10px; background-color: rgb(254, 254, 184);">You can ignore this warning now but should get the latest flash player if you are still using the old one having the security issues. <p><a href='http://blog.lckymn.com/2009/06/07/installing-64bit-flash-player-in-ubuntu-linux/#SID341_1_tgl' title='Visit blog to check out this spoiler'>[[Visit blog to check out this spoiler]]</a></p> </div> <p>I think there are numerous 64 bit Ubuntu users who are suffering from the crash of Flash Player just like myself.  There is a better way <p style="border: 3px solid rgb(243, 197, 52); padding: 5px; background-color: rgb(254, 254, 184); width: 600px; text-align: center;">[...Continue reading <a href="http://blog.lckymn.com/2009/06/07/installing-64bit-flash-player-in-ubuntu-linux/">Installing 64bit Flash Player in Ubuntu Linux</a>...]</p>]]></description>
			<content:encoded><![CDATA[<div class="txc-textbox" style="border: 3px solid rgb(243, 197, 52); padding: 10px; background-color: rgb(254, 254, 184);">You can ignore this warning now but should get the latest flash player if you are still using the old one having the security issues.
<p><a href='http://blog.lckymn.com/2009/06/07/installing-64bit-flash-player-in-ubuntu-linux/#SID341_1_tgl' title='Visit blog to check out this spoiler'>[[Visit blog to check out this spoiler]]</a></p>
</div>
<p>I think there are numerous 64 bit Ubuntu users who are suffering from the crash of Flash Player just like myself.  There is a better way to install Flash Player for 64 bit Linux than installing one from the Ubuntu repository and that is what I am about to write.  This is obviously not the perfect solution yet I think the best way to use 64bit Flash Player for now.  I hope Adobe will release a stable 64 bit Flash Player for Linux soon.  Anyway, here we go!</p>
<p>Adobe has released a preview version of Flash Player (Flash Player &#8220;Square&#8221;) for 64bit Linux.<br />
<a href="http://labs.adobe.com/downloads/flashplayer10.html" target="_blank" style="text-decoration: line-through;">http://labs.adobe.com/downloads/flashplayer10.html</a><br />
<a href="http://labs.adobe.com/downloads/flashplayer10_64bit.html" target="_blank" style="text-decoration: line-through;">http://labs.adobe.com/downloads/flashplayer10_64bit.html</a><br />
<a href="http://labs.adobe.com/downloads/flashplayer10_square.html" target="_blank">http://labs.adobe.com/downloads/flashplayer10_square.html</a><br />
At the bottom of the web page, you can find the download link.</p>
<pre>Download plug-in for 64-bit Linux (TAR.GZ, 4.1 MB)
</pre>
<p>In my case, the latest alpha version of 64 bit Flash player does not work well (e.g. Video on youtube constantly freezes) yet the previous alpha one works better. So first, try the latest one and if it doesn&#8217;t work well, download the following one.</p>
<p><a href="http://download.macromedia.com/pub/labs/flashplayer10/libflashplayer-10.0.d21.1.linux-x86_64.so.tar.gz" target="_blank" onclick="return false;" style="text-decoration: line-through;">http://download.macromedia.com/pub/labs/flashplayer10/libflashplayer-10.0.d21.1.linux-x86_64.so.tar.gz</a><br />
<a href="http://download.macromedia.com/pub/labs/flashplayer10/libflashplayer-10.0.45.2.linux-x86_64.so.tar.gz" target="_blank" onclick="return false;" style="text-decoration: line-through;">http://download.macromedia.com/pub/labs/flashplayer10/libflashplayer-10.0.45.2.linux-x86_64.so.tar.gz</a></p>
<div class="txc-textbox" style="border: 3px solid rgb(243, 197, 52); padding: 10px; background-color: rgb(254, 254, 184);">
*** This part is added on the 28th of September, 2009 ***<br />
<span style="text-decoration: line-through;">I installed the latest alpha version which is <code>libflashplayer-10.0.32.18.linux-x86_64.so.tar.gz</code> today (the 28th of September, 2009). So far, it seems fine.</span></p>
<p>*** Updated on the 2nd of May, 2010<br />
<span style="text-decoration: line-through;">libflashplayer-10.0.45.2.linux-x86_64.so.tar.gz works fine.</span></p>
<p>*** Updated on the 4th of Feb, 2011<br />
flashplayer10_2_p3_64bit_linux_111710.tar.gz works fine.
</p></div>
<p>Before installing it, if there is a previously installed Flash player, it has to be removed first.</p>
<p>To check it, open &#8216;Synaptic Package Manager&#8217;.<br />
System -&gt; Administration -&gt; Synaptic Package Manager<br />
<div id="attachment_342" class="wp-caption alignnone" style="width: 918px"><a href="http://blog.lckymn.com/wp-content/uploads/2009/06/flashplayer.jpg"><img src="http://blog.lckymn.com/wp-content/uploads/2009/06/flashplayer.jpg" alt="Search by &#039;flash&#039; and make sure neither &lt;code&gt;flashplugin-nonfree&lt;/code&gt; nor &lt;code&gt;flashplugin-installer&lt;/code&gt; is installed. If any of these are installed, remove first." title="Flash Player should be removed." width="908" height="746" class="size-full wp-image-342" /></a><p class="wp-caption-text">Search by 'flash' and make sure neither <code>flashplugin-nonfree</code> nor <code>flashplugin-installer</code> is installed. If any of these are installed, remove first.</p></div><br />
-Search by &#8216;flash&#8217; and make sure neither <code>flashplugin-nonfree</code> nor <code>flashplugin-installer</code> is installed. If any of these are installed, remove first.</p>
<p>Extract the libflashplayer file downloaded to the firefox &#8216;plugins&#8217; directory.<br />
e.g.) If the file is in the <code>/home/username/Desktop</code> directory,</p>
<pre class="brush: bash; gutter: false; title: ; notranslate">
$ cd /usr/lib/firefox/plugins
$ sudo tar -zxvf ~/Desktop/flashplayer10_2_p3_64bit_linux_111710.tar.gz
</pre>
<p>To use this Flash player in other browsers such as Opera, create the symbolic link to the <code>/usr/lib/firefox/plugins/libflashplayer.so</code> file in the &#8216;/usr/lib/mozilla/plugins&#8217; directory.</p>
<pre class="brush: bash; gutter: false; title: ; notranslate">
$ cd /usr/lib/mozilla/plugins
$ sudo ln -s /usr/lib/firefox/plugins/libflashplayer.so
</pre>
<p>If the file with the same name already exists, user &#8216;f&#8217; option to overwrite it.</p>
<pre class="brush: bash; gutter: false; title: ; notranslate">
$ sudo ln -sf /usr/lib/firefox/plugins/libflashplayer.so
</pre>
<p>Now, open the Firefox and test if it works well. <img src='http://blog.lckymn.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<p><a name="Flash_GPU"></a></p>
<div class="txc-textbox" style="border: 3px solid rgb(243, 197, 52); padding: 10px; background-color: rgb(254, 254, 184);">
*** This part is added on the 28th of September, 2009 ***<br />
I also tried what the following blog entry says about several weeks ago.</p>
<p><a href="http://blogs.adobe.com/penguin.swf/2008/08/secrets_of_the_mmscfg_file_1.html">Secrets Of The mms.cfg File</a></p>
<p>I created the directory <code>/etc/adobe</code> and created a file named <code>mms.cfg</code> in the directory (so the absolute path of the file is <code>/etc/adobe/mms.cfg</code>).</p>
<p>Then I put the following line in the file.<br />
<code>OverrideGPUValidation=1</code></p>
<p>It seems to work for mine. When I watch a video clip on youtube, it plays smoother than before.
</p></div>
]]></content:encoded>
			<wfw:commentRss>http://blog.lckymn.com/2009/06/07/installing-64bit-flash-player-in-ubuntu-linux/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Enabling Visual Effects in Ubuntu</title>
		<link>http://blog.lckymn.com/2009/06/04/enabling-visual-effects-in-ubunt/</link>
		<comments>http://blog.lckymn.com/2009/06/04/enabling-visual-effects-in-ubunt/#comments</comments>
		<pubDate>Thu, 04 Jun 2009 11:54:39 +0000</pubDate>
		<dc:creator>Kevin</dc:creator>
				<category><![CDATA[IT]]></category>
		<category><![CDATA[Ubuntu Linux]]></category>
		<category><![CDATA[ATI]]></category>
		<category><![CDATA[Compiz]]></category>
		<category><![CDATA[Compiz-Fusion]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[nVidia]]></category>
		<category><![CDATA[Visual Effects]]></category>

		<guid isPermaLink="false">http://blog.lckymn.com/?p=330</guid>
		<description><![CDATA[<p>Somebody asked a question regarding my video on youtube. <a href="http://www.youtube.com/watch?v=TOp83ByFrMA" target="_blank">http://www.youtube.com/watch?v=TOp83ByFrMA</a></p> <p>Unfortunately I don&#8217;t really have time to explain the details nor am I sure if Ubuntu supports his/her graphics card so I&#8217;m putting here some information which can be a starting point to get what he/she wants.</p> <p>To enable some basic visual effects, select the &#8216;Appearance&#8217; menu. -System -&#62; Preferences -&#62; Appearance <div id="attachment_331" class="wp-caption alignnone" style="width: 658px"><a href="http://blog.lckymn.com/wp-content/uploads/2009/06/visualeffect01.jpg"><img src="http://blog.lckymn.com/wp-content/uploads/2009/06/visualeffect01.jpg" alt="System -&#62; Preferences -&#62; Appearance" title="Open &#039;Appearance&#039;" width="648" <p style="border: 3px solid rgb(243, 197, 52); padding: 5px; background-color: rgb(254, 254, 184); width: 600px; text-align: center;">[...Continue reading <a href="http://blog.lckymn.com/2009/06/04/enabling-visual-effects-in-ubunt/">Enabling Visual Effects in Ubuntu</a>...]</p>]]></description>
			<content:encoded><![CDATA[<p>Somebody asked a question regarding my video on youtube.<br />
<a href="http://www.youtube.com/watch?v=TOp83ByFrMA" target="_blank">http://www.youtube.com/watch?v=TOp83ByFrMA</a></p>
<p>Unfortunately I don&#8217;t really have time to explain the details nor am I sure if Ubuntu supports his/her graphics card so I&#8217;m putting here some information which can be a starting point to get what he/she wants.</p>
<p>To enable some basic visual effects, select the &#8216;Appearance&#8217; menu.<br />
-System -&gt; Preferences -&gt; Appearance<br />
<div id="attachment_331" class="wp-caption alignnone" style="width: 658px"><a href="http://blog.lckymn.com/wp-content/uploads/2009/06/visualeffect01.jpg"><img src="http://blog.lckymn.com/wp-content/uploads/2009/06/visualeffect01.jpg" alt="System -&gt; Preferences -&gt; Appearance" title="Open &#039;Appearance&#039;" width="648" height="297" class="size-full wp-image-331" /></a><p class="wp-caption-text">System -> Preferences -> Appearance</p></div></p>
<p>-Select the &#8216;Visual Effects&#8217; tab -&gt; Select the &#8216;Extra&#8217; effect -&gt; Click the &#8216;Close&#8217; button.<br />
<div id="attachment_332" class="wp-caption alignnone" style="width: 627px"><a href="http://blog.lckymn.com/wp-content/uploads/2009/06/visualeffect02.jpg"><img src="http://blog.lckymn.com/wp-content/uploads/2009/06/visualeffect02.jpg" alt="Select the &#039;Visual Effects&#039; tab -&gt; Select the &#039;Extra&#039; effect -&gt; Click the &#039;Close&#039; button." title="Select the &#039;Extra&#039; effect" width="617" height="534" class="size-full wp-image-332" /></a><p class="wp-caption-text">Select the 'Visual Effects' tab -> Select the 'Extra' effect -> Click the 'Close' button.</p></div><br />
If Ubuntu or Compiz doesn&#8217;t support your graphics card, you may get some error message here.<br />
If you are using ATI or nVidia Graphics card, I strongly recommend you to install EnvyNG which automatically checks what Graphics card you use and finds the proper driver for it. It only works for ATI and nVidia ones.  I am using Intel one so I cannot use it and therefore can&#8217;t explain how to use it.  To install it, open the &#8216;Synaptic Package Manager&#8217;<br />
System -&gt; Administration -&gt; Synaptic Package Manager<br />
and search by envyng then you can see &#8216;envyng-core&#8217;, &#8216;envyng-gtk&#8217; and &#8216;envyng-qt&#8217;. Install envyng-gtk (I assume you&#8217;re using Ubuntu but not Kubuntu) and it will install envyng-core and envyng-gtk.</p>
<p>OK, get back to the visual effect one. After selecting the &#8216;Extra&#8217; visual effect, it should have some visual effects and now it&#8217;s time to customise it to have more effects. If you have not installed &#8216;CompizConfig Setting Manager&#8217; yet, install it first.</p>
<p>-Run &#8216;Add/Remove Applications&#8217; -&gt; 1. Make sure it shows &#8216;All available applications&#8217; -&gt; 2. Search &#8216;compiz&#8217; -&gt; 3. Check &#8216;Advanced Desktop Effects Settings (ccsm) -&gt; 4. Click the &#8216;Apply Changes&#8217; button.<br />
<div id="attachment_333" class="wp-caption alignnone" style="width: 811px"><a href="http://blog.lckymn.com/wp-content/uploads/2009/06/visualeffect03.jpg"><img src="http://blog.lckymn.com/wp-content/uploads/2009/06/visualeffect03.jpg" alt="Run &#039;Add/Remove Applications&#039; -&gt; 1. Make sure it shows &#039;All available applications&#039; -&gt; 2. Search &#039;compiz&#039; -&gt; 3. Check &#039;Advanced Desktop Effects Settings (ccsm) -&gt; 4. Click the &#039;Apply Changes&#039; button." title="Install &#039;CompizConfig Setting Manager&#039;" width="801" height="556" class="size-full wp-image-333" /></a><p class="wp-caption-text">Run 'Add/Remove Applications' -> 1. Make sure it shows 'All available applications' -> 2. Search 'compiz' -> 3. Check 'Advanced Desktop Effects Settings (ccsm) -> 4. Click the 'Apply Changes' button.</p></div></p>
<p>Run the &#8216;CompizConfig Setting Manager&#8217;<br />
-System -&gt; Preferences -&gt; CompizConfig Setting Manager<br />
<div id="attachment_334" class="wp-caption alignnone" style="width: 670px"><a href="http://blog.lckymn.com/wp-content/uploads/2009/06/visualeffect04.jpg"><img src="http://blog.lckymn.com/wp-content/uploads/2009/06/visualeffect04.jpg" alt="System -&gt; Preferences -&gt; CompizConfig Setting Manager" title="Run the &#039;CompizConfig Setting Manager&#039;" width="660" height="290" class="size-full wp-image-334" /></a><p class="wp-caption-text">System -> Preferences -> CompizConfig Setting Manager</p></div></p>
<p>Now you can have whatever you want with Compiz-Fusion!<br />
e.g.) To have the Cube, enable the &#8216;Desktop Cube&#8217; and &#8216;Rotate Cube&#8217;<br />
<div id="attachment_335" class="wp-caption alignnone" style="width: 1012px"><a href="http://blog.lckymn.com/wp-content/uploads/2009/06/visualeffect05.jpg"><img src="http://blog.lckymn.com/wp-content/uploads/2009/06/visualeffect05.jpg" alt="Do whatever you want!" title="Customise the visual effects" width="1002" height="619" class="size-full wp-image-335" /></a><p class="wp-caption-text">Do whatever you want!</p></div></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.lckymn.com/2009/06/04/enabling-visual-effects-in-ubunt/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Enable Ctrl+Alt+Backspace Again</title>
		<link>http://blog.lckymn.com/2009/05/03/enable-ctrl-alt-backspace-again/</link>
		<comments>http://blog.lckymn.com/2009/05/03/enable-ctrl-alt-backspace-again/#comments</comments>
		<pubDate>Sun, 03 May 2009 12:43:09 +0000</pubDate>
		<dc:creator>Kevin</dc:creator>
				<category><![CDATA[IT]]></category>
		<category><![CDATA[Ubuntu Linux]]></category>
		<category><![CDATA[Ctrl+Alt+Backspace]]></category>
		<category><![CDATA[DontZap]]></category>
		<category><![CDATA[Jaunty Jackalope]]></category>
		<category><![CDATA[Karmic Koala]]></category>
		<category><![CDATA[Restart X]]></category>
		<category><![CDATA[Restart Xorg]]></category>
		<category><![CDATA[Ubuntu Linux 9.04]]></category>
		<category><![CDATA[Ubuntu Linux 9.04 Jaunty Jackalope]]></category>
		<category><![CDATA[Ubuntu Linux 9.10]]></category>
		<category><![CDATA[Ubuntu Linux 9.10 Karmic Koala]]></category>
		<category><![CDATA[Ubuntu Linux Jaunty Jackalope]]></category>
		<category><![CDATA[Ubuntu Linux Karmic Koala]]></category>
		<category><![CDATA[Xorg]]></category>
		<category><![CDATA[Xorg Server]]></category>

		<guid isPermaLink="false">http://blog.lckymn.com/?p=123</guid>
		<description><![CDATA[<code>Ctrl+Alt+Backspace</code> Disabled <p>As stated in the <a href="http://www.ubuntu.com/getubuntu/releasenotes/904" target="_blank">Ubuntu 9.04 release notes</a>, Ctrl-Alt-Backspace key combination to restart Xorg is disabled.</p> <p>Ctrl-Alt-Backspace disabled by default in Xorg</p> <p> The Ctrl-Alt-Backspace key combination to force a restart of X is now disabled by default, to eliminate the problem of accidentally triggering the key combination. Users who do want this function can enable it in their xorg.conf, or by running the command <code>dontzap --disable</code>. </p> Enable <code>Ctrl+Alt+Backspace</code> Again Ubuntu Linux 9.10 Karmic Koala <p style="border: 3px solid rgb(243, 197, 52); padding: 5px; background-color: rgb(254, 254, 184); width: 600px; text-align: center;">[...Continue reading <a href="http://blog.lckymn.com/2009/05/03/enable-ctrl-alt-backspace-again/">Enable Ctrl+Alt+Backspace Again</a>...]</p>]]></description>
			<content:encoded><![CDATA[<h1><code>Ctrl+Alt+Backspace</code> Disabled</h1>
<p>As stated in the <a href="http://www.ubuntu.com/getubuntu/releasenotes/904" target="_blank">Ubuntu 9.04 release notes</a>, Ctrl-Alt-Backspace key combination to restart Xorg is disabled.</p>
<blockquote>
<p><strong>Ctrl-Alt-Backspace disabled by default in Xorg</strong></p>
<p>
The Ctrl-Alt-Backspace key combination to force a restart of X is now disabled by default, to eliminate the problem of accidentally triggering the key combination. Users who do want this function can enable it in their xorg.conf, or by running the command <code>dontzap --disable</code>.
</p>
</blockquote>
<h1>Enable <code>Ctrl+Alt+Backspace</code> Again</h1>
<h2>Ubuntu Linux 9.10 Karmic Koala</h2>
<div class="txc-textbox" style="border: 3px solid rgb(243, 197, 52); padding: 10px; background-color: rgb(254, 254, 184);">
This part is added on the 23rd of November in 2009 as in the 9.10 version, enabling <code>Ctrl+Alt+Backspace</code> is different from doing it in the 9.04 version.<br />
If you are using Ubuntu Linux 9.04 Jaunty Jackalope, please scroll down to skip this part then you can find one for Jaunty Jackalope.
</div>
<p><div id="attachment_470" class="wp-caption alignnone" style="width: 718px"><a href="http://blog.lckymn.com/wp-content/uploads/2009/05/01_open_the_keyboard_menu.jpg"><img src="http://blog.lckymn.com/wp-content/uploads/2009/05/01_open_the_keyboard_menu.jpg" alt="* System -&gt; Preferences -&gt; Keyboard" title="01 System -&gt; Preferences -&gt; Keyboard" width="708" height="318" class="size-full wp-image-470" /></a><p class="wp-caption-text">* System -> Preferences -> Keyboard</p></div><br />
* System -> Preferences -> Keyboard</p>
<p><div id="attachment_471" class="wp-caption alignnone" style="width: 509px"><a href="http://blog.lckymn.com/wp-content/uploads/2009/05/02_click_layout_options.jpg"><img src="http://blog.lckymn.com/wp-content/uploads/2009/05/02_click_layout_options.jpg" alt="Select the &#039;Layouts&#039; tab -&gt; Click the &#039;Layout Options&#039; button" title="02 Select the &#039;Layouts&#039; tab -&gt; Click the &#039;Layout Options&#039; button" width="499" height="546" class="size-full wp-image-471" /></a><p class="wp-caption-text">Select the 'Layouts' tab -> Click the 'Layout Options' button</p></div><br />
* Select the &#8216;Layouts&#8217; tab -> Click the &#8216;Layout Options&#8217; button</p>
<p><div id="attachment_472" class="wp-caption alignnone" style="width: 586px"><a href="http://blog.lckymn.com/wp-content/uploads/2009/05/03_check_the_key_sequence_to_terminate_x.jpg"><img src="http://blog.lckymn.com/wp-content/uploads/2009/05/03_check_the_key_sequence_to_terminate_x.jpg" alt="Click the &#039;Key sequence to kill the X server&#039; to expand it -&gt; Check the &#039;Control + Alt + Backspace&#039; option -&gt; Click the &#039;Close&#039; button" title="03 Click the &#039;Key sequence to kill the X server&#039; to expand it -&gt; Check the &#039;Control + Alt + Backspace&#039; option -&gt; Click the &#039;Close&#039; button" width="576" height="542" class="size-full wp-image-472" /></a><p class="wp-caption-text">Click the 'Key sequence to kill the X server' to expand it -> Check the 'Control + Alt + Backspace' option -> Click the 'Close' button</p></div><br />
* Click the &#8216;Key sequence to kill the X server&#8217; to expand it -> Check the &#8216;Control + Alt + Backspace&#8217; option -> Click the &#8216;Close&#8217; button</p>
<p>Done!!!</p>
<h2>Ubuntu Linux 9.04 Jaunty Jackalope</h2>
<p>* Open the <code>/etc/X11/xorg.conf</code> file and add</p>
<pre>
Section "ServerFlags"
	Option	"DontZap"	"False"
EndSection
</pre>
<p>* Or simply use <code>dontzap</code>.<br />
* If it is not installed already,</p>
<pre>$ sudo apt-get install dontzap </pre>
<p>* Use the <code>dontzap</code> command to enable <code>Ctrl+Alt+Backspace</code></p>
<pre>$ sudo dontzap --disable </pre>
<p>This acually adds </p>
<pre>
Section "ServerFlags"
	Option	"DontZap"	"False"
EndSection
</pre>
<p>to the <code>/etc/X11/xorg.conf</code> file.</p>
<p>* After it is done, make sure to log out &#038; in for the change to take effect.</p>
<p>* To enable the &#8220;DontZap&#8221; option again,</p>
<pre>$ sudo dontzap --enable </pre>
<p>* More information about the <code>DontZap</code> option.</p>
<blockquote>
<p>
<a href="http://www.x.org/archive/X11R6.8.0/doc/xorg.conf.5.html#sect4" target="_blank">http://www.x.org/archive/X11R6.8.0/doc/xorg.conf.5.html#sect4</a>
</p>
<pre>
Option "DontZap" "boolean"
</pre>
<p>
    This disallows the use of the Ctrl+Alt+Backspace sequence. That sequence is normally used to terminate the Xorg server. When this option is enabled, that key sequence has no special meaning and is passed to clients. Default: off.
</p>
</blockquote>
]]></content:encoded>
			<wfw:commentRss>http://blog.lckymn.com/2009/05/03/enable-ctrl-alt-backspace-again/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Change Back to Previous Update Notification</title>
		<link>http://blog.lckymn.com/2009/05/03/change-back-to-previou-update-notification/</link>
		<comments>http://blog.lckymn.com/2009/05/03/change-back-to-previou-update-notification/#comments</comments>
		<pubDate>Sun, 03 May 2009 11:53:14 +0000</pubDate>
		<dc:creator>Kevin</dc:creator>
				<category><![CDATA[IT]]></category>
		<category><![CDATA[Ubuntu Linux]]></category>
		<category><![CDATA[Configuration Editor]]></category>
		<category><![CDATA[gconf-editor]]></category>
		<category><![CDATA[Ubuntu Linux 9.04 Jaunty Jackalope]]></category>
		<category><![CDATA[Ubuntu Linux Jaunty Jackalope]]></category>
		<category><![CDATA[Update Notification]]></category>
		<category><![CDATA[Update Notifier]]></category>

		<guid isPermaLink="false">http://blog.lckymn.com/?p=98</guid>
		<description><![CDATA[<p>According to the <a title="Ubuntu 9.04 Release Notes" href="http://www.ubuntu.com/getubuntu/releasenotes/904" target="_blank">Ubuntu 9.04 release notes</a>, there is a change in the update notification.</p> <p>Change in notifications of available updates</p> <p>Ubuntu 9.04 introduces a change to the handling of package updates, launching update-manager directly instead of displaying a notification icon in the GNOME panel. Users will still be notified of security updates on a daily basis, but for updates that are not security-related, users will only be prompted once a week.</p> <p>Users who <p style="border: 3px solid rgb(243, 197, 52); padding: 5px; background-color: rgb(254, 254, 184); width: 600px; text-align: center;">[...Continue reading <a href="http://blog.lckymn.com/2009/05/03/change-back-to-previou-update-notification/">Change Back to Previous Update Notification</a>...]</p>]]></description>
			<content:encoded><![CDATA[<p>According to the <a title="Ubuntu 9.04 Release Notes" href="http://www.ubuntu.com/getubuntu/releasenotes/904" target="_blank">Ubuntu 9.04 release notes</a>, there is a change in the update notification.</p>
<blockquote><p><strong>Change in notifications of available updates</strong></p>
<p>Ubuntu 9.04 introduces a change to the handling of package updates, launching update-manager directly instead of displaying a notification icon in the GNOME panel. Users will still be notified of security updates on a daily basis, but for updates that are not security-related, users will only be prompted once a week.</p>
<p>Users who wish to continue receiving update notifications in the previous manner can restore the earlier behavior using the following command:</p>
<pre>gconftool -s --type bool /apps/update-notifier/auto_launch false </pre>
</blockquote>
<p>As it says, this can be changed back to the previous style with the following command.</p>
<pre>
$ gconftool -s --type bool /apps/update-notifier/auto_launch false
</pre>
<p>or through the <code>Configuration Editor</code></p>
<div id="attachment_104" class="wp-caption aligncenter" style="width: 831px"><a href="http://blog.lckymn.com/wp-content/uploads/2009/05/updatenotification01.jpg"><img class="size-full wp-image-104" title="Install Configuration Editor" src="http://blog.lckymn.com/wp-content/uploads/2009/05/updatenotification01.jpg" alt="Install the Configuration Editor if it is not already installed." width="821" height="597" /></a><p class="wp-caption-text">Install the Configuration Editor if it is not already installed.</p></div>
<pre></pre>
<div id="attachment_105" class="wp-caption aligncenter" style="width: 447px"><a href="http://blog.lckymn.com/wp-content/uploads/2009/05/updatenotification02.jpg"><img class="size-full wp-image-105" title="Open Configuration Editor" src="http://blog.lckymn.com/wp-content/uploads/2009/05/updatenotification02.jpg" alt="Open the Configuration Editor" width="437" height="626" /></a><p class="wp-caption-text">Open the Configuration Editor<br />
Applications -&gt; System Tools -&gt; Configuration Editor</p></div>
<pre></pre>
<div id="attachment_106" class="wp-caption aligncenter" style="width: 680px"><a href="http://blog.lckymn.com/wp-content/uploads/2009/05/updatenotification03.jpg"><img class="size-full wp-image-106" title="Expand apps category" src="http://blog.lckymn.com/wp-content/uploads/2009/05/updatenotification03.jpg" alt="Expand &lt;code&gt;apps&lt;/code&gt; category" width="670" height="449" /></a><p class="wp-caption-text">Expand the <code>apps</code> category</p></div>
<pre></pre>
<div id="attachment_107" class="wp-caption aligncenter" style="width: 681px"><a href="http://blog.lckymn.com/wp-content/uploads/2009/05/updatenotification04.jpg"><img class="size-full wp-image-107" title="Click the update-notifier" src="http://blog.lckymn.com/wp-content/uploads/2009/05/updatenotification04.jpg" alt="Click the &lt;code&gt;update-notifier&lt;/code&gt; to select it." width="671" height="449" /></a><p class="wp-caption-text">Click the <code>update-notifier</code> to select it.<br />
The configuration details of it appears on the right hand side</p></div>
<pre></pre>
<div id="attachment_108" class="wp-caption aligncenter" style="width: 679px"><a href="http://blog.lckymn.com/wp-content/uploads/2009/05/updatenotification05.jpg"><img class="size-full wp-image-108" title="Uncheck the auto_launch key" src="http://blog.lckymn.com/wp-content/uploads/2009/05/updatenotification05.jpg" alt="Uncheck the value of the &lt;code&gt;auto_launch&lt;/code&gt; key." width="669" height="448" /></a><p class="wp-caption-text">Uncheck the value of the <code>auto_launch</code> key.<br />
Close the <code>Configuration Editor</code><br />
* Optional: <code>regular_auto_launch_interval</code> can be changed for more or less frequent notification</p></div>
<pre></pre>
<div id="attachment_109" class="wp-caption aligncenter" style="width: 538px"><a href="http://blog.lckymn.com/wp-content/uploads/2009/05/updatenotification06.jpg"><img class="size-full wp-image-109" title="Update Notifier is back" src="http://blog.lckymn.com/wp-content/uploads/2009/05/updatenotification06.jpg" alt="Update Notifier will appear when there are available updates instead of the update manager directly launched." width="528" height="87" /></a><p class="wp-caption-text">Update Notifier will appear when there are available updates instead of the update manager directly launched.</p></div>
<pre></pre>
]]></content:encoded>
			<wfw:commentRss>http://blog.lckymn.com/2009/05/03/change-back-to-previou-update-notification/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>My Desktop in April 2009</title>
		<link>http://blog.lckymn.com/2009/04/27/my-desktop-in-april-2009/</link>
		<comments>http://blog.lckymn.com/2009/04/27/my-desktop-in-april-2009/#comments</comments>
		<pubDate>Sun, 26 Apr 2009 16:39:33 +0000</pubDate>
		<dc:creator>Kevin</dc:creator>
				<category><![CDATA[IT]]></category>
		<category><![CDATA[Ubuntu Linux]]></category>
		<category><![CDATA[64bit]]></category>
		<category><![CDATA[9.04]]></category>
		<category><![CDATA[Cairo-Dock]]></category>
		<category><![CDATA[Compiz]]></category>
		<category><![CDATA[GNOME Do]]></category>
		<category><![CDATA[Jaunty Jackalope]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Mac4Lin]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[Ubuntu Linux 9.04]]></category>
		<category><![CDATA[Ubuntu Linux 9.04 Jaunty Jackalope]]></category>
		<category><![CDATA[Ubuntu Linux Jaunty Jackalope]]></category>

		<guid isPermaLink="false">http://blog.lckymn.com/?p=76</guid>
		<description><![CDATA[<div style="text-align: center;">Ubuntu Linux Desktop 9.04 Jaunty Jackalope 64bit + Compiz + Mac4Lin + GNOME Do + Cairo Dock <object width="854" height="505"><embed src="http://www.youtube.com/v/_Etr9stJl5Q&#038;hl=en&#038;fs=1&#038;ap=%2526fmt%3D22" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="854" height="505"></embed></object></div> <div style="text-align: center;">Ubuntu Linux Desktop 9.04 Jaunty Jackalope 64bit + Compiz + Mac4Lin + GNOME Do + Cairo Dock (Same Screencast but Lower Quality than the First One) <object width="854" height="505"><embed src="http://www.youtube.com/v/_Etr9stJl5Q&#038;hl=en&#038;fs=1&#038;ap=%2526fmt%3D35" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="854" height="505"></embed></object></div> <p style="text-align: center;"> <p style="text-align: center;">CPU: E2160 1.80 GHz RAM: 4 GiB Graphic Chip: Intel <p style="border: 3px solid rgb(243, 197, 52); padding: 5px; background-color: rgb(254, 254, 184); width: 600px; text-align: center;">[...Continue reading <a href="http://blog.lckymn.com/2009/04/27/my-desktop-in-april-2009/">My Desktop in April 2009</a>...]</p>]]></description>
			<content:encoded><![CDATA[<div style="text-align: center;">Ubuntu Linux Desktop 9.04 Jaunty Jackalope 64bit + Compiz + Mac4Lin + GNOME Do + Cairo Dock<br />
<object width="854" height="505"><param name="movie" value="http://www.youtube.com/v/_Etr9stJl5Q&#038;hl=en&#038;fs=1&#038;ap=%2526fmt%3D22"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/_Etr9stJl5Q&#038;hl=en&#038;fs=1&#038;ap=%2526fmt%3D22" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="854" height="505"></embed></object></div>
<pre>
</pre>
<div style="text-align: center;">Ubuntu Linux Desktop 9.04 Jaunty Jackalope 64bit + Compiz + Mac4Lin + GNOME Do + Cairo Dock<br />
(<span style="color: #0000ff;"><strong>Same Screencast but Lower Quality than the First One</strong></span>)<br />
<object width="854" height="505"><param name="movie" value="http://www.youtube.com/v/_Etr9stJl5Q&#038;hl=en&#038;fs=1&#038;ap=%2526fmt%3D35"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/_Etr9stJl5Q&#038;hl=en&#038;fs=1&#038;ap=%2526fmt%3D35" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="854" height="505"></embed></object></div>
<p style="text-align: center;">
<pre>
</pre>
<p style="text-align: center;">CPU: E2160 1.80 GHz<br />
RAM: 4 GiB<br />
Graphic Chip: Intel G33/31 (on board)</p>
<pre>
</pre>
<p>This is Ubuntu Linux 9.04 just released about two days ago (24th, April) as I already mentioned in my previous post.</p>
<p>I used a LiveCD of Ubuntu Linux 9.04 to check if it works well on my PC. It fortunately works well so I upgraded mine from 8.10 to 9.04.  The screencast above is made after the upgrade. It looks slow in the video yet that&#8217;s because of the software I used to record the desktop. It works really fast indeed without the software used to screencast.</p>
<p>These are screenshots taken before the upgrade.</p>
<div id="attachment_91" class="wp-caption aligncenter" style="width: 910px"><a href="http://blog.lckymn.com/wp-content/uploads/2009/04/upgrade_to_9_04_01.jpg"><img class="size-full wp-image-91" title="upgrade_to_9_04_01" src="http://blog.lckymn.com/wp-content/uploads/2009/04/upgrade_to_9_04_01.jpg" alt="Start Upgrading to 9.04" width="900" height="563" /></a><p class="wp-caption-text">Start Upgrading to 9.04</p></div>
<div id="attachment_92" class="wp-caption aligncenter" style="width: 910px"><a href="http://blog.lckymn.com/wp-content/uploads/2009/04/upgrade_to_9_04_02.jpg"><img class="size-full wp-image-92" title="upgrade_to_9_04_02" src="http://blog.lckymn.com/wp-content/uploads/2009/04/upgrade_to_9_04_02.jpg" alt="Upgrade In Progress" width="900" height="563" /></a><p class="wp-caption-text">Upgrade In Progress</p></div>
<p>The size of the memory installed on my PC is 4 GiB but it does not have to be 4GiB or bigger.  I need 4 GiB for the software I use to develop web applications.  Those development tools and servers require lots of memory.  However, based on my experience, without using that kind of heavy applications, 2 GiB is enough or even 1 GiB is still fine although for 1 GiB memory I rather recommend <a title="Xubuntu" href="http://en.wikipedia.org/wiki/Xubuntu" target="_blank">Xubuntu</a> which is a type of Ubuntu with <a title="Xfce" href="http://en.wikipedia.org/wiki/Xfce" target="_blank">Xfce</a> as its desktop environment.  Xfce is lightweight and fast.</p>
<p>Anyway, Ubuntu 9.04 Jaunty Jackalope works fine so far although I found some trivial problems such as the one described here.<br />
<a title="https://bugs.launchpad.net/gnome-app-install/+bug/354563/" href="https://bugs.launchpad.net/gnome-app-install/+bug/354563/" target="_blank"> https://bugs.launchpad.net/gnome-app-install/+bug/354563/</a></p>
<div class="txc-textbox" style="border: 3px solid rgb(243, 197, 52); padding: 10px; background-color: rgb(254, 254, 184);">
<i>This part is added on the 3rd of May, 2009</i><br />
WARNING: If you would like to install Ubuntu 9.04, you had better check out the Ubuntu 9.04 release notes especially the known issues part.<br />
<a href="http://www.ubuntu.com/getubuntu/releasenotes/904" target="_blank">http://www.ubuntu.com/getubuntu/releasenotes/904</a></p>
<p>※ Intel graphics card users should read carefully &#8216;Performance regressions on Intel graphics cards&#8217; and &#8216;Display freezes with Intel graphics cards&#8217; issues in the release notes.  You may also visit the link below to solve these problems with the Intel graphics cards but follow the post at your own risk.<br />
<a href="http://www.ubuntugeek.com/intel-graphics-performance-guide-for-ubuntu-904-jaunty-users.html" target="_blank">http://www.ubuntugeek.com/intel-graphics-performance-guide-for-ubuntu-904-jaunty-users.html</a>
</div>
<p>Compiz also seems to be a bit unstable yet hasn&#8217;t crashed.  I&#8217;m sure the Ubuntu development team will make it stable soon.  It normally becomes fairly stable one month after it is released.  In the meantime, the users can report all the bugs they found through the issue tracking system for Ubuntu that is <a title="Ubuntu in Launchpad" href="http://launchpad.net/ubuntu" target="_blank">Launchpad</a>.</p>
<p>So what I feel about the new release is that it seems to be more stable than the previous release (8.10). I&#8217;m quite satisfied so far.  The following information is a quick review of the new one.</p>
<p>* The problems in the previous version (8.10) yet fixed in the new version.<br />
-X-Window (probably only GNOME?) freezes if Ctrl+Alt+F1~F6 keys are pressed to enter console mode =&gt; Fixed in 9.04</p>
<p>-Firefox freezes with Google toolbar when opening more than one Firefox window. =&gt; Fixed in 9.04 (I&#8217;m not sure if it was fixed before but I had it when I used 8.04).</p>
<p>-The window decorator of some KDE applications using QT library (e.g. Umbrello, Kompare) disappears and it is impossible to resize the windows of these applications. As far as I remember, it only happens in 64bit version meaning 32bit version doesn&#8217;t have it. =&gt; Fixed in 9.04</p>
<p>-Using comma to separate cells in Open Office 3.0 Spread Sheet causes some error. The bug described here.<br />
<a title="https://bugs.launchpad.net/ubuntu/+source/openoffice.org/+bug/306602" href="https://bugs.launchpad.net/ubuntu/+source/openoffice.org/+bug/306602" target="_blank"> https://bugs.launchpad.net/ubuntu/+source/openoffice.org/+bug/306602</a><br />
=&gt; Fixed in 9.04. Ubuntu 8.10 doesn&#8217;t have Open Office 3.0 but 2.4. When I installed 3.0 through the repository the information about which is taken from the link blow, it had that problem.<br />
<a title="http://news.softpedia.com/news/How-To-Install-OpenOffice-org-3-0-in-Ubuntu-8-10-96449.shtml" href="http://news.softpedia.com/news/How-To-Install-OpenOffice-org-3-0-in-Ubuntu-8-10-96449.shtml" target="_blank"> http://news.softpedia.com/news/How-To-Install-OpenOffice-org-3-0-in-Ubuntu-8-10-96449.shtml</a></p>
<p>Oh I forgot to say that Ubuntu 9.04 has Open Office 3.0 pre-installed by the way. <img src='http://blog.lckymn.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>OK, these are what I found so far.</p>
<p>I&#8217;m using Compiz, GNOME Do, Cairo Dock and many other useful applications.  One good news is that Cairo Dock which is my favourite <a title="Dock (Computing)" href="http://en.wikipedia.org/wiki/Dock_(computing)" target="_blank">Dock application</a> can now be found from the Ubuntu repository which means all I need to do in order to install it is to use &#8216;Add/Remove Application&#8217; menu. <img src='http://blog.lckymn.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' />   I had to add the Cairo Dock repository manually before if I want to install it or even worse scenario is downloading the deb package file and install it manually.</p>
<p>A new file system namely ext4 which is faster than ext3 is available in Ubuntu 9.04. However, for now it might not be a good idea to use it as there may be some problem like this.<br />
<a title="https://bugs.edge.launchpad.net/ubuntu/+source/linux/+bug/317781?comments=all" href="https://bugs.edge.launchpad.net/ubuntu/+source/linux/+bug/317781?comments=all" target="_blank"> https://bugs.edge.launchpad.net/ubuntu/+source/linux/+bug/317781?comments=all</a><br />
It seems to be fixed though. Anyway, the comments in this bug report post are very interesting. <img src='http://blog.lckymn.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' />   This might be evidence of how Linux is being evolved by the developers as well as the users of it I believe. <img src='http://blog.lckymn.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.lckymn.com/2009/04/27/my-desktop-in-april-2009/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>My Desktop :)</title>
		<link>http://blog.lckymn.com/2008/11/13/my-desktop/</link>
		<comments>http://blog.lckymn.com/2008/11/13/my-desktop/#comments</comments>
		<pubDate>Thu, 13 Nov 2008 04:10:53 +0000</pubDate>
		<dc:creator>Kevin</dc:creator>
				<category><![CDATA[IT]]></category>
		<category><![CDATA[Ubuntu Linux]]></category>
		<category><![CDATA[Cairo-Dock]]></category>
		<category><![CDATA[Compiz-Fusion]]></category>
		<category><![CDATA[Itrepid]]></category>
		<category><![CDATA[Katapult]]></category>
		<category><![CDATA[Mac4Lin]]></category>
		<category><![CDATA[Ubuntu Linux 8.10]]></category>
		<category><![CDATA[Yakuake]]></category>

		<guid isPermaLink="false">http://blog.lckymn.com/?p=25</guid>
		<description><![CDATA[<p>This is my desktop.</p> <div><object width="640" height="505"><embed src="http://www.youtube.com/v/TOp83ByFrMA&#038;hl=en&#038;fs=1&#038;ap=%2526fmt%3D18" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="505"></embed></object></div> <p>I&#8217;m using Ubuntu Linux Desktop 8.10 Intrepid Ibex 64 bit with Compiz-Fusion + Mac4Lin + Cairo-Dock. I also use some useful and handy applications such as Katapult and Yakuake.</p> <p>I&#8217;ve been using Ubuntu Linux for almost one year. Since I started using it, I&#8217;ve never felt that I need MS Windows. I, in fact don&#8217;t want to use Windows again. Ubuntu Linux is securer, handier, easier to <p style="border: 3px solid rgb(243, 197, 52); padding: 5px; background-color: rgb(254, 254, 184); width: 600px; text-align: center;">[...Continue reading <a href="http://blog.lckymn.com/2008/11/13/my-desktop/">My Desktop :)</a>...]</p>]]></description>
			<content:encoded><![CDATA[<p>This is my desktop.</p>
<div><object width="640" height="505"><param name="movie" value="http://www.youtube.com/v/TOp83ByFrMA&#038;hl=en&#038;fs=1&#038;ap=%2526fmt%3D18"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/TOp83ByFrMA&#038;hl=en&#038;fs=1&#038;ap=%2526fmt%3D18" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="505"></embed></object></div>
<p>I&#8217;m using Ubuntu Linux Desktop 8.10 Intrepid Ibex 64 bit with Compiz-Fusion + Mac4Lin + Cairo-Dock. I also use some useful and handy applications such as Katapult and Yakuake.</p>
<p>I&#8217;ve been using Ubuntu Linux for almost one year. Since I started using it, I&#8217;ve never felt that I need MS Windows. I, in fact don&#8217;t want to use Windows again. Ubuntu Linux is securer, handier, easier to use, more stable and useful than Windows, I think. Well, I don&#8217;t mean I&#8217;m absolutely right yet it is just my opinion and what I&#8217;ve felt.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.lckymn.com/2008/11/13/my-desktop/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

