<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Erdinç Yılmazel&#039;s Blog</title>
	<atom:link href="http://blog.erdincyilmazel.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.erdincyilmazel.com</link>
	<description></description>
	<lastBuildDate>Tue, 21 Jun 2011 05:45:30 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='blog.erdincyilmazel.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Erdinç Yılmazel&#039;s Blog</title>
		<link>http://blog.erdincyilmazel.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://blog.erdincyilmazel.com/osd.xml" title="Erdinç Yılmazel&#039;s Blog" />
	<atom:link rel='hub' href='http://blog.erdincyilmazel.com/?pushpress=hub'/>
		<item>
		<title>Comparing Cambridge Template Engine with Jsp, Velocity, Freemarker and Play Framework Templates</title>
		<link>http://blog.erdincyilmazel.com/2011/02/10/comparing-cambridge-template-engine-with-jsp-velocity-freemarker-and-play-framework-templates/</link>
		<comments>http://blog.erdincyilmazel.com/2011/02/10/comparing-cambridge-template-engine-with-jsp-velocity-freemarker-and-play-framework-templates/#comments</comments>
		<pubDate>Fri, 11 Feb 2011 04:26:45 +0000</pubDate>
		<dc:creator>erdincyilmazel</dc:creator>
				<category><![CDATA[Projects]]></category>

		<guid isPermaLink="false">http://blog.erdincyilmazel.com/?p=47</guid>
		<description><![CDATA[There are a few simple ideas (goals) behind Cambridge Template Engine. Less cluttered, easily readable, developer and browser friendly template files Speed Safety True separation of concerns To achieve these goals Cambridge was designed differently than it&#8217;s alternatives like JSP, Freemarker or Velocity. The main idea in template syntax in Cambridge is not to add [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.erdincyilmazel.com&amp;blog=7023100&amp;post=47&amp;subd=erdincyilmazel&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>There are a few simple ideas (goals) behind <a href="http://cambridge.googlecode.com">Cambridge Template Engine</a>.</p>
<ul>
<li>Less cluttered, easily readable, developer and browser friendly template files</li>
<li>Speed</li>
<li>Safety</li>
<li>True separation of concerns</li>
</ul>
<p>To achieve these goals Cambridge was designed differently than it&#8217;s alternatives like JSP, Freemarker or Velocity. The main idea in template syntax in Cambridge is not to add any code blocks or wrapping elements into your existing template markup. The markup languages like html and xml already have a well structured hierarchy of tags. Every tag has a built in scope. (We know where it starts and ends.) Cambridge makes use of this scope which already is in your template files. You associate behaviors to your tags and that behavior becomes active within the scope of that tag.</p>
<p>To achieve the performance goal, every template file gets parsed only once and then gets normalized into an efficient form to be rendered. What do I mean by an efficient form? Every web developer knows that DOM is. When your template files are parsed, a DOM like tree for all your template elements is created by Cambridge. Traversing this tree while rendering would work, but would be ineffective in many performance critical scenarios. What Cambridge does is basically to flatten this tree into a list of fragments to be printed to an output stream. A fragment might be static or dynamic based on if it is an expression to be evaluated or a tag which has some dynamic behavior associated or any standard tag or text. This new normalized form is used by Cambridge again and again until the template file is changed and need to be re-parsed.</p>
<p>So lets have a look at how some of the features of Cambridge compare with other alternatives.</p>
<h2>Expressions</h2>
<p>Evaluating expressions are very similar in almost all templating solutions for Java. JSP, Freemarker, Cambridge, Play Framework all uses the ${&#8230;} syntax to escape from html and print the value of an expression. Velocity is a bit different, it doesn&#8217;t require you to use braces, you can just type $userName to get the value of the userName variable.</p>
<p>Every template engine has a different underlying expression language. JSP uses the <a href="http://www.oracle.com/technology/sample_code/tutorials/jsp20/simpleel.html" target="_blank">Jsp Simple Expression Language</a>. Freemarker and Velocity have their own expression languages. Play Framework uses <a href="http://groovy.codehaus.org/" target="_blank">Groovy</a> which actually is much more than an expression language.</p>
<p>Cambridge comes with a built in expression language that I&#8217;ve developed which depends on <a href="http://www.antlr.org/">Antlr runtime</a>. However, thanks to the extensible nature of Cambridge, you are not limited to that. If you want more features with a little sacrifice of performance, you can use <a href="http://mvel.codehaus.org/" target="_blank">MVEL</a> or <a href="http://www.opensymphony.com/ognl/" target="_blank">OGNL</a> as your expression language in your Cambridge templates.<br />
For many people, built-in expression language should be enough, however I must say that I&#8217;m also very impressed by MVEL.</p>
<h2>Conditional Blocks</h2>
<h3>JSP with JSTL</h3>
<p>No true else/elseif support.<br />
<pre class="brush: plain;">
&lt;c:if test=&quot;${loggedInUser != null}&quot;&gt;
  &lt;div class=&quot;hello&quot;&gt;Hello ${loggedInUser}&lt;/div&gt;
&lt;/c:if&gt;
&lt;c:if test=&quot;${loggedInUser == null}&quot;&gt;
  &lt;div class=&quot;logIn&quot;&gt;Please log in&lt;/div&gt;
&lt;/c:if&gt;
</pre></p>
<h3>JSP with inline Java code</h3>
<p><pre class="brush: plain;">
&lt;%
if (loggedInUser != null) {
%&gt;
&lt;div class=&quot;hello&quot;&gt;Hello &lt;%=loggedInUser%&gt;&lt;/div&gt;
&lt;%
} else {
%&gt;
&lt;div class=&quot;logIn&quot;&gt;Please log in&lt;/div&gt;
&lt;%
}
%&gt;
</pre></p>
<h3>Velocity<br />
<h3>
<pre class="brush: plain;">
#if ($loggedInUser)
  &lt;div class=&quot;hello&quot;&gt;Hello $loggedInUser&lt;/div&gt;
#else
  &lt;div class=&quot;logIn&quot;&gt;Please log in&lt;/div&gt;
#end
</pre></p>
<h3>Freemarker</h3>
<p><pre class="brush: plain;">
&lt;#if loggedInUser??&gt;
     &lt;div class=&quot;hello&quot;&gt;Hello ${loggedInUser}&lt;/div&gt;
&lt;#else&gt;
     &lt;div class=&quot;logIn&quot;&gt;Please log in&lt;/div&gt;
&lt;/#if&gt;
</pre></p>
<h3>Play Framework</h3>
<p><pre class="brush: plain;">
#{if loggedInUser}
       &lt;div class=&quot;hello&quot;&gt;Hello ${loggedInUser}&lt;/div&gt;
#{/if}
#{else}
       &lt;div class=&quot;logIn&quot;&gt;Please log in&lt;/div&gt;
#{/else}
</pre></p>
<h3>Cambridge</h3>
<p>In Cambridge, you don&#8217;t need to wrap your tags with code blocks or other tags. You just add dynamic attributes like a:if, a:elseif or a:else to your existing classes.<br />
<pre class="brush: plain;">
&lt;div a:if=&quot;loggedInUser != null&quot; class=&quot;hello&quot;&gt;Hello ${loggedInUser}&lt;/div&gt;
&lt;div a:else class=&quot;logIn&quot;&gt;Please log in&lt;/div&gt;
</pre></p>
<p>What if you don&#8217;t have an existing tag that wraps whatever content you want to depend on a condition? Then you can use the invisible tag &lt;a:span&gt;.</p>
<p>The output of the following example will only be the text message without the &lt;a:span&gt; tag being rendered in the output.<br />
<pre class="brush: plain;">
&lt;a:span if=&quot;messages.size != 0&quot;&gt;
   You have ${messages.size} messages
&lt;a:span&gt;
</pre></p>
<h2>Loops</h2>
<h3>JSP / JSTL</h3>
<p><pre class="brush: plain;">
&lt;c:forEach var=&quot;friend&quot; items=&quot;${user.friends}&quot;&gt;
   &lt;div&gt;${friend.name}&lt;/div&gt;
&lt;c:/forEach&gt;
</pre></p>
<h3>Freemarker</h3>
<p><pre class="brush: plain;">
&lt;#list user.friends as friend&gt;
   &lt;div&gt;${friend.name}&lt;/div&gt;
&lt;/#list&gt;
</pre></p>
<h3>Velocity</h3>
<p><pre class="brush: plain;">
#foreach($friend in $user.friends)
   &lt;div&gt;$friend.name&lt;/div&gt;
#end
</pre></p>
<h3>Play Framework</h3>
<p><pre class="brush: plain;">
#{list items:user.friends, as:'friend'}
       &lt;div&gt;${friend.name}&lt;/div&gt;
#{/list}
</pre></p>
<h3>Cambridge</h3>
<p><pre class="brush: plain;">
   &lt;div a:foreach=&quot;user.friends&quot; a:as=&quot;friend&quot;&gt;${friend.name}&lt;/div&gt;
</pre></p>
<p>In the second part of this article, I will write about the performance comparisons of these frameworks.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/erdincyilmazel.wordpress.com/47/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/erdincyilmazel.wordpress.com/47/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/erdincyilmazel.wordpress.com/47/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/erdincyilmazel.wordpress.com/47/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/erdincyilmazel.wordpress.com/47/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/erdincyilmazel.wordpress.com/47/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/erdincyilmazel.wordpress.com/47/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/erdincyilmazel.wordpress.com/47/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/erdincyilmazel.wordpress.com/47/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/erdincyilmazel.wordpress.com/47/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/erdincyilmazel.wordpress.com/47/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/erdincyilmazel.wordpress.com/47/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/erdincyilmazel.wordpress.com/47/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/erdincyilmazel.wordpress.com/47/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.erdincyilmazel.com&amp;blog=7023100&amp;post=47&amp;subd=erdincyilmazel&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.erdincyilmazel.com/2011/02/10/comparing-cambridge-template-engine-with-jsp-velocity-freemarker-and-play-framework-templates/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/a4ab60543a8c3465c0754134bc823ddd?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">erdinç</media:title>
		</media:content>
	</item>
		<item>
		<title>Code analysis with IntelliJ Idea</title>
		<link>http://blog.erdincyilmazel.com/2011/02/10/code-analysis-with-intellij-idea/</link>
		<comments>http://blog.erdincyilmazel.com/2011/02/10/code-analysis-with-intellij-idea/#comments</comments>
		<pubDate>Thu, 10 Feb 2011 18:30:07 +0000</pubDate>
		<dc:creator>erdincyilmazel</dc:creator>
		
		<guid isPermaLink="false">http://blog.erdincyilmazel.com/?p=36</guid>
		<description><![CDATA[Here is a video about why Intellij Idea is the best java IDE ever. Vaclav Pech at JAX 2010 from Egor Malyshev on Vimeo.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.erdincyilmazel.com&amp;blog=7023100&amp;post=36&amp;subd=erdincyilmazel&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Here is a video about why Intellij Idea is the best java IDE ever.</p>
<p><a href="http://vimeo.com/11902877">Vaclav Pech at JAX 2010</a> from <a href="http://vimeo.com/user3864155">Egor Malyshev</a> on <a href="http://vimeo.com">Vimeo</a>.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/erdincyilmazel.wordpress.com/36/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/erdincyilmazel.wordpress.com/36/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/erdincyilmazel.wordpress.com/36/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/erdincyilmazel.wordpress.com/36/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/erdincyilmazel.wordpress.com/36/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/erdincyilmazel.wordpress.com/36/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/erdincyilmazel.wordpress.com/36/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/erdincyilmazel.wordpress.com/36/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/erdincyilmazel.wordpress.com/36/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/erdincyilmazel.wordpress.com/36/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/erdincyilmazel.wordpress.com/36/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/erdincyilmazel.wordpress.com/36/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/erdincyilmazel.wordpress.com/36/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/erdincyilmazel.wordpress.com/36/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.erdincyilmazel.com&amp;blog=7023100&amp;post=36&amp;subd=erdincyilmazel&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.erdincyilmazel.com/2011/02/10/code-analysis-with-intellij-idea/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/a4ab60543a8c3465c0754134bc823ddd?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">erdinç</media:title>
		</media:content>
	</item>
		<item>
		<title>Cambridge 0.2 Release</title>
		<link>http://blog.erdincyilmazel.com/2011/02/08/cambridge-0-2-release/</link>
		<comments>http://blog.erdincyilmazel.com/2011/02/08/cambridge-0-2-release/#comments</comments>
		<pubDate>Tue, 08 Feb 2011 05:44:39 +0000</pubDate>
		<dc:creator>erdincyilmazel</dc:creator>
				<category><![CDATA[Projects]]></category>

		<guid isPermaLink="false">http://blog.erdincyilmazel.com/?p=39</guid>
		<description><![CDATA[I have been working hard recently to release the version 0.2 (Maybe I should call it 2.0 ) of Cambridge Template Engine. This upcoming new release of my template engine has new features, a lot of bug fixes and performance improvements. First of all let me write about what is new in this release. Perhaps [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.erdincyilmazel.com&amp;blog=7023100&amp;post=39&amp;subd=erdincyilmazel&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I have been working hard recently to release the version 0.2 (Maybe I should call it 2.0 <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  ) of <a href="http://cambridge.googlecode.com">Cambridge Template Engine</a>. This upcoming new release of my template engine has new features, a lot of bug fixes and performance improvements.</p>
<p>First of all let me write about what is new in this release. Perhaps the most important change in 0.2 is the new expression language architecture. In version 0.1 you were able to use only the built in custom expression language. I realized that there are other good expression language alternatives for Java that are very popular which could be used with Cambridge. With release 0.2, Cambridge not only supports the built-in simple expression language but also allows you to use either <a href="http://mvel.codehaus.org/" target="_blank">MVEL</a> or <a href="http://www.opensymphony.com/ognl/" target="_blank">OGNL</a>. You can also integrate other expression languages by only implementing two simple interfaces.</p>
<p>Another big new feature is template inheritance. Cambridge templates now can extend other templates and the child template can override parent templates tags. Here is an example of how it works:</p>
<p>Parent template: (skeleton.html)<br />
<pre class="brush: plain;">
&lt;html&gt;
&lt;head&gt;&lt;title&gt;${title}&lt;/title&gt;
&lt;body&gt;
&lt;div class=&quot;mainMenu&quot;&gt;
   &lt;div id=&quot;menuElements&quot;&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;main&quot;&gt;&lt;/div&gt;
&lt;/body&gt;
&lt;/html&gt;
</pre></p>
<p>Child template:<br />
<pre class="brush: plain;">
&lt;!--$extends &quot;skeleton.html&quot;--&gt;
&lt;div id=&quot;menuElements&quot;&gt;
  &lt;ul&gt;
    &lt;li&gt;Home&lt;/li&gt;
    &lt;li&gt;Products&lt;/li&gt;
    &lt;li&gt;About Us&lt;/li&gt;
    &lt;li&gt;Contact&lt;/li&gt;
   &lt;/ul&gt;
&lt;/div&gt;
&lt;div id=&quot;main&quot;&gt;Main Content&lt;/div&gt;
</pre></p>
<p>So what happens here is that every element that you define in the child template overrides the element with the same id of the parent element. Unlimited levels of inheritance is supported and this doesn&#8217;t cost you any performance penalty whatsoever.</p>
<p>A nice addition to the templates are true if/elseif/else conditional blocks. In version 0.1, all you could add as a conditional tag behavior was an if statement. Now you can do the following:</p>
<p><pre class="brush: plain;">
&lt;div a:if=&quot;speed &gt; 80&quot;&gt;Fast&lt;/div&gt;
&lt;div a:elseif=&quot;speed &gt; 40&quot;&gt;Not so fast&lt;/div&gt;
&lt;div a:else&gt;Slow&lt;/div&gt;
</pre></p>
<p>The only trick here is that the elements of a conditional block can be only separated by white space. No other tag or text node can come between nodes marked with conditional tag behaviors.</p>
<p>A nice addition to the supported web frameworks in version 0.2 is the <a href="http://www.playframework.org" target="_blank">Play Framework</a>. Now if you put cambridge-playframework.jar and cambridge-core.jar into your classpath, you can start using Cambridge as your template engine in play framework. My benchmark tests show 2.5 times faster page rendering times compared to Play Framework&#8217;s own template engine! Play framework support is built with the new extension point API which allows you to alter tokenizing and parsing behavior of template parser for custom code blocks. If you want to decide how template blocks starting with %{ and }% are handled for instance, you can create an extension point for that.</p>
<p>Support for Spring MVC and Struts 2.0 are also work in progress for version 0.2. </p>
<p>The core functionality has reached a feature freeze and there doesn&#8217;t seem to be any show stopper bug for the 0.2 release right now. I <a href="http://code.google.com/p/cambridge/downloads/detail?name=cambridge-0.2-beta.tar.gz">released a beta today</a> and after Spring MVC and Struts 2.0 integrations are complete and the documentation is updated, I will release 0.2. </p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/erdincyilmazel.wordpress.com/39/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/erdincyilmazel.wordpress.com/39/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/erdincyilmazel.wordpress.com/39/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/erdincyilmazel.wordpress.com/39/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/erdincyilmazel.wordpress.com/39/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/erdincyilmazel.wordpress.com/39/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/erdincyilmazel.wordpress.com/39/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/erdincyilmazel.wordpress.com/39/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/erdincyilmazel.wordpress.com/39/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/erdincyilmazel.wordpress.com/39/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/erdincyilmazel.wordpress.com/39/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/erdincyilmazel.wordpress.com/39/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/erdincyilmazel.wordpress.com/39/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/erdincyilmazel.wordpress.com/39/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.erdincyilmazel.com&amp;blog=7023100&amp;post=39&amp;subd=erdincyilmazel&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.erdincyilmazel.com/2011/02/08/cambridge-0-2-release/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/a4ab60543a8c3465c0754134bc823ddd?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">erdinç</media:title>
		</media:content>
	</item>
		<item>
		<title>Just finished Call of Duty: Modern Warfare 2</title>
		<link>http://blog.erdincyilmazel.com/2010/01/16/just-finished-call-of-duty-modern-warfare-2/</link>
		<comments>http://blog.erdincyilmazel.com/2010/01/16/just-finished-call-of-duty-modern-warfare-2/#comments</comments>
		<pubDate>Sat, 16 Jan 2010 12:52:25 +0000</pubDate>
		<dc:creator>erdincyilmazel</dc:creator>
				<category><![CDATA[Games]]></category>
		<category><![CDATA[game]]></category>
		<category><![CDATA[ps3]]></category>

		<guid isPermaLink="false">http://blog.erdincyilmazel.com/2010/01/16/just-finished-call-of-duty-modern-warfare-2/</guid>
		<description><![CDATA[I think this is amongst the best FPS games ever. The first game of the series was also very nice. The story really gets you into the game. The only thing I can think of as a negative is that the single player campaign mode is a bit short. (Maybe I felt that way because [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.erdincyilmazel.com&amp;blog=7023100&amp;post=35&amp;subd=erdincyilmazel&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="http://erdincyilmazel.files.wordpress.com/2010/01/cod.jpg"><img src="http://erdincyilmazel.files.wordpress.com/2010/01/cod.jpg?w=260&#038;h=300" alt="" title="cod" width="260" height="300" class="alignnone size-medium wp-image-34" /></a></p>
<p>I think this is amongst the best FPS games ever. The first game of the series was also very nice. The story really gets you into the game. The only thing I can think of as a negative is that the single player campaign mode is a bit short. (Maybe I felt that way because of the excitement). Looking forward for a third game of the franchise. </p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/erdincyilmazel.wordpress.com/35/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/erdincyilmazel.wordpress.com/35/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/erdincyilmazel.wordpress.com/35/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/erdincyilmazel.wordpress.com/35/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/erdincyilmazel.wordpress.com/35/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/erdincyilmazel.wordpress.com/35/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/erdincyilmazel.wordpress.com/35/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/erdincyilmazel.wordpress.com/35/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/erdincyilmazel.wordpress.com/35/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/erdincyilmazel.wordpress.com/35/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/erdincyilmazel.wordpress.com/35/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/erdincyilmazel.wordpress.com/35/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/erdincyilmazel.wordpress.com/35/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/erdincyilmazel.wordpress.com/35/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.erdincyilmazel.com&amp;blog=7023100&amp;post=35&amp;subd=erdincyilmazel&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.erdincyilmazel.com/2010/01/16/just-finished-call-of-duty-modern-warfare-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/a4ab60543a8c3465c0754134bc823ddd?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">erdinç</media:title>
		</media:content>

		<media:content url="http://erdincyilmazel.files.wordpress.com/2010/01/cod.jpg?w=260" medium="image">
			<media:title type="html">cod</media:title>
		</media:content>
	</item>
		<item>
		<title>Working on tinymashup.com</title>
		<link>http://blog.erdincyilmazel.com/2010/01/05/working-on-tinymashup-com/</link>
		<comments>http://blog.erdincyilmazel.com/2010/01/05/working-on-tinymashup-com/#comments</comments>
		<pubDate>Tue, 05 Jan 2010 16:43:49 +0000</pubDate>
		<dc:creator>erdincyilmazel</dc:creator>
				<category><![CDATA[Projects]]></category>
		<category><![CDATA[CRE]]></category>
		<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://blog.erdincyilmazel.com/?p=24</guid>
		<description><![CDATA[I&#8217;ve always enjoyed building domain specific languages. The most advanced language that I&#8217;ve developed so far comes handy when I need to extract some information from any web page or document. I call this system &#8220;Content Retrieval Engine&#8221;. You can execute CRE scripts in a single thread to open web pages, extract some information from [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.erdincyilmazel.com&amp;blog=7023100&amp;post=24&amp;subd=erdincyilmazel&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve always enjoyed building domain specific languages. The most advanced language that I&#8217;ve developed so far comes handy when I need to extract some information from any web page or document. I call this system &#8220;Content Retrieval Engine&#8221;. You can execute CRE scripts in a single thread to open web pages, extract some information from them and use the retrieved information as an input to another document. </p>
<p>Here is an example to get the search result urls of a query that is made on google:</p>
<p><pre class="brush: plain;">
url = &quot;http://www.google.co.uk/search?hl=en&amp;q=${1}&amp;btnG=Search&amp;meta=&amp;aq=1&quot;;
query = &quot;erdinc yilmazel&quot;;

echo &quot;opening &quot; + url(query.urlEncode());

open url(query.urlEncode()) as input;
read input {
   locate &quot;&lt;h2 class=hd&gt;Search Results&lt;/h2&gt;&quot;;
   do {
      locate &quot;&lt;li class=g&gt;&quot;;
      locate &quot;&lt;h3 &quot;;
      locate &quot;&lt;a href=\&quot;&quot;;
      capture as link until &quot;\&quot;&quot;;
      echo link;
      links += link;
   } until &quot;&lt;/ol&gt; &lt;/div&gt; &lt;!--z--&gt;&quot;;
}
</pre></p>
<p>The script above prints every url that is gathered to the output and also collects them in a list named as <em>links</em> (Actually an ArrayList in Java).  At the time of writing executing the script gives the following output:</p>
<p><pre class="brush: plain;">
opening http://www.google.co.uk/search?hl=en&amp;amp;q=erdinc+yilmazel&amp;amp;btnG=Search&amp;amp;meta=&amp;amp;aq=1
http://tr.linkedin.com/in/erdincyilmazel
http://www.facebook.com/erdincyilmazel
http://blog.erdincyilmazel.com/2010/01/05/open-sourcing-some-projects/
http://developer.amazonwebservices.com/connect/message.jspa?messageID=147347
http://markmail.org/message/x6irtpux7euhnptj
http://www.vclcomponents.com/PHP/Development_Tools/Libraries_and_Classes/MyObjects-info.html
http://www.aboutus.org/erdinc.yilmazel.com
http://groups.google.com/group/javawug/browse_thread/thread/6e0a171748a8b735
http://vaadin.com/forum/-/message_boards/message/89339
http://www.myobjects.org/
</pre></p>
<p>The thing about &#8220;Content Retrieval Engine&#8221; is that it doesn&#8217;t have to read all the document and get it into memory to do data extraction. It does everything in a single pass while reading from the input stream. This allows it to run very fast and very memory efficient. You can extract information from huge documents that are several gigabytes. </p>
<p>So what is tinymashup.com? I am planning it to be a hosted service to run CRE scripts. You can write your scripts, run them against any web page and get the output in any format you like such as XML, JSON, plain text etc. You will be able to write scripts and share them with others. I am also planning on licensing the technology to people who need it. (I can also open source it too, haven&#8217;t decided yet <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> )</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/erdincyilmazel.wordpress.com/24/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/erdincyilmazel.wordpress.com/24/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/erdincyilmazel.wordpress.com/24/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/erdincyilmazel.wordpress.com/24/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/erdincyilmazel.wordpress.com/24/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/erdincyilmazel.wordpress.com/24/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/erdincyilmazel.wordpress.com/24/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/erdincyilmazel.wordpress.com/24/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/erdincyilmazel.wordpress.com/24/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/erdincyilmazel.wordpress.com/24/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/erdincyilmazel.wordpress.com/24/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/erdincyilmazel.wordpress.com/24/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/erdincyilmazel.wordpress.com/24/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/erdincyilmazel.wordpress.com/24/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.erdincyilmazel.com&amp;blog=7023100&amp;post=24&amp;subd=erdincyilmazel&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.erdincyilmazel.com/2010/01/05/working-on-tinymashup-com/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/a4ab60543a8c3465c0754134bc823ddd?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">erdinç</media:title>
		</media:content>
	</item>
		<item>
		<title>Open sourcing some projects</title>
		<link>http://blog.erdincyilmazel.com/2010/01/05/open-sourcing-some-projects/</link>
		<comments>http://blog.erdincyilmazel.com/2010/01/05/open-sourcing-some-projects/#comments</comments>
		<pubDate>Tue, 05 Jan 2010 16:02:42 +0000</pubDate>
		<dc:creator>erdincyilmazel</dc:creator>
				<category><![CDATA[Projects]]></category>
		<category><![CDATA[cambridge]]></category>
		<category><![CDATA[jdbc-helper]]></category>
		<category><![CDATA[open source]]></category>

		<guid isPermaLink="false">http://blog.erdincyilmazel.com/?p=16</guid>
		<description><![CDATA[I recently started two new open source projects on googlecode.com. One of them is JdbcHelper which helped me a lot in working on the last project that I was developing. JdbcHelper is a very small library for performing common JDBC tasks. It is similar to Spring Framewors Jdbc Template module, but does not depend on [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.erdincyilmazel.com&amp;blog=7023100&amp;post=16&amp;subd=erdincyilmazel&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I recently started two new open source projects on googlecode.com. One of them is <a href="http://jdbc-helper.googlecode.com">JdbcHelper</a> which helped me a lot in working on the last project that I was developing. JdbcHelper is a very small library for performing common JDBC tasks. It is similar to Spring Framewors Jdbc Template module, but does not depend on any external library, so it may be your library of choice if you want a lightweight solution.</p>
<p>The other project, which is currently in active development is the <a href="http://cambridge.googlecode.com">Cambridge Template Engine</a>. It is a template framework for Java which I&#8217;ve been dreaming about for more than a year. I started working on Cambridge in mid 2008. To be honest, I wasn&#8217;t able to devote enough time for it to make it a usable product for a long time. A few months ago, while struggling with JSP, I decided to get back on it and I&#8217;ve been working hard for a stable version. One of my colleagues working on istanbul.net already started using Cambridge in a project which will soon become online.</p>
<p>What makes Cambridge different from other template engines like Freemarker or Velocity? Well, first of all Cambridge was designed to generate especially HTML or other markup documents like XML. Cambridge knows the tag structure of your template documents even if they are not well formed. This allows you, as a developer, to use the scope of html tags that is already in the document instead of wrapping your html with external code or tags.</p>
<p>For instance, if you want a portion of html to be viewed based on a condition you would write something like this in JSP<br />
<pre class="brush: xml;">
&lt;s:if test=&quot;conditionMet&quot;&gt;
&lt;div id=&quot;someDiv&quot;&gt;
&lt;strong&gt;Some content&lt;/strong&gt;
&lt;/div&gt;
&lt;/s:if&gt;
</pre></p>
<p>or</p>
<p><pre class="brush: xml;">
&lt;%
if(conditionMet) {%&gt;
&lt;div id=&quot;someDiv&quot;&gt;
&lt;strong&gt;Some content&lt;/strong&gt;
&lt;/div&gt;
&lt;% } %&gt;
</pre></p>
<p>It would also look like the one above if you were using PHP too. On the other hand, Cambridge knows where the div element starts and ends. So the same code in cambridge is written as this:</p>
<p><pre class="brush: xml;">
&lt;div a:if=&quot;conditionMet&quot; id=&quot;someDiv&quot;&gt;
&lt;strong&gt;Some content&lt;/strong&gt;
&lt;/div&gt;
</pre></p>
<p>The code above is a simple html document which can be viewed in any browser or html authoring tool without a problem. Unless absolutely necessary, Cambridge does not introduce any new tags to the template file. You only need to add extra attributes to your tags to associate some behaviours.</p>
<p>I am currently trying to improve the <a href="http://code.google.com/p/cambridge/w/list">documentation</a> for Cambridge and I need feedback for both of the libraries. Please report any bugs, feature requests or comments on the project pages.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/erdincyilmazel.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/erdincyilmazel.wordpress.com/16/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/erdincyilmazel.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/erdincyilmazel.wordpress.com/16/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/erdincyilmazel.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/erdincyilmazel.wordpress.com/16/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/erdincyilmazel.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/erdincyilmazel.wordpress.com/16/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/erdincyilmazel.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/erdincyilmazel.wordpress.com/16/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/erdincyilmazel.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/erdincyilmazel.wordpress.com/16/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/erdincyilmazel.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/erdincyilmazel.wordpress.com/16/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.erdincyilmazel.com&amp;blog=7023100&amp;post=16&amp;subd=erdincyilmazel&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.erdincyilmazel.com/2010/01/05/open-sourcing-some-projects/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/a4ab60543a8c3465c0754134bc823ddd?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">erdinç</media:title>
		</media:content>
	</item>
		<item>
		<title>EXT GWT</title>
		<link>http://blog.erdincyilmazel.com/2009/01/02/ext-gwt/</link>
		<comments>http://blog.erdincyilmazel.com/2009/01/02/ext-gwt/#comments</comments>
		<pubDate>Fri, 02 Jan 2009 22:51:00 +0000</pubDate>
		<dc:creator>erdincyilmazel</dc:creator>
		
		<guid isPermaLink="false">http://erdincyilmazel.wordpress.com/2009/01/02/ext-gwt/</guid>
		<description><![CDATA[Birkac gundur bos vakitlerimde EXT GWT projesine bakiyorum. EXT JS isimli bir javascript framework&#8217;unun sagladigi component&#8217;leri GWT widget&#8217;lari olarak kullanabilmenizi sagliyor. Gercekten hem gorsel hem fonksiyonel anlamda cok basarili buldum. Yalniz ticari urun gelistiriyorsaniz o zaman ticari lisansi almaniz gerekiyor. Open source lisansi olarak yalnizca GPL destekledigi icin ucret odemezseniz, yaptiginiz yazilimin kaynagini yine paylasmaniz [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.erdincyilmazel.com&amp;blog=7023100&amp;post=10&amp;subd=erdincyilmazel&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Birkac gundur bos vakitlerimde <a href="http://extjs.com/products/gxt">EXT GWT</a> projesine bakiyorum. EXT JS isimli bir javascript framework&#8217;unun sagladigi component&#8217;leri GWT widget&#8217;lari olarak kullanabilmenizi sagliyor. Gercekten hem gorsel hem fonksiyonel anlamda cok basarili buldum. Yalniz ticari urun gelistiriyorsaniz o zaman ticari lisansi almaniz gerekiyor. Open source lisansi olarak yalnizca GPL destekledigi icin ucret odemezseniz, yaptiginiz yazilimin kaynagini yine paylasmaniz gerekiyor.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/erdincyilmazel.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/erdincyilmazel.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/erdincyilmazel.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/erdincyilmazel.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/erdincyilmazel.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/erdincyilmazel.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/erdincyilmazel.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/erdincyilmazel.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/erdincyilmazel.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/erdincyilmazel.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/erdincyilmazel.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/erdincyilmazel.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/erdincyilmazel.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/erdincyilmazel.wordpress.com/10/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.erdincyilmazel.com&amp;blog=7023100&amp;post=10&amp;subd=erdincyilmazel&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.erdincyilmazel.com/2009/01/02/ext-gwt/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/a4ab60543a8c3465c0754134bc823ddd?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">erdinç</media:title>
		</media:content>
	</item>
		<item>
		<title>Glassfish + Eclipselink + Maven + DbUnit:</title>
		<link>http://blog.erdincyilmazel.com/2008/11/22/glassfish-eclipselink-maven-dbunit/</link>
		<comments>http://blog.erdincyilmazel.com/2008/11/22/glassfish-eclipselink-maven-dbunit/#comments</comments>
		<pubDate>Sat, 22 Nov 2008 00:51:00 +0000</pubDate>
		<dc:creator>erdincyilmazel</dc:creator>
		
		<guid isPermaLink="false">http://erdincyilmazel.wordpress.com/2008/11/22/glassfish-eclipselink-maven-dbunit/</guid>
		<description><![CDATA[Glassfish V3 Prelude sürümünün yayınlanması ile birlikte bu uygulama sunucusunun içerisinde default persistence provider olarak gelen Eclipselink&#8216;i inceleyeyim dedim. Glassfish V3 her ne kadar tam anlamıyla JEE 5 certified bir uygulama sunucusu olmasa da genel anlamda benim ihtiyaç duyacağım her şeyi sunuyor. Web container, ejb container, transaction desteği&#8230; Bunların yanında update center&#8217;dan JRuby, Grails vb. [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.erdincyilmazel.com&amp;blog=7023100&amp;post=9&amp;subd=erdincyilmazel&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="https://glassfish.dev.java.net/downloads/v3-prelude.html">Glassfish V3 Prelude</a> sürümünün yayınlanması ile birlikte bu uygulama sunucusunun içerisinde default persistence provider olarak gelen <a href="http://www.eclipse.org/eclipselink/">Eclipselink</a>&#8216;i inceleyeyim dedim. Glassfish V3 her ne kadar tam anlamıyla JEE 5 certified bir uygulama sunucusu olmasa da genel anlamda benim ihtiyaç duyacağım her şeyi sunuyor. Web container, ejb container, transaction desteği&#8230; Bunların yanında update center&#8217;dan JRuby, Grails vb. pek çok desteği de ekstra olarak çekip kurabiliyorsunuz.</p>
<p>Neyse, fazla lafı dağıtmadan eclipselink&#8217;e döneyim. Bildiğiniz gibi Oracle persistence provider&#8217;ı olan <a href="http://www.oracle.com/technology/products/ias/toplink/index.html">toplink</a> ürününün bir nevi light versionu olan <a href="https://glassfish.dev.java.net/downloads/persistence/JavaPersistence.html">toplink-essentials</a>&#8216;ı open source camiasına hediye etmişti. Glassfish&#8217;in bundan önceki sürümlerinde de (V1 ve V2) toplink-essentials kullanılıyordu. Ancak geçen sene içinde Oracle toplink ürününün tamamına ait kaynak kodunu Eclipse Foundation&#8217;a bağışladı ve Eclipselink ortaya çıktı. <a href="http://www.eclipse.org/org/press-release/20080317_Eclipselink.php">2008 Mart ayında ise Sun Microsystems, Eclipse ve Oracle ortak bir girişimle Eclipselink&#8217;in JPA 2.0 referans implementasyonu olmasına karar verdiler</a>. Şu anda 1.0.2 stable sürümü olan Eclipselink Glassfish V3 ile birlikte bizlere sunuluyor.</p>
<p>Tabi uygulama sunucusu olarak Glassfish V3 tercih edildiğinde geliştirme ve test aşamalarında da yine aynı ortamı sağlamak amacıyla Eclipselink kullanmak zorundasınız. Başka bir JPA provider kullanabilirsiniz elbette ama hem eclipselink&#8217;in kendine has özelliklerini kullanmak, hem de uygulama sunucusu üzerinde çalıştırdığınızda sürprizlerle karşılaşmamak için unit testlerinizi de yine aynı persistence provider ile çalıştırmak isteyeceksinzdir.</p>
<p>Bunun için aslında güzel bir tutorial yazmak isterdim ama benden önce <a href="http://www.antoniogoncalves.org/xwiki/bin/view/Article/TestingJPA">çok güzel şekilde yazmışlar</a>.  Sade ve işe yarar küçük bir örnek olan bu tutorial&#8217;da maven ile eclipselink kullanarak mysql ya da derby database&#8217;i üzerinde <a href="http://dbunit.sourceforge.net/intro.html">DbUnit</a> ile nasıl unit testler çalıştırabileceğinizi anlatıyor. (Amma cümle oldu!!! içinde binbir tane buzzword var!!) Tutorial&#8217;ı yazan arkadaş örnek kodları da favori ide&#8217;m olan intellij projesi olarak da koymuş daha bir güzel olmuş <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Eclipselink&#8217;in kendine has JPA&#8217;dan ayrı bir takım eklentileri ve iyi olduğu söylenen cache mekanizması var. (Henüz derinlemesine incelemedim.) Bu kendine has özellikleri <a href="http://wiki.eclipse.org/Using_EclipseLink_JPA_Extensions_%28ELUG%29">Eclipselink JPA Extensions</a> adı verilen bir api ile sunuyor. Bu api içerisinde standard JPA annotation&#8217;larına ek olarak kullanabileceğiniz ekstra annotationlar var.</p>
<p>Son olarak glassfish&#8217;in de <a href="http://docs.sun.com/app/docs/doc/820-4496/gbxjk?l=en&amp;a=view&amp;q=jpa">Eclipselink kullanımı ile ilgili kendi dökümantasyonu</a> olduğunu söyleyeyim. Glassfish V3 Prelude her ne kadar Prelude adı insanı yanıltsa da production ready ve Sun tarafından ticari olarak desteklenen bir ürün ve iyi şekilde <a href="http://docs.sun.com/app/docs/coll/1343.7?l=en">dökümante edilmiş</a>. Yalnızca eksiği bir V3&#8242;e ait planlanan tüm özelliklerin implement edilmemiş olması. Örneğin clustering yok.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/erdincyilmazel.wordpress.com/9/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/erdincyilmazel.wordpress.com/9/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/erdincyilmazel.wordpress.com/9/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/erdincyilmazel.wordpress.com/9/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/erdincyilmazel.wordpress.com/9/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/erdincyilmazel.wordpress.com/9/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/erdincyilmazel.wordpress.com/9/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/erdincyilmazel.wordpress.com/9/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/erdincyilmazel.wordpress.com/9/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/erdincyilmazel.wordpress.com/9/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/erdincyilmazel.wordpress.com/9/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/erdincyilmazel.wordpress.com/9/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/erdincyilmazel.wordpress.com/9/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/erdincyilmazel.wordpress.com/9/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.erdincyilmazel.com&amp;blog=7023100&amp;post=9&amp;subd=erdincyilmazel&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.erdincyilmazel.com/2008/11/22/glassfish-eclipselink-maven-dbunit/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/a4ab60543a8c3465c0754134bc823ddd?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">erdinç</media:title>
		</media:content>
	</item>
		<item>
		<title>Intellij 8 Python plugin&#8217;i early access olarak yayınlandı</title>
		<link>http://blog.erdincyilmazel.com/2008/11/20/intellij-8-python-plugini-early-access-olarak-yayinlandi/</link>
		<comments>http://blog.erdincyilmazel.com/2008/11/20/intellij-8-python-plugini-early-access-olarak-yayinlandi/#comments</comments>
		<pubDate>Thu, 20 Nov 2008 19:25:00 +0000</pubDate>
		<dc:creator>erdincyilmazel</dc:creator>
		
		<guid isPermaLink="false">http://erdincyilmazel.wordpress.com/2008/11/20/intellij-8-python-plugini-early-access-olarak-yayinlandi/</guid>
		<description><![CDATA[Plugin şuanda plugin manager&#8217;dan download edilebiliyor. Henuz alpha sürümü olduğunu belirtmek lazım, lakin şuanda henüz çok sorunlu. Tabi alıştığımız intellij ortamında python kodu editlemek şimdiden keyifli ancak doğru şekilde import edilmiş öğeleri unresolved olarak göstermesi autocompletion&#8217;ın doğru çalışmamasına ve gereksiz warninglere yol açıyor. Bu problemin standard python modülleri ve sizin kendi projenizdeki modülleriniz için geçerli [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.erdincyilmazel.com&amp;blog=7023100&amp;post=8&amp;subd=erdincyilmazel&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Plugin şuanda plugin manager&#8217;dan download edilebiliyor. Henuz alpha sürümü olduğunu belirtmek lazım, lakin şuanda henüz çok sorunlu. Tabi alıştığımız intellij ortamında python kodu editlemek şimdiden keyifli ancak doğru şekilde import edilmiş öğeleri unresolved olarak göstermesi autocompletion&#8217;ın doğru çalışmamasına ve gereksiz warninglere yol açıyor. Bu problemin standard python modülleri ve sizin kendi projenizdeki modülleriniz için geçerli olmadığını belirtmem lazım. Problem bilgisayarınıza yüklediğiniz django gibi MySQLdb gibi diğer modüllere erişmek istediğinizde yaşanıyor. (site-packages&#8217;a yüklenen modüller.) Bu modüllere CTRL+click yaparak doğru şekilde zıplayabiliyorsunuz, yani intellij doğru şekilde ilgili modülü buluyor ancak yine de bulamamış gibi acaip hatalar veriyor.</p>
<p>Şuan için refactoring, debugging gibi desteklerin olmadığını da söylemek lazım. Python kodlamak için pek çok editör denedim, eminim problemleri giderildiğinde intellij&#8217;den başkasını kullanmayacağım, ancak şuanda en iyi pytyon ide&#8217;si olarak eclipse&#8217;in pydev plugini gözüküyor.</p>
<p>Daha önce bahsettiğim Netbeans&#8217;in python plugin&#8217;i de hızlı şekilde development&#8217;a devam ediyor ancak orada da özellikle sistem pathinden import edilmiş diğer libraryler ile ilgili autocompletion özellikleri düzgün çalışmıyor. (Konuyla ilgili bug report ettim)</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/erdincyilmazel.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/erdincyilmazel.wordpress.com/8/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/erdincyilmazel.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/erdincyilmazel.wordpress.com/8/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/erdincyilmazel.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/erdincyilmazel.wordpress.com/8/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/erdincyilmazel.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/erdincyilmazel.wordpress.com/8/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/erdincyilmazel.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/erdincyilmazel.wordpress.com/8/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/erdincyilmazel.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/erdincyilmazel.wordpress.com/8/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/erdincyilmazel.wordpress.com/8/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/erdincyilmazel.wordpress.com/8/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.erdincyilmazel.com&amp;blog=7023100&amp;post=8&amp;subd=erdincyilmazel&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.erdincyilmazel.com/2008/11/20/intellij-8-python-plugini-early-access-olarak-yayinlandi/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/a4ab60543a8c3465c0754134bc823ddd?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">erdinç</media:title>
		</media:content>
	</item>
		<item>
		<title>YouTube&#8217;dan Canlı Yayın</title>
		<link>http://blog.erdincyilmazel.com/2008/11/20/youtubedan-canli-yayin/</link>
		<comments>http://blog.erdincyilmazel.com/2008/11/20/youtubedan-canli-yayin/#comments</comments>
		<pubDate>Thu, 20 Nov 2008 10:34:00 +0000</pubDate>
		<dc:creator>erdincyilmazel</dc:creator>
		
		<guid isPermaLink="false">http://erdincyilmazel.wordpress.com/2008/11/20/youtubedan-canli-yayin/</guid>
		<description><![CDATA[YouTube 23 Kasım günü (Türkiye saatiyle sanırım gece 3&#8242;te) canlı olarak ilk kez yayın yapacak. Pek çok ünlü sanatçının yer alacağı etkinliğe ait geri sayım sayacını aşağıda görebilirsiniz.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.erdincyilmazel.com&amp;blog=7023100&amp;post=7&amp;subd=erdincyilmazel&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>YouTube 23 Kasım günü (Türkiye saatiyle sanırım gece 3&#8242;te) <a href="http://uk.youtube.com/live">canlı olarak ilk kez yayın yapacak</a>. Pek çok ünlü sanatçının yer alacağı etkinliğe ait geri sayım sayacını aşağıda görebilirsiniz.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/erdincyilmazel.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/erdincyilmazel.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/erdincyilmazel.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/erdincyilmazel.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/erdincyilmazel.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/erdincyilmazel.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/erdincyilmazel.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/erdincyilmazel.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/erdincyilmazel.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/erdincyilmazel.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/erdincyilmazel.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/erdincyilmazel.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/erdincyilmazel.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/erdincyilmazel.wordpress.com/7/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.erdincyilmazel.com&amp;blog=7023100&amp;post=7&amp;subd=erdincyilmazel&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.erdincyilmazel.com/2008/11/20/youtubedan-canli-yayin/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/a4ab60543a8c3465c0754134bc823ddd?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">erdinç</media:title>
		</media:content>
	</item>
	</channel>
</rss>
