<?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>w00kie&#039;s ramblings &#187; google</title>
	<atom:link href="http://w00kie.com/tag/google/feed/" rel="self" type="application/rss+xml" />
	<link>http://w00kie.com</link>
	<description>Living the good life in Japan</description>
	<lastBuildDate>Wed, 09 Nov 2011 14:40:56 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Custom Django filters in Google App Engine</title>
		<link>http://w00kie.com/2008/06/19/custom-django-filters-in-google-app-engine/</link>
		<comments>http://w00kie.com/2008/06/19/custom-django-filters-in-google-app-engine/#comments</comments>
		<pubDate>Thu, 19 Jun 2008 02:36:00 +0000</pubDate>
		<dc:creator>w00kie</dc:creator>
				<category><![CDATA[internet]]></category>
		<category><![CDATA[Work stuff]]></category>
		<category><![CDATA[ads]]></category>
		<category><![CDATA[app engine]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[google]]></category>

		<guid isPermaLink="false">http://w00kie.com/?p=272</guid>
		<description><![CDATA[You want to create your own custom Django filters in App Engine without running a whole Django stack? Here's how in a few lines of code. First create a specific python file to hold your custom filters at the root &#8230; <a href="http://w00kie.com/2008/06/19/custom-django-filters-in-google-app-engine/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>You want to create your own custom Django filters in App Engine without running a whole Django stack? Here's how in a few lines of code.</p>
<p>First create a specific python file to hold your custom filters at the root of your application. In my case I use customfilters.py like this:</p>
<pre class="python"><span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">re</span>
<span style="color: #ff7700;font-weight:bold;">from</span> google.<span style="color: black;">appengine</span>.<span style="color: black;">ext</span> <span style="color: #ff7700;font-weight:bold;">import</span> webapp
&nbsp;
register = webapp.<span style="color: black;">template</span>.<span style="color: black;">create_template_register</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">def</span> escapeimg<span style="color: black;">&#40;</span>body<span style="color: black;">&#41;</span>:
	<span style="color: #ff7700;font-weight:bold;">return</span> <span style="color: #dc143c;">re</span>.<span style="color: black;">sub</span><span style="color: black;">&#40;</span>r<span style="color: #483d8b;">'</span></pre>
<p><img alt="" /></p>
<pre class="python"><span style="color: #483d8b;">', '</span><span style="color: black;">&#91;</span>IMG<span style="color: black;">&#93;</span><span style="color: #483d8b;">', body)
&nbsp;
register.filter(escapeimg)</span></pre>
<p>Then in your main application source file, call the following line outside of the main() definition, for example just after your modules loading:</p>
<pre class="python"><span style="color: #483d8b;">&quot;&quot;</span><span style="color: #483d8b;">&quot;Load custom Django template filters&quot;</span><span style="color: #483d8b;">&quot;&quot;</span>
webapp.<span style="color: black;">template</span>.<span style="color: black;">register_template_library</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'customfilters'</span><span style="color: black;">&#41;</span></pre>
<p>You should then be able to use the new filters you registered in customfilters.py straight away in any of your Django templates without any % load foobar % call</p>
]]></content:encoded>
			<wfw:commentRss>http://w00kie.com/2008/06/19/custom-django-filters-in-google-app-engine/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Crossdomain proxy on Google App Engine</title>
		<link>http://w00kie.com/2008/06/18/crossdomain-proxy-on-google-app-engine/</link>
		<comments>http://w00kie.com/2008/06/18/crossdomain-proxy-on-google-app-engine/#comments</comments>
		<pubDate>Wed, 18 Jun 2008 05:05:55 +0000</pubDate>
		<dc:creator>w00kie</dc:creator>
				<category><![CDATA[internet]]></category>
		<category><![CDATA[Work stuff]]></category>
		<category><![CDATA[app engine]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[flickr]]></category>
		<category><![CDATA[google]]></category>

		<guid isPermaLink="false">http://w00kie.com/?p=271</guid>
		<description><![CDATA[Here's a crossdomain proxy to pipe Javascript Ajax calls from you Google App Engine application to the Flickr API, since most browser will not let you call another domain directly. import cgi import urllib from google.appengine.ext import webapp from google.appengine.api &#8230; <a href="http://w00kie.com/2008/06/18/crossdomain-proxy-on-google-app-engine/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Here's a crossdomain proxy to pipe Javascript Ajax calls from you Google App Engine application to the Flickr API, since most browser will not let you call another domain directly.</p>
<pre class="python"><span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">cgi</span>
<span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">urllib</span>
<span style="color: #ff7700;font-weight:bold;">from</span> google.<span style="color: black;">appengine</span>.<span style="color: black;">ext</span> <span style="color: #ff7700;font-weight:bold;">import</span> webapp
<span style="color: #ff7700;font-weight:bold;">from</span> google.<span style="color: black;">appengine</span>.<span style="color: black;">api</span> <span style="color: #ff7700;font-weight:bold;">import</span> urlfetch
&nbsp;
<span style="color: #ff7700;font-weight:bold;">class</span> FlickrController<span style="color: black;">&#40;</span>webapp.<span style="color: black;">RequestHandler</span><span style="color: black;">&#41;</span>:
	<span style="color: #483d8b;">&quot;&quot;</span><span style="color: #483d8b;">&quot;Proxy for Ajax calls to flickr&quot;</span><span style="color: #483d8b;">&quot;&quot;</span>
	<span style="color: #ff7700;font-weight:bold;">def</span> get<span style="color: black;">&#40;</span><span style="color: #008000;">self</span><span style="color: black;">&#41;</span>:
		flickrapiendpoint = <span style="color: #483d8b;">'http://api.flickr.com/services/rest/'</span>
		flickrapikey = <span style="color: #483d8b;">'you_flicker_api_key'</span>
&nbsp;
		params = <span style="color: #008000;">self</span>.<span style="color: black;">request</span>.<span style="color: black;">GET</span>
		params.<span style="color: black;">add</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'api_key'</span>, flickrapikey<span style="color: black;">&#41;</span>
		params.<span style="color: black;">add</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'format'</span>, <span style="color: #483d8b;">'json'</span><span style="color: black;">&#41;</span>
		apiquery = <span style="color: #dc143c;">urllib</span>.<span style="color: black;">urlencode</span><span style="color: black;">&#40;</span>params<span style="color: black;">&#41;</span>
&nbsp;
		result = urlfetch.<span style="color: black;">fetch</span><span style="color: black;">&#40;</span>url=flickrapiendpoint + <span style="color: #483d8b;">'?'</span> + apiquery, method=urlfetch.<span style="color: black;">GET</span><span style="color: black;">&#41;</span>
		<span style="color: #008000;">self</span>.<span style="color: black;">response</span>.<span style="color: black;">out</span>.<span style="color: black;">write</span><span style="color: black;">&#40;</span>result.<span style="color: black;">content</span><span style="color: black;">&#41;</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">def</span> main<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>:
	application = webapp.<span style="color: black;">WSGIApplication</span><span style="color: black;">&#40;</span>
		<span style="color: black;">&#91;</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'/flickr/'</span>, FlickrController<span style="color: black;">&#41;</span><span style="color: black;">&#93;</span>,
		debug=<span style="color: #008000;">True</span><span style="color: black;">&#41;</span>
	wsgiref.<span style="color: black;">handlers</span>.<span style="color: black;">CGIHandler</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>.<span style="color: black;">run</span><span style="color: black;">&#40;</span>application<span style="color: black;">&#41;</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">if</span> __name__ == <span style="color: #483d8b;">&quot;__main__&quot;</span>:
	main<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span></pre>
<p>I didn't see examples of such a script anywhere else so I thought I'd post it here for all to see.</p>
]]></content:encoded>
			<wfw:commentRss>http://w00kie.com/2008/06/18/crossdomain-proxy-on-google-app-engine/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google UI genius with suggestions</title>
		<link>http://w00kie.com/2007/12/04/google-ui-genius-with-suggestions/</link>
		<comments>http://w00kie.com/2007/12/04/google-ui-genius-with-suggestions/#comments</comments>
		<pubDate>Tue, 04 Dec 2007 05:14:20 +0000</pubDate>
		<dc:creator>w00kie</dc:creator>
				<category><![CDATA[Random]]></category>
		<category><![CDATA[calculator]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[suggestions]]></category>
		<category><![CDATA[ui]]></category>

		<guid isPermaLink="false">http://www.w00kie.com/2007/12/04/google-ui-genius-with-suggestions/</guid>
		<description><![CDATA[I was just using Google as a calculator this morning as usual when I noticed something new, at least to me: if you type a simple operation in Firefox's Google Search box, the result will pop out as a suggestion &#8230; <a href="http://w00kie.com/2007/12/04/google-ui-genius-with-suggestions/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I was just using <a href="http://www.google.com/help/calculator.html" title="Google Calculator feature">Google as a calculator</a> this morning as usual when I noticed something new, at least to me: if you type a simple operation in Firefox's Google Search box, the result will pop out as a suggestion without having to hit enter and going to the results page.</p>
<p align="center"><img src="/uploads/200712/googlecalc-suggestions.jpg" alt="Operation results appear as suggestions in Google Search box" height="54" width="222" /></p>
<p>I love to stumble on those constant little UI and usability improvements that make you wonder if they were there yesterday. It's brilliant.</p>
]]></content:encoded>
			<wfw:commentRss>http://w00kie.com/2007/12/04/google-ui-genius-with-suggestions/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Served from: w00kie.com @ 2012-02-12 08:40:41 -->
