<?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>Blog do Robson Dantas &#187; Google AppEngine</title>
	<atom:link href="http://blogdodantas.dxs.com.br/category/tecnologia_informatica/desenvolvimento-de-software/google-appengine-desenvolvimento-de-software-tecnologia_informatica/feed/" rel="self" type="application/rss+xml" />
	<link>http://blogdodantas.dxs.com.br</link>
	<description>Tecnologia, segurança, cotidiano, pesca esportiva e inutilidades</description>
	<lastBuildDate>Tue, 31 Jan 2012 02:31:46 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.3</generator>
		<item>
		<title>AppEngine Python &#8211; Webservices através de ProtoRPC</title>
		<link>http://blogdodantas.dxs.com.br/2011/04/20/appengine-python-webservices-atraves-de-protorpc/</link>
		<comments>http://blogdodantas.dxs.com.br/2011/04/20/appengine-python-webservices-atraves-de-protorpc/#comments</comments>
		<pubDate>Wed, 20 Apr 2011 19:56:41 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Desenvolvimento de software]]></category>
		<category><![CDATA[Google AppEngine]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[appengine]]></category>
		<category><![CDATA[webservices]]></category>

		<guid isPermaLink="false">http://blogdodantas.dxs.com.br/?p=530</guid>
		<description><![CDATA[Consegui dar uma parada para dar uma lida nos feeds e algo interessante chamou a atenção no blog do Google AppEngine: lançamento de uma api para webservices, chamada ProtoRPC . Havia dado alguns passos usando o django-nonrel e um projeto para expor funcionalidades via REST, porém, esse esquema facilita e muito as coisas, principalmente ao [...]]]></description>
			<content:encoded><![CDATA[<p>Consegui dar uma parada para dar uma lida nos feeds e algo interessante chamou a atenção no blog do<a href="http://googleappengine.blogspot.com/" onclick="javascript:pageTracker._trackPageview('out/googleappengine.blogspot.com');" target="_blank"> Google AppEngine</a>: lançamento de uma api para webservices, chamada <a href="http://googleappengine.blogspot.com/2011/04/introducing-protorpc-for-writing-app.html" onclick="javascript:pageTracker._trackPageview('out/googleappengine.blogspot.com');" target="_blank">ProtoRPC</a> .</p>
<p>Havia dado alguns passos usando o<a href="http://www.allbuttonspressed.com/projects/django-nonrel" onclick="javascript:pageTracker._trackPageview('out/www.allbuttonspressed.com');" target="_blank"> django-nonrel</a> e um projeto para expor funcionalidades via <a href="http://pt.wikipedia.org/wiki/REST" onclick="javascript:pageTracker._trackPageview('out/pt.wikipedia.org');" target="_blank">REST</a>, porém, esse esquema facilita e muito as coisas, principalmente ao expor simples serviços, como chamadas ajax, por exemplo.</p>
<p>Basicamente, você tem 3 passos:</p>
<ul>
<li>Uma classe de request, que deriva de messages.Message;</li>
<li>Uma classe de respose, que também deriva de messages.Message;</li>
<li>Uma classe de serviço, que deriva de remote.Service, e que expõe os métodos;</li>
</ul>
<p>Feito isso, só mapear sua aplicação para uma URL apontando a classe de serviço, e chamar o método. O <a href="https://docs.google.com/document/d/1QJBVWnbtYoiTFHIyqcBdnv5u4C1zYvDzFFGBIun35Ro/edit?hl=pt_BR&amp;ndplr=1#" onclick="javascript:pageTracker._trackPageview('out/docs.google.com');" target="_blank">exemplo completo pode ser visto aqui</a>.</p>
<p>Nota: Por enquanto disponível somente para Python, mas em breve a versão Java será liberada.</p>
<p>Boa, Google!</p>
<p class="bookmark-me">Bookmarks<a title="technorati.com" href="http://www.technorati.com/faves?add=http%3A%2F%2Fblogdodantas.dxs.com.br%2F2011%2F04%2F20%2Fappengine-python-webservices-atraves-de-protorpc%2F" onclick="javascript:pageTracker._trackPageview('out/www.technorati.com');" target="_blank" rel="nofollow"><img src="http://www.dxs.com.br/wordpress/wp-content/plugins/bookmark-me/images/technorati.png" style="margin:0;border:0;padding:0" alt="bookmark"/></a> <a title="del.icio.us" href="http://del.icio.us/post?url=http%3A%2F%2Fblogdodantas.dxs.com.br%2F2011%2F04%2F20%2Fappengine-python-webservices-atraves-de-protorpc%2F&amp;title=AppEngine+Python+%26%238211%3B+Webservices+atrav%C3%A9s+de+ProtoRPC" onclick="javascript:pageTracker._trackPageview('out/del.icio.us');" target="_blank" rel="nofollow"><img src="http://www.dxs.com.br/wordpress/wp-content/plugins/bookmark-me/images/delicious.png" style="margin:0;border:0;padding:0" alt="bookmark"/></a> <a title="digg.com" href="http://digg.com/submit?url=http%3A%2F%2Fblogdodantas.dxs.com.br%2F2011%2F04%2F20%2Fappengine-python-webservices-atraves-de-protorpc%2F&amp;title=AppEngine+Python+%26%238211%3B+Webservices+atrav%C3%A9s+de+ProtoRPC" onclick="javascript:pageTracker._trackPageview('out/digg.com');" target="_blank" rel="nofollow"><img src="http://www.dxs.com.br/wordpress/wp-content/plugins/bookmark-me/images/digg.png" style="margin:0;border:0;padding:0" alt="bookmark"/></a> <a title="www.facebook.com" href="http://www.facebook.com/share.php?u=http%3A%2F%2Fblogdodantas.dxs.com.br%2F2011%2F04%2F20%2Fappengine-python-webservices-atraves-de-protorpc%2F&amp;t=AppEngine+Python+%26%238211%3B+Webservices+atrav%C3%A9s+de+ProtoRPC" onclick="javascript:pageTracker._trackPageview('out/www.facebook.com');" target="_blank" rel="nofollow"><img src="http://www.dxs.com.br/wordpress/wp-content/plugins/bookmark-me/images/facebook.png" style="margin:0;border:0;padding:0" alt="bookmark"/></a> <a title="bookmarks.yahoo.com" href="http://bookmarks.yahoo.com/toolbar/savebm?opener=tb&amp;u=http%3A%2F%2Fblogdodantas.dxs.com.br%2F2011%2F04%2F20%2Fappengine-python-webservices-atraves-de-protorpc%2F" onclick="javascript:pageTracker._trackPageview('out/bookmarks.yahoo.com');" target="_blank" rel="nofollow"><img src="http://www.dxs.com.br/wordpress/wp-content/plugins/bookmark-me/images/yahoo.png" style="margin:0;border:0;padding:0" alt="bookmark"/></a> <a title="www.google.com" href="http://www.google.com/bookmarks/mark?op=edit&amp;output=popup&amp;bkmk=http%3A%2F%2Fblogdodantas.dxs.com.br%2F2011%2F04%2F20%2Fappengine-python-webservices-atraves-de-protorpc%2F&amp;title=AppEngine+Python+%26%238211%3B+Webservices+atrav%C3%A9s+de+ProtoRPC" onclick="javascript:pageTracker._trackPageview('out/www.google.com');" target="_blank" rel="nofollow"><img src="http://www.dxs.com.br/wordpress/wp-content/plugins/bookmark-me/images/google.png" style="margin:0;border:0;padding:0" alt="bookmark"/></a> </p><p><script type="text/javascript"><!--
google_ad_client = "pub-3400408440819022";
/* 468x60, criado 02/11/10 */
google_ad_slot = "1718761682";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>]]></content:encoded>
			<wfw:commentRss>http://blogdodantas.dxs.com.br/2011/04/20/appengine-python-webservices-atraves-de-protorpc/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Resumo até o primeiro dia de Google I/O</title>
		<link>http://blogdodantas.dxs.com.br/2010/05/18/resumo-ate-o-primeiro-dia-de-google-io/</link>
		<comments>http://blogdodantas.dxs.com.br/2010/05/18/resumo-ate-o-primeiro-dia-de-google-io/#comments</comments>
		<pubDate>Wed, 19 May 2010 02:27:56 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Google AppEngine]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[google io]]></category>
		<category><![CDATA[io2010]]></category>
		<category><![CDATA[san francisco]]></category>

		<guid isPermaLink="false">http://blogdodantas.dxs.com.br/?p=403</guid>
		<description><![CDATA[Finalmente fiz minha viagem acontecer, e não foi fácil! Além dos preparativos comuns de uma viagem internacional, tive várias questões profissionais para resolver para garantir uma semana &#8220;tranquila&#8221;. Saí de São Paulo no sábado 15/05 e 15horas depois estava descendo em San Francisco, debaixo de um tempo nublado e frio. Nem mal cheguei já saí [...]]]></description>
			<content:encoded><![CDATA[<p>Finalmente fiz minha viagem acontecer, e não foi fácil! Além dos preparativos comuns de uma viagem internacional, tive várias questões profissionais para resolver para garantir uma semana &#8220;tranquila&#8221;.</p>
<p>Saí de São Paulo no sábado 15/05 e 15horas depois estava descendo em San Francisco, debaixo de um tempo nublado e frio. Nem mal cheguei já saí andando pela cidade para conhecer os pontos turísticos &#8211; fisherman wharf, golden gate bridge, union square, etc. Ah, e é claro que dei uma passada na loja da Apple <img src='http://www.dxs.com.br/wordpress/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Na segunda-feira, aluguei um carro e fui visitar a sede da Google em Mountain View. O que tenho a falar do lugar ? É, realmente é espetacular e gigante! Uma rua de vários quilômetros só de prédios do Google.</p>
<p><img class="alignnone" title="Google Mountain View" src="http://lh3.ggpht.com/_fs_Ln-StO8E/S_HyLPo16CI/AAAAAAAADEI/5RGbiRdhOcU/s512/DSC_0131.JPG?imgmax=512" alt="" /></p>
<p>Almocei com Arne Kurrik, do developer relations team, e fiquei espantado com a variedade de comidas: eram 7 restaurantes, com as mais variadas comidas e bebidas a vontade. Encontrei o Patrick Chanezon, que é uma figura bem conhecida nos eventos e ficamos conversando sobre o SP-GTUG e AppEngine.</p>
<p><img class="alignnone" title="Eu e Arne Kurrik" src="http://lh6.ggpht.com/_fs_Ln-StO8E/S_Hxo-1d6oI/AAAAAAAADDQ/3nR7-0RTtE8/s512/DSC_0117.JPG?imgmax=512" alt="" /></p>
<p><img class="alignnone" title="Eu e Patrick Chanezon" src="http://lh5.ggpht.com/_fs_Ln-StO8E/S_Hx4GfPnuI/AAAAAAAADDs/Vk_ShByHKFA/s512/DSC_0124.JPG?imgmax=512" alt="" /></p>
<p>Quando estava no caminho de volta para San Francisco,  passei em frente ao prédio onde fica o time do Android. Preste atenção no tamanho do mesmo, impressiona!</p>
<p><img class="alignnone" title="Prédio do Android" src="http://lh5.ggpht.com/_fs_Ln-StO8E/S_HxSO6_OuI/AAAAAAAADCo/zzOWb1kvK0Y/s512/DSC_0105.JPG?imgmax=512" alt="" /></p>
<p>E assim acabou a minha segunda-feira, um sonho realizado.</p>
<p>Hoje pela manhã &#8211; dia que começou o Bootcamp, fui ao Moscone West para realizar o checkin e retirar meu kit &#8211; uma camiseta, a credencial e o tão esperado Nexus One ( sim, ele é tudo o que você imagina ).</p>
<p><img class="alignnone" title="Credenciais Google I/O" src="http://lh5.ggpht.com/_fs_Ln-StO8E/S_M_K1h2jNI/AAAAAAAADI0/4Dam72-EpnA/s512/DSC_0182.JPG?imgmax=512" alt="" /></p>
<p>Logo de cara, encontrei várias pessoas conhecidas, principalmente no meio do Opensocial. Entre eles estava Yoichiro &#8211; um dos cabeças do Mixi no Japão (maior rede social que há por lá) e Eiji Kitamura, que contribui com o Shindig-PHP.</p>
<p>Também encontrei o Van Riper, do Silicon Valley GTUG e a Francesca do Firenze GTUG. Trocamos algumas idéias e logo após subimos para o evento.</p>
<p>Já tinha definido minha agenda que era: Android, Google Maps API V3, Google AppEngine e Chrome Extensions.  Todos os eventos de Android estavam lotados e muita gente interessada no desenvolvimento de aplicativos.</p>
<p><em><strong>Android:</strong></em></p>
<p>Roman Nurik começou a apresentação, e pelo fato de ser um bootcamp, o conteúdo do mesmo foi bem superficial. Mesmo assim, deu para perceber o tanto de gente interessada e o volume de funcionalidades interessantes disponíveis, nas quais destaco multi-tasking e background service.</p>
<p><img class="alignnone" title="Iniciando apresentação de Android" src="http://lh4.ggpht.com/_fs_Ln-StO8E/S_M-vgu-RfI/AAAAAAAADHo/g9H5KucS_BU/s512/DSC_0159.JPG?imgmax=512" alt="" /></p>
<p><strong><em>Google Maps API V3:</em></strong></p>
<p>Essa palestra foi um hands on, onde tivemos a chance de codificar junto com um engenheiro do Google. Achei muito legal as melhorias que foram feitas na API V3, principalmente a parte de integração com o Google Maps (site). Caso queira acessar o conteúdo disponibilizado pelo palestrante como Sample, basta ir para a url <a href="http://onebox.appspot.com/" onclick="javascript:pageTracker._trackPageview('out/onebox.appspot.com');" target="_blank">onebox.appspot.com</a> .</p>
<p><img class="alignnone" title="Desenvolvedores na sessão do GoogleMaps" src="http://lh4.ggpht.com/_fs_Ln-StO8E/S_M-0D54ZbI/AAAAAAAADH4/EReeu7LRWBo/s512/DSC_0162.JPG?imgmax=512" alt="" /></p>
<p><img class="alignnone" title="Eu e Shawn Shen (Google)" src="http://lh5.ggpht.com/_fs_Ln-StO8E/S_M-2etcbRI/AAAAAAAADIA/Vj_VtGPtajI/s512/DSC_0164.JPG?imgmax=512" alt="" /></p>
<p>As palestras de AppEngine e Chrome Extensions cobriram assuntos de como começar uma aplicação e um plugin do zero, e também cobriram uns aspectos básicos. Acabei brincando com background service no AppEngine e com integração via OAuth nos plugins do Chrome.</p>
<p>Amanhã começa o I/O de verdade, com as palestras mais longas e mais atrativas. Hoje foi só um aquecimento, cobrindo aspectos um pouco mais básicos. A medida que as mesmas forem acontecendo, vou postando por aqui. Fique ligado!</p>
<p><a href="http://picasaweb.google.com.br/gdguiadogps/SFO?authkey=Gv1sRgCMzr7_HCkqqyQA#5472420034057400626"  target="_self">Veja mais fotos no Picasa</a></p>
<p>abs</p>
<p>Robson Dantas</p>
<p class="bookmark-me">Bookmarks<a title="technorati.com" href="http://www.technorati.com/faves?add=http%3A%2F%2Fblogdodantas.dxs.com.br%2F2010%2F05%2F18%2Fresumo-ate-o-primeiro-dia-de-google-io%2F" onclick="javascript:pageTracker._trackPageview('out/www.technorati.com');" target="_blank" rel="nofollow"><img src="http://www.dxs.com.br/wordpress/wp-content/plugins/bookmark-me/images/technorati.png" style="margin:0;border:0;padding:0" alt="bookmark"/></a> <a title="del.icio.us" href="http://del.icio.us/post?url=http%3A%2F%2Fblogdodantas.dxs.com.br%2F2010%2F05%2F18%2Fresumo-ate-o-primeiro-dia-de-google-io%2F&amp;title=Resumo+at%C3%A9+o+primeiro+dia+de+Google+I%2FO" onclick="javascript:pageTracker._trackPageview('out/del.icio.us');" target="_blank" rel="nofollow"><img src="http://www.dxs.com.br/wordpress/wp-content/plugins/bookmark-me/images/delicious.png" style="margin:0;border:0;padding:0" alt="bookmark"/></a> <a title="digg.com" href="http://digg.com/submit?url=http%3A%2F%2Fblogdodantas.dxs.com.br%2F2010%2F05%2F18%2Fresumo-ate-o-primeiro-dia-de-google-io%2F&amp;title=Resumo+at%C3%A9+o+primeiro+dia+de+Google+I%2FO" onclick="javascript:pageTracker._trackPageview('out/digg.com');" target="_blank" rel="nofollow"><img src="http://www.dxs.com.br/wordpress/wp-content/plugins/bookmark-me/images/digg.png" style="margin:0;border:0;padding:0" alt="bookmark"/></a> <a title="www.facebook.com" href="http://www.facebook.com/share.php?u=http%3A%2F%2Fblogdodantas.dxs.com.br%2F2010%2F05%2F18%2Fresumo-ate-o-primeiro-dia-de-google-io%2F&amp;t=Resumo+at%C3%A9+o+primeiro+dia+de+Google+I%2FO" onclick="javascript:pageTracker._trackPageview('out/www.facebook.com');" target="_blank" rel="nofollow"><img src="http://www.dxs.com.br/wordpress/wp-content/plugins/bookmark-me/images/facebook.png" style="margin:0;border:0;padding:0" alt="bookmark"/></a> <a title="bookmarks.yahoo.com" href="http://bookmarks.yahoo.com/toolbar/savebm?opener=tb&amp;u=http%3A%2F%2Fblogdodantas.dxs.com.br%2F2010%2F05%2F18%2Fresumo-ate-o-primeiro-dia-de-google-io%2F" onclick="javascript:pageTracker._trackPageview('out/bookmarks.yahoo.com');" target="_blank" rel="nofollow"><img src="http://www.dxs.com.br/wordpress/wp-content/plugins/bookmark-me/images/yahoo.png" style="margin:0;border:0;padding:0" alt="bookmark"/></a> <a title="www.google.com" href="http://www.google.com/bookmarks/mark?op=edit&amp;output=popup&amp;bkmk=http%3A%2F%2Fblogdodantas.dxs.com.br%2F2010%2F05%2F18%2Fresumo-ate-o-primeiro-dia-de-google-io%2F&amp;title=Resumo+at%C3%A9+o+primeiro+dia+de+Google+I%2FO" onclick="javascript:pageTracker._trackPageview('out/www.google.com');" target="_blank" rel="nofollow"><img src="http://www.dxs.com.br/wordpress/wp-content/plugins/bookmark-me/images/google.png" style="margin:0;border:0;padding:0" alt="bookmark"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://blogdodantas.dxs.com.br/2010/05/18/resumo-ate-o-primeiro-dia-de-google-io/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Java no Google AppEngine</title>
		<link>http://blogdodantas.dxs.com.br/2009/04/12/java-no-google-appengine/</link>
		<comments>http://blogdodantas.dxs.com.br/2009/04/12/java-no-google-appengine/#comments</comments>
		<pubDate>Sun, 12 Apr 2009 15:40:20 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Desenvolvimento de software]]></category>
		<category><![CDATA[Google AppEngine]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[appengine java]]></category>
		<category><![CDATA[hospedagem gratuita no google]]></category>
		<category><![CDATA[java no google]]></category>
		<category><![CDATA[programando java appengine]]></category>
		<category><![CDATA[suporte java no google appengine]]></category>

		<guid isPermaLink="false">http://blogdodantas.dxs.com.br/?p=247</guid>
		<description><![CDATA[Sim, é verdade ! O Google liberou Java para o Appengine (que antes era somente Python). Como eu tenho uma aplicação rodando lá, recebi uma mensagem no painel de controle do meu site, chamando para ser um &#8220;tester&#8221; da plataforma, já que apenas 10.000 desenvolvedores teriam essa chance agora. Fiz a inscrição e bingo ! [...]]]></description>
			<content:encoded><![CDATA[<p>Sim, é verdade !</p>
<p>O Google liberou Java para o Appengine (que antes era somente Python). Como eu tenho uma aplicação rodando lá, recebi uma mensagem no painel de controle do meu site, chamando para ser um &#8220;tester&#8221; da plataforma, já que apenas 10.000 desenvolvedores teriam essa chance agora.</p>
<p>Fiz a inscrição e bingo ! Recebi o e-mail da sexta-feira dizendo que minha conta foi aceita no programa de testes de Java para AppEngine.</p>
<p>Se você nunca ouviu falar de AppEngine, sugiro dar uma olhada. Em poucas palavras é um serviço de hospedagem que a Google está oferecendo, free, até um certo limite de uso de recursos.</p>
<p>Certo limite de recursos, hoje, na versão gratuita, representa 5 milhões de pageviews/mês. Poucos sites atingem essa marca e além disso, caso queira mais recursos, você pode colocar grana da mesma forma que funciona no AdWords: você diz o seu limite, e eles liberam recursos.</p>
<p>Para mais detalhes sobre Java no Google Appengine, dê uma olhada aqui: <a href="http://code.google.com/intl/pt-BR/appengine/docs/java/gettingstarted/introduction.html" onclick="javascript:pageTracker._trackPageview('out/code.google.com');">http://code.google.com/intl/pt-BR/appengine/docs/java/gettingstarted/introduction.html</a></p>
<p>Em breve vou postar detalhes sobre meu primeiro app java por lá. Por enquanto, tenho um aplicativo Python rodando: o site<a href="http://www.guiadogps.com.br"  target="_blank"> Guia do GPS, tudo sobre GPS</a>.</p>
<p>Comentários ? Dúvidas ? Sugestões ?</p>
<p>Utilize o formulário logo abaixo.</p>
<p>-Robson Dantas</p>
<p class="bookmark-me">Bookmarks<a title="technorati.com" href="http://www.technorati.com/faves?add=http%3A%2F%2Fblogdodantas.dxs.com.br%2F2009%2F04%2F12%2Fjava-no-google-appengine%2F" onclick="javascript:pageTracker._trackPageview('out/www.technorati.com');" target="_blank" rel="nofollow"><img src="http://www.dxs.com.br/wordpress/wp-content/plugins/bookmark-me/images/technorati.png" style="margin:0;border:0;padding:0" alt="bookmark"/></a> <a title="del.icio.us" href="http://del.icio.us/post?url=http%3A%2F%2Fblogdodantas.dxs.com.br%2F2009%2F04%2F12%2Fjava-no-google-appengine%2F&amp;title=Java+no+Google+AppEngine" onclick="javascript:pageTracker._trackPageview('out/del.icio.us');" target="_blank" rel="nofollow"><img src="http://www.dxs.com.br/wordpress/wp-content/plugins/bookmark-me/images/delicious.png" style="margin:0;border:0;padding:0" alt="bookmark"/></a> <a title="digg.com" href="http://digg.com/submit?url=http%3A%2F%2Fblogdodantas.dxs.com.br%2F2009%2F04%2F12%2Fjava-no-google-appengine%2F&amp;title=Java+no+Google+AppEngine" onclick="javascript:pageTracker._trackPageview('out/digg.com');" target="_blank" rel="nofollow"><img src="http://www.dxs.com.br/wordpress/wp-content/plugins/bookmark-me/images/digg.png" style="margin:0;border:0;padding:0" alt="bookmark"/></a> <a title="www.facebook.com" href="http://www.facebook.com/share.php?u=http%3A%2F%2Fblogdodantas.dxs.com.br%2F2009%2F04%2F12%2Fjava-no-google-appengine%2F&amp;t=Java+no+Google+AppEngine" onclick="javascript:pageTracker._trackPageview('out/www.facebook.com');" target="_blank" rel="nofollow"><img src="http://www.dxs.com.br/wordpress/wp-content/plugins/bookmark-me/images/facebook.png" style="margin:0;border:0;padding:0" alt="bookmark"/></a> <a title="bookmarks.yahoo.com" href="http://bookmarks.yahoo.com/toolbar/savebm?opener=tb&amp;u=http%3A%2F%2Fblogdodantas.dxs.com.br%2F2009%2F04%2F12%2Fjava-no-google-appengine%2F" onclick="javascript:pageTracker._trackPageview('out/bookmarks.yahoo.com');" target="_blank" rel="nofollow"><img src="http://www.dxs.com.br/wordpress/wp-content/plugins/bookmark-me/images/yahoo.png" style="margin:0;border:0;padding:0" alt="bookmark"/></a> <a title="www.google.com" href="http://www.google.com/bookmarks/mark?op=edit&amp;output=popup&amp;bkmk=http%3A%2F%2Fblogdodantas.dxs.com.br%2F2009%2F04%2F12%2Fjava-no-google-appengine%2F&amp;title=Java+no+Google+AppEngine" onclick="javascript:pageTracker._trackPageview('out/www.google.com');" target="_blank" rel="nofollow"><img src="http://www.dxs.com.br/wordpress/wp-content/plugins/bookmark-me/images/google.png" style="margin:0;border:0;padding:0" alt="bookmark"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://blogdodantas.dxs.com.br/2009/04/12/java-no-google-appengine/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Patching WordPress xmlrpc to filter post using categories</title>
		<link>http://blogdodantas.dxs.com.br/2009/03/18/patching-wordpress-xmlrpc-to-filter-post-using-categories/</link>
		<comments>http://blogdodantas.dxs.com.br/2009/03/18/patching-wordpress-xmlrpc-to-filter-post-using-categories/#comments</comments>
		<pubDate>Wed, 18 Mar 2009 15:34:18 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Desenvolvimento de software]]></category>
		<category><![CDATA[Google AppEngine]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Wordpress - PHP]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[wordpress filter post by category]]></category>
		<category><![CDATA[wordpress hack]]></category>
		<category><![CDATA[xmlrpc wordpress]]></category>

		<guid isPermaLink="false">http://blogdodantas.dxs.com.br/?p=238</guid>
		<description><![CDATA[I´m building an application to integrate data between some blog apps (WordPress and Blogger for example) and then faced a problem when I was trying to filter some posts using a specific category. My app is AppEngine based and I´m algo using xmlrpclib and wordpress-library to make web calls. After playing a while with wordpress-library, [...]]]></description>
			<content:encoded><![CDATA[<p>I´m building an application to integrate data between some blog apps (WordPress and Blogger for example) and then faced a problem when I was trying to filter some posts using a specific category.</p>
<p>My app is AppEngine based and I´m algo using xmlrpclib and wordpress-library to make web calls. After playing a while with wordpress-library, I got some things missing and started to patch to make it work for me.</p>
<p>Basically I´ve added some stuff like post status, custom fields and filter posts by categories. I dont know why WordPress don´t give a simple wrapper function inside xmlrpc.php to make things generic, allowing other users to extend functionalities. Anyway, I did it and will suggest to add support for it, because makes easier to give some maitenance.</p>
<p>To make the patch, you must understand the <em>get_post</em> function, exposed on <em>wp-includes/post.php</em>. Looking inside, the function body is:</p>
<pre>function get_posts($args = null) {
    $defaults = array(
                             'numberposts' =&gt; 5, 'offset' =&gt; 0,
                             'category' =&gt; 0, 'orderby' =&gt; 'post_date',
                             'order' =&gt; 'DESC', 'include' =&gt; '',
                             'exclude' =&gt; '', 'meta_key' =&gt; '',
                             'meta_value' =&gt;'', 'post_type' =&gt; 'post',
                             'suppress_filters' =&gt; true
                             );</pre>
<p><em>&#8230;. continue</em></p>
<p>Based on that function, it becomes easier to make your on function on xmlrpc.php:</p>
<p><span style="text-decoration: underline;">First</span>:  Include your function entrypoint on $this-&gt;methods array. My implementation is <em>&#8216;wp.getPostsByCategory&#8217;   =&gt; &#8216;this:wp_getPostsByCategory&#8217;</em>. I decided to use this name, because it´s a specific function for wordpress, not a MetaWebLog structure.</p>
<p><span style="text-decoration: underline;">Second</span>: Change <em>mw_wp_get_recent_posts</em> to receive other args and change the call <em>wp_get_recent_posts($num_posts)</em> to use <em>get_posts</em> . You´ll also need to change the ways that arrays are accessed, because get_posts function returns an Object, instead of array. Example: <em>$entry['ID']</em> becomes <em>$entry-&gt;ID</em>.</p>
<p>After that, just make your call to <em>wp.getPostsByCategory</em>, passing username, password and categoryId. Like magic <img src='http://www.dxs.com.br/wordpress/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<p>Just to finish, a simple python example using xmlrpclib to call a server method:</p>
<pre>import xmlrpclib

server = xmlrpclib.ServerProxy("http://www.mywebsite.com/xmlrpc.php")
posts = server.wp.getPostsByCategory(categoryId, 'user', 'password')

for post in posts:
   print post['post_title']</pre>
<p>.<br />
Piece of cake ! If you have any doubt, leave a comment here.</p>
<p class="bookmark-me">Bookmarks<a title="technorati.com" href="http://www.technorati.com/faves?add=http%3A%2F%2Fblogdodantas.dxs.com.br%2F2009%2F03%2F18%2Fpatching-wordpress-xmlrpc-to-filter-post-using-categories%2F" onclick="javascript:pageTracker._trackPageview('out/www.technorati.com');" target="_blank" rel="nofollow"><img src="http://www.dxs.com.br/wordpress/wp-content/plugins/bookmark-me/images/technorati.png" style="margin:0;border:0;padding:0" alt="bookmark"/></a> <a title="del.icio.us" href="http://del.icio.us/post?url=http%3A%2F%2Fblogdodantas.dxs.com.br%2F2009%2F03%2F18%2Fpatching-wordpress-xmlrpc-to-filter-post-using-categories%2F&amp;title=Patching+WordPress+xmlrpc+to+filter+post+using+categories" onclick="javascript:pageTracker._trackPageview('out/del.icio.us');" target="_blank" rel="nofollow"><img src="http://www.dxs.com.br/wordpress/wp-content/plugins/bookmark-me/images/delicious.png" style="margin:0;border:0;padding:0" alt="bookmark"/></a> <a title="digg.com" href="http://digg.com/submit?url=http%3A%2F%2Fblogdodantas.dxs.com.br%2F2009%2F03%2F18%2Fpatching-wordpress-xmlrpc-to-filter-post-using-categories%2F&amp;title=Patching+WordPress+xmlrpc+to+filter+post+using+categories" onclick="javascript:pageTracker._trackPageview('out/digg.com');" target="_blank" rel="nofollow"><img src="http://www.dxs.com.br/wordpress/wp-content/plugins/bookmark-me/images/digg.png" style="margin:0;border:0;padding:0" alt="bookmark"/></a> <a title="www.facebook.com" href="http://www.facebook.com/share.php?u=http%3A%2F%2Fblogdodantas.dxs.com.br%2F2009%2F03%2F18%2Fpatching-wordpress-xmlrpc-to-filter-post-using-categories%2F&amp;t=Patching+WordPress+xmlrpc+to+filter+post+using+categories" onclick="javascript:pageTracker._trackPageview('out/www.facebook.com');" target="_blank" rel="nofollow"><img src="http://www.dxs.com.br/wordpress/wp-content/plugins/bookmark-me/images/facebook.png" style="margin:0;border:0;padding:0" alt="bookmark"/></a> <a title="bookmarks.yahoo.com" href="http://bookmarks.yahoo.com/toolbar/savebm?opener=tb&amp;u=http%3A%2F%2Fblogdodantas.dxs.com.br%2F2009%2F03%2F18%2Fpatching-wordpress-xmlrpc-to-filter-post-using-categories%2F" onclick="javascript:pageTracker._trackPageview('out/bookmarks.yahoo.com');" target="_blank" rel="nofollow"><img src="http://www.dxs.com.br/wordpress/wp-content/plugins/bookmark-me/images/yahoo.png" style="margin:0;border:0;padding:0" alt="bookmark"/></a> <a title="www.google.com" href="http://www.google.com/bookmarks/mark?op=edit&amp;output=popup&amp;bkmk=http%3A%2F%2Fblogdodantas.dxs.com.br%2F2009%2F03%2F18%2Fpatching-wordpress-xmlrpc-to-filter-post-using-categories%2F&amp;title=Patching+WordPress+xmlrpc+to+filter+post+using+categories" onclick="javascript:pageTracker._trackPageview('out/www.google.com');" target="_blank" rel="nofollow"><img src="http://www.dxs.com.br/wordpress/wp-content/plugins/bookmark-me/images/google.png" style="margin:0;border:0;padding:0" alt="bookmark"/></a> </p>]]></content:encoded>
			<wfw:commentRss>http://blogdodantas.dxs.com.br/2009/03/18/patching-wordpress-xmlrpc-to-filter-post-using-categories/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

