<?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:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>geo/tech/things</title>
	<atom:link href="http://erilem.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://erilem.wordpress.com</link>
	<description>geo-oriented technical things</description>
	<lastBuildDate>Sat, 11 Jul 2009 12:16:58 +0000</lastBuildDate>
	<generator>http://wordpress.com/</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<cloud domain='erilem.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://www.gravatar.com/blavatar/24615e9086e6ef6a416412c9a24cb715?s=96&#038;d=http://s.wordpress.com/i/buttonw-com.png</url>
		<title>geo/tech/things</title>
		<link>http://erilem.wordpress.com</link>
	</image>
			<item>
		<title>Y Combinator</title>
		<link>http://erilem.wordpress.com/2009/07/02/y-combinator/</link>
		<comments>http://erilem.wordpress.com/2009/07/02/y-combinator/#comments</comments>
		<pubDate>Thu, 02 Jul 2009 19:08:46 +0000</pubDate>
		<dc:creator>erilem</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[functional programming]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://erilem.wordpress.com/2009/07/02/y-combinator/</guid>
		<description><![CDATA[
I&#8217;ve been reading &#8220;The Little Schemer&#8221; from Daniel P. Friedman and Matthias Felleisen. Very interesting reading.


The nineth chapter introduces the Y Combinator function, a pretty interesting beast! Quoting Crockford: &#8220;one of the most strange and wonderful artifacts of Computer Science&#8221;. As a primer, here&#8217;s how the Y Combinator looks like (in Python):

def Y(func):
   [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=erilem.wordpress.com&blog=1932211&post=89&subd=erilem&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>
I&#8217;ve been reading &#8220;The Little Schemer&#8221; from Daniel P. Friedman and Matthias Felleisen. Very interesting reading.
</p>
<p>
The nineth chapter introduces the Y Combinator function, a pretty interesting beast! Quoting <a href="http://www.crockford.com/javascript/little.html">Crockford<a>: &#8220;one of the most strange and wonderful artifacts of Computer Science&#8221;. As a primer, here&#8217;s how the Y Combinator looks like (in Python):</p>
<pre>
def Y(func):
    return (lambda f : f(f))
     (lambda f : func(
          lambda x : (f(f))(x)))
</pre>
<p>Looks scary, doesn&#8217;t it? (It did scare me when I first saw it at least.)
</p>
<p>
The Y Combinator creates a recursive function from a non-recursive function that looks like the recursive function one wants to create. The Y Combinator can for example be used to obtain recursive functions from anonymous functions, which, with most programming languages, cannot be recursive.
</p>
<p>
This blog post proposes defining the Y Combinator function in Python.
 </p>
<p>
Goal: find the function Y (the Y Combinator) such that</p>
<pre>
fact = Y(like_fact)
</pre>
<p>where:</p>
<ul>
<li>fact is the factorial function</li>
<li>like_fact is defined as follows:</li>
</ul>
<pre>
def like_fact(r):
    def f(n):
        if n &lt; 2:
            return 1
        else:
            return n * r(n - 1)
    return f
</pre>
<p>
So Y takes a non-recursive function (which can theoritically be expressed as an anonymous function) that looks like the recursive factorial function and returns the factorial function.
</p>
<p>
You may have noticed thay our like_fact function is not expresed as an anonymous function. This is because Python does not allow us to do it: the inner function f cannot be defined with lambda because it includes conditional statements, the outer function like_fact cannot be defined with lambda because it includes an inner function that isn&#8217;t defined with lambda. Using JavaScript the like_fact function would be:</p>
<pre>
function(r) {
    return function(n) {
        return n &lt; 2 ? 1 : n * r(n - 1);
    };
}
</pre>
</p>
<p>
We start our demonstration from the following statement:</p>
<pre>
fact = notlike_fact(notlike_fact)
</pre>
<p>where notlike_fact is:    </p>
<pre>
def notlike_fact(r):
    def f(n):
        if n &lt; 2:
            return 1
        else:
            return n * (r(r))(n - 1)
    return f
</pre>
</p>
<p>
Now we rewrite the above statement using lambda:</p>
<pre>
fact = (lambda f : f(f))
          (notlike_fact)
</pre>
</p>
<p>
Now we can extract like_fact and rewrite the statement as (maybe the most difficult step):</p>
<pre>
(lambda f : f(f))
 (lambda f : like_fact(
      lambda x : (f(f)(x)))
</pre>
</p>
<p>
We can now write the Y function:</p>
<pre>
def Y(func):
    return (lambda f : f(f))
     (lambda f : func(
          lambda x : (f(f))(x)))
</pre>
<p>And we have:</p>
<pre>
fact = Y(like_fact)
assert fact(1) == 1
assert fact(2) == 2
assert fact(3) == 6
assert fact(4) == 24
assert fact(5) == 120
</pre>
<p>
Cool, no?
</p>
<p>
Obviously Y applies to other recursive functions, as an example let&#8217;s apply it to Fibonacci:</p>
<pre>
def like_fibo(r):
    def f(n):
        if n &lt;= 2:
            return 1
        else:
            return r(n - 1) + r(n - 2)
    return f

fibo = Y(like_fibo)
assert fibo(1) == 1
assert fibo(2) == 1
assert fibo(3) == 2
assert fibo(4) == 3
assert fibo(5) == 5
assert fibo(6) == 8
</pre></p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/erilem.wordpress.com/89/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/erilem.wordpress.com/89/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/erilem.wordpress.com/89/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/erilem.wordpress.com/89/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/erilem.wordpress.com/89/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/erilem.wordpress.com/89/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/erilem.wordpress.com/89/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/erilem.wordpress.com/89/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/erilem.wordpress.com/89/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/erilem.wordpress.com/89/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=erilem.wordpress.com&blog=1932211&post=89&subd=erilem&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://erilem.wordpress.com/2009/07/02/y-combinator/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/de021c90c02be38370e938c3c5e351ca?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">erilem</media:title>
		</media:content>
	</item>
		<item>
		<title>Testing</title>
		<link>http://erilem.wordpress.com/2009/06/30/testing/</link>
		<comments>http://erilem.wordpress.com/2009/06/30/testing/#comments</comments>
		<pubDate>Tue, 30 Jun 2009 11:37:10 +0000</pubDate>
		<dc:creator>erilem</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[geoext]]></category>
		<category><![CDATA[mapfish]]></category>
		<category><![CDATA[openlayers]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[testing]]></category>

		<guid isPermaLink="false">http://erilem.wordpress.com/2009/06/30/testing/</guid>
		<description><![CDATA[I&#8217;ve been reading about testing. Here are a few words on my thoughts about testing.
From my reading and understanding there are three types of tests:

Unit tests: a unit test tests a single function (e.g. an object method). A unit test must take care of isolating the tested function from the functions the tested function normally [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=erilem.wordpress.com&blog=1932211&post=86&subd=erilem&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>I&#8217;ve been reading about testing. Here are a few words on my thoughts about testing.</p>
<p>From my reading and understanding there are three types of tests:</p>
<ul>
<li>Unit tests: a unit test tests a single function (e.g. an object method). A unit test must take care of isolating the tested function from the functions the tested function normally relies on (when executed outside any test).</li>
<li>Integration tests: an integration test tests if two or more dependent functions correctly work together.</li>
<li>User-acceptance tests: a user-acceptance tests whether a given function provides the behavior its users expect. User Interface tests belong to this type.</li>
</ul>
<p>These three types of tests are complementary, they all have their importance when testing an application.</p>
<p>In OpenLayers, GeoExt, and MapFish (its JavaScript library), we provide unit and integration tests, and actually don&#8217;t distinguish whether they&#8217;re of the unit or integration type (they&#8217;re all referred to as unit tests, which is fine I think). Not providing user-acceptance tests makes sense, as OpenLayers, GeoExt and MapFish are libraries as opposed to applications. The three libraries come with examples that in some way are user-acceptance tests. (In OpenLayers we&#8217;ve attempted to create actual user-acceptance tests, but developpers haven&#8217;t paid much attention to them, possibly their scopes and goals haven&#8217;t been well defined.)</p>
<p>Applications built with OpenLayers and/or GeoExt and/or MapFish instantiate classes from these libraries. Often, most of their code doesn&#8217;t include actual logic, and from that regard writing unit and integration tests for such applications doesn&#8217;t make sense. However, as User Interfaces, these applications would deserve user-acceptance tests. </p>
<p>Providing automated User Interface tests is in my opinion a very difficult task, and I&#8217;d be very interested in having feedback from others on that.       </p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/erilem.wordpress.com/86/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/erilem.wordpress.com/86/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/erilem.wordpress.com/86/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/erilem.wordpress.com/86/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/erilem.wordpress.com/86/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/erilem.wordpress.com/86/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/erilem.wordpress.com/86/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/erilem.wordpress.com/86/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/erilem.wordpress.com/86/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/erilem.wordpress.com/86/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=erilem.wordpress.com&blog=1932211&post=86&subd=erilem&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://erilem.wordpress.com/2009/06/30/testing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/de021c90c02be38370e938c3c5e351ca?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">erilem</media:title>
		</media:content>
	</item>
		<item>
		<title>MapFish and GeoExt</title>
		<link>http://erilem.wordpress.com/2009/04/19/mapfish-and-geoext/</link>
		<comments>http://erilem.wordpress.com/2009/04/19/mapfish-and-geoext/#comments</comments>
		<pubDate>Sun, 19 Apr 2009 20:40:11 +0000</pubDate>
		<dc:creator>erilem</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://erilem.wordpress.com/?p=54</guid>
		<description><![CDATA[Matt Priour recently asked about the future of the client part of MapFish, and more specifically whether it will be replaced by GeoExt. This is actually a question that every MapFish user should be asking  . Anyway I thought an answer to that question could make a post on my blog. There it is.
The [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=erilem.wordpress.com&blog=1932211&post=54&subd=erilem&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Matt Priour recently <a href="http://www.geoext.org/pipermail/users/2009-April/000045.html">asked</a> about the future of the client part of MapFish, and more specifically whether it will be replaced by <a href="http://www.geoext.org">GeoExt</a>. This is actually a question that every MapFish user should be asking <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> . Anyway I thought an answer to that question could make a post on my blog. There it is.</p>
<p><strong>The short story:</strong> the client part of MapFish will not be replaced by GeoExt.</p>
<p><strong>Now the longer story</strong>. As of today the client part of MapFish includes OpenLayers, Ext, and the MapFish JavaScript lib. The latter is itself composed of two parts: <em>core</em> and <em>widgets</em>.</p>
<ul>
<li><em>core</em> includes classes that are independent of Ext; most of them extend OpenLayers classes like <code>OpenLayers.Control</code>, <code>OpenLayers.Protocol</code>, <code>OpenLayers.Strategy</code>, etc. For example the client-side implementation of the <a href="http://www.mapfish.org/trac/mapfish/wiki/MapFishProtocol">MapFish Protocol</a> is part of <em>core</em>.</li>
<li><em>widgets</em> includes Ext-based classes, mostly GUI components (but not only, the FeatureReader and stuff are part of <em>widgets</em>). <em>widgets</em> also has stuff that&#8217;s directly related to the server side of MapFish, the print widgets are a good example.</li>
</ul>
<p>GeoExt will not replace <em>core</em>, nor will it replace the <em>widgets</em> components that rely on MapFish web services. But basically every new Ext-based component that isn&#8217;t tied to any server-side stuff is going into GeoExt.</p>
<p>In addition to OpenLayers and Ext, MapFish will include GeoExt. We had initially planned to integrate GeoExt into MapFish earlier, but finally decided to let things settle down a bit in GeoExt before doing the integration. We&#8217;re currently doing that integration, and we will gradually be deprecating classes as their equivalents are added into GeoExt. For example, the work on FeatureRecord, FeatureReader and FeatureStore we&#8217;ve been doing in GeoExt will deprecate the FeatureReader, FeatureStore and LayerStoreMediator classes in the MapFish JavaScript lib.</p>
<p>Also, MapFish, as a framework, aims to provide an integrated solution. For client-side development, this means that the developer doesn&#8217;t need to download Ext, OpenLayers and GeoExt, install them within his application, and think about the organization of his application. Instead, we want that applications created with the MapFish framework are well organized from their creations; with the Ext, OpenLayers, GeoExt and MapFish libs ready, with the JavaScript build tool ready, with the unit test suite ready, etc. I guess I will cover this topic in a later post&#8230;</p>
<p>Wooo, two posts in two days, scarry&#8230; <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/erilem.wordpress.com/54/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/erilem.wordpress.com/54/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/erilem.wordpress.com/54/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/erilem.wordpress.com/54/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/erilem.wordpress.com/54/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/erilem.wordpress.com/54/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/erilem.wordpress.com/54/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/erilem.wordpress.com/54/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/erilem.wordpress.com/54/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/erilem.wordpress.com/54/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=erilem.wordpress.com&blog=1932211&post=54&subd=erilem&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://erilem.wordpress.com/2009/04/19/mapfish-and-geoext/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/de021c90c02be38370e938c3c5e351ca?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">erilem</media:title>
		</media:content>
	</item>
		<item>
		<title>Additions to the MapFish Protocol</title>
		<link>http://erilem.wordpress.com/2009/04/18/additions-to-the-mapfish-protocol/</link>
		<comments>http://erilem.wordpress.com/2009/04/18/additions-to-the-mapfish-protocol/#comments</comments>
		<pubDate>Sat, 18 Apr 2009 21:55:48 +0000</pubDate>
		<dc:creator>erilem</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://erilem.wordpress.com/?p=31</guid>
		<description><![CDATA[We recently added new stuff to the MapFish Protocol.
As a refresher, let&#8217;s first take a look at what the MapFish Protocol had before the new additions.
(Note that you&#8217;d need the JSONovich FireFox extension to see the output of the examples given below in your web browser.)
Geographic query params

box={x1},{y1},{x2},{y2}: the features within the specified bounding box
geometry={geojson_string}: [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=erilem.wordpress.com&blog=1932211&post=31&subd=erilem&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>We recently added new stuff to the MapFish Protocol.</p>
<p>As a refresher, let&#8217;s first take a look at what the MapFish Protocol had before the new additions.</p>
<p>(Note that you&#8217;d need the <a href="https://addons.mozilla.org/fr/firefox/addon/10122">JSONovich</a> FireFox extension to see the output of the examples given below in your web browser.)</p>
<p><b>Geographic query params</b></p>
<ul>
<li><code>box={x1},{y1},{x2},{y2}</code>: the features within the specified bounding box</li>
<li><code>geometry={geojson_string}</code>: the features within the specified geometry</li>
<li><code>lon={lon}&amp;lat={lat}&amp;tolerance={tol}</code>: the features within the specified tolerance of the specified lon/lat</li>
</ul>
<p>Examples:</p>
<ul>
<li><a href="http://demo.mapfish.org/mapfishsample/trunk/summits?box=6.2,45.6,6.3,45.7">http://demo.mapfish.org/mapfishsample/trunk/summits?box=6.2,45.6,6.3,45.7</a></li>
<li><a href='http://demo.mapfish.org/mapfishsample/trunk/summits?geometry={"type":"Polygon","coordinates":[[[6.2,45.6],[6.3,45.6],[6.3,45.7],[6.2,45.7],[6.2,45.6]]]}'>http://demo.mapfish.org/mapfishsample/trunk/summits?geometry={&#8220;type&#8221;:&#8221;Polygon&#8221;,&#8221;coordinates&#8221;:[[[6.2,45.6],[6.3,45.6],[6.3,45.7],[6.2,45.7],[6.2,45.6]]]}</a></li>
<li><a href="http://demo.mapfish.org/mapfishsample/trunk/summits?lon=6.2&amp;lat=45.6&amp;tolerance=0.1">http://demo.mapfish.org/mapfishsample/trunk/summits?lon=6.2&amp;lat=45.6&amp;tolerance=0.1</a></li>
</ul>
<p><b>Limiting and Sorting</b></p>
<ul>
<li><code>limit={num}</code>: the maximum number of features returned</li>
<li><code>offset={num}</code>: the number of features to skip</li>
<li><code>order_by={field_name}</code>: the name of the field to use to order the features</li>
<li><code>dir=ASC|DESC</code>: the ordering direction</li>
</ul>
<p>Examples:</p>
<ul>
<li><a href="http://demo.mapfish.org/mapfishsample/trunk/summits?limit=10">http://demo.mapfish.org/mapfishsample/trunk/summits?limit=10</a></li>
<li><a href="http://demo.mapfish.org/mapfishsample/trunk/summits?limit=10&amp;offset=2">http://demo.mapfish.org/mapfishsample/trunk/summits?limit=10&amp;offset=2</a></li>
<li><a href="http://demo.mapfish.org/mapfishsample/trunk/summits?limit=10&amp;offset=2&amp;order_by=elevation">http://demo.mapfish.org/mapfishsample/trunk/summits?limit=10&amp;offset=2&amp;order_by=elevation</a></li>
<li><a href="http://demo.mapfish.org/mapfishsample/trunk/summits?limit=10&amp;offset=2&amp;order_by=elevation&amp;dir=ASC">http://demo.mapfish.org/mapfishsample/trunk/summits?limit=10&amp;offset=2&amp;order_by=elevation&amp;dir=ASC</a></li>
<li><a href="http://demo.mapfish.org/mapfishsample/trunk/summits?limit=10&amp;offset=2&amp;order_by=elevation&amp;dir=DESC">http://demo.mapfish.org/mapfishsample/trunk/summits?limit=10&amp;offset=2&amp;order_by=elevation&amp;dir=DESC</a></li>
</ul>
<p><b>The new params</b></p>
<ul>
<li><code>no_geom=true|false</code>: so that the returned feature has no geometry (&#8220;geometry&#8221;: null)</li>
<li><code>attrs={field1}[,{field2},...]</code>: to restrict the list of properties returned in the features</li>
<li><code>queryable={field1}[,{field2},...]</code>: the names of the feature fields that can be queried</li>
<li><code>{field}__{query_op}={value}</code>: filter expression, field must be in the list of fields specified by queryable, query_op is one of &#8220;eq&#8221;, &#8220;ne&#8221;, &#8220;lt, &#8220;le&#8221;, &#8220;gt&#8221;, &#8220;ge&#8221;, &#8220;like&#8221;, &#8220;ilike&#8221;</li>
</ul>
<p>And now an example combining all the new parameters:</p>
<ul>
<li><a href="http://demo.mapfish.org/mapfishsample/trunk/summits?queryable=name,elevation&amp;name__ilike=col&amp;elevation__gte=3500&amp;attrs=name,elevation&amp;no_geom=true">http://demo.mapfish.org/mapfishsample/trunk/summits?queryable=name,elevation&amp;name__ilike=col&amp;elevation__gte=3500&amp;attrs=name,elevation&amp;no_geom=true</a></li>
</ul>
<p>The above query returns a GeoJSON representation of the summits whose names include &#8220;col&#8221; and whose elevations are greater than or equal to 3500. The returned features have no geometry and their attributes include &#8220;name&#8221; and &#8220;elevation&#8221; only.</p>
<p>Not including the geometry in the features makes the parsing in the browser much faster, so for cases where the geometries aren&#8217;t needed this is a big win.</p>
<p>Credits for the &#8220;<code>queryable={field}&amp;{field}__{query_op}={value}</code>&#8221; syntax goes to FeatureServer!</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/erilem.wordpress.com/31/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/erilem.wordpress.com/31/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/erilem.wordpress.com/31/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/erilem.wordpress.com/31/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/erilem.wordpress.com/31/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/erilem.wordpress.com/31/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/erilem.wordpress.com/31/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/erilem.wordpress.com/31/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/erilem.wordpress.com/31/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/erilem.wordpress.com/31/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=erilem.wordpress.com&blog=1932211&post=31&subd=erilem&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://erilem.wordpress.com/2009/04/18/additions-to-the-mapfish-protocol/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/de021c90c02be38370e938c3c5e351ca?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">erilem</media:title>
		</media:content>
	</item>
		<item>
		<title>Secure TileCache With Pylons and Repoze</title>
		<link>http://erilem.wordpress.com/2009/02/15/secure-tilecache-with-pylons-and-repoze/</link>
		<comments>http://erilem.wordpress.com/2009/02/15/secure-tilecache-with-pylons-and-repoze/#comments</comments>
		<pubDate>Sun, 15 Feb 2009 18:14:18 +0000</pubDate>
		<dc:creator>erilem</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://erilem.wordpress.com/?p=23</guid>
		<description><![CDATA[This post shows how one can secure TileCache with Pylons and Repoze.
In a Pylons application one can run a WSGI application from within a controller action. Here is a simple example:
    class MainController(BaseController)
        def action(self, environ, start_response):
         [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=erilem.wordpress.com&blog=1932211&post=23&subd=erilem&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>This post shows how one can secure TileCache with Pylons and Repoze.</p>
<p>In a Pylons application one can run a WSGI application from within a controller action. Here is a simple example:</p>
<pre>    class MainController(BaseController)
        def action(self, environ, start_response):
            return wsgiApp(environ, start_response)</pre>
<p><a href="http://tilecache.org/">TileCache</a> is commonly run from within <code>mod_python</code>. TileCache can also be run as a WSGI application, therefore it can be run from within the controller action of a Pylons application. Here&#8217;s how:</p>
<pre>    from TileCache.Service import wsgiApp

    class MainController(BaseController)
        def tilecache(self, environ, start_response):
            return wsgiApp(environ, start_response)</pre>
<p>Pretty cool&#8230; But it gets really interesting when <em>repoze.what</em> is added to the picture. For those who don&#8217;t know repoze.what, repoze.what is an authorization framework for WSGI applications. repoze.what now provides a Pylons <a href="http://code.gustavonarea.net/repoze.what-pylons/Manual/index.html">plugin</a>, making it easy to protect controllers and controller actions in a Pylons application. Here&#8217;s how our tilecache action can be protected:</p>
<pre>    from TileCache.Service import wsgiApp
    from repoze.what.predicates import has_permission
    from repoze.what.plugins.pylonshq import ActionProtector

    class MainController(BaseController)
        @ActionProtector(has_permission('tilecache'))
        def tilecache(self, environ, start_response):
            return wsgiApp(environ, start_response)</pre>
<p>With the  above, anyone who tries to access <code>/tilecache</code> will have to be granted the <em>tilecache</em> permission. Otherwise, authorization will be denied.</p>
<p>TileCache is secured!</p>
<p>People often want finer-grained authorization, like give certain users access to certain layers. With Pylons&#8217; routing system this can be easily and elegantly achieved using repoze.what, I will show that in a later post. </p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/erilem.wordpress.com/23/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/erilem.wordpress.com/23/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/erilem.wordpress.com/23/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/erilem.wordpress.com/23/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/erilem.wordpress.com/23/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/erilem.wordpress.com/23/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/erilem.wordpress.com/23/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/erilem.wordpress.com/23/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/erilem.wordpress.com/23/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/erilem.wordpress.com/23/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=erilem.wordpress.com&blog=1932211&post=23&subd=erilem&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://erilem.wordpress.com/2009/02/15/secure-tilecache-with-pylons-and-repoze/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/de021c90c02be38370e938c3c5e351ca?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">erilem</media:title>
		</media:content>
	</item>
		<item>
		<title>FeatureServer Versus MapFish Server</title>
		<link>http://erilem.wordpress.com/2008/10/31/featureserver-versus-mapfish-server/</link>
		<comments>http://erilem.wordpress.com/2008/10/31/featureserver-versus-mapfish-server/#comments</comments>
		<pubDate>Fri, 31 Oct 2008 15:10:56 +0000</pubDate>
		<dc:creator>erilem</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://erilem.wordpress.com/?p=19</guid>
		<description><![CDATA[I thought I could say a few words on the differences between FeatureServer and MapFish Server.
First, FeatureServer and MapFish Server have similarities. They share a similar, REST-based protocol, for creating, reading, updating and deleting features.
The main difference between the two: FeatureServer is a standalone application, MapFish Server is a web-mapping development framework.
FeatureServer is perfect for [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=erilem.wordpress.com&blog=1932211&post=19&subd=erilem&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>I thought I could say a few words on the differences between <a href="http://featureserver.org/">FeatureServer</a> and MapFish Server.</p>
<p>First, FeatureServer and MapFish Server have similarities. They share a similar, REST-based protocol, for creating, reading, updating and deleting features.</p>
<p>The main difference between the two: FeatureServer is a standalone application, MapFish Server is a web-mapping development framework.</p>
<p>FeatureServer is perfect for very rapidly setting up editable layers, with no custom needs. MapFish Server is good if you work on a customer project, with specific, customer-oriented needs; MapFish<br />
Server provides a complete development framework, which, thanks to the great components it relies on (<a href="http://pylonshq.com">Pylons</a>, <a href="http://www.sqlalchemy.org">SQLAlchemy</a>, <a href="http://pypi.python.org/pypi/Shapely">Shapely</a>, etc.) allows to write high-quality and maintainable code.</p>
<p>Two different goals.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/erilem.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/erilem.wordpress.com/19/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/erilem.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/erilem.wordpress.com/19/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/erilem.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/erilem.wordpress.com/19/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/erilem.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/erilem.wordpress.com/19/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/erilem.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/erilem.wordpress.com/19/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=erilem.wordpress.com&blog=1932211&post=19&subd=erilem&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://erilem.wordpress.com/2008/10/31/featureserver-versus-mapfish-server/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/de021c90c02be38370e938c3c5e351ca?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">erilem</media:title>
		</media:content>
	</item>
		<item>
		<title>MapFish 1.0</title>
		<link>http://erilem.wordpress.com/2008/10/17/mapfish-10/</link>
		<comments>http://erilem.wordpress.com/2008/10/17/mapfish-10/#comments</comments>
		<pubDate>Fri, 17 Oct 2008 07:58:39 +0000</pubDate>
		<dc:creator>erilem</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://erilem.wordpress.com/?p=4</guid>
		<description><![CDATA[MapFish 1.0 is out!
The things I really like in MapFish 1.0:

The PDF Printing Library. Everyone wants to print maps, Patrick has turned everyone&#8217;s dream into reality. The PDF Printing Library is great, it supports fancy stuff like vector rendering, map rotation, legend, etc. See this page to know more. And there&#8217;s more to come, support [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=erilem.wordpress.com&blog=1932211&post=4&subd=erilem&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>MapFish 1.0 is out!</p>
<p>The things I really like in MapFish 1.0:</p>
<ul>
<li>The PDF Printing Library. Everyone wants to print maps, <a href="http://patrick.blog.thus.ch/">Patrick</a> has turned everyone&#8217;s dream into reality. The PDF Printing Library is great, it supports fancy stuff like vector rendering, map rotation, legend, etc. See this <a href="https://trac.mapfish.org/trac/mapfish/wiki/PrintModuleDoc">page</a> to know more. And there&#8217;s more to come, <a href="https://trac.mapfish.org/trac/mapfish/ticket/197">support</a> for printing map annotations is about to make it into trunk.</li>
<li>MapFish Server implementation of the <a href="https://trac.mapfish.org/trac/mapfish/wiki/MapFishProtocol">MapFish Protocol</a> for creating, reading, updating and deleting features. We still need to add a feature editing widget to MapFish Client, the feature editing panel, currently demo&#8217;ed <a href="http://dev.mapfish.org/sandbox/camptocamp/MapFishUnhcr/client/examples/editing/editing-panel.html">here</a>, will probably make it into trunk soon.</li>
<li>MapFish Client relying on the OpenLayers protocol abstraction. With that every MapFish Searcher component can work with the MapFish Protocol as well as with any other protocols supported by OpenLayers (e.g. Gears, WFS).</li>
<li>The feature reader, and mediator components we have added to <a href="https://trac.mapfish.org/trac/mapfish/browser/trunk/MapFish/client/mfbase/mapfish/widgets/data">widgets/data</a>. These are core classes to bridge OpenLayers and Ext. And by the way, these classes will probably represent the first bits put in GeoExt; more on that later&#8230;</li>
<li>The <a href="http://www.mapfish.org/apidoc/1.0">API doc</a> that covers both MapFish Client and OpenLayers.</li>
</ul>
<p>There are other stuff in MapFish 1.0, the above are just the ones I care the most about.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/erilem.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/erilem.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/erilem.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/erilem.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/erilem.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/erilem.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/erilem.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/erilem.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/erilem.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/erilem.wordpress.com/4/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=erilem.wordpress.com&blog=1932211&post=4&subd=erilem&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://erilem.wordpress.com/2008/10/17/mapfish-10/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/de021c90c02be38370e938c3c5e351ca?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">erilem</media:title>
		</media:content>
	</item>
		<item>
		<title>This blog</title>
		<link>http://erilem.wordpress.com/2007/11/14/this-blog/</link>
		<comments>http://erilem.wordpress.com/2007/11/14/this-blog/#comments</comments>
		<pubDate>Wed, 14 Nov 2007 21:23:03 +0000</pubDate>
		<dc:creator>erilem</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://erilem.wordpress.com/2007/11/14/this-blog/</guid>
		<description><![CDATA[My first post to tell what I&#8217;m up to with this blog. I&#8217;ll be talking about technical stuff mostly related to my activities as a developer at Camptocamp.
Expect me to talk about MapFish &#8211; currently my favorite project &#8211; and its best friends OpenLayers, the gispython project, and Pylons. Without these great projects, MapFish couldn&#8217;t [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=erilem.wordpress.com&blog=1932211&post=3&subd=erilem&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>My first post to tell what I&#8217;m up to with this blog. I&#8217;ll be talking about technical stuff mostly related to my activities as a developer at Camptocamp.</p>
<p>Expect me to talk about <a href="http://www.mapfish.org">MapFish</a> &#8211; currently my favorite project &#8211; and its best friends <a href="http://www.openlayers.org">OpenLayers</a>, the <a href="http://trac.gispython.org/">gispython</a> project, and <a href="http://pylonshq.com/">Pylons</a>. Without these great projects, MapFish couldn&#8217;t exist.</p>
<p>I&#8217;ll also be talking about the <a href="http://www.spatialdataintegrator.com">Spatial Data Integrator</a>, an opensource spatial ETL.</p>
<p>And hopefully lots of other interesting technical stuff.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/erilem.wordpress.com/3/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/erilem.wordpress.com/3/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/erilem.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/erilem.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/erilem.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/erilem.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/erilem.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/erilem.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/erilem.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/erilem.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/erilem.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/erilem.wordpress.com/3/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=erilem.wordpress.com&blog=1932211&post=3&subd=erilem&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://erilem.wordpress.com/2007/11/14/this-blog/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/de021c90c02be38370e938c3c5e351ca?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">erilem</media:title>
		</media:content>
	</item>
	</channel>
</rss>