<?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>CØdeZØne! &#187; rest</title>
	<atom:link href="http://leandrosilva.com.br/category/rest/feed/" rel="self" type="application/rss+xml" />
	<link>http://leandrosilva.com.br</link>
	<description>Coisas sobre desenvolvimento de software</description>
	<lastBuildDate>Mon, 23 Aug 2010 13:04:51 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Erlang/OTP no Caelum Tech Day 2009</title>
		<link>http://leandrosilva.com.br/2009/12/06/erlangotp-no-caelum-tech-day-2009/</link>
		<comments>http://leandrosilva.com.br/2009/12/06/erlangotp-no-caelum-tech-day-2009/#comments</comments>
		<pubDate>Mon, 07 Dec 2009 01:14:20 +0000</pubDate>
		<dc:creator>Leandro Silva</dc:creator>
				<category><![CDATA[erlang]]></category>
		<category><![CDATA[rest]]></category>

		<guid isPermaLink="false">http://leandrosilva.com.br/?p=480</guid>
		<description><![CDATA[Hoje aconteceu o Caelum Tech Day 2009, um evento de tecnologia voltado à própria galera que trabalha na Caelum, que ano passado contou com nada menos que Jim Weber falando de RESTful, com exclusividade, antes de sua fantástica palestra no Falando em Java. O objetivo do evento é compartilharmos entre nós mesmos as coisas que [...]]]></description>
			<content:encoded><![CDATA[<p>Hoje aconteceu o <strong>Caelum Tech Day 2009</strong>, um evento de tecnologia voltado à própria galera que trabalha na Caelum, que ano passado contou com nada menos que <a href="http://jim.webber.name/" target="_blank">Jim Weber</a> falando de RESTful, com exclusividade, antes de sua fantástica palestra no Falando em Java.</p>
<p>O objetivo do evento é compartilharmos entre nós mesmos as coisas que estudamos durante todo o ano. Levantamos então uma porção de assuntos que gostariamos de compartilhar, votamos nos que gostaríamos de ver, e no final, os mais votados são apresentados.</p>
<p>Este ano não tivemos o Jim, mas tivemos muita gente boa da Caelum falando sobre Ruby, JavaScript, Scala, Java, o <a href="http://guilhermesilveira.wordpress.com/" target="_blank">Guilherme Silveira</a> falando de<a href="http://www.slideshare.net/guilhermecaelum/caelum-2009-rest-ao-restful" target="_blank"> RESTful</a> junto com o Cauê Guerra e eu falando de <a href="http://erlang.org/" target="_blank">Erlang/OTP</a> junto com o Thadeu Russo.</p>
<p>Veja a nossa apresentação logo abaixo e divirtam-se com Erlang!</p>
<div id="__ss_2661328" style="width: 425px;"><strong><a title="Erlang/OTP - Caelum Tech Day 2009" href="http://www.slideshare.net/leandrodoze/erlang-otp-caelum-tech-day-2009">Erlang/OTP &#8211; Caelum Tech Day 2009</a></strong><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="355" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" /><param name="src" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=erlangotp-caelumtechday2009-091206134352-phpapp02&amp;rel=0&amp;stripped_title=erlang-otp-caelum-tech-day-2009" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="425" height="355" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=erlangotp-caelumtechday2009-091206134352-phpapp02&amp;rel=0&amp;stripped_title=erlang-otp-caelum-tech-day-2009" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<div style="padding: 5px 0 12px;">View more <a href="http://www.slideshare.net/">presentations</a> from <a href="http://www.slideshare.net/leandrodoze">Leandro Silva</a>.</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://leandrosilva.com.br/2009/12/06/erlangotp-no-caelum-tech-day-2009/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>5 minutos de CouchDB e CouchRest</title>
		<link>http://leandrosilva.com.br/2009/08/02/5-minutos-de-couchdb-e-couchrest/</link>
		<comments>http://leandrosilva.com.br/2009/08/02/5-minutos-de-couchdb-e-couchrest/#comments</comments>
		<pubDate>Sun, 02 Aug 2009 16:05:47 +0000</pubDate>
		<dc:creator>Leandro Silva</dc:creator>
				<category><![CDATA[banco de dados]]></category>
		<category><![CDATA[couchdb]]></category>
		<category><![CDATA[rest]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://leandrosilva.com.br/?p=374</guid>
		<description><![CDATA[Normalmente demoro um bom tempo para escrever um tutorial completo, mas dessa vez vou tentar ser o mais breve possível, tanto ao escrever, quanto no resultado final. O tema é CouchDB, o revolucionario banco de dados orientado a documentos e com interface totalmente RESTful, e a Ruby gem CouchRest, que é uma verdadeira mão-na-roda. Obviamente [...]]]></description>
			<content:encoded><![CDATA[<p>Normalmente demoro um bom tempo para escrever um tutorial completo, mas dessa vez vou tentar ser o mais breve possível, tanto ao escrever, quanto no resultado final.</p>
<p>O tema é <strong><a href="http://couchdb.apache.org/" target="_blank">CouchDB</a></strong>, o revolucionario banco de dados orientado a documentos e com interface totalmente <a href="http://en.wikipedia.org/wiki/Representational_State_Transfer" target="_blank">RESTful</a>, e a Ruby gem <strong><a href="http://github.com/jchris/couchrest" target="_blank">CouchRest</a></strong>, que é uma verdadeira mão-na-roda. Obviamente que, em tão pouco tempo &#8212; até para cumprir a promessa inicial &#8211;, eu não vou explicar os fundamentos do CouchDB, mas você pode encontrar uma introdução interessante <a href="http://tapajos.me/2009/7/19/falando-um-pouco-sobre-couchdb" target="_blank">aqui</a>.</p>
<p>A primeira coisa que você precisa fazer é se certificar de que possui <a href="http://www.ruby-lang.org/" target="_blank">Ruby</a> e CouchDB instalados. Caso você ainda não os possua, no Google você encontra inumeras receitas para todo sabor de sistema operacional. No meu caso, estou usando Mac OS X com <a href="http://www.rubyenterpriseedition.com/" target="_blank">Ruby EE</a> da <a href="http://www.phusion.nl/" target="_blank">Phusion</a> e CouchDB instalado via <a href="http://www.macports.org/" target="_blank">MacPorts</a> &#8212; que acho a maneira mais prática de instação de qualquer coisa; esforço zero.</p>
<pre class="brush: bash;">

$ sudo port install couchdb
</pre>
<p>De qualquer forma, se você quiser uma fonte rápida de informação sobre instalação do CouchDB no seu sistema operacional, consulte o apêndice do livro <a href="http://books.couchdb.org/relax" target="_blank">CouchDB: The Definitive Guide</a>. Lá você encontra um guia rápido para instalação em <a href="http://books.couchdb.org/relax/appendix/installing-on-windows" target="_blank">Windows</a>, <a href="http://books.couchdb.org/relax/appendix/installing-on-mac" target="_blank">Mac OS X</a>, <a href="http://books.couchdb.org/relax/appendix/installing-on-unix" target="_blank">Unix-like</a> e <a href="http://books.couchdb.org/relax/appendix/installing-from-source" target="_blank">a partir do fonte</a>.</p>
<p><strong>Mão na massa</strong></p>
<p>Bem, com todos os pré-requisitos OK, vamos por a mão na massa logo de uma vez!</p>
<p><strong>1- Instale a gem CouchRest</strong></p>
<pre class="brush: bash;">
$ sudo gem install jchris-couchrest
</pre>
<p><strong>2- Inicie o CouchDB</strong></p>
<pre class="brush: bash;">
$ sudo couchdb -b
</pre>
<p>Acesse <a href="http://localhost:5984/_utils/" target="_blank">http://localhost:5984/_utils</a>. Se você viu um camaradinha relaxando num sofá vermelho no canto superior direito da página, é porque está tudo certo com seu CouchDB. Vamos em frente.</p>
<p><strong>3- Abra um terminal IRB</strong></p>
<pre class="brush: ruby;">
require 'rubygems'
require 'couchrest'
</pre>
<p>Tudo requerido corretamente, hora de começar a brincar com nosso banco de dados. Mas antes, vamos criá-lo!</p>
<pre class="brush: ruby;">
db = CouchRest.database!('http://localhost:5984/my_db')
</pre>
<p>Agora vamos criar os atributos do <em>documento</em> que será gravado nesse banco.</p>
<pre class="brush: ruby;">
attributes = { &quot;name&quot; =&gt; &quot;Leandro Silva&quot;, &quot;blog&quot; =&gt; &quot;leandrosilva.com.br&quot;, &quot;titles&quot; =&gt; [&quot;System Architect&quot;, &quot;Blogger&quot;]}
</pre>
<p>Criado os atributos do documento, vamos gravá-lo.</p>
<pre class="brush: ruby;">
result = db.save_doc(attributes)
</pre>
<p>Documento criado! Você pode acessar novamente <a href="http://localhost:5984/_utils/" target="_blank">http://localhost:5984/_utils</a> e ver o que aconteceu até agora. Há um documento criado no banco my_db, com uma <em>revisão</em> apenas, contendo os dados que definimos no hash attributes.</p>
<p>Você também pode acessar informações resultantes da operação anterior através do hash result.</p>
<pre class="brush: ruby;">
result['id']
result['rev']
</pre>
<p>Viu? São as mesmas informações que você viu no gerenciador web do CouchDB.</p>
<p>Vamos continuar acessando estas informações [de maneira absurdamente fácil] através da CouchRest.</p>
<pre class="brush: ruby;">
record = db.get(result['id'])
</pre>
<p>Veja o hash record. Há duas chaves particularmente interessantes: <em>_id</em> e <em>_rev</em>. Estas duas chaves são equivalentes a <em>id</em> e <em>rev</em> do nosso hash anterior, o result.</p>
<p>Um teste? Compare os resultados abaixo.</p>
<pre class="brush: ruby;">
result['id']
record['_id']
</pre>
<pre class="brush: ruby;">
result['rev']
record['_rev']
</pre>
<p>Taí, simples assim. Viu a equivalência?</p>
<p>Vamos ver outros campos do nosso registro.</p>
<pre class="brush: ruby;">
record['titles']
</pre>
<p>Que tal adicionar mais um titulo?</p>
<pre class="brush: ruby;">
record['titles'] &lt;&lt; 'Polyglot Programmer'
</pre>
<p>Bem, acho que já é hora de salvar e ir adiante, porque este tutorial tem que ser breve. Vamos lá.</p>
<pre class="brush: ruby;">
result = db.save_doc(record)
</pre>
<p>Outra coisa interessante aqui. Vamos conferir a chave rev do nosso hash result.</p>
<pre class="brush: ruby;">
result['rev']
</pre>
<p>Diferente da primeira vez que vimos, não? Vá ao gerenciador web do CouchDB e veja se algo mudou. Sim, algo mudou. Agora você tem a opção de navegar pelas revisões do seu documento. Fantástico!</p>
<p>Legal, muito bem por hoje.</p>
<pre class="brush: ruby;">
db.delete_doc(record)
</pre>
<p>Agora volte ao gerenciador web do CouchDB e dê um refresh na página de visualização &#8212; caso você esteja nela.</p>
<p>O que aconteceu? Sumiu! O registro foi apagado.</p>
<p><strong>Finalizando</strong></p>
<pre class="brush: bash;">
$ sudo couchdb -d
</pre>
<p>Bem, por hoje é só pessoal. Espero que tenha sido realmente útil e que vocês tenham gostado.</p>
<p>Ah! E se gostaram, please, me deem um pontinho lá no <a href="http://workingwithrails.com/recommendation/new/person/16274-leandro-silva" target="_blank">WWRails</a>. =p</p>
]]></content:encoded>
			<wfw:commentRss>http://leandrosilva.com.br/2009/08/02/5-minutos-de-couchdb-e-couchrest/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Web services RESTful em Java com Jersey</title>
		<link>http://leandrosilva.com.br/2009/01/30/web-services-restful-em-java-com-jersey/</link>
		<comments>http://leandrosilva.com.br/2009/01/30/web-services-restful-em-java-com-jersey/#comments</comments>
		<pubDate>Fri, 30 Jan 2009 17:54:14 +0000</pubDate>
		<dc:creator>Leandro Silva</dc:creator>
				<category><![CDATA[arquitetura]]></category>
		<category><![CDATA[dicas]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[rest]]></category>
		<category><![CDATA[web services]]></category>

		<guid isPermaLink="false">http://leandrosilva.com.br/?p=121</guid>
		<description><![CDATA[Estou estudando hoje a JSR 311 e sua implementação de referência, o projeto Jersey, por conta de um requisito arquitetural que surgiu em meu novo projeto aqui na CVC Turismo. Trata-se da integração de várias aplicações legadas, desenvolvidas com tecnologias completamente heterogêneas &#8211; Java, ASP e PL/SQL Web Toolkit. Estamos, eu e meus colegas da [...]]]></description>
			<content:encoded><![CDATA[<p>Estou estudando hoje a <a href="https://jsr311.dev.java.net/nonav/releases/1.0/index.html" target="_blank">JSR 311</a> e sua implementação de referência, o projeto <a href="https://jersey.dev.java.net/" target="_blank">Jersey</a>, por conta de um requisito arquitetural que surgiu em meu novo projeto aqui na <a href="http://www.cvc.com.br" target="_blank">CVC Turismo</a>. Trata-se da integração de várias aplicações legadas, desenvolvidas com tecnologias completamente heterogêneas &#8211; Java, ASP e PL/SQL Web Toolkit.</p>
<p>Estamos, eu e meus colegas da equipe de arquitetura, considerando bastante o uso de <a href="http://pt.wikipedia.org/wiki/REST" target="_blank">web services REST</a>. Por isso meu interesse pelo Jersey, uma vez que a plataforma base desse projeto é Java.</p>
<p>Para aqueles que se interessam pelo assunto, tempos atrás <span style="text-decoration: line-through;">gastei</span> investi um tempo lendo <a href="http://brunopereira.org/webservicesrest-indice/" target="_blank">o material</a> produzido pelo <a href="http://brunopereira.org/about/" target="_blank">Bruno Pereira</a>, o qual considero a melhor referência de REST em lingua portuguesa. (Jabá!!!)</p>
<p>Hoje resolvi ler também <a href="http://www.devmedia.com.br/articles/viewcomp.asp?comp=10216" target="_blank">um de seus artigos</a> produzidos para a revista Java Magazine &#8211; que IMHO não é lá uma ótima revista de Java, mas que volta e meia publica um ou dois artigos interessantes -, para refrescar a memória.</p>
<p>Taí! Para quem quer ter um primeiro contato com <a href="https://jersey.dev.java.net/" target="_blank">Jersey</a> e a <a href="https://jsr311.dev.java.net/nonav/releases/1.0/index.html" target="_blank">JSR 311</a>, ficam aqui as dicas.</p>
]]></content:encoded>
			<wfw:commentRss>http://leandrosilva.com.br/2009/01/30/web-services-restful-em-java-com-jersey/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
