<?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>Doga Berntas &#187; gae</title>
	<atom:link href="http://doganberktas.com/tag/gae/feed/" rel="self" type="application/rss+xml" />
	<link>http://doganberktas.com</link>
	<description>is actually from a small planet somewhere in the vicinity of Betelgeuse</description>
	<lastBuildDate>Sat, 21 Apr 2012 21:48:45 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>So How Do You Convince Google App Engine to Create Your Datastore Indexes</title>
		<link>http://doganberktas.com/2010/09/03/so-how-do-you-convience-google-app-engine-to-create-your-datastore-indexes/</link>
		<comments>http://doganberktas.com/2010/09/03/so-how-do-you-convience-google-app-engine-to-create-your-datastore-indexes/#comments</comments>
		<pubDate>Fri, 03 Sep 2010 14:11:47 +0000</pubDate>
		<dc:creator>dkberktas</dc:creator>
				<category><![CDATA[english]]></category>
		<category><![CDATA[tech]]></category>
		<category><![CDATA[e-tohum]]></category>
		<category><![CDATA[etohum]]></category>
		<category><![CDATA[gae]]></category>
		<category><![CDATA[gae/j]]></category>
		<category><![CDATA[index]]></category>

		<guid isPermaLink="false">http://doganberktas.com/?p=606</guid>
		<description><![CDATA[Creating indexes on Google App Engine / Java (gae/j) is an easy job. You don&#8217;t even have to think about it (well, for some time) For etohum admin application we used gae/j and it has been almost two years and gae/j has been improved a lot, but still, it has some really annoying features (bugs [...]]]></description>
			<content:encoded><![CDATA[<p>Creating indexes on Google App Engine / Java (gae/j) is an easy job. You don&#8217;t even have to think about it (well, for some time)</p>
<p>For <a href="http://doganberktas.com/tag/e-tohum/">etohum</a> admin application we used gae/j and it has been almost two years and gae/j has been improved a lot, but still, it has some really annoying features (bugs &#8212; I am not sure how to named them).</p>
<p>This time, it is the <strong>Datastore Indexes</strong>. Some of the pages requires indexes like</p>
<p><img style="margin-top: 5px; margin-bottom: 5px;" src="http://doganberktas.com/wp-content/uploads/2010/09/Screen-shot-2010-09-03-at-4.48.10-PM.png" alt="" width="500" height="21" /></p>
<p>which turns out to be confusing for the auto generation tool. If, let&#8217;s say, you change the order of the last two fields,</p>
<p>like this</p>
<p><img style="margin-top: 5px; margin-bottom: 5px;" src="http://doganberktas.com/wp-content/uploads/2010/09/Screen-shot-2010-09-03-at-4.48.02-PM.png" alt="" width="500" height="21" /></p>
<p>you will not get it automatically.</p>
<p>Even if you explicitly define it in your  <strong>datastore-indexes.xml</strong> file</p>
<pre>&lt;datastore-index kind="Application" ancestor="false" source="manual"&gt;
 &lt;property name="applciationIsFinished" direction="asc"/&gt;
 &lt;property name="isSpam" direction="asc"/&gt;
 &lt;property name="sezonId" direction="asc"/&gt;
 &lt;property name="bitisTarihi" direction="desc"/&gt;
 &lt;property name="basvuruTarihi" direction="desc"/&gt;
 &lt;/datastore-index&gt;
</pre>
<p>And the workaround for the problem is stated in the last paragraph of <a href="http://code.google.com/appengine/docs/java/config/indexconfig.html#Using_Automatic_Index_Configuration">Using Automatic Index Configuration documentation</a></p>
<blockquote><p>It&#8217;s a good idea to occasionally move index configuration from <code>datastore-indexes-auto.xml</code> to <code>datastore-indexes.xml</code>,  then disable automatic index configuration and test your app in the  development server.  This makes it easy to maintain indexes without  having to manage two files, and ensures that your testing will reproduce  errors caused by missing index configuration.</p></blockquote>
<p>So change the <strong>datastore-indexes.xml</strong> file and add manually the all required indexes and upload the application.</p>
<pre>&lt;datastore-indexes autoGenerate="false"&gt;</pre>
<p>You can change it back to auto generate after make sure the desired indexes are created.</p>
<p>ps. A tip about gae/j is that it is considerable faster when it is 4AM-7AM at the west coast of North America.</p>
]]></content:encoded>
			<wfw:commentRss>http://doganberktas.com/2010/09/03/so-how-do-you-convience-google-app-engine-to-create-your-datastore-indexes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Using Memcache with Google App Engine (GAE/J)</title>
		<link>http://doganberktas.com/2010/01/18/using-memcache-with-google-app-engine-gaej-a-simple-beginning-fragman-iphone-application/</link>
		<comments>http://doganberktas.com/2010/01/18/using-memcache-with-google-app-engine-gaej-a-simple-beginning-fragman-iphone-application/#comments</comments>
		<pubDate>Mon, 18 Jan 2010 21:39:23 +0000</pubDate>
		<dc:creator>dkberktas</dc:creator>
				<category><![CDATA[english]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[Ajax]]></category>
		<category><![CDATA[gae]]></category>
		<category><![CDATA[gae/j]]></category>
		<category><![CDATA[Google App Engine]]></category>
		<category><![CDATA[gwt]]></category>
		<category><![CDATA[ifragman]]></category>
		<category><![CDATA[iphone application]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Java Servlet]]></category>
		<category><![CDATA[JavaScript programming language]]></category>
		<category><![CDATA[JSON]]></category>
		<category><![CDATA[Memcached]]></category>
		<category><![CDATA[Technology/Internet]]></category>

		<guid isPermaLink="false">http://doganberktas.com/?p=196</guid>
		<description><![CDATA[A simple beginning &#8212; Fragman iPhone Application Memcache provides convenience to store a frequent query in memory, so that you don&#8217;t have to make the same execution over and over again. For the iPhone application I build (Fragman), I build a GAE/J backend for managing movie names, IMDB URLs, thumb images, video files, etc. It [...]]]></description>
			<content:encoded><![CDATA[<p><strong>A simple beginning &#8212; Fragman iPhone Application</strong></p>
<p>Memcache provides convenience to store a frequent query in memory, so that you don&#8217;t have to make the same execution over and over again. For the <a href="http://ifragman.com"><span style="color: #800000;">iPhone application I build (Fragman</span></a><span style="color: #800000;">)</span>, I build a GAE/J backend for managing movie names, IMDB URLs, thumb images, video files, etc. It interacts with the Obj-c code via calls encoded in JSON.</p>
<p>Since the categories are updated so frequently (new trailer, top 250 , soap opera trailers), every time the user starts the application from her iPhone, the corresponding categories Id(key) lists are  created which includes all the aspects mentioned above,</p>
<p>what I see, after people start to use the application that, most of the time, the application got stuck with the time constraint of GAE and  this causes inconvenience, so I decided to hold the category lists&#8217;s JSON in memory. Following is the code ,</p>
<p>this is the servlet for creating the JSON which is called after say upcoming movie list is changed. This servlet updates the memcached list</p>
<pre>        List keyList = new ArrayList();
	static Cache cache;
	static
	{
		try
		{
			CacheFactory cacheFactory =</pre>
<pre>CacheManager.getInstance().getCacheFactory();
			cache = cacheFactory.createCache(</pre>
<pre>Collections.emptyMap());
		}
		catch (CacheException e)
		{
			// ...
		}
		//.....
                public void doGet(HttpServletRequest request,</pre>
<pre>HttpServletResponse response) throws ServletException, IOException</pre>
<pre>	        {
                       //................
                       if(cache.containsKey(mode))
		       {
			     cache.remove(mode);
		       }
		       cache.put(mode, keyList);
	        }</pre>
<pre>                //........</pre>
<pre>          }</pre>
<p>And this is the servlet that fetch the Fragman beans from the datastore with the given keys (key list is got from the memecached list)</p>
<pre>          keyList = (List)cache.get(mode);</pre>
<pre>By doing this, I reduce the time that the servlet that creates the JSON takes.</pre>
]]></content:encoded>
			<wfw:commentRss>http://doganberktas.com/2010/01/18/using-memcache-with-google-app-engine-gaej-a-simple-beginning-fragman-iphone-application/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

