<?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>Jabbering Giraffe &#187; eclipse</title>
	<atom:link href="http://happygiraffe.net/blog/tag/eclipse/feed/" rel="self" type="application/rss+xml" />
	<link>http://happygiraffe.net/blog</link>
	<description></description>
	<lastBuildDate>Tue, 07 Feb 2012 20:49:34 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
<atom:link rel="hub" href="http://pubsubhubbub.appspot.com"/><atom:link rel="hub" href="http://superfeedr.com/hubbub"/>		<item>
		<title>Solr&#039;s Lucene Source</title>
		<link>http://happygiraffe.net/blog/2009/07/16/solrs-lucene-source/</link>
		<comments>http://happygiraffe.net/blog/2009/07/16/solrs-lucene-source/#comments</comments>
		<pubDate>Thu, 16 Jul 2009 22:15:19 +0000</pubDate>
		<dc:creator>Dominic Mitchell</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[lucene]]></category>
		<category><![CDATA[solr]]></category>

		<guid isPermaLink="false">http://happygiraffe.net/blog/?p=1558</guid>
		<description><![CDATA[I&#8217;m debugging a plugin for Solr. I&#8217;ve just about got the magic voodoo set up so that I can make Eclipse talk to tomcat and stick breakpoints in and so on. But I&#8217;ve immediately run into a problem. Even though &#8230; <a href="http://happygiraffe.net/blog/2009/07/16/solrs-lucene-source/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m debugging a plugin for <a href="http://lucene.apache.org/solr/">Solr</a>.  I&#8217;ve just about got the magic voodoo set up so that I can make Eclipse talk to tomcat and stick breakpoints in and so on.  But I&#8217;ve immediately run into a problem.</p>
<p>Even though Solr itself comes with <code>-sources</code> jars, the bundled copy of lucene that they&#8217;ve used <em>doesn&#8217;t</em>.  Needless to say, this is a bit of a hindrance.</p>
<p>Thankfully, the apache people have set up <a href="http://git.apache.org/">git.apache.org</a>, which makes this situation a lot less annoying than it could be.</p>
<p>First, I checked out copies of lucene &#038; solr.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ <span style="color: #c20cb9; font-weight: bold;">git</span> clone <span style="color: #c20cb9; font-weight: bold;">git</span>:<span style="color: #000000; font-weight: bold;">//</span>git.apache.org<span style="color: #000000; font-weight: bold;">/</span>solr.git
$ <span style="color: #c20cb9; font-weight: bold;">git</span> clone <span style="color: #c20cb9; font-weight: bold;">git</span>:<span style="color: #000000; font-weight: bold;">//</span>git.apache.org<span style="color: #000000; font-weight: bold;">/</span>lucene.git</pre></div></div>

<p>Now, I need to go into solr and figure out <em>which</em> version of lucene is in use.  Unfortunately, it&#8217;s not a released version, it&#8217;s a snapshot of the lucene trunk at a point in time.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ <span style="color: #7a0874; font-weight: bold;">cd</span> …<span style="color: #000000; font-weight: bold;">/</span>solr
$ <span style="color: #c20cb9; font-weight: bold;">git</span> branch <span style="color: #660033;">-r</span>
  origin<span style="color: #000000; font-weight: bold;">/</span>HEAD -<span style="color: #000000; font-weight: bold;">&gt;</span> origin<span style="color: #000000; font-weight: bold;">/</span>trunk
  origin<span style="color: #000000; font-weight: bold;">/</span>branch-<span style="color: #000000;">1.1</span>
  origin<span style="color: #000000; font-weight: bold;">/</span>branch-<span style="color: #000000;">1.2</span>
  origin<span style="color: #000000; font-weight: bold;">/</span>branch-<span style="color: #000000;">1.3</span>
  origin<span style="color: #000000; font-weight: bold;">/</span>sandbox
  origin<span style="color: #000000; font-weight: bold;">/</span>solr-ruby-refactoring
  origin<span style="color: #000000; font-weight: bold;">/</span>tags<span style="color: #000000; font-weight: bold;">/</span>release-1.1.0
  origin<span style="color: #000000; font-weight: bold;">/</span>tags<span style="color: #000000; font-weight: bold;">/</span>release-1.2.0
  origin<span style="color: #000000; font-weight: bold;">/</span>tags<span style="color: #000000; font-weight: bold;">/</span>release-1.3.0
  origin<span style="color: #000000; font-weight: bold;">/</span>trunk
$ <span style="color: #c20cb9; font-weight: bold;">git</span> whatchanged origin<span style="color: #000000; font-weight: bold;">/</span>tags<span style="color: #000000; font-weight: bold;">/</span>release-1.3.0 lib
…
commit 904e378b7b4fd18232f657c9daf484a3e63b272c
Author: Yonik Seeley <span style="color: #000000; font-weight: bold;">&lt;</span>yonik<span style="color: #000000; font-weight: bold;">@</span>apache.org<span style="color: #000000; font-weight: bold;">&gt;</span>
Date:   Wed Sep <span style="color: #000000;">3</span> <span style="color: #000000;">20</span>:<span style="color: #000000;">31</span>:<span style="color: #000000;">42</span> <span style="color: #000000;">2008</span> +0000
&nbsp;
    lucene update <span style="color: #000000;">2.4</span>-dev r691741
&nbsp;
    git-svn-id: https:<span style="color: #000000; font-weight: bold;">//</span>svn.apache.org<span style="color: #000000; font-weight: bold;">/</span>repos<span style="color: #000000; font-weight: bold;">/</span>asf<span style="color: #000000; font-weight: bold;">/</span>lucene<span style="color: #000000; font-weight: bold;">/</span>solr<span style="color: #000000; font-weight: bold;">/</span>branches<span style="color: #000000; font-weight: bold;">/</span>branch-<span style="color: #000000;">1.3</span><span style="color: #000000; font-weight: bold;">@</span>691758 13f79535-47bb-0310-<span style="color: #000000;">9956</span>-ffa450edef68
&nbsp;
:<span style="color: #000000;">100644</span> <span style="color: #000000;">100644</span> a297b74... 54442dc... M  lib<span style="color: #000000; font-weight: bold;">/</span>lucene-analyzers-<span style="color: #000000;">2.4</span>-dev.jar
:<span style="color: #000000;">100644</span> <span style="color: #000000;">100644</span> 596625b... 5c6e003... M  lib<span style="color: #000000; font-weight: bold;">/</span>lucene-core-<span style="color: #000000;">2.4</span>-dev.jar
:<span style="color: #000000;">100644</span> <span style="color: #000000;">100644</span> db13718... f0f93a7... M  lib<span style="color: #000000; font-weight: bold;">/</span>lucene-highlighter-<span style="color: #000000;">2.4</span>-dev.jar
:<span style="color: #000000;">100644</span> <span style="color: #000000;">100644</span> 50c8cb4... a599f43... M  lib<span style="color: #000000; font-weight: bold;">/</span>lucene-memory-<span style="color: #000000;">2.4</span>-dev.jar
:<span style="color: #000000;">100644</span> <span style="color: #000000;">100644</span> aef3fb8... 79feaef... M  lib<span style="color: #000000; font-weight: bold;">/</span>lucene-queries-<span style="color: #000000;">2.4</span>-dev.jar
:<span style="color: #000000;">100644</span> <span style="color: #000000;">100644</span> 1c733b9... 440fa4e... M  lib<span style="color: #000000; font-weight: bold;">/</span>lucene-snowball-<span style="color: #000000;">2.4</span>-dev.jar
:<span style="color: #000000;">100644</span> <span style="color: #000000;">100644</span> 0195fa2... b5ff08b... M  lib<span style="color: #000000; font-weight: bold;">/</span>lucene-spellchecker-<span style="color: #000000;">2.4</span>-dev.jar
…</pre></div></div>

<p>So, the last change to lucene was taking a copy of r691741 of lucene&#8217;s trunk.  So, lets go over there.  And see what that looks like.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ <span style="color: #7a0874; font-weight: bold;">cd</span> …<span style="color: #000000; font-weight: bold;">/</span>lucene
$ <span style="color: #c20cb9; font-weight: bold;">git</span> log <span style="color: #660033;">--grep</span>=<span style="color: #000000;">691741</span></pre></div></div>

<p>Except that doesn&#8217;t return anything.  Because there was no lucene commit at that revision in the original repository (it was <a href="http://svn.apache.org/viewvc?view=rev&#038;revision=691741">something to do with geronimo</a>).  So we need to search backwards for the commit nearest to that revision.  Thankfully, <a href="http://www.kernel.org/pub/software/scm/git/docs/git-svn.html">git svn</a> includes the original subversion revision numbers of each commit.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ <span style="color: #7a0874; font-weight: bold;">cd</span> …<span style="color: #000000; font-weight: bold;">/</span>lucene
$ <span style="color: #c20cb9; font-weight: bold;">git</span> log <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">perl</span> <span style="color: #660033;">-lne</span> <span style="color: #ff0000;">'if (m/git-svn-id:.*@(\d+)/ &amp;&amp; $1 &lt;= 691741){print $1; exit}'</span>
<span style="color: #000000;">691694</span></pre></div></div>

<p>So now we can go back and find the git commit id that corresponds.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ <span style="color: #7a0874; font-weight: bold;">cd</span> …<span style="color: #000000; font-weight: bold;">/</span>lucene
$ <span style="color: #c20cb9; font-weight: bold;">git</span> log <span style="color: #660033;">--grep</span>=<span style="color: #000000;">691694</span>
commit 71afff2cebd022fe63bdf2ec4b87aaa0cee41dc8
Author: Michael McCandless <span style="color: #000000; font-weight: bold;">&lt;</span>mikemccand<span style="color: #000000; font-weight: bold;">@</span>apache.org<span style="color: #000000; font-weight: bold;">&gt;</span>
Date:   Wed Sep <span style="color: #000000;">3</span> <span style="color: #000000;">17</span>:<span style="color: #000000;">34</span>:<span style="color: #000000;">29</span> <span style="color: #000000;">2008</span> +0000
&nbsp;
    LUCENE-<span style="color: #000000;">1374</span>: fix <span style="color: #7a0874; font-weight: bold;">test</span> <span style="color: #000000; font-weight: bold;">case</span> to close reader<span style="color: #000000; font-weight: bold;">/</span>writer <span style="color: #000000; font-weight: bold;">in</span> try<span style="color: #000000; font-weight: bold;">/</span>finally; add assert b<span style="color: #000000; font-weight: bold;">!</span>=null <span style="color: #000000; font-weight: bold;">in</span> RAMOutputStream.writeBytes <span style="color: #7a0874; font-weight: bold;">&#40;</span>matches FSIndexOutput <span style="color: #c20cb9; font-weight: bold;">which</span> hits NPE<span style="color: #7a0874; font-weight: bold;">&#41;</span>
&nbsp;
    git-svn-id: https:<span style="color: #000000; font-weight: bold;">//</span>svn.apache.org<span style="color: #000000; font-weight: bold;">/</span>repos<span style="color: #000000; font-weight: bold;">/</span>asf<span style="color: #000000; font-weight: bold;">/</span>lucene<span style="color: #000000; font-weight: bold;">/</span>java<span style="color: #000000; font-weight: bold;">/</span>trunk<span style="color: #000000; font-weight: bold;">@</span>691694 13f79535-47bb-0310-<span style="color: #000000;">9956</span>-ffa450edef68</pre></div></div>

<p>Hurrah!  Now I can checkout the same version of Lucene that&#8217;s in Solr.  But, probably more useful for Eclipse, is just to zip it up somewhere.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ <span style="color: #7a0874; font-weight: bold;">cd</span> …<span style="color: #000000; font-weight: bold;">/</span>lucene
$ <span style="color: #c20cb9; font-weight: bold;">git</span> archive <span style="color: #660033;">--format</span>=<span style="color: #c20cb9; font-weight: bold;">zip</span> 71afff2 <span style="color: #000000; font-weight: bold;">&gt;/</span>tmp<span style="color: #000000; font-weight: bold;">/</span>lucene-<span style="color: #000000;">2.4</span>-r691741.zip</pre></div></div>

<p>Excellent.  Now I can resume my debugging session. <img src='http://happygiraffe.net/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>NB: I <em>could</em> have just used subversion to check out the correct revision of Lucene.  But, I find it quicker to use git to clone the repository, and I get the added benefit that I now have the whole lucene history available.  So I can quickly see <em>why</em> something was changed.</p>
]]></content:encoded>
			<wfw:commentRss>http://happygiraffe.net/blog/2009/07/16/solrs-lucene-source/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Using a Java 6 based Eclipse with Cocoa</title>
		<link>http://happygiraffe.net/blog/2009/07/15/using-a-java-6-based-eclipse-with-cocoa/</link>
		<comments>http://happygiraffe.net/blog/2009/07/15/using-a-java-6-based-eclipse-with-cocoa/#comments</comments>
		<pubDate>Wed, 15 Jul 2009 19:37:57 +0000</pubDate>
		<dc:creator>Dominic Mitchell</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[maven]]></category>
		<category><![CDATA[osx]]></category>

		<guid isPermaLink="false">http://happygiraffe.net/blog/?p=1553</guid>
		<description><![CDATA[This is somewhat niche, but I&#8217;m going to post it anyway in case it helps somebody else… I recently saw a problem with Eclipse and m2eclipse. When I tried to import a Java 6 based project, I got an error &#8230; <a href="http://happygiraffe.net/blog/2009/07/15/using-a-java-6-based-eclipse-with-cocoa/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>This is somewhat niche, but I&#8217;m going to post it anyway in case it helps <a href="http://archive.m2eclipse.codehaus.org/lists/org.codehaus.m2eclipse.user/msg/24497016.post@talk.nabble.com">somebody else</a>…</p>
<p>I recently saw a problem with Eclipse and <a href="http://m2eclipse.codehaus.org/">m2eclipse</a>.  When I tried to import a Java 6 based project, I got an error in the maven console.</p>
<pre>
Failure executing javac, but could not parse the error:
javac: invalid target release: 1.6
Usage: javac
<options> <source files>
where possible options include:
 -g                         Generate all debugging info
 -g:none                    Generate no debugging info
 -g:{lines,vars,source}     Generate only some debugging info
 -nowarn                    Generate no warnings
 -verbose                   Output messages about what the compiler is doing
</pre>
<p>This is happening because m2eclipse is trying to run the compiler from within the same JVM that Eclipse is running.  And by the <a href="http://www.eclipse.org/downloads/">eclipse.org downloads</a> only offer Carbon and Cocoa options.  Both of these are 32 bit.  Which means they&#8217;ll only ever run using Java 5, even if you&#8217;ve got Java 6 installed (unlike my iMac G5, <em>grumble, grumble</em>).</p>
<p>Thankfully, the 64 cocoa version is available, though it&#8217;s only the old &#8220;Eclipse SDK&#8221; download.  But <a href="http://ekkescorner.wordpress.com/">ekke</a> wrote up <a href="http://ekkescorner.wordpress.com/2009/06/30/galileo-epp-for-cocoa-64-bit/">[galileo] EPP for Cocoa 64-bit</a>, which shows how to go about getting (effectively) the same setup as the eclipse.org downloads.</p>
<p>If you follow along that procedure, you get an eclipse that works well with m2eclipse and Java 6 project.  As a bonus, it feels quicker to me.</p>
<p>Hopefully future versions of Eclipse will offer a 64-bit cocoa download.</p>
]]></content:encoded>
			<wfw:commentRss>http://happygiraffe.net/blog/2009/07/15/using-a-java-6-based-eclipse-with-cocoa/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Responsiveness</title>
		<link>http://happygiraffe.net/blog/2009/06/11/responsiveness/</link>
		<comments>http://happygiraffe.net/blog/2009/06/11/responsiveness/#comments</comments>
		<pubDate>Thu, 11 Jun 2009 11:06:17 +0000</pubDate>
		<dc:creator>Dominic Mitchell</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[eclipse]]></category>

		<guid isPermaLink="false">http://happygiraffe.net/blog/?p=1537</guid>
		<description><![CDATA[Yesterday, whilst trying out Eclipse 3.5, I noticed a problem with the new XSLT support. So, I filed bug 279793 (All XSLT 2.0 has validation errors in xslt-2.0.xsd). I got a response in under 30 minutes, including a workaround and &#8230; <a href="http://happygiraffe.net/blog/2009/06/11/responsiveness/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Yesterday, whilst trying out Eclipse 3.5, I noticed a problem with the new XSLT support.  So, I filed <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=279793">bug 279793</a> (All XSLT 2.0 has validation errors in xslt-2.0.xsd).</p>
<p>I got a response in <em>under 30 minutes</em>, including a workaround and an integration into the next release.  That is completely awesome!</p>
<p>I&#8217;d like to say a huge thanks to <a href="http://intellectualcramps.blogspot.com/">Dave Carver</a> for his work, not just on fixing this bug, but also on getting the XSLT integration with Eclipse.  That was something I&#8217;d been missing for a while.</p>
]]></content:encoded>
			<wfw:commentRss>http://happygiraffe.net/blog/2009/06/11/responsiveness/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Eclipse 3.5 in Cocoa</title>
		<link>http://happygiraffe.net/blog/2009/06/10/eclipse-3-5-in-cocoa/</link>
		<comments>http://happygiraffe.net/blog/2009/06/10/eclipse-3-5-in-cocoa/#comments</comments>
		<pubDate>Wed, 10 Jun 2009 12:39:04 +0000</pubDate>
		<dc:creator>Dominic Mitchell</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[osx]]></category>

		<guid isPermaLink="false">http://happygiraffe.net/blog/?p=1535</guid>
		<description><![CDATA[I&#8217;m just trying out Eclipse 3.5-RC4. One of the big new features for me is that it&#8217;s now based on Cocoa instead of Carbon. There are many benefits to this, including being able to run on 64-bit Java 6. Fundamentally, &#8230; <a href="http://happygiraffe.net/blog/2009/06/10/eclipse-3-5-in-cocoa/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m just trying out <a href="http://download.eclipse.org/eclipse/downloads/drops/S-3.5RC4-200906051444/index.php">Eclipse 3.5-RC4</a>.  One of the big new features for me is that it&#8217;s now based on <a href="http://developer.apple.com/cocoa/">Cocoa</a> instead of <a href="http://developer.apple.com/carbon/">Carbon</a>.  There are many benefits to this, including being able to run on 64-bit Java 6.  Fundamentally, it just looks and feels a little bit more mac-like.</p>
<p>As an example, one nice little mac feature I use a bit is &#8220;lookup this word in the dictionary&#8221;.  If you hit <code>Ctrl-Cmd-D</code> and hover over a word, you get an in-place definition.  Eclipse now does this:</p>
<div style="text-align:center;"><img src="http://happygiraffe.net/blog/wp-content/uploads/2009/06/eclipse-dict-lookup.png" alt="Looking up a word in the dictionary inside Eclipse" border="0" width="314" height="275" /></div>
<p>It doesn&#8217;t work everywhere (which you can probably guess from the context of that screenshot), but it is an indicator that Eclipse &#038; mac are coming together.  This is great news for Java developers on the mac.</p>
<p>Oh, it does feel a little bit faster too, which can&#8217;t hurt.</p>
]]></content:encoded>
			<wfw:commentRss>http://happygiraffe.net/blog/2009/06/10/eclipse-3-5-in-cocoa/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>More Java Memory Analysis</title>
		<link>http://happygiraffe.net/blog/2009/04/13/more-java-memory-analysis/</link>
		<comments>http://happygiraffe.net/blog/2009/04/13/more-java-memory-analysis/#comments</comments>
		<pubDate>Mon, 13 Apr 2009 19:21:24 +0000</pubDate>
		<dc:creator>Dominic Mitchell</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[mat]]></category>

		<guid isPermaLink="false">http://happygiraffe.net/blog/?p=1503</guid>
		<description><![CDATA[If you found Heap Dump Analysis interesting, you might also be interested in Identifying ThreadLocal Memory Leaks in JavaEE Web Apps from Igo Molnar. I saw this a day or so after my original post. He uses The eclipse memory &#8230; <a href="http://happygiraffe.net/blog/2009/04/13/more-java-memory-analysis/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>If you found <a href="http://happygiraffe.net/blog/2009/04/02/heap-dump-analysis/">Heap Dump Analysis</a> interesting, you might also be interested in <a href="http://blog.igorminar.com/2009/03/identifying-threadlocal-memory-leaks-in.html">Identifying ThreadLocal Memory Leaks in JavaEE Web Apps</a> from <a href="http://blog.igorminar.com/">Igo Molnar</a>.  I saw this a day or so after my original post.  He uses The <a href="http://www.eclipse.org/mat/">eclipse memory analysis tool (MAT)</a> to figure out what&#8217;s going on.</p>
<p>In his case, he <a href="http://blog.igorminar.com/2009/03/identifying-threadlocal-memory-leaks-in.html?showComment=1238593380000#c2003539858355670950">couldn&#8217;t use visualvm</a> as the heap dump was too large.</p>
<p>I downloaded MAT for my problem and had a look at it.  It seems like it does much more than visualvm (there are may &#8220;pre-canned&#8221; queries available, plus an &#8220;object query language&#8221;).  But that makes it correspondingly harder to use.  I spent a while going through the tutorials to get the hang of it, whereas visualvm seemed to come together quickly for me.  I suspect that if I ploughed more time into it, I&#8217;d get a lot more out of it.  It seems to be something that I should learn <em>before</em> I get to need it again.  <img src='http://happygiraffe.net/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://happygiraffe.net/blog/2009/04/13/more-java-memory-analysis/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Eclipse Update Failure</title>
		<link>http://happygiraffe.net/blog/2009/02/09/eclipse-update-failure/</link>
		<comments>http://happygiraffe.net/blog/2009/02/09/eclipse-update-failure/#comments</comments>
		<pubDate>Mon, 09 Feb 2009 14:45:48 +0000</pubDate>
		<dc:creator>Dominic Mitchell</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[java]]></category>

		<guid isPermaLink="false">http://happygiraffe.net/blog/?p=1471</guid>
		<description><![CDATA[I&#8217;ve just hit the &#8220;update everything&#8221; button in my Eclipse install. All seemed well until I restarted it and got a message about a shared library not being found. Looking in Console.app showed this lovely little line: 09/02/2009 14:33:07 [0x0-0x1ef1ef].org.eclipse.eclipse[43353] &#8230; <a href="http://happygiraffe.net/blog/2009/02/09/eclipse-update-failure/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve just hit the &#8220;update everything&#8221; button in my Eclipse install.  All seemed well until I restarted it and got a message about a shared library not being found.  Looking in <code>Console.app</code> showed this lovely little line:</p>
<blockquote><p>09/02/2009 14:33:07 [0x0-0x1ef1ef].org.eclipse.eclipse[43353] dlopen(../../../plugins/org.eclipse.equinox.launcher.carbon.macosx_1.0.100.v20080509-1800, 2): image not found </p></blockquote>
<p>Fairy &#8217;nuff.  I had a quick grep in the eclipse folder and found that it&#8217;s referenced by <a href="http://wiki.eclipse.org/Eclipse.ini">eclipse.ini</a> (in <code>Eclipse.app/Contents/MacOS</code>).  Using the magic of vim&#8217;s filename completion (<code>^X^F</code>) I corrected it to the newly updated version:</p>

<div class="wp_syntax"><div class="code"><pre class="diff" style="font-family:monospace;"><span style="color: #888822;">--- eclipse.ini.orig	2009-02-09 14:39:16.000000000 +0000</span>
<span style="color: #888822;">+++ eclipse.ini	2009-02-09 14:39:19.000000000 +0000</span>
<span style="color: #440088;">@@ -1,5 +1,5 @@</span>
 --launcher.library
<span style="color: #991111;">-../../../plugins/org.eclipse.equinox.launcher.carbon.macosx_1.0.100.v20080509-1800</span>
<span style="color: #00b000;">+../../../plugins/org.eclipse.equinox.launcher.carbon.macosx_1.0.101.R34x_v20080731</span>
 -startup
 ../../../plugins/org.eclipse.equinox.launcher_1.0.101.R34x_v20080819.jar
 -showsplash</pre></div></div>

<p>Now, eclipse starts again.</p>
]]></content:encoded>
			<wfw:commentRss>http://happygiraffe.net/blog/2009/02/09/eclipse-update-failure/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>NetBeans 6.5</title>
		<link>http://happygiraffe.net/blog/2008/11/20/netbeans-65/</link>
		<comments>http://happygiraffe.net/blog/2008/11/20/netbeans-65/#comments</comments>
		<pubDate>Thu, 20 Nov 2008 23:15:56 +0000</pubDate>
		<dc:creator>Dominic Mitchell</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[maven]]></category>
		<category><![CDATA[netbeans]]></category>

		<guid isPermaLink="false">http://happygiraffe.net/blog/?p=1416</guid>
		<description><![CDATA[Today NetBeans 6.5 got released. Congratulations, guys! I&#8217;m primarily an Eclipse user1, but I keep hearing about NetBeans through the Java Posse and heck, I even subscribe to the NetBeans podcast to try and keep an eye on what&#8217;s up. &#8230; <a href="http://happygiraffe.net/blog/2008/11/20/netbeans-65/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Today <a href="http://www.netbeans.org/community/releases/65/">NetBeans 6.5</a> got released.  Congratulations, guys!  I&#8217;m primarily an Eclipse user<sup><a href="#fn1">1</a></sup>, but I keep hearing about NetBeans through the <a href="http://javaposse.com/">Java Posse</a> and heck, I even subscribe to the <a href="http://blogs.sun.com/geertjan/entry/netbeans_podcast_episode_44">NetBeans podcast</a> to try and keep an eye on what&#8217;s up.  Every time a new release comes out, I give it a whirl.</p>
<p>So this time, now I&#8217;m looking at 6.5.  And it&#8217;s really nice on a lot of fronts.  Most of the improvements in 6.5 aren&#8217;t <em>directly</em> relevant to me — they&#8217;re related to scripting languages I don&#8217;t use.  What I&#8217;m particularly interested in is the core Java SE support.  And NetBeans is really very good.  It&#8217;s just not quite as good as Eclipse.  Or (more likely) I can&#8217;t figure out a way to make it do what I want.</p>
<p>There are a couple of things I do all the time in Eclipse.  First, <code>⌘-T</code>, which shows type hierarchies.  But that&#8217;s putting it simply.  If you pop it over a class, it shows the subtype hierarchy.  Press it again and it shows the supertype hierarchy.  What&#8217;s neat is that if you do it over a method, it greys out those classes that don&#8217;t have an implementation of that method.</p>
<div style="text-align:center;"><img src="http://happygiraffe.net/blog/wp-content/uploads/2008/11/eclipse-cmd-t.png" alt="⌘-T in Eclipse" border="0" width="419" height="190" /></div>
<p>But what makes it particularly useful is that it doesn&#8217;t pop up a proper window, just a little floater (I have no idea what it&#8217;s really meant to be called).  As soon as you click somewhere, it disappears.  This makes it incredibly fast to navigate code.</p>
<p>As far as I can see, the closest that NetBeans has is &#8220;File Hierarchy&#8221; on <code>^⇧<span style="font-variant: small-caps">F12</span></code>.  But this pops up a big old clunky dialog box.</p>
<p>That&#8217;s one more thing about NetBeans — the key bindings are <em>weird</em>.  And I speak as a long time emacs user.  Now I&#8217;ll learn them (as it&#8217;s annoying to carry my customisations everywhere).  But they conflict badly with a lot of Mac keyboards, because they&#8217;re extremely function-key heavy, and the mac likes to take over the function keys for itself.</p>
<p>The other Eclipse feature I use the whole damn time is &#8220;assign to local variable&#8221;.  Yes, you can curse me for being damned lazy.  But, I want to be able to type <code>new PhoneImpl("01273", "123456");</code> then hit a key and get it assigned to a variable.  In Eclipse, that&#8217;s <code>⌘-T L</code>.  I couldn&#8217;t find a way to do it in NetBeans.  The compiler knows what type it&#8217;s going to be.  Why should I have to remember?  Otherwise I&#8217;d be back in Emacs.</p>
<p>There are a couple of missing refactorings I use a lot: &#8220;Extract to local variable&#8221; and &#8220;inline local variable&#8221;.  Both are easily replaced with cut&#8217;n'paste 90% of the time.</p>
<p>One particular feature that Eclipse and NetBeans both share is terrible defaults for exceptions.  Here&#8217;s Eclipse&#8217;s default:</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;">  <span style="color: #000000; font-weight: bold;">try</span> <span style="color: #009900;">&#123;</span>
      <span style="color: #000000; font-weight: bold;">new</span> URI<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;http://example.com/&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span> <span style="color: #000000; font-weight: bold;">catch</span> <span style="color: #009900;">&#40;</span>URISyntaxException e<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
      <span style="color: #666666; font-style: italic;">// TODO Auto-generated catch block</span>
      e.<span style="color: #006633;">printStackTrace</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span></pre></div></div>

<p>And here&#8217;s NetBeans.</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;">  <span style="color: #000000; font-weight: bold;">try</span> <span style="color: #009900;">&#123;</span>
      <span style="color: #000000; font-weight: bold;">new</span> URI<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;http://example.com/&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span> <span style="color: #000000; font-weight: bold;">catch</span> <span style="color: #009900;">&#40;</span>URISyntaxException ex<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
      Logger.<span style="color: #006633;">getLogger</span><span style="color: #009900;">&#40;</span>Main.<span style="color: #000000; font-weight: bold;">class</span>.<span style="color: #006633;">getName</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>.<span style="color: #006633;">log</span><span style="color: #009900;">&#40;</span>Level.<span style="color: #006633;">SEVERE</span>, <span style="color: #000066; font-weight: bold;">null</span>, ex<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span></pre></div></div>

<p>Both of these are fundamentally broken, and going to catch out dozens of unwitting programmers who don&#8217;t know any better.  Yes, you can change the defaults, but most people don&#8217;t.</p>
<p>Anyway I don&#8217;t want you to think that I&#8217;m totally down on NetBeans.  The new release maintains what I first saw in 6.1: a very fast, full featured IDE.  It&#8217;s dead easy to get going, and there is loads of documentation.  I find the project view to be much more useful and better organised than the eclipse view of the same.</p>
<div style="text-align:center;"><img src="http://happygiraffe.net/blog/wp-content/uploads/2008/11/netbeans-project-view.png" alt="NetBeans Project View" border="0" width="287" height="262" /></div>
<p>I suspect that most of the problems I&#8217;ve been having are down to the fact I&#8217;ve been using Eclipse for 3 years, and NetBeans for a few hours at best.</p>
<p>One thing I did like very much is that there&#8217;s builtin Maven support.  I downloaded the Java SE installation<sup><a href="#fn2">2</a></sup>, went to the plugins window and selected &#8220;maven&#8221;.  About a minute later I had a working installation.  And I can create new projects with archetypes really simply.    And it&#8217;s dead simple to add new libraries as needed (I&#8217;m guessing it uses the nexus indexer to look stuff up).  The only missing thing is the dependency viewer, but I can always run <a href="http://maven.apache.org/plugins/maven-dependency-plugin/tree-mojo.html">dependency:tree</a> and <a href="http://maven.apache.org/plugins/maven-dependency-plugin/analyze-mojo.html">dependency:analyze</a> manually.</p>
<p>Funnily enough, where I think NetBeans really wins is the dynamic languages support.  I&#8217;ve been following <a href="http://blogs.sun.com/tor/">Tor&#8217;s blog</a> for a little while and I&#8217;m <em>incredibly</em> impressed with what has been achieved in the Ruby support.  For developing Ruby code, I head straight for NetBeans.  Most of the issues I&#8217;ve outlined above are really specific to statically typed languages.  For dynamic languages like Ruby (and now PHP and Python), what NetBeans gives you is a big win over the standard text editor.</p>
<p>Heck, the JavaScript support is pretty decent too.  The first thing I did today was open up <a href="http://code.google.com/p/jslint4java/">jslint4java</a> and jump into <a href="http://www.JSLint.com/fulljslint.js">fulljslint.java</a>.  That&#8217;s some pretty scary code.  But NetBeans handled it with no issues at all.  And it even pointed out a warning that&#8217;s easy to overlook (a duplicate hash key).</p>
<p>So, the big question is — am I going to use NetBeans?  For any Ruby stuff, there&#8217;s no question.  For Java stuff, I&#8217;m going to give it a try.  After spending enough time with it to write this, I&#8217;ve already figured out enough stuff to use it a bit more successfully.</p>
<p><sup id="fn1">1</sup> Apart from Emacs, Vim and TextMate.  ☺</p>
<p><sup id="fn2">2</sup> I didn&#8217;t like the look of the Java EE version — I don&#8217;t really need 3 application servers bundled, do I?</p>
]]></content:encoded>
			<wfw:commentRss>http://happygiraffe.net/blog/2008/11/20/netbeans-65/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Exceptional Origins</title>
		<link>http://happygiraffe.net/blog/2008/08/09/exceptional-origins/</link>
		<comments>http://happygiraffe.net/blog/2008/08/09/exceptional-origins/#comments</comments>
		<pubDate>Sat, 09 Aug 2008 21:19:24 +0000</pubDate>
		<dc:creator>Dominic Mitchell</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[java]]></category>

		<guid isPermaLink="false">http://happygiraffe.net/2008/08/09/exceptional-origins/</guid>
		<description><![CDATA[I&#8217;ve just noticed something rather nice in Eclipse. The &#8220;Mark Occurrences&#8221; feature () will show you where an exception is thrown. For example, here I&#8217;ve clicked on the IOEXception in the method definition. You can clearly see that read(), write(), &#8230; <a href="http://happygiraffe.net/blog/2008/08/09/exceptional-origins/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve just noticed something rather nice in Eclipse.  The &#8220;Mark Occurrences&#8221; feature (<img src="http://happygiraffe.net/blog/files/eclipse-mark-occurrences.png" alt="Mark Occurrences" border="0" />) will show you where an exception is <em>thrown</em>.  For example, here I&#8217;ve clicked on the <code>IOEXception</code> in the method definition.</p>
<p><img src="http://happygiraffe.net/blog/files/eclipse-exception-thrown-sites.png" alt="Eclipse highlights where exceptions are thrown" border="0" width="477" height="396" /></p>
<p>You can clearly see that <code>read()</code>, <code>write()</code>, <code>flush()</code> and <code>close()</code> are points at which the <code>IOEXception</code> can be thrown.</p>
<p>Similarly, you can highlight the return type of a method to see all the exit points of a method.</p>
<p><img src="http://happygiraffe.net/blog/files/eclipse-return-sites.png" alt="Eclipse highlights all return sites in a method" border="0" width="466" height="142" /></p>
<p>One final tip about Mark Occurrences:  You can optionally select occurrences in the &#8220;Next / Previous&#8221; toolbar buttons.  i.e.</p>
<p><img src="http://happygiraffe.net/blog/files/eclipse-prev-next.png" alt="Enabling “next occurrence” in eclipse" border="0" width="175" height="274" /></p>
<p>Doing this allows the Next key (<code>Command-.</code> on my Mac, likely <code>Ctrl-.</code> on Windows) to jump between occurrences.  So you can click on a method name and cycle through all mentions of that method in a file.  Very handy.  You&#8217;ll notice that it works for compile errors too.</p>
<p>I have to confess that I used to find Mark Occurrences quite irritating.  Now I know what it can do for me, I&#8217;m a much happier punter.</p>
]]></content:encoded>
			<wfw:commentRss>http://happygiraffe.net/blog/2008/08/09/exceptional-origins/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Exceptional Eclipse Tip</title>
		<link>http://happygiraffe.net/blog/2008/08/05/exceptional-eclipse-tip/</link>
		<comments>http://happygiraffe.net/blog/2008/08/05/exceptional-eclipse-tip/#comments</comments>
		<pubDate>Tue, 05 Aug 2008 21:38:20 +0000</pubDate>
		<dc:creator>Dominic Mitchell</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[java]]></category>

		<guid isPermaLink="false">http://happygiraffe.net/2008/08/05/exceptional-eclipse-tip/</guid>
		<description><![CDATA[By default, when eclipse creates a try/catch block for you, you end up with something like this: try &#123; doSomething&#40;&#41;; catch &#40;EvilException e&#41; &#123; // TODO auto-generated catch block. e.printStackTrace&#40;&#41;; &#125; This is worse than useless, as it (effectively) covers &#8230; <a href="http://happygiraffe.net/blog/2008/08/05/exceptional-eclipse-tip/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>By default, when eclipse creates a try/catch block for you, you end up with something like this:</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;">  <span style="color: #000000; font-weight: bold;">try</span> <span style="color: #009900;">&#123;</span>
    doSomething<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #000000; font-weight: bold;">catch</span> <span style="color: #009900;">&#40;</span>EvilException e<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #666666; font-style: italic;">// TODO auto-generated catch block.</span>
    e.<span style="color: #006633;">printStackTrace</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span></pre></div></div>

<p>This is worse than useless, as it (effectively) covers up the exception<sup><a href="#fn1">1</a></sup>.  A far better default choice is to wrap the checked exception in a <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/RuntimeException.html">RuntimeException</a> if you don&#8217;t know what to do with it.</p>
<p>Thankfully, it&#8217;s fairly easy to arrange this in eclipse.  Go to Preferences &rarr; Java &rarr; Code Style &rarr; Code Templates and edit the &#8220;catch block body&#8221; fragment.  It should look like this:</p>
<div style="text-align:center;"><img src="http://happygiraffe.net/blog/files/eclipse-catch-block-template.png" alt="eclipse-catch-block-template.png" border="0" width="441" height="404" /></div>
<p>I&#8217;m going to try and spread this around the office a bit.  It should make for some slightly more robust code&#8230;</p>
<p id="fn1"><sup>1</sup>  Please don&#8217;t remind me that it comes out on the console&#8212;people are very good at ignoring that.</p>
]]></content:encoded>
			<wfw:commentRss>http://happygiraffe.net/blog/2008/08/05/exceptional-eclipse-tip/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tomcat Logging in WTP</title>
		<link>http://happygiraffe.net/blog/2008/08/01/tomcat-logging-in-wtp/</link>
		<comments>http://happygiraffe.net/blog/2008/08/01/tomcat-logging-in-wtp/#comments</comments>
		<pubDate>Fri, 01 Aug 2008 15:52:00 +0000</pubDate>
		<dc:creator>Dominic Mitchell</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[happygiraffe]]></category>
		<category><![CDATA[logging]]></category>
		<category><![CDATA[tomcat]]></category>

		<guid isPermaLink="false">http://happygiraffe.net/2008/08/01/tomcat-logging-in-wtp/</guid>
		<description><![CDATA[I&#8217;ve just been trying to enable debug logging for tomcat (don&#8217;t ask). Normally you do this by editing $CATALINA_HOME/conf/logging.properties and restarting. Except I tried that in Eclipse (using WTP) and it didn&#8217;t work. I tried copying it to the $CATALINA_BASE/conf &#8230; <a href="http://happygiraffe.net/blog/2008/08/01/tomcat-logging-in-wtp/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve just been trying to enable debug logging for tomcat (don&#8217;t ask).  Normally you do this by editing <code>$CATALINA_HOME/conf/logging.properties</code> and restarting.</p>
<p>Except I tried that in Eclipse (using <a href="http://www.eclipse.org/webtools/"><span class="caps">WTP</span></a>) and it didn&#8217;t work.</p>
<p>I tried copying it to the <code>$CATALINA_BASE/conf</code> directory instead<sup><a href="#fn1">1</a></sup>.</p>
<p>Still no joy.</p>
<p>I&#8217;ve just found the answer, after looking in the <a href="http://svn.apache.org/repos/asf/tomcat/tc6.0.x/trunk/">tomcat source</a>.  It turns out that tomcat&#8217;s alternative logging implementation (JULI) is enabled via a system property.  This happens inside <code>catalina.sh</code>:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;"># Set juli LogManager if it is present</span>
<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #660033;">-r</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">$CATALINA_BASE</span>&quot;</span><span style="color: #000000; font-weight: bold;">/</span>conf<span style="color: #000000; font-weight: bold;">/</span>logging.properties <span style="color: #7a0874; font-weight: bold;">&#93;</span>; <span style="color: #000000; font-weight: bold;">then</span>
  <span style="color: #007800;">JAVA_OPTS</span>=<span style="color: #ff0000;">&quot;<span style="color: #007800;">$JAVA_OPTS</span> -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager&quot;</span>
  <span style="color: #007800;">LOGGING_CONFIG</span>=<span style="color: #ff0000;">&quot;-Djava.util.logging.config.file=<span style="color: #007800;">$CATALINA_BASE</span>/conf/logging.properties&quot;</span>
<span style="color: #000000; font-weight: bold;">fi</span></pre></div></div>

<p>But Eclipse runs the Java code directly, without using <code>catalina.sh</code>.  So the properties never gets set.  You have to set them by hand in the &#8220;Run Configurations&#8221; dialog.  Like this:</p>
<p><img src="http://happygiraffe.net/blog/files/eclipse-tomcat-system-properties.png" alt="Setting system properties for tomcat in Eclipse" border="0" width="563" height="520" /></p>
<p>Of note there is that I&#8217;ve imported the <code>logging.properties</code> file into the <code>Servers</code> project of my workspace.  It seemed liked a useful place to put it.</p>
<p>Of course, after realising that, I soon find the same information in the <span class="caps">WTP FAQ</span>: <a href="http://wiki.eclipse.org/WTP_Tomcat_FAQ#How_do_I_enable_the_JULI_logging_in_a_Tomcat_5.5_Server_instance.3F">How do I enable the <span class="caps">JULI</span> logging in a Tomcat 5.5 Server instance?</a>.</p>
<p>Anyway, now I might be able to debug that ClassLoader issue&#8230;</p>
<p id="fn1"><sup>1</sup>  Inside Eclipse with <span class="caps">WTP</span>, that will be something like <code>$WORKSPACE/.metadata/.plugins/org.eclipse.wst.server.core/tmp0</code>.</p>
]]></content:encoded>
			<wfw:commentRss>http://happygiraffe.net/blog/2008/08/01/tomcat-logging-in-wtp/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

