<?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>Anh Quan Nguyen</title>
	<atom:link href="http://blog.anhquan.de/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.anhquan.de</link>
	<description>Anh Quan Nguyen&#039;s Personal Website</description>
	<lastBuildDate>Sun, 17 Apr 2011 07:31:59 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.1</generator>
		<item>
		<title>MVN Tips: building a part of a multi-module project</title>
		<link>http://blog.anhquan.de/154/mvn-tips-building-a-part-of-a-multi-module-project/</link>
		<comments>http://blog.anhquan.de/154/mvn-tips-building-a-part-of-a-multi-module-project/#comments</comments>
		<pubDate>Sun, 17 Apr 2011 07:28:10 +0000</pubDate>
		<dc:creator>anhquan</dc:creator>
				<category><![CDATA[Notes]]></category>
		<category><![CDATA[dev]]></category>
		<category><![CDATA[maven]]></category>
		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://blog.anhquan.de/?p=154</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p>Build specific modules instead of building all modules in a multi-module projects</p>
<p>Use the Maven advanced reactor options:</p>
<p><span style="color: #ff0000;">-pl, &#8211;projects </span><br />
Build specified reactor projects instead of all projects<br />
<span style="color: #ff0000;"> -am, &#8211;also-make</span><br />
If project list is specified, also build projects required by the list</p>
<p>In the parent project&#8217;s directory, run</p>
<p><span style="color: #ff0000;">mvn install &#8211;projects projB</span></p>
<p>This will build projB and the modules required by projB.</p>
<p>More info: <a href="http://www.sonatype.com/people/2009/10/maven-tips-and-tricks-advanced-reactor-options/">http://www.sonatype.com/people/2009/10/maven-tips-and-tricks-advanced-reactor-options/</a></p>



		<!-- Added by WP-DragToShare-eXtended Plugin -->
		<script type="text/javascript">
			dtsv.dtse_post_154_permalink = 'http://blog.anhquan.de/154/mvn-tips-building-a-part-of-a-multi-module-project/';
			dtsv.dtse_post_154_title = 'MVN Tips: building a part of a multi-module project';
		</script>
		<!-- End of WP-DragToShare-eXtended Plugin -->]]></content:encoded>
			<wfw:commentRss>http://blog.anhquan.de/154/mvn-tips-building-a-part-of-a-multi-module-project/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google GIN &#8211; A basic tutorial</title>
		<link>http://blog.anhquan.de/151/google-gin-a-basic-tutorial/</link>
		<comments>http://blog.anhquan.de/151/google-gin-a-basic-tutorial/#comments</comments>
		<pubDate>Sat, 17 Jul 2010 17:45:21 +0000</pubDate>
		<dc:creator>anhquan</dc:creator>
				<category><![CDATA[Notes]]></category>
		<category><![CDATA[google-gin]]></category>
		<category><![CDATA[GWT]]></category>
		<category><![CDATA[presentation]]></category>

		<guid isPermaLink="false">http://blog.anhquan.de/?p=151</guid>
		<description><![CDATA[Google GIN View more presentations from anhquan. dtsv.dtse_post_151_permalink = 'http://blog.anhquan.de/151/google-gin-a-basic-tutorial/'; dtsv.dtse_post_151_title = 'Google GIN – A basic tutorial';]]></description>
			<content:encoded><![CDATA[<div style="width:425px" id="__ss_4777962"><strong style="display:block;margin:12px 0 4px"><a href="http://www.slideshare.net/anhquan/google-gin" title="Google GIN">Google GIN</a></strong><object id="__sse4777962" width="425" height="355"><param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=guice-tutorial-100717124212-phpapp02&#038;stripped_title=google-gin" /><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><embed name="__sse4777962" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=guice-tutorial-100717124212-phpapp02&#038;stripped_title=google-gin" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"></embed></object>
<div style="padding:5px 0 12px">View more <a href="http://www.slideshare.net/">presentations</a> from <a href="http://www.slideshare.net/anhquan">anhquan</a>.</div>
</div>



		<!-- Added by WP-DragToShare-eXtended Plugin -->
		<script type="text/javascript">
			dtsv.dtse_post_151_permalink = 'http://blog.anhquan.de/151/google-gin-a-basic-tutorial/';
			dtsv.dtse_post_151_title = 'Google GIN – A basic tutorial';
		</script>
		<!-- End of WP-DragToShare-eXtended Plugin -->]]></content:encoded>
			<wfw:commentRss>http://blog.anhquan.de/151/google-gin-a-basic-tutorial/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to work around when java.lang.Boolean is in the black list of LegacySerialiaytionPolicy</title>
		<link>http://blog.anhquan.de/146/how-to-work-around-when-java-lang-boolean-is-in-the-black-list-of-legacyserialiaytionpolicy/</link>
		<comments>http://blog.anhquan.de/146/how-to-work-around-when-java-lang-boolean-is-in-the-black-list-of-legacyserialiaytionpolicy/#comments</comments>
		<pubDate>Wed, 07 Jul 2010 05:55:06 +0000</pubDate>
		<dc:creator>anhquan</dc:creator>
				<category><![CDATA[Notes]]></category>
		<category><![CDATA[GWT]]></category>
		<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://blog.anhquan.de/?p=146</guid>
		<description><![CDATA[It took me a while to figure out that java.lang.Boolean is in the blacklist of the LegacySerializationPolicy class. Therefore when my RPC service tries to transfer java.lang.Boolean object, it throws Exception &#34;Type '*java.lang.Boolean*' was not included in the set of types which can be serialized by this SerializationPolicy or its Class object could not be [...]]]></description>
			<content:encoded><![CDATA[<p>It took me a while to figure out that java.lang.Boolean is in the blacklist of the LegacySerializationPolicy class. Therefore when my RPC service tries to transfer java.lang.Boolean object, it throws Exception</p>
<pre>&quot;Type '*java.lang.Boolean*' was not included in the set of types which can be serialized </pre>
<pre>by this SerializationPolicy or its Class object could not be loaded.</pre>
<pre>For security purposes, this type will not be serialized.&quot;</pre>
</p>
<p>&#160;</p>
<p>Look at the class com.google.gwt.user.server.rpc.impl.LegacySerialiaytionPolicy</p>
<div class="csharpcode">
<pre class="alt">  <span class="rem">/**</span></pre>
<pre><span class="rem">   * Many JRE types would appear to be {@link Serializable} on the server.</span></pre>
<pre class="alt"><span class="rem">   * However, clients would not see these types as being {@link Serializable}</span></pre>
<pre><span class="rem">   * due to mismatches between the GWT JRE emulation and the real JRE. As a</span></pre>
<pre class="alt"><span class="rem">   * workaround, this blacklist specifies a list of problematic types which</span></pre>
<pre><span class="rem">   * should be seen as not implementing {@link Serializable} for the purpose</span></pre>
<pre class="alt"><span class="rem">   * matching the client's expectations. Note that a type on this list may still</span></pre>
<pre><span class="rem">   * be serializable via a custom serializer.</span></pre>
<pre class="alt"><span class="rem">   */</span></pre>
<pre>  <span class="kwrd">private</span> <span class="kwrd">static</span> final Class&lt;?&gt;[] JRE_BLACKLIST = {</pre>
<pre class="alt">      java.lang.ArrayStoreException.<span class="kwrd">class</span>, java.lang.AssertionError.<span class="kwrd">class</span>,</pre>
<pre>      java.lang.Boolean.<span class="kwrd">class</span>, java.lang.Byte.<span class="kwrd">class</span>, java.lang.Character.<span class="kwrd">class</span>,</pre>
<pre class="alt">      java.lang.Class.<span class="kwrd">class</span>, java.lang.ClassCastException.<span class="kwrd">class</span>,</pre>
<pre>      java.lang.Double.<span class="kwrd">class</span>, java.lang.Error.<span class="kwrd">class</span>, java.lang.Float.<span class="kwrd">class</span>,</pre>
<pre class="alt">      java.lang.IllegalArgumentException.<span class="kwrd">class</span>,</pre>
<pre>      java.lang.IllegalStateException.<span class="kwrd">class</span>,</pre>
<pre class="alt">      java.lang.IndexOutOfBoundsException.<span class="kwrd">class</span>, java.lang.Integer.<span class="kwrd">class</span>,</pre>
<pre>      java.lang.Long.<span class="kwrd">class</span>, java.lang.NegativeArraySizeException.<span class="kwrd">class</span>,</pre>
<pre class="alt">      java.lang.NullPointerException.<span class="kwrd">class</span>, java.lang.Number.<span class="kwrd">class</span>,</pre>
<pre>      java.lang.NumberFormatException.<span class="kwrd">class</span>, java.lang.Short.<span class="kwrd">class</span>,</pre>
<pre class="alt">      java.lang.StackTraceElement.<span class="kwrd">class</span>, java.lang.String.<span class="kwrd">class</span>,</pre>
<pre>      java.lang.StringBuffer.<span class="kwrd">class</span>,</pre>
<pre class="alt">      java.lang.StringIndexOutOfBoundsException.<span class="kwrd">class</span>,</pre>
<pre>      java.lang.UnsupportedOperationException.<span class="kwrd">class</span>, java.util.ArrayList.<span class="kwrd">class</span>,</pre>
<pre class="alt">      java.util.ConcurrentModificationException.<span class="kwrd">class</span>, java.util.Date.<span class="kwrd">class</span>,</pre>
<pre>      java.util.EmptyStackException.<span class="kwrd">class</span>, java.util.EventObject.<span class="kwrd">class</span>,</pre>
<pre class="alt">      java.util.HashMap.<span class="kwrd">class</span>, java.util.HashSet.<span class="kwrd">class</span>,</pre>
<pre>      java.util.MissingResourceException.<span class="kwrd">class</span>,</pre>
<pre class="alt">      java.util.NoSuchElementException.<span class="kwrd">class</span>, java.util.Stack.<span class="kwrd">class</span>,</pre>
<pre>      java.util.TooManyListenersException.<span class="kwrd">class</span>, java.util.Vector.<span class="kwrd">class</span>};</pre>
</div>
<style type="text/css">
<p>.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style>
<p>&#160;</p>
<h3>How to work around ?</h3>
<p>Use a custom serializable class instead of java.lang.Boolean</p>
<pre class="csharpcode">import com.google.gwt.user.client.rpc.IsSerializable;

<span class="kwrd">public</span> <span class="kwrd">class</span> SerializedBoolean implements IsSerializable {

    <span class="kwrd">private</span> boolean <span class="kwrd">value</span>;

    <span class="kwrd">public</span> <span class="kwrd">static</span> final SerializedBoolean TRUE = <span class="kwrd">new</span> SerializedBoolean(<span class="kwrd">true</span>);
    <span class="kwrd">public</span> <span class="kwrd">static</span> final SerializedBoolean FALSE = <span class="kwrd">new</span> SerializedBoolean(<span class="kwrd">false</span>);

    <span class="kwrd">public</span> SerializedBoolean(){
        <span class="kwrd">value</span> = <span class="kwrd">false</span>;
    }

    <span class="kwrd">public</span> SerializedBoolean(boolean <span class="kwrd">value</span>){
        <span class="kwrd">this</span>.<span class="kwrd">value</span> = <span class="kwrd">value</span>;
    }

    <span class="kwrd">public</span> boolean isValue() {
        <span class="kwrd">return</span> <span class="kwrd">value</span>;
    }

    <span class="kwrd">public</span> <span class="kwrd">void</span> setValue(boolean <span class="kwrd">value</span>) {
        <span class="kwrd">this</span>.<span class="kwrd">value</span> = <span class="kwrd">value</span>;
    }

}</pre>
<style type="text/css">
<p>.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style>



		<!-- Added by WP-DragToShare-eXtended Plugin -->
		<script type="text/javascript">
			dtsv.dtse_post_146_permalink = 'http://blog.anhquan.de/146/how-to-work-around-when-java-lang-boolean-is-in-the-black-list-of-legacyserialiaytionpolicy/';
			dtsv.dtse_post_146_title = 'How to work around when java.lang.Boolean is in the black list of LegacySerialiaytionPolicy';
		</script>
		<!-- End of WP-DragToShare-eXtended Plugin -->]]></content:encoded>
			<wfw:commentRss>http://blog.anhquan.de/146/how-to-work-around-when-java-lang-boolean-is-in-the-black-list-of-legacyserialiaytionpolicy/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Eclipse ${user} variable</title>
		<link>http://blog.anhquan.de/143/eclipse-user-variable/</link>
		<comments>http://blog.anhquan.de/143/eclipse-user-variable/#comments</comments>
		<pubDate>Thu, 29 Apr 2010 09:51:38 +0000</pubDate>
		<dc:creator>anhquan</dc:creator>
				<category><![CDATA[Notes]]></category>
		<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[Template]]></category>

		<guid isPermaLink="false">http://blog.anhquan.de/?p=143</guid>
		<description><![CDATA[To change the ${user} variable, add the following line into the file eclipse.ini -Duser.name=Your Name dtsv.dtse_post_143_permalink = 'http://blog.anhquan.de/143/eclipse-user-variable/'; dtsv.dtse_post_143_title = 'Eclipse ${user} variable';]]></description>
			<content:encoded><![CDATA[<p><img class="dtse-img dtse-post-143" src="http://img202.imageshack.us/img202/5533/eclipsedollaruser.png"/></p>
<p>To change the <strong>${user}</strong> variable, add the following line into the file <strong>eclipse.ini</strong></p>
<blockquote><p>-Duser.name=Your Name</p></blockquote>



		<!-- Added by WP-DragToShare-eXtended Plugin -->
		<script type="text/javascript">
			dtsv.dtse_post_143_permalink = 'http://blog.anhquan.de/143/eclipse-user-variable/';
			dtsv.dtse_post_143_title = 'Eclipse ${user} variable';
		</script>
		<!-- End of WP-DragToShare-eXtended Plugin -->]]></content:encoded>
			<wfw:commentRss>http://blog.anhquan.de/143/eclipse-user-variable/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Fix: Cannot perform SVN CHECKOUT from code.google.com</title>
		<link>http://blog.anhquan.de/139/fix-cannot-perform-svn-checkout-from-code-google-com/</link>
		<comments>http://blog.anhquan.de/139/fix-cannot-perform-svn-checkout-from-code-google-com/#comments</comments>
		<pubDate>Wed, 28 Apr 2010 18:02:28 +0000</pubDate>
		<dc:creator>anhquan</dc:creator>
				<category><![CDATA[Notes]]></category>
		<category><![CDATA[code.googe.com]]></category>
		<category><![CDATA[subversion]]></category>

		<guid isPermaLink="false">http://blog.anhquan.de/?p=139</guid>
		<description><![CDATA[code.google.com is down ? I don&#8217;t really know what happened. For a few hours i could not perform SVN checkout from code.google.com. It worked fine in some projects, while the others did not. When i used web browser to open the source tab of the broken project, it redirected to &#8220;Google Server Error&#8221; page. I [...]]]></description>
			<content:encoded><![CDATA[<p>code.google.com is down ? I don&#8217;t really know what happened. For a few hours i could not perform SVN checkout from code.google.com. It worked fine in some projects, while the others did not. When i used web browser to open the source tab of the broken project, it redirected to &#8220;Google Server Error&#8221; page.</p>
<p>I found out that  SVN COMMIT still worked.<span style="color: #800000;"><strong> I tried to commit a dummy change, and later on, SVN CHECKOUT worked again</strong></span>.Why is that ?</p>



		<!-- Added by WP-DragToShare-eXtended Plugin -->
		<script type="text/javascript">
			dtsv.dtse_post_139_permalink = 'http://blog.anhquan.de/139/fix-cannot-perform-svn-checkout-from-code-google-com/';
			dtsv.dtse_post_139_title = 'Fix: Cannot perform SVN CHECKOUT from code.google.com';
		</script>
		<!-- End of WP-DragToShare-eXtended Plugin -->]]></content:encoded>
			<wfw:commentRss>http://blog.anhquan.de/139/fix-cannot-perform-svn-checkout-from-code-google-com/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Gia Tài Của Vợ</title>
		<link>http://blog.anhquan.de/128/music-gia-tai-cua-vo/</link>
		<comments>http://blog.anhquan.de/128/music-gia-tai-cua-vo/#comments</comments>
		<pubDate>Thu, 01 Apr 2010 19:05:55 +0000</pubDate>
		<dc:creator>anhquan</dc:creator>
				<category><![CDATA[life]]></category>
		<category><![CDATA[Musik]]></category>

		<guid isPermaLink="false">http://blog.anhquan.de/?p=128</guid>
		<description><![CDATA[I just found this funny song on YouTube. This is a joke song based on &#8220;Gia Tài Của Mẹ&#8221; (by Trịnh Công Sơn). Gia Tài Của Vợ (Theo nhạc bài &#8220;Gia tài của mẹ&#8221; của Trịnh Công Sơn) Một nghìn năm nô lệ vợ nhà Một nghìn năm nô lệ vợ ta Hai mươi năm [...]]]></description>
			<content:encoded><![CDATA[<p>I just found this funny song on YouTube. This is a joke song based on &#8220;Gia Tài Của Mẹ&#8221; (by Trịnh Công Sơn).</p>
<div id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:faa37048-4840-458e-b63f-af1540fd39ee" class="wlWriterEditableSmartContent" style="margin: 0px; display: inline; float: none; padding: 0px;"><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="355" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="src" value="http://www.youtube.com/v/eKu2fupOyfA" /><param name="wmode" value="transparent" /><embed type="application/x-shockwave-flash" width="425" height="355" src="http://www.youtube.com/v/eKu2fupOyfA" wmode="transparent"></embed></object></div>
<p><strong><span style="color: #ff0000;">Gia Tài Của Vợ</span></strong></p>
<p>(Theo nhạc bài &#8220;Gia tài của mẹ&#8221; của Trịnh Công Sơn)</p>
<p>Một nghìn năm nô lệ vợ nhà<br />
Một nghìn năm nô lệ vợ ta<br />
Hai mươi năm rửa chén chùi nhà<br />
Gia tài của vợ, để lại cho ta<br />
Gia tài của vợ, là một khối việc nhà</p>
<p>Một nghìn năm ta sợ đàn bà<br />
Một trăm năm ta sợ vợ ta<br />
Hai mươi năm làm hết việc nhà<br />
Ôi còn gì là, một đời trai tơ<br />
Chỉ còn lại là, một kiếp chồng khờ</p>
<p>Nàng dạy ta biết nấu thịt bò<br />
Nàng dạy ta biết kho thịt kho<br />
Ta biết kho thịt kho, cho thật ngon<br />
Nàng dạy ta rửa chén, chùi nhà<br />
Nàng dạy ta biết mua đồ sale,<br />
Ôi biết bao là ơn, ơn vợ nhà</p>
<p>Một nghìn năm đi làm người chồng<br />
Một nghìn năm trong đời xiềng gông<br />
Hai mươi năm làm kiếp lòng thòng<br />
Ôi còn gì là, ngoài bộ xương teo<br />
Chỉ còn lại là, một kiếp bọt bèo</p>
<p>Đời đàn ông như vậy là thường,<br />
Đời đàn ông nghĩ lại mà thương<br />
Con con ơi hãy cố noi gương<br />
Hãy làm việc gì thì đừng bê tha<br />
Cho dù sợ bà thì (là) cũng bà nhà<br />
Dạy cho con khí phái chùi nhà<br />
Dạy cho con biết ơn người ta, con biết ơn người ta, không rên la.<br />
Dạy cho con biết quí đàn bà<br />
Dạy cho con biết như người cha, con biết như việc cha, vui việc nhà</p>



		<!-- Added by WP-DragToShare-eXtended Plugin -->
		<script type="text/javascript">
			dtsv.dtse_post_128_permalink = 'http://blog.anhquan.de/128/music-gia-tai-cua-vo/';
			dtsv.dtse_post_128_title = 'Gia Tài Của Vợ';
		</script>
		<!-- End of WP-DragToShare-eXtended Plugin -->]]></content:encoded>
			<wfw:commentRss>http://blog.anhquan.de/128/music-gia-tai-cua-vo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Some common errors when developing GWT apps</title>
		<link>http://blog.anhquan.de/124/some-common-errors-when-developing-gwt-apps/</link>
		<comments>http://blog.anhquan.de/124/some-common-errors-when-developing-gwt-apps/#comments</comments>
		<pubDate>Sun, 21 Feb 2010 19:41:52 +0000</pubDate>
		<dc:creator>anhquan</dc:creator>
				<category><![CDATA[Notes]]></category>
		<category><![CDATA[GWT]]></category>
		<category><![CDATA[Trouble Shooting]]></category>

		<guid isPermaLink="false">http://blog.anhquan.de/124/some-common-errors-when-developing-gwt-apps/</guid>
		<description><![CDATA[1. Use GWT.create(MyServiceAsync.class) instead of GWT.create(MyService.class) For example: import com.google.gwt.core.client.GWT; public class ServiceFactory { private static MyServiceAsync myService = null; public static SecurityServiceAsync getMyService() { if (myService == null) myService = GWT.create(MyServiceAsync.class); return myService; } } You will get the following exception when invoking the MyService &#160; Deferred binding result type ‘com.mycompany.myapp.client.MyService’ should not be [...]]]></description>
			<content:encoded><![CDATA[<h3>1. Use GWT.create(MyServiceAsync.class) instead of GWT.create(MyService.class)</h3>
<p>For example:</p>
</p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:f32c3428-b7e9-4f15-a8ea-c502c7ff2e88:d5266e03-cb8e-4026-869c-e7b00c7b4407" class="wlWriterEditableSmartContent">
<pre class="brush: java;">import com.google.gwt.core.client.GWT;

public class ServiceFactory {

	private static MyServiceAsync myService = null;

	public static SecurityServiceAsync getMyService() {
		if (myService == null)
			myService = GWT.create(MyServiceAsync.class);

		return myService;
	}

}</pre>
</div>
<p>You will get the following exception when invoking the MyService </p>
<p>&#160;</p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:f32c3428-b7e9-4f15-a8ea-c502c7ff2e88:b6ea1f9d-1ff9-4ead-bda9-63c3444558fe" class="wlWriterEditableSmartContent">
<pre class="brush: java;">Deferred binding result type ‘com.mycompany.myapp.client.MyService’ should not be abstract

Uncaught exception escaped

java.lang.RuntimeException: Deferred binding failed for 'com.mycompany.myapp.client.MyServiceAsync' (did you forget to inherit a required module?)
    at com.google.gwt.dev.shell.GWTBridgeImpl.create(GWTBridgeImpl.java:43)
    at com.google.gwt.core.client.GWT.create(GWT.java:98)
    at com.mycompany.myapp.client.ServiceFactory.getMyService</pre>
</div>
<p>&#160;</p>
<p>2. CSS files are not found after deploying on appspot.com</p>
<p>On appspot.com, filename is case-sensitive. But in Windows, filename is case-insensitive.</p>



		<!-- Added by WP-DragToShare-eXtended Plugin -->
		<script type="text/javascript">
			dtsv.dtse_post_124_permalink = 'http://blog.anhquan.de/124/some-common-errors-when-developing-gwt-apps/';
			dtsv.dtse_post_124_title = 'Some common errors when developing GWT apps';
		</script>
		<!-- End of WP-DragToShare-eXtended Plugin -->]]></content:encoded>
			<wfw:commentRss>http://blog.anhquan.de/124/some-common-errors-when-developing-gwt-apps/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Kristine Sa Show: Interview with Leyna Nguyen</title>
		<link>http://blog.anhquan.de/91/kristine-sa-show-interview-with-leyna-nguyen/</link>
		<comments>http://blog.anhquan.de/91/kristine-sa-show-interview-with-leyna-nguyen/#comments</comments>
		<pubDate>Thu, 04 Feb 2010 22:31:39 +0000</pubDate>
		<dc:creator>anhquan</dc:creator>
				<category><![CDATA[life]]></category>
		<category><![CDATA[Kristine Sa]]></category>
		<category><![CDATA[Leyna Nguyen]]></category>
		<category><![CDATA[Videos]]></category>
		<category><![CDATA[YouTube]]></category>

		<guid isPermaLink="false">http://blog.anhquan.de/2010/02/04/kristine-sa-show-interview-with-leyna-nguyen/</guid>
		<description><![CDATA[Today i introduce another show from Kristine Sa. This is an interview with Leyna Nguyen. For short, Leyna is a TV anchor at KCAL-TV in Los Angeles (in Vietnamese “người dẫn chương trình truyền hình”) She gains success in her career. But i dont want to talk about her success. I like this lady for [...]]]></description>
			<content:encoded><![CDATA[<p>Today i introduce another show from <a href="http://www.youtube.com/user/kristinesa" target="_blank">Kristine Sa</a>. This is an interview with <a href="http://en.wikipedia.org/wiki/Leyna_Nguyen" target="_blank">Leyna Nguyen</a>.</p>
<p>For short, Leyna is a TV anchor at <a href="http://en.wikipedia.org/wiki/KCAL-TV">KCAL-TV</a> in Los Angeles (in Vietnamese “người dẫn chương trình truyền hình”)</p>
<p>She gains success in her career. But i dont want to talk about her success.</p>
<p>I like this lady for the her truly Vietnamese soul. She does not forget her root, and she knows how to teach her children about the ‘nguồn gốc Việt Nam”. I admire her for it.</p>
<p>And i really feel sorry for so many Vietnamese children that i met in Germany. They grew up abroad, and … cannot speak Vietnamese. Day after day they are losing contact with their parents and the community just because they cannot understand Vietnamese.</p>
<p>This show is 90% in English. I am pretty sure that you can understand it if you dont speak Vietnamese.</p>
<p><strong>Please watch the show and share your thoughts.</strong></p>
<blockquote><p>Đây là chương trình truyền hình Kristine Sa của đài truyền hình Việt Hải Ngoại. Trong chương trình này, Kristine sẽ phỏng vấn cô Leyna Nguyễn, một người Mỹ gốc Việt rất thành công trong lĩnh vực truyền hình tại Mỹ.</p>
<p>Tôi rất ngưỡng mộ Leyna không phải vì thành công của cô trong sự nghiệp mà vì chất Việt đậm đà trong người phụ nữ đa tài này.</p>
</blockquote>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:c3d52516-edf0-4eaa-9996-9f5155901df0" class="wlWriterEditableSmartContent">
<div id="32a75ae2-1934-4b55-bc96-251fe0d89ad6" style="margin: 0px; padding: 0px; display: inline;">
<div><a href="http://www.youtube.com/watch?v=oO8o3_dIgiI" target="_new"><img src="http://blog.anhquan.de/wp-content/uploads/video8ea281704d263.jpg" style="border-style: none" galleryimg="no" onload="var downlevelDiv = document.getElementById('32a75ae2-1934-4b55-bc96-251fe0d89ad6'); downlevelDiv.innerHTML = &quot;&lt;div&gt;&lt;object width=\&quot;425\&quot; height=\&quot;355\&quot;&gt;&lt;param name=\&quot;movie\&quot; value=\&quot;http://www.youtube.com/v/oO8o3_dIgiI&amp;hl=en\&quot;&gt;&lt;\/param&gt;&lt;embed src=\&quot;http://www.youtube.com/v/oO8o3_dIgiI&amp;hl=en\&quot; type=\&quot;application/x-shockwave-flash\&quot; width=\&quot;425\&quot; height=\&quot;355\&quot;&gt;&lt;\/embed&gt;&lt;\/object&gt;&lt;\/div&gt;&quot;;" alt=""></a></div>
</div>
</div>
<p>&#160;</p>
<p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:33931526-f742-40ab-8286-ffac822a4519" class="wlWriterEditableSmartContent">
<div id="7dd4cbf2-cc60-4f6a-b4e3-5b51489df6d7" style="margin: 0px; padding: 0px; display: inline;">
<div><a href="http://www.youtube.com/watch?v=WweyiXD-x4s" target="_new"><img src="http://blog.anhquan.de/wp-content/uploads/video0efe1a0406493.jpg" style="border-style: none" galleryimg="no" onload="var downlevelDiv = document.getElementById('7dd4cbf2-cc60-4f6a-b4e3-5b51489df6d7'); downlevelDiv.innerHTML = &quot;&lt;div&gt;&lt;object width=\&quot;425\&quot; height=\&quot;355\&quot;&gt;&lt;param name=\&quot;movie\&quot; value=\&quot;http://www.youtube.com/v/WweyiXD-x4s&amp;hl=en\&quot;&gt;&lt;\/param&gt;&lt;embed src=\&quot;http://www.youtube.com/v/WweyiXD-x4s&amp;hl=en\&quot; type=\&quot;application/x-shockwave-flash\&quot; width=\&quot;425\&quot; height=\&quot;355\&quot;&gt;&lt;\/embed&gt;&lt;\/object&gt;&lt;\/div&gt;&quot;;" alt=""></a></div>
</div>
</div>
<p>&#160;</p>
<p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:4a5dc00e-e54f-43bf-969c-f41c9285477e" class="wlWriterEditableSmartContent">
<div id="d4859877-03ca-4c70-8efe-2a36982c454c" style="margin: 0px; padding: 0px; display: inline;">
<div><a href="http://www.youtube.com/watch?v=WweyiXD-x4s" target="_new"><img src="http://blog.anhquan.de/wp-content/uploads/video5022ecdcf37a3.jpg" style="border-style: none" galleryimg="no" onload="var downlevelDiv = document.getElementById('d4859877-03ca-4c70-8efe-2a36982c454c'); downlevelDiv.innerHTML = &quot;&lt;div&gt;&lt;object width=\&quot;425\&quot; height=\&quot;355\&quot;&gt;&lt;param name=\&quot;movie\&quot; value=\&quot;http://www.youtube.com/v/WweyiXD-x4s&amp;hl=en\&quot;&gt;&lt;\/param&gt;&lt;embed src=\&quot;http://www.youtube.com/v/WweyiXD-x4s&amp;hl=en\&quot; type=\&quot;application/x-shockwave-flash\&quot; width=\&quot;425\&quot; height=\&quot;355\&quot;&gt;&lt;\/embed&gt;&lt;\/object&gt;&lt;\/div&gt;&quot;;" alt=""></a></div>
</div>
</div>
<p>&#160;</p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:794248db-7076-4247-8ca6-6183673672b1" class="wlWriterEditableSmartContent">
<div id="222348b7-7851-4433-9c47-d229be42c1d3" style="margin: 0px; padding: 0px; display: inline;">
<div><a href="http://www.youtube.com/watch?v=anRUs1zetRY" target="_new"><img src="http://blog.anhquan.de/wp-content/uploads/videof496d4ec1da73.jpg" style="border-style: none" galleryimg="no" onload="var downlevelDiv = document.getElementById('222348b7-7851-4433-9c47-d229be42c1d3'); downlevelDiv.innerHTML = &quot;&lt;div&gt;&lt;object width=\&quot;425\&quot; height=\&quot;355\&quot;&gt;&lt;param name=\&quot;movie\&quot; value=\&quot;http://www.youtube.com/v/anRUs1zetRY&amp;hl=en\&quot;&gt;&lt;\/param&gt;&lt;embed src=\&quot;http://www.youtube.com/v/anRUs1zetRY&amp;hl=en\&quot; type=\&quot;application/x-shockwave-flash\&quot; width=\&quot;425\&quot; height=\&quot;355\&quot;&gt;&lt;\/embed&gt;&lt;\/object&gt;&lt;\/div&gt;&quot;;" alt=""></a></div>
</div>
</div>
</p>
<p>&#160;</p>
<p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:9a2313bd-60ff-498d-a275-d44746e78b49" class="wlWriterEditableSmartContent">
<div id="a658eb32-75b1-4873-b71a-c25c545dac87" style="margin: 0px; padding: 0px; display: inline;">
<div><a href="http://www.youtube.com/watch?v=KChTtqtbyoc" target="_new"><img src="http://blog.anhquan.de/wp-content/uploads/video70abbb44204e3.jpg" style="border-style: none" galleryimg="no" onload="var downlevelDiv = document.getElementById('a658eb32-75b1-4873-b71a-c25c545dac87'); downlevelDiv.innerHTML = &quot;&lt;div&gt;&lt;object width=\&quot;425\&quot; height=\&quot;355\&quot;&gt;&lt;param name=\&quot;movie\&quot; value=\&quot;http://www.youtube.com/v/KChTtqtbyoc&amp;hl=en\&quot;&gt;&lt;\/param&gt;&lt;embed src=\&quot;http://www.youtube.com/v/KChTtqtbyoc&amp;hl=en\&quot; type=\&quot;application/x-shockwave-flash\&quot; width=\&quot;425\&quot; height=\&quot;355\&quot;&gt;&lt;\/embed&gt;&lt;\/object&gt;&lt;\/div&gt;&quot;;" alt=""></a></div>
</div>
</div>



		<!-- Added by WP-DragToShare-eXtended Plugin -->
		<script type="text/javascript">
			dtsv.dtse_post_91_permalink = 'http://blog.anhquan.de/91/kristine-sa-show-interview-with-leyna-nguyen/';
			dtsv.dtse_post_91_title = 'Kristine Sa Show: Interview with Leyna Nguyen';
		</script>
		<!-- End of WP-DragToShare-eXtended Plugin -->]]></content:encoded>
			<wfw:commentRss>http://blog.anhquan.de/91/kristine-sa-show-interview-with-leyna-nguyen/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Install Artifactory in Windows</title>
		<link>http://blog.anhquan.de/85/install-artifactory-in-windows/</link>
		<comments>http://blog.anhquan.de/85/install-artifactory-in-windows/#comments</comments>
		<pubDate>Tue, 02 Feb 2010 23:11:37 +0000</pubDate>
		<dc:creator>anhquan</dc:creator>
				<category><![CDATA[Notes]]></category>

		<guid isPermaLink="false">http://blog.anhquan.de/2010/02/02/install-artifactory-in-windows/</guid>
		<description><![CDATA[&#160; 1. Download Artifactory Standalone Zip from jfrog.org 2. Extract the zip file somewhere, let call it $ARTIFACTORY_HOME 3. Run $ARTIFACTORY_HOME\bin\artifactory.bat Note: You may allow Windows Firewall not to block this application. &#160; 4. Open the browser, go to http://localhost:8081/artifactory 5. Now you can manage your maven repository. dtsv.dtse_post_85_permalink = 'http://blog.anhquan.de/85/install-artifactory-in-windows/'; dtsv.dtse_post_85_title = 'Install Artifactory [...]]]></description>
			<content:encoded><![CDATA[<p>&#160;</p>
<p>1. <a href="http://www.jfrog.org/download.php">Download Artifactory Standalone Zip from jfrog.org</a></p>
<p>2. Extract the zip file somewhere, let call it $ARTIFACTORY_HOME</p>
<p>3. Run $ARTIFACTORY_HOME\bin\artifactory.bat </p>
<blockquote><p>Note: You may allow Windows Firewall not to block this application.</p>
</blockquote>
<p>&#160;<a href="http://blog.anhquan.de/wp-content/uploads/artifactory_start.png" rel="lightbox[85]"><img class="dtse-img dtse-post-85" style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="artifactory_start" border="0" alt="artifactory_start" src="http://blog.anhquan.de/wp-content/uploads/artifactory_start_thumb.png" width="677" height="448" /></a> </p>
<p>4. Open the browser, go to <a href="http://localhost:8081/artifactory" target="_blank">http://localhost:8081/artifactory</a></p>
<p>5. Now you can manage your maven repository.</p>



		<!-- Added by WP-DragToShare-eXtended Plugin -->
		<script type="text/javascript">
			dtsv.dtse_post_85_permalink = 'http://blog.anhquan.de/85/install-artifactory-in-windows/';
			dtsv.dtse_post_85_title = 'Install Artifactory in Windows';
		</script>
		<!-- End of WP-DragToShare-eXtended Plugin -->]]></content:encoded>
			<wfw:commentRss>http://blog.anhquan.de/85/install-artifactory-in-windows/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hibernate Annotation: length-limited field is not auto truncated</title>
		<link>http://blog.anhquan.de/54/hibernate-annotation-length-limited-field-is-not-auto-truncated/</link>
		<comments>http://blog.anhquan.de/54/hibernate-annotation-length-limited-field-is-not-auto-truncated/#comments</comments>
		<pubDate>Mon, 25 Jan 2010 21:04:58 +0000</pubDate>
		<dc:creator>anhquan</dc:creator>
				<category><![CDATA[Notes]]></category>
		<category><![CDATA[Annotation]]></category>
		<category><![CDATA[Hibernate]]></category>
		<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://blog.anhquan.de/2010/01/25/hibernate-annotation-length-limited-field-is-not-auto-truncated/</guid>
		<description><![CDATA[Problem: Let’s consider a table containing a length-limited field (e.g. COUNTRY_CODE is 2-char length). CREATE TABLE `country` ( `COUNTRY_CODE` varchar(2), `COUNTRY_NAME` varchar(255), ) - The length value is already specified in Hibernate annotation. @Column(name="COUNTRY_CODE", length=2) private String countryCode; - However when inserting a value length beyond the limit, this value is not automatically truncated, and [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Problem:</strong> </p>
<p>Let’s consider a table containing a length-limited field (e.g. COUNTRY_CODE is 2-char length). </p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:f32c3428-b7e9-4f15-a8ea-c502c7ff2e88:8e28b0c0-be97-4f35-a3c5-dfc188c119b5" class="wlWriterEditableSmartContent">
<pre class="brush: sql;">CREATE TABLE  `country` (

	`COUNTRY_CODE` varchar(2),
	`COUNTRY_NAME` varchar(255),

) </pre>
</div>
<p>- The length value is already specified in Hibernate annotation. </p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:f32c3428-b7e9-4f15-a8ea-c502c7ff2e88:5ee9094a-89db-4fae-b13a-1dd283c001ff" class="wlWriterEditableSmartContent">
<pre class="brush: java;">@Column(name="COUNTRY_CODE", length=2)
private String countryCode;</pre>
</div>
<p>- However when inserting a value length beyond the limit, this value is not automatically truncated, and Hibernate throws the following exception:</p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:f32c3428-b7e9-4f15-a8ea-c502c7ff2e88:474e2669-c876-4f0c-9796-477109ff7e3e" class="wlWriterEditableSmartContent">
<pre class="brush: java;auto-links:false;toolbar:false;">Caused by: java.sql.BatchUpdateException: Data truncation: Data too long for column 'COUNTRY_CODE' at row 1</pre>
</div>
<p><strong>Solution:</strong> <em>Use custom SQL :</em></p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:f32c3428-b7e9-4f15-a8ea-c502c7ff2e88:73ad797a-0eb3-47e2-9517-37d6cbd4538f" class="wlWriterEditableSmartContent">
<pre class="brush: java;">import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.Table;

import org.hibernate.annotations.SQLInsert;

/**
* The persistent class for the country database table.
*
*/
@Entity
@Table(name="country")
@SQLInsert(sql="INSERT IGNORE INTO country (country_name, country_code) VALUES(?,upper(?))")
public class Country {

	@Id
	@Column(name="COUNTRY_CODE", length=2)
	private String countryCode;

	@Column(name="COUNTRY_NAME")
	private String countryName;

	//bi-directional many-to-one association to State
	@OneToMany(mappedBy="country")
	private List&lt;State&gt; states;

	//... standard getters and setters

}</pre>
</div>



		<!-- Added by WP-DragToShare-eXtended Plugin -->
		<script type="text/javascript">
			dtsv.dtse_post_54_permalink = 'http://blog.anhquan.de/54/hibernate-annotation-length-limited-field-is-not-auto-truncated/';
			dtsv.dtse_post_54_title = 'Hibernate Annotation: length-limited field is not auto truncated';
		</script>
		<!-- End of WP-DragToShare-eXtended Plugin -->]]></content:encoded>
			<wfw:commentRss>http://blog.anhquan.de/54/hibernate-annotation-length-limited-field-is-not-auto-truncated/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

