<?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>Gonow Tecnologia &#187; Rails</title>
	<atom:link href="http://www.gonow.com.br/blog/category/rails/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.gonow.com.br</link>
	<description>Gonow</description>
	<lastBuildDate>Thu, 27 Dec 2012 21:11:47 +0000</lastBuildDate>
	<language>pt-BR</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>Evento! Rails Girls Belo Horizonte</title>
		<link>http://www.gonow.com.br/blog/2012/11/21/evento-rails-girls-belo-horizonte/</link>
		<comments>http://www.gonow.com.br/blog/2012/11/21/evento-rails-girls-belo-horizonte/#comments</comments>
		<pubDate>Wed, 21 Nov 2012 23:04:34 +0000</pubDate>
		<dc:creator>GonowTecnologia</dc:creator>
				<category><![CDATA[Empreededorismo]]></category>
		<category><![CDATA[Eventos]]></category>
		<category><![CDATA[Gonow]]></category>
		<category><![CDATA[Gonow Tecnologia]]></category>
		<category><![CDATA[Mercado de TI]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[Rails]]></category>
		<category><![CDATA[Social Media]]></category>
		<category><![CDATA[Tecnologia]]></category>
		<category><![CDATA[Blog Gonow Tecnologia TI]]></category>
		<category><![CDATA[Evento! Rails Girls Belo Horizonte]]></category>
		<category><![CDATA[Eventos de Tecnologia]]></category>

		<guid isPermaLink="false">http://www.gonow.com.br/?p=8870</guid>
		<description><![CDATA[Estamos felizes em anunciar que Belo Horizonte irá sediar a sexto edição do Rails Girls no Brasil! É um curso gratuito de dois dias, que irá lhe abrir as portas para o excitante mundo da programação web, com Ruby on Rails. Não necessário nenhum conhecimento prévio em T.I [...]]]></description>
				<content:encoded><![CDATA[<p style="text-align: center;"><img class="aligncenter size-full wp-image-8881" title="Evento! Rails Girls Belo Horizonte" src="http://www.gonow.com.br/wp-content/uploads/2012/12/Evento-Rails-Girls-Belo-Horizonte.png" alt="" width="415" height="64" /><img alt="" /></p>
<p style="text-align: center;">Estamos felizes em anunciar que Belo Horizonte irá sediar a sexto edição do Rails Girls no Brasil! É um curso gratuito de dois dias, que irá lhe abrir as portas para o excitante mundo da programação web, com Ruby on Rails. Não necessário nenhum conhecimento prévio em T.I.</p>
<p><strong><br />
Qual é o publico alvo?</strong> Mulheres de qualquer idade que tenham um conhecimentobásico em lidar com computadores. Já tivemos participantes de todas as idades. Por favor traga seu notebook.<br />
<strong>Homens podem participar?</strong> Sim, mas devem vir acompanhados de uma mulher que esteja interessada. Será dada prioridade as mulheres.</p>
<p><iframe src="http://player.vimeo.com/video/17752439" frameborder="0" width="640" height="329"></iframe></p>
<p>&nbsp;</p>
<p><span style="text-decoration: underline;"><strong>Dia 1: 14 de Dezembro</strong></span><br />
TBD</p>
<p><span style="text-decoration: underline;"><strong>Dia 2: 15 de Dezembro</strong></span><br />
Durante a manhã vamos instalar o Ruby on Rails no seu computador, se você teve algum problema antes. Faça a sua primeira aplicação web. Faremos exercícios e vamos por a mão na massa no código.</p>
<p>&nbsp;</p>
<p style="text-align: center;"><strong><br />
Anote em sua agenda</strong>: Evento! Rails Girls Natal <a href="http://railsgirls.com/natal" target="_blank"><span style="text-decoration: underline;"><strong>(inscrições aqui)</strong></span></a><br />
<strong>Quando:</strong> 14 e 15 de Dezembro<br />
<strong>Onde : TBD - </strong>Belo Horizonte, Brasil</p>
<p style="text-align: center;"><iframe src="https://maps.google.com/maps?saddr=Ac.+p%2F+Universidade+Federal+do+Rio+Grande+do+Norte&amp;daddr=-5.8413035,-35.1980533+to:Acesso+para+Universidade+Federal+do+Rio+Grande+do+Norte+-+Universidade+Federal+do+Rio+Grande+do+Norte,+Lagoa+Nova,+Natal+-+RN,+Brazil&amp;hl=en&amp;sll=-5.841778,-35.198087&amp;sspn=0.002802,0.005284&amp;geocode=FcbUpv8dqunm_Q%3BFWnepv8dm-vm_Sk5LpsGnv-yBzFBAefUslcEfQ%3BFRLepv8dy-fm_Sl34bX4nf-yBzFv-AtAFVrStA&amp;t=h&amp;mra=dpe&amp;mrsp=1&amp;sz=18&amp;via=1&amp;ie=UTF8&amp;z=15&amp;output=embed" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" width="425" height="350"></iframe><br />
<small><a style="color: #0000ff; text-align: left;" href="https://maps.google.com/maps?saddr=Ac.+p%2F+Universidade+Federal+do+Rio+Grande+do+Norte&amp;daddr=-5.8413035,-35.1980533+to:Acesso+para+Universidade+Federal+do+Rio+Grande+do+Norte+-+Universidade+Federal+do+Rio+Grande+do+Norte,+Lagoa+Nova,+Natal+-+RN,+Brazil&amp;hl=en&amp;sll=-5.841778,-35.198087&amp;sspn=0.002802,0.005284&amp;geocode=FcbUpv8dqunm_Q%3BFWnepv8dm-vm_Sk5LpsGnv-yBzFBAefUslcEfQ%3BFRLepv8dy-fm_Sl34bX4nf-yBzFv-AtAFVrStA&amp;t=h&amp;mra=dpe&amp;mrsp=1&amp;sz=18&amp;via=1&amp;ie=UTF8&amp;z=15&amp;source=embed" target="_blank">View Larger Map</a></small><br />
<strong><a href="https://www.facebook.com/GonowTecnologia" target="_blank"><span style="color: #ff0000;">Receba mais novidades acessando nossa página no facebook.</span></a></strong></p>
<div style="min-height:33px;" class="really_simple_share really_simple_share_button robots-nocontent snap_nopreview"><div class="really_simple_share_facebook_share" style="width:100px;"><a name="fb_share" rel="nofollow" href="https://www.facebook.com/sharer.php?u=www.gonow.com.br%2Fblog%2F2012%2F11%2F21%2Fevento-rails-girls-belo-horizonte%2F&amp;t=Evento%21%20Rails%20Girls%20Belo%20Horizonte" title="Share on Facebook" target="_blank">Share!</a></div></div>
		<div style="clear:both;"></div>]]></content:encoded>
			<wfw:commentRss>http://www.gonow.com.br/blog/2012/11/21/evento-rails-girls-belo-horizonte/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Evento! 8º Guru Sorocaba</title>
		<link>http://www.gonow.com.br/blog/2012/11/01/evento-8o-guru-sorocaba/</link>
		<comments>http://www.gonow.com.br/blog/2012/11/01/evento-8o-guru-sorocaba/#comments</comments>
		<pubDate>Thu, 01 Nov 2012 15:15:30 +0000</pubDate>
		<dc:creator>GonowTecnologia</dc:creator>
				<category><![CDATA[Eventos]]></category>
		<category><![CDATA[Gonow]]></category>
		<category><![CDATA[Gonow Tecnologia]]></category>
		<category><![CDATA[Rails]]></category>
		<category><![CDATA[Blog Gonow Tecnologia TI]]></category>
		<category><![CDATA[Evento! 8º Guru Sorocaba]]></category>
		<category><![CDATA[Eventos de Tecnologia]]></category>

		<guid isPermaLink="false">http://www.gonow.com.br/?p=8518</guid>
		<description><![CDATA[Programar é uma tarefa extremamente complexa. neste talk vou apresentar sobre desenvolvimento web sem sofrimento com ruby on rails. vamos ver um pouco sobre ruby, filosofia do rails, casos de sucesso, mercado de trabalho e como você pode ser mais produtivo e feliz [...]]]></description>
				<content:encoded><![CDATA[<p style="text-align: center;"><img class=" wp-image-8520 aligncenter" title="Evento! 8º Guru Sorocaba" src="http://www.gonow.com.br/wp-content/uploads/2012/11/Evento-8º-Guru-Sorocaba.png" alt="" width="520" height="57" /></p>
<p style="text-align: center;">Programar é uma tarefa extremamente complexa. neste talk vou apresentar sobre desenvolvimento web sem sofrimento com ruby on rails. vamos ver um pouco sobre ruby, filosofia do rails, casos de sucesso, mercado de trabalho e como você pode ser mais produtivo e feliz.</p>
<p style="text-align: center;">Quer aprender mais sobre ruby, ruby on rails e outras tecnologias?<br />
Venha participar do 8º Encontro do GURU Sorocaba!</p>
<p style="text-align: center;"><strong>UPDATE: Haverá sorteio de livros de Rails para quem estiver presente!</strong></p>
<p><iframe src="http://www.youtube.com/embed/82T-NzobWAg?rel=0" frameborder="0" width="640" height="360"></iframe></p>
<p><span style="text-decoration: underline;"><strong>Confira a programação:<br />
</strong></span></p>
<p><strong>1.Minha aplicação está pronta, e agora? /</strong>Ricardo Valeriano<br />
Desenvolvedor e Professor na Caelum.</p>
<p>Tópicos da palestra:<br />
- Quero testar meus scripts de deploy em minha máquina, o que fazer?<br />
- Que ferramentas podem ajudar a encontrar problemas de performance?<br />
- Conheça melhor aquela rake task que você nem lembrava que existia.<br />
- Como reaproveitar lógica entre diversas aplicações Rails?<br />
- Unicorn ou Thin? Nginx ou Apache?</p>
<p><strong>2.Arquitetura de Front-end em aplicações de larga escala /</strong>Eduardo Shiota Yasuda<br />
Front-end Engineer formado em Design Gráfico.</p>
<p>Para desenvolver um site institucional simples ou um hotsite pequeno, não é preciso muito mais que um pouco de HTML, um ou dois arquivos de CSS, alguns arquivos de JavaScript, e um sistema de CMS. No entanto, à medida que a complexidade de um site aumenta, o código passa a se tornar cada vez mais extenso, complexo, difícil de ser organizado, o projeto acaba virando um grande &#8220;spaghetti code&#8221;.<br />
<strong><br />
3.Rails fora dos trilhos /</strong>Rafael França<br />
Desenvolvedor de softwares e colaborador dos projetos Elixir, Ruby on Rails e SimpleForm.<br />
<strong><br />
</strong>Ruby on Rails é conhecido por dar aos desenvolvedores ferramentas para terem maior produtividade. Mas, como qualquer ferramenta, o seu mau uso pode trazer problemas no futuro, diminuindo a produtividade prometida, causando complicações no desenvolvimento do projeto e prejudicando a evolução do código. Nesta palestra vou mostrar alguns erros e más práticas, como monkey-patches desnecessários, views bagunçadas e classes complexas demais, e como podemos evitar que nosso código se torne algo complicado e desprazeroso de se trabalhar.<br />
<span style="text-decoration: underline;"><strong><br />
</strong></span></p>
<p style="text-align: center;"><strong> Anote em sua agenda</strong>: Evento! 8° Guru Sorocaba <a href="https://docs.google.com/spreadsheet/viewform?formkey=dDQyc1ktOHhMRk1DVVhYVm1NNDEzZXc6MQ#gid=0" target="_blank">(inscreva-se gratuitamente aqui)</a><br />
<strong>Quando: </strong>17 de Novembro<br />
<strong>Onde : </strong>CEUNSP Auditório Brasital &#8211; Campus V, Praça Antônio Vieira Tavares, 73  - Salto/SP</p>
<p style="text-align: center;"><iframe src="https://maps.google.com.br/maps?f=q&amp;source=s_q&amp;hl=pt-BR&amp;geocode=&amp;q=Ceunsp-+Campus+Bom+Pastor+-+Salto,+Salto+-+S%C3%A3o+Paulo&amp;aq=1&amp;oq=CEUNSP&amp;sll=-22.546052,-48.635514&amp;sspn=8.91199,16.907959&amp;ie=UTF8&amp;hq=Ceunsp-+Campus+Bom+Pastor+-+Salto,+Salto+-+S%C3%A3o+Paulo&amp;t=m&amp;cid=18329694370661570443&amp;hnear=&amp;ll=-23.206424,-47.297881&amp;spn=0.009466,0.013733&amp;z=16&amp;iwloc=A&amp;output=embed" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" width="640" height="480"></iframe><br />
<small><a style="color: #0000ff; text-align: left;" href="https://maps.google.com.br/maps?f=q&amp;source=embed&amp;hl=pt-BR&amp;geocode=&amp;q=Ceunsp-+Campus+Bom+Pastor+-+Salto,+Salto+-+S%C3%A3o+Paulo&amp;aq=1&amp;oq=CEUNSP&amp;sll=-22.546052,-48.635514&amp;sspn=8.91199,16.907959&amp;ie=UTF8&amp;hq=Ceunsp-+Campus+Bom+Pastor+-+Salto,+Salto+-+S%C3%A3o+Paulo&amp;t=m&amp;cid=18329694370661570443&amp;hnear=&amp;ll=-23.206424,-47.297881&amp;spn=0.009466,0.013733&amp;z=16&amp;iwloc=A" target="_blank">Exibir mapa ampliado<br />
</a></small><br />
<strong><a href="https://www.facebook.com/GonowTecnologia" target="_blank"><span style="color: #ff0000;">Receba mais novidades acessando nossa página no facebook.</span></a></strong></p>
<div style="min-height:33px;" class="really_simple_share really_simple_share_button robots-nocontent snap_nopreview"><div class="really_simple_share_facebook_share" style="width:100px;"><a name="fb_share" rel="nofollow" href="https://www.facebook.com/sharer.php?u=www.gonow.com.br%2Fblog%2F2012%2F11%2F01%2Fevento-8o-guru-sorocaba%2F&amp;t=Evento%21%208%C2%BA%20Guru%20Sorocaba" title="Share on Facebook" target="_blank">Share!</a></div></div>
		<div style="clear:both;"></div>]]></content:encoded>
			<wfw:commentRss>http://www.gonow.com.br/blog/2012/11/01/evento-8o-guru-sorocaba/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Evento! DevDay 2012</title>
		<link>http://www.gonow.com.br/blog/2012/09/08/evento-devday-2012-2/</link>
		<comments>http://www.gonow.com.br/blog/2012/09/08/evento-devday-2012-2/#comments</comments>
		<pubDate>Sat, 08 Sep 2012 23:09:53 +0000</pubDate>
		<dc:creator>GonowTecnologia</dc:creator>
				<category><![CDATA[Empreededorismo]]></category>
		<category><![CDATA[Eventos]]></category>
		<category><![CDATA[Gonow]]></category>
		<category><![CDATA[Gonow Tecnologia]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[JQuery]]></category>
		<category><![CDATA[MongoDB]]></category>
		<category><![CDATA[NodeJS]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Rails]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Blog Gonow Tecnologia TI]]></category>
		<category><![CDATA[Evento! DevDay 2012]]></category>
		<category><![CDATA[Eventos de Tecnologia]]></category>

		<guid isPermaLink="false">http://www.gonow.com.br/?p=8229</guid>
		<description><![CDATA[Focado no desenvolvimento de software, o DevDay é o maior evento de desenvolvimento de Belo Horizonte, onde todos falam a mesma língua. Com palestras abordando temas como [...]]]></description>
				<content:encoded><![CDATA[<p style="text-align: center;"><img class="size-full wp-image-7811 aligncenter" title="Evento! DevDay 2012" src="http://www.gonow.com.br/wp-content/uploads/2012/08/Evento-DevDay-2012.png" alt="" width="384" height="105" /></p>
<p>Focado no desenvolvimento de software, o DevDay é o maior evento de desenvolvimento de Belo Horizonte, onde todos falam a mesma língua.</p>
<p>Confira as palestras aprovadas:</p>
<p><span style="text-decoration: underline;"><strong>Keynotes:</strong></span><br />
- Star Wars: Como o maior filme de ficção de todos tempos nos inspira a fazer projetos vencedores! / Alcebíades Araújo<br />
- O Programador Lean / Rodrigo Yoshima</p>
<p><span style="text-decoration: underline;"><strong>Lightning Talks:</strong></span><br />
- Influência da qualidade do código no ROI / Glauber Assunção<br />
- Meteorjs / Paulo Roberto Macedo Chaves<br />
- MongoDB no mundo real / Jean Carlo Nascimento<br />
- Os 10 mandamentos do fracasso! / Giulia Sousa<br />
- Programação funcional com C# / Elemar Júnior<br />
- Regras flexíveis e agilidade para o negócio com a implantação de BRMS / Alessandro Kieras<br />
- CanJS &#8211; Como desenvolver aplicações Web ricas de forma rápida e fácil / Pablo Aguiar<br />
- Como funciona o projeto WebKit? / Gustavo Noronha (kov)</p>
<p><span style="text-decoration: underline;"><strong>Palestras:</strong></span><br />
- Coffeescript no mundo real / Daniel Lopes<br />
- Desenvolvimento x Diversidade de dispositivos Android: Boas Práticas / Matthaus M. Schall L. Vizuete<br />
- Enterprise Integration Patterns / Elemar Júnior<br />
- Introdução ao Scala / Juliano Alves<br />
- Java Kinect / Breno Santos Araújo<br />
- Motivação, você está fazendo isso certo? / Giulia Sousa<br />
- O elo perdido: Sincronizando webapps HTML5 com o servidor / Jean Carlo Nascimento<br />
- Python: iteradores, geradores, etc. / Luciano Ramalho<br />
- Quando utilizar o crowdsourcing para testar meu software? / Robert Pereira Pinto<br />
- Por que é importante para um programador .NET saber Java muito bem? / Juan Lopes<br />
- Saindo do brownfield com refactoring / Emmanuel Brandão<br />
- Teste seu javascript se não quiser uma macarronada para o jantar / Dyego Costa<br />
- Universos paralelos / Vinicius Quaiato<br />
- Visão comparativa de frameworks Web: Java, Ruby e C# / Roberto Vasconcelos Novaes</p>
<p><strong>Anote em sua agenda</strong>: DevDay 2012<br />
<strong>Quando: </strong>20 de Outubro<br />
<strong>Onde : </strong>UNA Campus Aimorés<strong> - </strong>Rua Aimorés 1451, Bairro Lourdes &#8211; Belo Horizonte / MG<br />
<strong><strong><iframe width="640" height="480" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="https://maps.google.com.br/maps?f=q&amp;source=s_q&amp;hl=pt-BR&amp;geocode=&amp;q=UNA++Rua+Aimor%C3%A9s+1451,+Bairro+Lourdes+-+Belo+Horizonte+%2F+MG&amp;aq=&amp;sll=-19.928551,-43.937759&amp;sspn=0.007081,0.005729&amp;ie=UTF8&amp;hq=UNA++Rua+Aimor%C3%A9s+1451,+Bairro+Lourdes+-+Belo+Horizonte+%2F+MG&amp;t=m&amp;ll=-19.928531,-43.937759&amp;spn=0.019366,0.027466&amp;z=15&amp;iwloc=A&amp;output=embed"></iframe><br /><small><a href="https://maps.google.com.br/maps?f=q&amp;source=embed&amp;hl=pt-BR&amp;geocode=&amp;q=UNA++Rua+Aimor%C3%A9s+1451,+Bairro+Lourdes+-+Belo+Horizonte+%2F+MG&amp;aq=&amp;sll=-19.928551,-43.937759&amp;sspn=0.007081,0.005729&amp;ie=UTF8&amp;hq=UNA++Rua+Aimor%C3%A9s+1451,+Bairro+Lourdes+-+Belo+Horizonte+%2F+MG&amp;t=m&amp;ll=-19.928531,-43.937759&amp;spn=0.019366,0.027466&amp;z=15&amp;iwloc=A" text-align:left" target="_blank">Exibir mapa ampliado</a></small><br />
Inscrições via: </strong></strong><a href="http://devday.devisland.com/Inscricoes" target="_blank">DevDay</a></p>
<p><a href="https://www.facebook.com/GonowTecnologia" target="_blank"><span style="color: #ff0000;"> Receba mais novidades acessando nossa página no facebook.</span></a></p>
<div style="min-height:33px;" class="really_simple_share really_simple_share_button robots-nocontent snap_nopreview"><div class="really_simple_share_facebook_share" style="width:100px;"><a name="fb_share" rel="nofollow" href="https://www.facebook.com/sharer.php?u=www.gonow.com.br%2Fblog%2F2012%2F09%2F08%2Fevento-devday-2012-2%2F&amp;t=Evento%21%20DevDay%202012" title="Share on Facebook" target="_blank">Share!</a></div></div>
		<div style="clear:both;"></div>]]></content:encoded>
			<wfw:commentRss>http://www.gonow.com.br/blog/2012/09/08/evento-devday-2012-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Evento! Semcomp 15</title>
		<link>http://www.gonow.com.br/blog/2012/09/03/evento-semcomp-15/</link>
		<comments>http://www.gonow.com.br/blog/2012/09/03/evento-semcomp-15/#comments</comments>
		<pubDate>Mon, 03 Sep 2012 15:34:49 +0000</pubDate>
		<dc:creator>GonowTecnologia</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Arduino]]></category>
		<category><![CDATA[Brasil]]></category>
		<category><![CDATA[Empreededorismo]]></category>
		<category><![CDATA[Eventos]]></category>
		<category><![CDATA[Gestão de Projetos]]></category>
		<category><![CDATA[Gonow]]></category>
		<category><![CDATA[Gonow Tecnologia]]></category>
		<category><![CDATA[Hackathon]]></category>
		<category><![CDATA[Inovação]]></category>
		<category><![CDATA[Mercado de TI]]></category>
		<category><![CDATA[Mercado Financeiro]]></category>
		<category><![CDATA[Rails]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Social Media]]></category>
		<category><![CDATA[Universidade]]></category>
		<category><![CDATA[Blog Gonow Tecnologia TI]]></category>
		<category><![CDATA[Evento! Semcomp 15]]></category>
		<category><![CDATA[Eventos de Tecnologia TI]]></category>

		<guid isPermaLink="false">http://www.gonow.com.br/?p=8168</guid>
		<description><![CDATA[A Semana da Computação da USP São Carlos é um evento anual cujo principal objetivo é complementar a formação profissional e acadêmica dos alunos da USP e também de outras Universidades da região e conta com a participação direta de [...]]]></description>
				<content:encoded><![CDATA[<p style="text-align: center;"><img class=" wp-image-8169 aligncenter" title="Evento! Semcomp 15" src="http://www.gonow.com.br/wp-content/uploads/2012/09/Evento-Semcomp-15.jpg" alt="" width="451" height="55" /></p>
<p>A Semana da Computação da USP São Carlos é um evento anual cujo principal objetivo é complementar a formação profissional e acadêmica dos alunos da USP e também de outras Universidades da região e conta com a participação direta de pelo menos 600 alunos.</p>
<p>O evento tem o objetivo de passar informações e visões aos participantes das áreas que não temos chance de ver na graduação. Os minicursos e palestras são escolhidos após uma vasta pesquisa, baseada em critérios como futuro da tecnologia, aceitação por parte de desenvolvedores e mercado, assim como expectativas dos participantes. Desta forma, após análise, as atividades do evento são escolhidas garantindo que o objetivo será alcançado.</p>
<p><span style="text-decoration: underline;"><strong>Confira a programação:</strong></span></p>
<p><span style="color: #ff0000;">24 de Setembro</span><br />
<strong>08h00</strong> &#8211; Credenciamento<br />
<strong>09h15</strong> &#8211; Café da Manhã e Abertura<br />
<strong>10h30</strong> &#8211; Identificando Oportunidades<br />
<strong>12h30</strong> &#8211; Futebol de Robôs<br />
<strong>13h30</strong> &#8211; Avanços e Aplicações da Inteligência Artificial no Mercado de Trabalho<br />
<strong>15h00</strong> &#8211; Coffee-Break<br />
<strong>15h30</strong> &#8211; AMD: APU Trinity<br />
<strong>16h30</strong> &#8211; SEBRAE: Como divulgar sua empresa<br />
<strong>17h15</strong> &#8211; Direito Digital<br />
<strong>20h30</strong> &#8211; Tecnologias LCD e Touchscreen</p>
<p><span style="color: #ff0000;">25 de Setembro</span><br />
<strong>Minicursos:</strong><br />
- Unity 3D<br />
- J2ME e WebApps<br />
- Kinect: Aplicações Práticas<br />
- OpenGL + GLSL<br />
- Kernel Linux<br />
- Bancos de Dados Geográficos<br />
- .NET<br />
- Testes de Performance em Ambientes de Alta Complexidade<br />
- TDD: Uma Visão Prática<br />
- Psicologia nos Jogos &#8211; O jogo da vida<br />
- SEBRAE: Desenvolvendo Talentos Empreendedores</p>
<p><strong>Coffe-Breaks</strong> (às 10h00 e 16h00)<br />
<strong>Sarau</strong> (às 12h00)<br />
<strong>Aprenda a comparar antes de investir</strong> (às 19h30)</p>
<p><span style="color: #ff0000;">26 de Setembro</span><br />
<strong>Feira de Profissões</strong> (às 12h00)</p>
<p><strong>08h30</strong> &#8211; Redes Sociais e Profissionais na Promoção da Carreira<br />
<strong>10h00</strong> &#8211; Axoon<br />
<strong>10h40</strong> &#8211; Neolog<br />
<strong>11h20</strong> &#8211; VoxAge<br />
<strong>13h00</strong> &#8211; Advus<br />
<strong>13h40</strong> &#8211; PrimeUP<br />
<strong>14h20</strong> &#8211; CPqD<br />
<strong>15h00</strong> &#8211; Ci&amp;T<br />
<strong>16h00</strong> &#8211; Everis<br />
<strong>16h40</strong> &#8211; Ícaro<br />
<strong>17h20</strong> &#8211; UOL<br />
<strong>18h00</strong> &#8211; Daitan Group</p>
<p><strong>Concurso</strong>: Clickstream (às 19h30)</p>
<p><span style="color: #ff0000;">27 de Setembro</span><br />
<strong>Minicursos:</strong><br />
- Introdução ao Game Design<br />
- nVidia CUDA<br />
- Ruby on Rails<br />
- Objective-C<br />
- Mobile Sites<br />
- Python<br />
- Redes e Segurança<br />
- Responsive Web Design<br />
- Redes Complexas</p>
<p><strong>Coffe-Breaks</strong> (às 10h00 e 16h00)<br />
<strong>Computação Forense</strong> (às 20h00)</p>
<p><span style="color: #ff0000;">28 de Setembro</span><br />
<strong>08h30</strong> &#8211; As 10 falhas fatais de um empregado<br />
<strong>10h00</strong> &#8211; Coffe-Break<br />
<strong>10h30</strong> &#8211; Preparing for the TOEFL IBT (The Four)<br />
<strong>11h00</strong> &#8211; Workshop de Iniciação Científica: Como ser um inovador<br />
<strong>13h00</strong> &#8211; Android, Aplicativos Móveis<br />
<strong>13h30</strong> &#8211; Ágil na Real<br />
<strong>14h30</strong> &#8211; Blue Pill x Red Pill<br />
<strong>15h00</strong> &#8211; Application Compatibility<br />
<strong>16h00</strong> &#8211; Coffe-Break<br />
<strong>16h30</strong> &#8211; Painel de ex-alunos<br />
<strong>20h00</strong> &#8211; Encerramento</p>
<p><strong>Anote em sua agenda</strong>: 15° Semcomp<br />
<strong>Onde: </strong>R. Dr. Carlos de Camargo Salles, São Carlos &#8211; Instituto de Física de São Carlos<strong><br />
</strong><iframe src="https://maps.google.com/maps?f=q&amp;source=s_q&amp;hl=en&amp;geocode=&amp;q=R.+Dr.+Carlos+de+Camargo+Salles,+S%C3%A3o+Carlos+-+S%C3%A3o+Paulo,+Brasil&amp;aq=0&amp;oq=R.+Dr.+Carlos+de+Camargo+Salles&amp;sll=-22.007738,-47.895215&amp;sspn=0.016492,0.011973&amp;dirflg=w&amp;ie=UTF8&amp;hq=&amp;hnear=R.+Dr.+Carlos+de+Camargo+Salles+-+S%C3%A3o+Carlos+-+S%C3%A3o+Paulo,+13560-550,+Brazil&amp;ll=-22.006602,-47.894533&amp;spn=0.016492,0.011973&amp;t=m&amp;z=14&amp;output=embed" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" width="425" height="350"></iframe><br />
<small><a href="https://maps.google.com/maps?f=q&amp;source=embed&amp;hl=en&amp;geocode=&amp;q=R.+Dr.+Carlos+de+Camargo+Salles,+S%C3%A3o+Carlos+-+S%C3%A3o+Paulo,+Brasil&amp;aq=0&amp;oq=R.+Dr.+Carlos+de+Camargo+Salles&amp;sll=-22.007738,-47.895215&amp;sspn=0.016492,0.011973&amp;dirflg=w&amp;ie=UTF8&amp;hq=&amp;hnear=R.+Dr.+Carlos+de+Camargo+Salles+-+S%C3%A3o+Carlos+-+S%C3%A3o+Paulo,+13560-550,+Brazil&amp;ll=-22.006602,-47.894533&amp;spn=0.016492,0.011973&amp;t=m&amp;z=14" target="_blank">View Larger Map</a></small><br />
<strong><br />
Quando:</strong> 24 à 28 de Setembro<br />
<a href="https://www.facebook.com/GonowTecnologia" target="_blank"><span style="color: #ff0000;"> Receba mais novidades acessando nossa página no facebook.</span></a></p>
<div style="min-height:33px;" class="really_simple_share really_simple_share_button robots-nocontent snap_nopreview"><div class="really_simple_share_facebook_share" style="width:100px;"><a name="fb_share" rel="nofollow" href="https://www.facebook.com/sharer.php?u=www.gonow.com.br%2Fblog%2F2012%2F09%2F03%2Fevento-semcomp-15%2F&amp;t=Evento%21%20Semcomp%2015" title="Share on Facebook" target="_blank">Share!</a></div></div>
		<div style="clear:both;"></div>]]></content:encoded>
			<wfw:commentRss>http://www.gonow.com.br/blog/2012/09/03/evento-semcomp-15/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Evento! Rails Girls São Paulo</title>
		<link>http://www.gonow.com.br/blog/2012/08/28/evento-rails-girls-sao-paulo/</link>
		<comments>http://www.gonow.com.br/blog/2012/08/28/evento-rails-girls-sao-paulo/#comments</comments>
		<pubDate>Tue, 28 Aug 2012 16:52:31 +0000</pubDate>
		<dc:creator>GonowTecnologia</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Eventos]]></category>
		<category><![CDATA[Gonow]]></category>
		<category><![CDATA[Gonow Tecnologia]]></category>
		<category><![CDATA[Rails]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Blog Gonow Tecnologia TI]]></category>
		<category><![CDATA[Evento! Rails Girls São Paulo]]></category>
		<category><![CDATA[Eventos de Tecnologia]]></category>

		<guid isPermaLink="false">http://www.gonow.com.br/?p=8114</guid>
		<description><![CDATA[stamos felizes em anunciar que São Paulo irá sediar a segunda edição do Rails Girls no Brasil! É um curso gratuito de dois dias, que irá lhe abrir as portas para o excitante mundo da programação web, com Ruby on Rails. Não necessário nenhum conhecimento prévio em T.I. O evento será realizado no auditorio da [...]]]></description>
				<content:encoded><![CDATA[<p style="text-align: center;"><img class="aligncenter  wp-image-8118" title="Evento! Rails Girls São Paulo" src="http://www.gonow.com.br/wp-content/uploads/2012/09/Evento-Rails-Girls-São-Paulo.png" alt="" width="580" height="115" /><br />
Estamos felizes em anunciar que São Paulo irá sediar a segunda edição do Rails Girls no Brasil! É um curso gratuito de dois dias, que irá lhe abrir as portas para o excitante mundo da programação web, com Ruby on Rails. Não necessário nenhum conhecimento prévio em T.I. O evento será realizado no auditorio da Locaweb.</p>
<p><strong><br />
Qual é o publico alvo?</strong> Mulheres de qualquer idade que tenham um conhecimentobásico em lidar com computadores. Já tivemos participantes de todas as idades. Por favor traga seu notebook.<br />
<strong>Homens podem participar?</strong> Sim, mas devem vir acompanhados de uma mulher que esteja interessada. Será dada prioridade as mulheres.</p>
<p><iframe src="http://player.vimeo.com/video/17752439" frameborder="0" width="640" height="329"></iframe></p>
<p>&nbsp;</p>
<p><strong><span style="text-decoration: underline;">Day 1: 07th September</span></strong><br />
<strong>19h00</strong>: Installation party<br />
<strong>20h00</strong>: Who run the world? &#8211; Luisa Bernardes</p>
<p><span style="text-decoration: underline;"><strong>Day 2: 08th September</strong></span><br />
<strong>09h00</strong>: Registration, coffee &amp; workshop includes learning the first steps into software craftmanship in small teams.<br />
<strong>10h00</strong>: Welcome &#8211; Outline of the day and word from organizers<br />
<strong>10h20</strong>: Introduction to Machine Learning &#8211; Guilherme Silveira<br />
<strong>10h40:</strong> Introduction to Programming &#8211; Klaus Wuestefeld<br />
<strong>11h00:</strong> Workshop<br />
<strong>13h00:</strong> Lunch<br />
<strong>14h00:</strong> Workshop, extend your application.<br />
<strong>17h30:</strong> A tecnologia também pode ser bonita &#8211; Alda Cristina Rocha<br />
<strong>17h50:</strong> Working in IT &#8211; Andrea Pinto<br />
<strong>21h00:</strong> Afterparty! All friends and who wants to join can meet us after the workshop.<br />
<strong><br />
Anote em sua agenda</strong>: Rails Girls São Paulo<br />
<strong>Onde:</strong> Locaweb &#8211; R. Itapaiúna, 2434 &#8211; Vila Andrade, São Paulo<br />
<strong>Afterparty:</strong> Bar do Benedito - Dr. Fonseca Brasil, 289 &#8211; Morumbi, São Paulo<br />
<strong>Incrições em:</strong><br />
<strong>Quando:</strong> 5, 6 e 7 de Setembro</p>
<p><a href="https://www.facebook.com/GonowTecnologia" target="_blank"><span style="color: #ff0000;"> Receba mais novidades acessando nossa página no facebook.</span></a></p>
<div style="min-height:33px;" class="really_simple_share really_simple_share_button robots-nocontent snap_nopreview"><div class="really_simple_share_facebook_share" style="width:100px;"><a name="fb_share" rel="nofollow" href="https://www.facebook.com/sharer.php?u=www.gonow.com.br%2Fblog%2F2012%2F08%2F28%2Fevento-rails-girls-sao-paulo%2F&amp;t=Evento%21%20Rails%20Girls%20S%C3%A3o%20Paulo" title="Share on Facebook" target="_blank">Share!</a></div></div>
		<div style="clear:both;"></div>]]></content:encoded>
			<wfw:commentRss>http://www.gonow.com.br/blog/2012/08/28/evento-rails-girls-sao-paulo/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Evento! Workshop de Ruby on Rails (Hands-On)</title>
		<link>http://www.gonow.com.br/blog/2012/07/23/evento-workshop-de-ruby-on-rails-hands-on/</link>
		<comments>http://www.gonow.com.br/blog/2012/07/23/evento-workshop-de-ruby-on-rails-hands-on/#comments</comments>
		<pubDate>Mon, 23 Jul 2012 14:48:35 +0000</pubDate>
		<dc:creator>GonowTecnologia</dc:creator>
				<category><![CDATA[Eventos]]></category>
		<category><![CDATA[Gonow]]></category>
		<category><![CDATA[Gonow Tecnologia]]></category>
		<category><![CDATA[Rails]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Blog Gonow Tecnologia]]></category>
		<category><![CDATA[Evento! Workshop de Ruby on Rails (Hands-On)]]></category>

		<guid isPermaLink="false">http://www.gonow.com.br/?p=7766</guid>
		<description><![CDATA[Workshop realizado na SmartMob Coworking e ministrado por Lucas Martins que trabalha com desenvolvimento de softwares há mais de 6 anos sendo especialista em arquitetura de software [...]]]></description>
				<content:encoded><![CDATA[<p style="text-align: center;"><img class="size-full wp-image-7769 aligncenter" title="Evento! Workshop de Ruby on Rails (Hands-On)" src="http://www.gonow.com.br/wp-content/uploads/2012/08/Evento-Workshop-de-Ruby-on-Rails-Hands-On1.jpg" alt="" width="355" height="97" /><br />
Workshop realizado na SmartMob Coworking e ministrado por Lucas Martins que trabalha com desenvolvimento de softwares há mais de 6 anos sendo especialista em arquitetura de software e aplicações móveis, mostrará do zero, como, e o que é esta linguagem tão observada nos últimos tempos.</p>
<p><iframe src="http://www.youtube.com/embed/e1PE5l1cMVc" frameborder="0" width="640" height="480"></iframe></p>
<p><strong>Programação:<br />
</strong></p>
<p>1.0 – Prólogo – Instalação e configuração do ambiente<br />
1.1 – O que é Ruby<br />
1.2 – O que é MVC<br />
1.3 – Começando com Rails<br />
2.0 – “Welcome Aboard”<br />
2.1 – Controllers<br />
2.2 – Views<br />
3.0 – Primeiro CRUD<br />
3.1 – Customizando o CRUD<br />
3.2 – Associações<br />
3.3 – Menu de Navegação<br />
4.0 – Testando…<br />
4.1 – Deploy<br />
4.2 – RubyGems<br />
5.0 – Q&amp;A</p>
<p><strong>Pré-requisitos:</strong></p>
<p>Saber lidar (ou querer aprender) com a linha de comando;<br />
Notebook para poder acompanhar o exercício;<br />
Já ter utilizado alguma linguagem de programação;<br />
Entendimento do conceito de Orientação a Objetos;</p>
<p><strong>Importante:</strong></p>
<p>O exercício será executado em uma maquina virtual disponibilizada pelo instrutor no inicio do curso. É recomendado que o computador do aluno tenha pelo menos 1GB de memória sobressalente para execução do VirtualBox.</p>
<p>É recomendado que alunos com sistema operacional Linux façam a instalação do VirtualBox antes do curso, pois no caso de haver uma falta de internet, o aluno pode ficar sem poder acompanhar o exercício (o Linux pode precisar da internet para baixar pacotes de dependências).</p>
<p>Os instaladores para Windows e Mac OSX serão fornecidos na início da aula.</p>
<p>Os downloads para Linux estão no seguinte endereço: https://www.virtualbox.org/wiki/Linux_Downloads</p>
<p><strong> Anote em sua agenda</strong>: Workshop de Ruby on Rails<br />
<strong>Quando: </strong>31 de Julho (dàs 18h30 às 22h30)<br />
<strong>Onde : </strong>SmartMob Coworking &#8211; Rua Nunes Machado, 93, 1° Andar, Centro, Florianópolis<br />
<strong><strong>Inscrições: </strong></strong><a href="https://docs.google.com/spreadsheet/embeddedform?formkey=dGx0NmNwSnlNZW5ISzFYVThtZ2xtZEE6MA" target="_blank">faça aqui</a><br />
<a href="https://www.facebook.com/GonowTecnologia" target="_blank"><span style="color: #ff0000;"><br />
Receba mais novidades acessando nossa página no facebook.</span></a></p>
<div style="min-height:33px;" class="really_simple_share really_simple_share_button robots-nocontent snap_nopreview"><div class="really_simple_share_facebook_share" style="width:100px;"><a name="fb_share" rel="nofollow" href="https://www.facebook.com/sharer.php?u=www.gonow.com.br%2Fblog%2F2012%2F07%2F23%2Fevento-workshop-de-ruby-on-rails-hands-on%2F&amp;t=Evento%21%20Workshop%20de%20Ruby%20on%20Rails%20%28Hands-On%29" title="Share on Facebook" target="_blank">Share!</a></div></div>
		<div style="clear:both;"></div>]]></content:encoded>
			<wfw:commentRss>http://www.gonow.com.br/blog/2012/07/23/evento-workshop-de-ruby-on-rails-hands-on/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Evento! RubyConf 2012 (com 20% de desconto)</title>
		<link>http://www.gonow.com.br/blog/2012/07/12/evento-rubyconf-2012-com-20-de-desconto/</link>
		<comments>http://www.gonow.com.br/blog/2012/07/12/evento-rubyconf-2012-com-20-de-desconto/#comments</comments>
		<pubDate>Thu, 12 Jul 2012 18:22:03 +0000</pubDate>
		<dc:creator>GonowTecnologia</dc:creator>
				<category><![CDATA[Eventos]]></category>
		<category><![CDATA[Gonow]]></category>
		<category><![CDATA[Rails]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Blog Gonow Tecnologia]]></category>
		<category><![CDATA[Evento! RubyConf 2012 (com 20% de desconto)]]></category>

		<guid isPermaLink="false">http://www.gonow.com.br/?p=7567</guid>
		<description><![CDATA[O evento mais aguardado pela comunidade ruby em sua 3ª edição em São Paulo, RubyConf 2012 [...]]]></description>
				<content:encoded><![CDATA[<p style="text-align: center;"><img class="size-full wp-image-7620 aligncenter" title="Evento! RubyConf 2012 (com 20 de desconto) I" src="http://www.gonow.com.br/wp-content/uploads/2012/07/Evento-RubyConf-2012-com-20-de-desconto-I.png" alt="" width="408" height="115" /><br />
O evento mais aguardado pela comunidade ruby em sua 3ª edição em São Paulo, RubyConf 2012,<br />
confira a programação:</p>
<p style="text-align: center;"> <img class="size-full wp-image-7618 aligncenter" title="Evento! RubyConf 2012 (com 20 de desconto)" src="http://www.gonow.com.br/wp-content/uploads/2012/07/Evento-RubyConf-2012-com-20-de-desconto.png" alt="" width="552" height="1232" /></p>
<p>Anote em sua agenda: RubyConf 2012<br />
<strong>Quando: </strong>30 e 31 de Agosto<br />
<strong>Onde: </strong>Centro de Convenções Frei Caneca &#8211; São Paulo<br />
<strong>Inscrições: </strong>R$150 (com 20% de desconto <strong><a href="https://www.facebook.com/locaweb/app_206803572685797" target="_blank">aqui</a> - </strong>até 31 de Julho)<a href="http://inscricoes.ndesign.org.br/login/#" target="_blank"><br />
</a></p>
<p><a href="https://www.facebook.com/GonowTecnologia" target="_blank"><span style="color: #ff0000;">Receba mais novidades acessando nossa página no facebook.</span></a></p>
<div style="min-height:33px;" class="really_simple_share really_simple_share_button robots-nocontent snap_nopreview"><div class="really_simple_share_facebook_share" style="width:100px;"><a name="fb_share" rel="nofollow" href="https://www.facebook.com/sharer.php?u=www.gonow.com.br%2Fblog%2F2012%2F07%2F12%2Fevento-rubyconf-2012-com-20-de-desconto%2F&amp;t=Evento%21%20RubyConf%202012%20%28com%2020%25%20de%20desconto%29" title="Share on Facebook" target="_blank">Share!</a></div></div>
		<div style="clear:both;"></div>]]></content:encoded>
			<wfw:commentRss>http://www.gonow.com.br/blog/2012/07/12/evento-rubyconf-2012-com-20-de-desconto/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Evento! TDC2012 &#8211; The Developer&#8217;s Conference</title>
		<link>http://www.gonow.com.br/blog/2012/06/26/evento-tdc2012-the-developers-conference/</link>
		<comments>http://www.gonow.com.br/blog/2012/06/26/evento-tdc2012-the-developers-conference/#comments</comments>
		<pubDate>Tue, 26 Jun 2012 16:01:46 +0000</pubDate>
		<dc:creator>GonowTecnologia</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Arduino]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[Eventos]]></category>
		<category><![CDATA[Gonow]]></category>
		<category><![CDATA[Gonow Tecnologia]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Mercado de TI]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[Rails]]></category>
		<category><![CDATA[Tecnologia]]></category>
		<category><![CDATA[Evento! TDC2012 - The Developer's Conference]]></category>
		<category><![CDATA[gonow tecnologia]]></category>

		<guid isPermaLink="false">http://www.gonow.com.br/?p=7236</guid>
		<description><![CDATA[Pela 3° vez em São Paulo, entre os dias 4 a 8 de Julho de 2012, acontecerá o TDC (The Developers Conference), evento que se destaca pela diversidade de assuntos, com mais de 240 palestras em 30 trilhas, e organizadas por diferentes comunidades de usuários atuantes em tecnologia e desenvolvimento de software. [...]]]></description>
				<content:encoded><![CDATA[<p style="text-align: center;"><img class="aligncenter size-full wp-image-7237" title="Evento! TDC2012 - The Developer's Conference I" src="http://www.gonow.com.br/wp-content/uploads/2012/06/Evento-TDC2012-The-Developers-Conference-I.jpg" alt="" width="490" height="56" /></p>
<p style="text-align: center;">Pela 3° vez em São Paulo, entre os dias 4 a 8 de Julho de 2012, acontecerá o TDC (The Developers Conference), evento que se destaca pela diversidade de assuntos, com mais de 240 palestras em 30 trilhas, e organizadas por diferentes comunidades de usuários atuantes em tecnologia e desenvolvimento de software.</p>
<p>Confira as trilhas:</p>
<p><img class="aligncenter size-full wp-image-7238" title="Evento! TDC2012 - The Developer's Conference " src="http://www.gonow.com.br/wp-content/uploads/2012/06/Evento-TDC2012-The-Developers-Conference-II.png" alt="" width="658" height="194" /></p>
<p><strong><br />
Anote em sua agenda:</strong><br />
The Developer&#8217;s Conference 2012<br />
<strong>Data: </strong>de 04 (quarta) à 08 (domingo) de Julho<br />
<strong>Inscrições </strong><a href="http://www.thedevelopersconference.com.br/tdc/2012/inscricoes#saopaulo" target="_blank">Aqui</a> (com descontos para universitários)<strong><br />
Local: </strong>Universidade Anhembi Morumbi – Rua Casa do Ator, 275 &#8211; São Paulo</p>
<p><span><a style="color: #ff0000;" href="https://www.facebook.com/GonowTecnologia" target="_blank">Receba mais novidades acessando nossa página no facebook.</a></span></p>
<div style="min-height:33px;" class="really_simple_share really_simple_share_button robots-nocontent snap_nopreview"><div class="really_simple_share_facebook_share" style="width:100px;"><a name="fb_share" rel="nofollow" href="https://www.facebook.com/sharer.php?u=www.gonow.com.br%2Fblog%2F2012%2F06%2F26%2Fevento-tdc2012-the-developers-conference%2F&amp;t=Evento%21%20TDC2012%20%26%238211%3B%20The%20Developer%26%238217%3Bs%20Conference" title="Share on Facebook" target="_blank">Share!</a></div></div>
		<div style="clear:both;"></div>]]></content:encoded>
			<wfw:commentRss>http://www.gonow.com.br/blog/2012/06/26/evento-tdc2012-the-developers-conference/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Devise e SimpleForm: soluções open source em Rails que podem fazer diferença no seu projeto</title>
		<link>http://www.gonow.com.br/blog/2011/11/18/devise-e-simpleform-solucoes-open-source-em-rails-que-podem-fazer-diferenca-no-seu-projeto/</link>
		<comments>http://www.gonow.com.br/blog/2011/11/18/devise-e-simpleform-solucoes-open-source-em-rails-que-podem-fazer-diferenca-no-seu-projeto/#comments</comments>
		<pubDate>Fri, 18 Nov 2011 20:42:24 +0000</pubDate>
		<dc:creator>Gonow</dc:creator>
				<category><![CDATA[Rails]]></category>
		<category><![CDATA[Devise]]></category>
		<category><![CDATA[gonow tecnologia]]></category>
		<category><![CDATA[Guru Sorocaba]]></category>
		<category><![CDATA[Plataformatec]]></category>
		<category><![CDATA[Projeto open source]]></category>
		<category><![CDATA[Rafael França]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[Simpleform]]></category>

		<guid isPermaLink="false">http://www.gonow.com.br/blog/?p=2304</guid>
		<description><![CDATA[Outros dois projetos open source envolvendo Rails, apresentados no Guru Sorocaba da semana passada, foram o Devise e o SimpleForm. O primeiro surgiu em 2009, a partir da necessidade de [...]]]></description>
				<content:encoded><![CDATA[<p><!--:pt--><div id="attachment_2307" class="wp-caption alignright" style="width: 310px"><a href="http://www.gonow.com.br/blog/wp-content/uploads/2011/11/DSC07135_teste.jpg"><img src="http://www.gonow.com.br/blog/wp-content/uploads/2011/11/DSC07135_teste-300x224.jpg" alt="" title="Guru Sorocaba na Fatec" width="300" height="224" class="size-medium wp-image-2307" /></a><p class="wp-caption-text">Rafael França apresentou o Devise e o Simpleform</p></div>Outros dois projetos open source envolvendo Rails, apresentados no <a href="http://gurusorocaba.com.br/" target="_blank">Guru Sorocaba</a> da semana passada, foram o <a href="http://github.com/plataformatec/devise" target="_blank">Devise</a> e o <a href="https://github.com/plataformatec/simple_form" target="_blank">SimpleForm</a>. O primeiro surgiu em 2009, a partir da necessidade de se flexibilizar o uso do <em>Authlogic</em> e do <em>Clearance</em>, já que, conforme explica Rafael França, da <a href="http://www.plataformatec.com.br/" target="_blank">Plataformatec</a>, <em>&#8220;Depois de usar e testar essas soluções nativas e sempre desejarmos uma coisa de cada uma: quando usávamos o Clearence sentíamos falta da aplicação ser configurável, quando usávamos o Authlogic sentíamos falta da aplicação ser um engine completo, decidimos então criar o Devise&#8221;</em>. Na definição dada por ele, o Devise é uma solução de autenticação rack-based, flexível e full-stack para Rails, com suporte a diversos papéis. E, por ser open source, está aberta a contribuições da comunidade.</p>
<p>Deu tão certo que hoje é o 8º repositório com maior número de watches no Github e 12º com mais forks na rede social. E não é pra menos: <em>&#8220;ele foi criado para ser altamente customizável, você pode customizar as views e até o HTML gerado pelo Devise&#8221;</em>, completa Rafael. Pela popularidade, tudo indica que vem cumprindo bem esse papel.</p>
<p>Já o SimpleForm, como o nome sugere, foi criado também em 2009 para atender uma necessidade quase obrigatória de criação de formulários para aplicações, com o diferencial de serem <em>forms</em> que respeitassem as &#8220;boas práticas&#8221; exigidas para essas interfaces. Rafael inclusive frisa que um dos fatores mais importantes para a empresa é a qualidade do código gerado nos projetos, e conta que o SimpleForm foi inspirado no <a href="http://www.wufoo.com/" target="_blank">Wufoo</a>, nome da empresa de Palo Alto que vive exclusivamente de customizações de formulários online. <em>&#8220;Criamos essa solução pensando em customizar e adicionar mais flexibilidade aos formulários de Rails&#8221;</em>, resume ele. O plano futuro para este projeto é a integração com o <a href="http://twitter.github.com/bootstrap" target="_blank">Twitter Bootstrap</a> para agregar estilo ao form, entre outras funcionalidades mais específicas.</p>
<p>Ambos os projetos são open source, mas há também outros projetos abertos para contribuição, basta acessar: <a href="http://github.com/plataformatec" target="_blank">http://github.com/plataformatec</p>
<p></a>SCREENCASTS:</p>
<p><strong>Devise</strong><br />
<a href="http://railscasts.com/episodes/209-introducing-devise" target="_blank">http://railscasts.com/episodes/209-introducing-devise</a><br />
<a href="http://railscasts.com/episodes/210-customizing-devise" target="_blank">http://railscasts.com/episodes/210-customizing-devise</a></p>
<p><strong>SimpleForm</strong><br />
<a href="http://railscasts.com/episodes/234-simple-form" target="_blank">http://railscasts.com/episodes/234-simple-form</a></p>
<p>Para ver cases e demos do código dos dois projetos, assista ao vídeo com a íntegra da palestra de Rafael França no Guru Sorocaba:</p>
<p><iframe width="640" height="360" src="http://www.youtube.com/embed/reahz5tzwRw" frameborder="0" allowfullscreen></iframe><!--:--></p>
<div style="min-height:33px;" class="really_simple_share really_simple_share_button robots-nocontent snap_nopreview"><div class="really_simple_share_facebook_share" style="width:100px;"><a name="fb_share" rel="nofollow" href="https://www.facebook.com/sharer.php?u=www.gonow.com.br%2Fblog%2F2011%2F11%2F18%2Fdevise-e-simpleform-solucoes-open-source-em-rails-que-podem-fazer-diferenca-no-seu-projeto%2F&amp;t=Devise%20e%20SimpleForm%3A%20solu%C3%A7%C3%B5es%20open%20source%20em%20Rails%20que%20podem%20fazer%20diferen%C3%A7a%20no%20seu%20projeto" title="Share on Facebook" target="_blank">Share!</a></div></div>
		<div style="clear:both;"></div>]]></content:encoded>
			<wfw:commentRss>http://www.gonow.com.br/blog/2011/11/18/devise-e-simpleform-solucoes-open-source-em-rails-que-podem-fazer-diferenca-no-seu-projeto/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>&#8220;Canaries&#8221;, um projeto open source para garantir compatibilidade entre versões de gems</title>
		<link>http://www.gonow.com.br/blog/2011/11/17/canaries-um-projeto-open-source-para-garantir-compatibilidade-entre-versoes-de-gems/</link>
		<comments>http://www.gonow.com.br/blog/2011/11/17/canaries-um-projeto-open-source-para-garantir-compatibilidade-entre-versoes-de-gems/#comments</comments>
		<pubDate>Thu, 17 Nov 2011 10:33:06 +0000</pubDate>
		<dc:creator>Gonow</dc:creator>
				<category><![CDATA[Rails]]></category>
		<category><![CDATA[Canaries]]></category>
		<category><![CDATA[Gem]]></category>
		<category><![CDATA[gonow tecnologia]]></category>
		<category><![CDATA[Guru Sorocaba]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[Ricardo Almeida]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[ruby on rails]]></category>

		<guid isPermaLink="false">http://www.gonow.com.br/blog/?p=2294</guid>
		<description><![CDATA[Ricardo Almeida, desenvolvedor Ruby da Gonow Tecnologia, esteve no Guru Sorocaba para apresentar o &#8220;Canaries&#8221;, uma ferramenta Open Source para garantir a compatibilidade de versões de gems entre diversos projetos/aplicações. [...]]]></description>
				<content:encoded><![CDATA[<p><!--:pt-->Ricardo Almeida, desenvolvedor Ruby da Gonow Tecnologia, esteve no <a href="http://gurusorocaba.com.br/" target="_blank">Guru Sorocaba</a> para apresentar o &#8220;Canaries&#8221;, uma ferramenta Open Source para garantir a compatibilidade de versões de gems entre diversos projetos/aplicações. Ele explica: <em>&#8220;Imagine que você tem diversos projetos em Ruby que utilizam uma mesma gem crítica, e queira rapidamente obter o feedback de que tudo continuará okay na mudança de versão dessa gem. Essa tarefa seria executada rapidamente para um site, mas quando são vários sites envolvidos, esse teste acaba ficando bastante trabalhoso. O objetivo do Canaries é automatizar esse processo de atualização de gems para diversos sites em processamentos paralelos&#8221;.</em></p>
<p>Antes de detalhar a arquitetura do sistema, Ricardo frisou a importância de se desenvolver de forma incremental, ou seja, lançar uma parte do projeto no Github (social coding) para que possa receber contribuições de outros desenvolvedores da comunidade interessados em fazer evoluir a ideia pensada originalmente.</p>
<p>Estão na &#8220;ToDo&#8221; list do projeto:</p>
<p>- Automate git clone process<br />
- Automate project name generation<br />
- CLI for run tests<br />
- Pusher to notify clients<br />
- Sample templates</p>
<p>Assista ao vídeo com a íntegra da palestra de Ricardo Almeida no Guru Sorocaba para ver uma demo do projeto &#8220;Canaries&#8221; e aproveitar as dicas dele para a criação do seu próprio projeto open source no Github &#8211; ou quem sabe ainda, contribuir com este mesmo:</p>
<p><iframe src="http://www.youtube.com/embed/uobR333l3Us" frameborder="0" width="640" height="360"></iframe></p>
<p>Veja também os slides da apresentação:</p>
<div id="__ss_10139912" style="width: 425px;">
<p><strong style="display: block; margin: 12px 0 4px;"><a title="Canaries in the air #gurusorocaba" href="http://www.slideshare.net/almeidaricardo/canaries-in-the-air-gurusorocaba" target="_blank">Canaries in the air #gurusorocaba</a></strong> <iframe src="http://www.slideshare.net/slideshow/embed_code/10139912" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" width="640" height="360"></iframe></p>
<div style="padding: 5px 0 12px;">View more <a href="http://www.slideshare.net/" target="_blank">presentations</a> from <a href="http://www.slideshare.net/almeidaricardo" target="_blank">almeidaricardo</a></div>
</div>
<p><strong>Referências:</strong><br />
<a href="http://github.com/ricardoalmeida/canaries" target="_blank"><br />
Canaries</a></p>
<p><a href="https://github.com/schacon/ruby-git" target="_blank">Ruby/Git</a></p>
<p><strong>Redis<br />
</strong><a href="https://github.com/ezmobius/redis-rb" target="_blank">https://github.com/ezmobius/redis-rb</a><br />
<a href="https://github.com/mloughran/em-hiredis" target="_blank">https://github.com/mloughran/em-hiredis</a></p>
<p><a href="https://github.com/ruby-amqp/amqp" target="_blank">RabbitMQ</a></p>
<p><a href="https://github.com/abril/browsah" target="_blank">Browsah</a><!--:--></p>
<div style="min-height:33px;" class="really_simple_share really_simple_share_button robots-nocontent snap_nopreview"><div class="really_simple_share_facebook_share" style="width:100px;"><a name="fb_share" rel="nofollow" href="https://www.facebook.com/sharer.php?u=www.gonow.com.br%2Fblog%2F2011%2F11%2F17%2Fcanaries-um-projeto-open-source-para-garantir-compatibilidade-entre-versoes-de-gems%2F&amp;t=%26%238220%3BCanaries%26%238221%3B%2C%20um%20projeto%20open%20source%20para%20garantir%20compatibilidade%20entre%20vers%C3%B5es%20de%20gems" title="Share on Facebook" target="_blank">Share!</a></div></div>
		<div style="clear:both;"></div>]]></content:encoded>
			<wfw:commentRss>http://www.gonow.com.br/blog/2011/11/17/canaries-um-projeto-open-source-para-garantir-compatibilidade-entre-versoes-de-gems/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Guru Sorocaba é neste sábado, com patrocínio da Gonow Tecnologia</title>
		<link>http://www.gonow.com.br/blog/2011/11/10/guru-sorocaba-e-neste-sabado-com-patrocinio-da-gonow-tecnologia/</link>
		<comments>http://www.gonow.com.br/blog/2011/11/10/guru-sorocaba-e-neste-sabado-com-patrocinio-da-gonow-tecnologia/#comments</comments>
		<pubDate>Fri, 11 Nov 2011 00:21:05 +0000</pubDate>
		<dc:creator>Gonow</dc:creator>
				<category><![CDATA[Rails]]></category>
		<category><![CDATA[Fatec Sorocaba]]></category>
		<category><![CDATA[gonow tecnologia]]></category>
		<category><![CDATA[Guru Sorocaba]]></category>
		<category><![CDATA[Linguagem Ruby]]></category>
		<category><![CDATA[ruby on rails]]></category>

		<guid isPermaLink="false">http://www.gonow.com.br/blog/?p=2259</guid>
		<description><![CDATA[Acontece neste sábado, 12/11, o &#8220;tão aguardado&#8221; 3º Encontro do Grupo de Usuários Ruby de Sorocaba. O evento é gratuito e será realizado na Fatec, e terá como palestrantes Fábio [...]]]></description>
				<content:encoded><![CDATA[<p><!--:pt-->Acontece neste sábado, 12/11, o &#8220;tão aguardado&#8221; <a href="http://gurusorocaba.com.br/agenda/3o-encontro-guru-sorocaba" target="_blank">3º Encontro do Grupo de Usuários Ruby de Sorocaba</a>. O evento é gratuito e será realizado na Fatec, e terá como palestrantes Fábio Akita, principal evangelista da comunidade Ruby on Rails, Nando Vieira, que irá falar sobre Node.js, Rafael França e Ricardo Almeida, desenvolvedor da equipe de Ruby da Gonow.<br />
Ricardo irá apresentar o tema <em>&#8220;Canaries in the air&#8221;</em>, sobre um projeto open source para validar aplicações em versões diferentes de dependências.</p>
<p><strong>Veja a grade da programação do Guru Sorocaba:</strong></p>
<p>09h  - Ricardo Almeida (Gonow) &#8211; <em>&#8220;Canaries in the air&#8221;</em></p>
<p>09h30 &#8211; Rafael França (Plataformatec) &#8211; <em>&#8220;The Plataforma Way&#8221;</em></p>
<p>10h &#8211; Coffee Break</p>
<p>10h30 - Nando Vieira (Codeplane e HowTo)</p>
<p>11h10 &#8211; Fábio Akita (Codeminer 42)</p>
<p>Mora em Sorocaba ou região e gostaria de participar? Ainda há vagas disponíveis, confirme sua presença pelo e-mail: gurusorocaba@gmail.com<br />
E acompanhe as atualizações do blog Gonow para saber o que rolou durante o evento!<!--:--></p>
<div style="min-height:33px;" class="really_simple_share really_simple_share_button robots-nocontent snap_nopreview"><div class="really_simple_share_facebook_share" style="width:100px;"><a name="fb_share" rel="nofollow" href="https://www.facebook.com/sharer.php?u=www.gonow.com.br%2Fblog%2F2011%2F11%2F10%2Fguru-sorocaba-e-neste-sabado-com-patrocinio-da-gonow-tecnologia%2F&amp;t=Guru%20Sorocaba%20%C3%A9%20neste%20s%C3%A1bado%2C%20com%20patroc%C3%ADnio%20da%20Gonow%20Tecnologia" title="Share on Facebook" target="_blank">Share!</a></div></div>
		<div style="clear:both;"></div>]]></content:encoded>
			<wfw:commentRss>http://www.gonow.com.br/blog/2011/11/10/guru-sorocaba-e-neste-sabado-com-patrocinio-da-gonow-tecnologia/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Barcamp RubyConf 2011 é dia 27 de setembro, programe-se!</title>
		<link>http://www.gonow.com.br/blog/2011/09/22/barcamp-rubyconf-2011-e-dia-27-de-setembro-programe-se/</link>
		<comments>http://www.gonow.com.br/blog/2011/09/22/barcamp-rubyconf-2011-e-dia-27-de-setembro-programe-se/#comments</comments>
		<pubDate>Thu, 22 Sep 2011 16:49:53 +0000</pubDate>
		<dc:creator>Gonow</dc:creator>
				<category><![CDATA[Eventos]]></category>
		<category><![CDATA[Gonow Tecnologia]]></category>
		<category><![CDATA[Rails]]></category>
		<category><![CDATA[gonow tecnologia]]></category>
		<category><![CDATA[Locaweb]]></category>
		<category><![CDATA[RoR]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[ruby on rails]]></category>
		<category><![CDATA[RubyConf]]></category>
		<category><![CDATA[RubyConf Brasil]]></category>
		<category><![CDATA[RubyConf Brasil 2011]]></category>

		<guid isPermaLink="false">http://www.gonow.com.br/blog/?p=2069</guid>
		<description><![CDATA[Semana que vem vai rolar um evento muito especial em São Paulo, organizado pela LocaWeb e RubyConf Brasil. É o Barcamp, um encontro para networking, bate-papo e troca de informações [...]]]></description>
				<content:encoded><![CDATA[<p><!--:pt-->Semana que vem vai rolar um evento muito especial em São Paulo, organizado pela <a href="http://www.locaweb.com.br" target="_blank">LocaWeb</a> e <a href="http://www.rubyconf.com.br" target="_blank">RubyConf Brasil</a>. É o <strong>Barcamp</strong>, um encontro para networking, bate-papo e troca de informações e conhecimento entre palestrantes e inscritos no evento. E de quebra você ainda pode ganhar um ingresso para o RubyConf Brasil 2011!</p>
<p>Acesse o formulário, inscreva-se e participe: <a href="http://goo.gl/dL9vf" target="_blank">http://goo.gl/dL9vf</a></p>
<p><a href="http://www.gonow.com.br/blog/wp-content/uploads/2011/09/CONVITE-BARCAMP-RUBYCONF.jpg"><img class="aligncenter size-full wp-image-2070" title="Convite Barcamp RubyConf Brasil 2011" src="http://www.gonow.com.br/blog/wp-content/uploads/2011/09/CONVITE-BARCAMP-RUBYCONF.jpg" alt="" width="650" height="511" /></a><!--:--></p>
<div style="min-height:33px;" class="really_simple_share really_simple_share_button robots-nocontent snap_nopreview"><div class="really_simple_share_facebook_share" style="width:100px;"><a name="fb_share" rel="nofollow" href="https://www.facebook.com/sharer.php?u=www.gonow.com.br%2Fblog%2F2011%2F09%2F22%2Fbarcamp-rubyconf-2011-e-dia-27-de-setembro-programe-se%2F&amp;t=Barcamp%20RubyConf%202011%20%C3%A9%20dia%2027%20de%20setembro%2C%20programe-se%21" title="Share on Facebook" target="_blank">Share!</a></div></div>
		<div style="clear:both;"></div>]]></content:encoded>
			<wfw:commentRss>http://www.gonow.com.br/blog/2011/09/22/barcamp-rubyconf-2011-e-dia-27-de-setembro-programe-se/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Aprenda como criar um framework com Rack em apenas 10 minutos</title>
		<link>http://www.gonow.com.br/blog/2011/09/15/aprenda-como-criar-um-framework-com-rack-em-apenas-10-minutos/</link>
		<comments>http://www.gonow.com.br/blog/2011/09/15/aprenda-como-criar-um-framework-com-rack-em-apenas-10-minutos/#comments</comments>
		<pubDate>Thu, 15 Sep 2011 21:43:00 +0000</pubDate>
		<dc:creator>Gonow</dc:creator>
				<category><![CDATA[Eventos]]></category>
		<category><![CDATA[Rails]]></category>
		<category><![CDATA[gonow tecnologia]]></category>
		<category><![CDATA[Guru-SP]]></category>
		<category><![CDATA[GuruSP]]></category>
		<category><![CDATA[Rack]]></category>
		<category><![CDATA[Rack Ruby]]></category>
		<category><![CDATA[Rinaldi Fonseca]]></category>
		<category><![CDATA[Ruby Webserver Interface]]></category>

		<guid isPermaLink="false">http://www.gonow.com.br/blog/?p=1996</guid>
		<description><![CDATA[Rinaldi Fonseca é desenvolvedor Ruby na Gonow Tecnologia e apresentou o tema &#8220;Criando um Framework com Rack em 10 Minutos&#8221;, no 18º Guru-SP, ocorrido há duas semanas. &#8220;O Rack (Ruby [...]]]></description>
				<content:encoded><![CDATA[<p><!--:pt-->Rinaldi Fonseca é desenvolvedor Ruby na Gonow Tecnologia e apresentou o tema<strong> &#8220;Criando um Framework com Rack em 10 Minutos&#8221;</strong>, no 18º <a href="http://guru-sp.org/" target="_blank">Guru-SP</a>, ocorrido há duas semanas. <em>&#8220;O <a href="http://en.wikipedia.org/wiki/Rack_(web_server_interface)" target="_blank">Rack (Ruby Webserver Interface)</a> tornou-se praticamente um padrão obrigatório na criação de frameworks web em Ruby. Na minha palestra mostrei os conceitos principais sobre o funcionamento desta ferramenta&#8221;</em>, diz ele.</p>
<p>Acesse os slides da apresentação:</p>
<div style="width:425px" id="__ss_9117181"> <strong style="display:block;margin:12px 0 4px"><a href="http://www.slideshare.net/rinaldifonseca/criando-um-framework-com-rack-em-10-minutos" title="Criando um Framework com Rack em 10 minutos" target="_blank">Criando um Framework com Rack em 10 minutos</a></strong> <iframe src="http://www.slideshare.net/slideshow/embed_code/9117181" width="640" height="390" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe>
<div style="padding:5px 0 12px"> View more <a href="http://www.slideshare.net/" target="_blank">presentations</a> from <a href="http://www.slideshare.net/rinaldifonseca" target="_blank">rinaldifonseca</a> </div>
</p></div>
<p>E veja também o vídeo da palestra, diretamente da página do blog pessoal de Rinaldi Fonseca:<br />
<a href="http://rinaldifonseca.com/criando-um-framework-com-rack-em-10-minutos/ " target="_blank">http://rinaldifonseca.com/criando-um-framework-com-rack-em-10-minutos/</a><!--:--></p>
<div style="min-height:33px;" class="really_simple_share really_simple_share_button robots-nocontent snap_nopreview"><div class="really_simple_share_facebook_share" style="width:100px;"><a name="fb_share" rel="nofollow" href="https://www.facebook.com/sharer.php?u=www.gonow.com.br%2Fblog%2F2011%2F09%2F15%2Faprenda-como-criar-um-framework-com-rack-em-apenas-10-minutos%2F&amp;t=Aprenda%20como%20criar%20um%20framework%20com%20Rack%20em%20apenas%2010%20minutos" title="Share on Facebook" target="_blank">Share!</a></div></div>
		<div style="clear:both;"></div>]]></content:encoded>
			<wfw:commentRss>http://www.gonow.com.br/blog/2011/09/15/aprenda-como-criar-um-framework-com-rack-em-apenas-10-minutos/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>SOLID através de BDD: Um guia prático para rubistas</title>
		<link>http://www.gonow.com.br/blog/2011/08/31/solid-atraves-de-bdd-um-guia-pratico-para-rubistas/</link>
		<comments>http://www.gonow.com.br/blog/2011/08/31/solid-atraves-de-bdd-um-guia-pratico-para-rubistas/#comments</comments>
		<pubDate>Thu, 01 Sep 2011 02:07:31 +0000</pubDate>
		<dc:creator>Gonow</dc:creator>
				<category><![CDATA[Eventos]]></category>
		<category><![CDATA[Gonow Tecnologia]]></category>
		<category><![CDATA[Rails]]></category>
		<category><![CDATA[Dependency Inversion Principle]]></category>
		<category><![CDATA[Dev In Sampa]]></category>
		<category><![CDATA[Dev In Sampa 2011]]></category>
		<category><![CDATA[DevInSampa]]></category>
		<category><![CDATA[gonow tecnologia]]></category>
		<category><![CDATA[Single Responsibility Principle]]></category>
		<category><![CDATA[SOLID]]></category>
		<category><![CDATA[SOLID Ruby]]></category>

		<guid isPermaLink="false">http://www.gonow.com.br/blog/?p=1910</guid>
		<description><![CDATA[De São Paulo* Lucas Húngaro é desenvolvedor Ruby na Gonow Tecnologia, e se auto-define como apaixonado pelo minimalismo aplicado ao código na criação de arquiteturas bonitas e flexíveis, sendo &#8220;uncle&#8221; [...]]]></description>
				<content:encoded><![CDATA[<p><em>De São Paulo*</em></p>
<p><a title="Lucas Húngaro by gonowtecnologia, on Flickr" href="http://www.flickr.com/photos/gonowtecnologia/6101938742/"><img src="http://farm7.static.flickr.com/6077/6101938742_e8e848f57c_z.jpg" alt="Lucas Húngaro" width="640" height="390" /></a><em><br />
<a href="http://blog.lucashungaro.com/" target="_blank">Lucas Húngaro</a> </em>é desenvolvedor Ruby na Gonow Tecnologia, e se auto-define como apaixonado pelo minimalismo aplicado ao código na criação de arquiteturas bonitas e flexíveis, sendo &#8220;uncle&#8221; Bob Martin uma das suas referências favoritas.<br />
Lucas inaugurou a trilha de palestras no Dev in Sampa que rolou no último sábado no auditório Abril, com patrocínio da <a href="http://www.grupoabril.com.br/institucional/editora-abril.shtml" target="_blank">Abril Mídia</a> e da <a href="http://www.concretesolutions.com.br/" target="_blank">Concrete Solutions</a>, para abordar o tema<em> &#8220;SOLID através de BDD: um guia prático para rubistas&#8221;.</em></p>
<p><em> </em></p>
<p><em> </em><em>&#8220;SOLID é um conjunto de princípios que foram definidos pelo &#8216;uncle Bob&#8217; que devem ser aplicados ao código orientado a objetos, no intuito de atingir um código mais desacoplado, mais coeso, e no final das contas você faz isso para que o custo de manutenção seja reduzido&#8221;</em>, define. E se ateve a dois princípios que, para ele, são os mais importantes e que causam mais impacto no código: <strong><a href="http://en.wikipedia.org/wiki/Single_responsibility_principle" target="_blank">Single Responsibility Principle</a> (SRP)</strong> e <strong><a href="http://en.wikipedia.org/wiki/Dependency_inversion_principle" target="_blank">Dependency Inversion Principle</a> (DIP)</strong>.</p>
<p><strong>Coesão e acoplamento</strong></p>
<p>A tradução desses dois princípios, aplicada ao código, diz respeito a duas características: coesão e acomplamento. <em>&#8220;O princípio da única responsabilidade propõe que uma forma fácil de você ver se está aplicando ele ou não é saber se o objeto, a classe ou a entidade tem apenas uma razão para mudar. Se ela tiver mais de uma razão para mudar, quer dizer que você já violou o princípio. E outro problema que tentamos evitar é o alto acoplamento, que é quando um pedaço de código está preso a um caso de uso e suas dependências&#8221;</em>, explica Lucas Húngaro.</p>
<p>Ele defende a criação de aplicações centradas em comportamentos de negócios e não em dados. <em>&#8220;Sem perceber, já começamos a pensar em atributo de tabela, e na orientação de objeto primeiro devemos pensar no comportamento e os dados são consequência, eles ficam escondidos&#8221;</em>, diz. Segundo ele, a maioria das aplicações Rails acabam sendo um modelo user gigantesco, tornando-se o núcleo da aplicação e puxando tudo para si, criando assim um &#8220;domínio anêmico&#8221;, ou seja, uma classe que é muito forte e o resto é basicamente uma estrutura de dados que só fica carregando atributos de um lado para outro.<br />
<em>(E mostra trechos de código que embasam e exemplificam sua colocação).</em></p>
<p><em> </em></p>
<p><em> </em><a href="http://goo.gl/OEBvX" target="_blank">Dica do &#8220;Uncle&#8221; Bob</a> seguida como guideline por Lucas: <a href="http://en.wikipedia.org/wiki/ActiveRecord_(Rails)#Implementations" target="_blank">ActiveRecord</a> deve conter apenas validação, associações e finders, nada mais que issodeve ser tratado como uma estrutura de dados. Uma forma de aplicar isso é restringir models ActiveRecord apenas à validação, associações e finders, nada mais que isso.</p>
<p><strong>Testes quebradiços = Design Ruim</strong></p>
<p><strong> </strong></p>
<p><strong> </strong>Lucas Húngaro também comenta que costumava ser da turma dos que defendiam que <em>&#8220;mocks e stubs são apenas para isolamento de sistemas externos (como gateways) pois geram testes quebradiços quando usados internamente&#8221;</em>. Mas resolveu estudar a melhor essa questão depois de ouvir referências respeitáveis na comunidade. E chegou então à conclusão de que, na verdade, já que estava tendo problemas de teste quebradiço, o design é que estava ruim.<br />
E descobriu que ao unir <em>object doubles</em> com <em>dependency injection</em> é possível conseguir testes muitos rápidos &#8211; que não precisa nem subir o Rails &#8211; algo na casa dos milisegundos. Além de objetos desacoplados, coesos e com custo de manutenção reduzido.<br />
<em>(E mostra no código como fica a implementação depois de usar a injeção de dependência, que é uma forma de atingir a inversão de dependência, ao fazer os objetos dependerem em abstrações e não em implementações).</em></p>
<p><em> </em></p>
<p><em> </em><strong>Quanto de abstração vale a pena?</strong></p>
<p><em>&#8220;Minha dica é: se eu sei que alguma coisa tem chance de mudar, já faço a abstração direto. Eu só não crio um adapter se eu tenho certeza que aquilo não vai mudar, o que é bem difícil. Agora, se eu tenho dúvida, preciso também preservar meu direito de mudar depois. Então, nesse caso, eu prefiro fazer um adapter, abstrair uma vez mais, para depois, se houver uma mudança, eu ter como fazer&#8221;</em>, sugere Húngaro.<br />
<em>(E mostra trechos de código que embasam e exemplificam sua colocação).</em></p>
<p><strong><em>&#8220;BDD é uma ótima forma de apontar problemas com o design do código &#8211; os sintomascostumam ser claros&#8221;</em></strong></p>
<p><strong>Dicas para verificar se seu código está &#8220;sólido&#8221;</strong></p>
<p><strong> </strong></p>
<p><strong>- Pequenas peças de comportamento facilmente acessíveis:</strong> isso garante que não precisemos de setups muito elaborados e nos &#8220;força&#8221; a abstrair conceitos de negócio em forma de código.</p>
<p><strong>- app console .buy (user, product, cart):</strong> abra o console da sua aplicação e veja se os processos de negócio podem serexecutados facilmente na linha de comando.</p>
<p><strong>- Modele processos, não se prenda apenas a entidades. </strong>Exemplo: User assume o papel Customer para o processo de pagamento.</p>
<p><strong>- Evite ao máximo colocar dublês em tipos externos. </strong>Se necessário, crie um wrapper/adapter (que esteja sob o seu controle).</p>
<p>- Crie o hábito de passar dependências como parâmetros (Uncle Bob)</p>
<p>- “Não escreva &#8216;fat models&#8217;&#8221; — OOP</p>
<p>Assista ao vídeo com a íntegra da apresentação de Lucas Húngaro no Dev in Sampa 2011:</p>
<p><iframe width="640" height="390" src="http://www.youtube.com/embed/NxQOVrrgPQM" frameborder="0" allowfullscreen></iframe></p>
<p>Veja também os slides da apresentação dele:</p>
<div style="width:425px" id="__ss_9035046"> <strong style="display:block;margin:12px 0 4px"><a href="http://www.slideshare.net/lucashungaro/solid-atravs-de-bdd-um-guia-prtico-para-rubistas" title="SOLID através de BDD: um guia prático para rubistas" target="_blank">SOLID através de BDD: um guia prático para rubistas</a></strong> <iframe src="http://www.slideshare.net/slideshow/embed_code/9035046" width="640" height="390" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe>
<div style="padding:5px 0 12px"> View more <a href="http://www.slideshare.net/" target="_blank">presentations</a> from <a href="http://www.slideshare.net/lucashungaro" target="_blank">lucashungaro</a> </div>
</p></div>
<p><strong>Referências:</strong></p>
<p>Uncle Bob @unclebobmartin<br />
Michael Feathers @mfeathers<br />
Corey Haines @coreyhaines<br />
Gary Bernhardt @garybernhardt<br />
Pat Maddox @patmaddox<br />
Avdi Grimm @avdi</p>
<p><em>*Laura Loenert participou do Dev In Sampa 2011 a convite da Abril Mídia e da Concrete Solutions, patrocinadoras do evento.</em></p>
<div style="min-height:33px;" class="really_simple_share really_simple_share_button robots-nocontent snap_nopreview"><div class="really_simple_share_facebook_share" style="width:100px;"><a name="fb_share" rel="nofollow" href="https://www.facebook.com/sharer.php?u=www.gonow.com.br%2Fblog%2F2011%2F08%2F31%2Fsolid-atraves-de-bdd-um-guia-pratico-para-rubistas%2F&amp;t=SOLID%20atrav%C3%A9s%20de%20BDD%3A%20Um%20guia%20pr%C3%A1tico%20para%20rubistas" title="Share on Facebook" target="_blank">Share!</a></div></div>
		<div style="clear:both;"></div>]]></content:encoded>
			<wfw:commentRss>http://www.gonow.com.br/blog/2011/08/31/solid-atraves-de-bdd-um-guia-pratico-para-rubistas/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Gonow Tecnologia no portal Made in Japan</title>
		<link>http://www.gonow.com.br/blog/2011/08/22/gonow-tecnologia-no-portal-made-in-japan/</link>
		<comments>http://www.gonow.com.br/blog/2011/08/22/gonow-tecnologia-no-portal-made-in-japan/#comments</comments>
		<pubDate>Mon, 22 Aug 2011 15:15:45 +0000</pubDate>
		<dc:creator>Gonow</dc:creator>
				<category><![CDATA[Gonow Tecnologia]]></category>
		<category><![CDATA[Rails]]></category>
		<category><![CDATA[fabio akita]]></category>
		<category><![CDATA[gonow tecnologia]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[Ruby Kaigi 2011]]></category>
		<category><![CDATA[ruby on rails]]></category>

		<guid isPermaLink="false">http://www.gonow.com.br/blog/?p=1827</guid>
		<description><![CDATA[Fabio Akita, coordenador das equipes de Ruby on Rails na Gonow, concedeu uma entrevista ao portal &#8220;Made in Japan&#8221; a respeito da sua experiência como palestrante no Ruby Kaigi 2011, [...]]]></description>
				<content:encoded><![CDATA[<p><a href="http://www.gonow.com.br/blog/wp-content/uploads/2011/08/akita.jpg"><img class="alignright size-full wp-image-1829" title="Fabio Akita entre o principal evangelizador de Ruby no Japão e o criador da linguagem, Yukihiro Matsumoto" src="http://www.gonow.com.br/blog/wp-content/uploads/2011/08/akita.jpg" alt="" width="440" height="220" /></a>Fabio Akita, coordenador das equipes de Ruby on Rails na Gonow, concedeu uma entrevista ao portal &#8220;Made in Japan&#8221; a respeito da sua experiência como palestrante no Ruby Kaigi 2011, considerado o maior evento de Ruby do Japão e que contou inclusive com a participação do criador da linguagem, Yukihiro Matsumoto.</p>
<p>Entre outros assuntos, Akita comentou sobre o futuro da tecnologia e as novas perspectivas para o mercado de TI:<br />
<a href="http://madeinjapan.uol.com.br/2011/08/16/programador-nikkei-fala-sobre-tecnologia-e-novas-perspectivas/" target="_blank">http://madeinjapan.uol.com.br/2011/08/16/programador-nikkei-fala-sobre-tecnologia-e-novas-perspectivas/</a></p>
<p>Publicamos também há algumas semanas o vídeo da palestra dele no evento.<br />
Para assistir a apresentação na íntegra, acesse:<br />
<a href="http://www.gonow.com.br/blog/2011/07/20/veja-como-foi-a-palestra-de-fabio-akita-no-japao/" target="_blank">http://www.gonow.com.br/blog/2011/07/20/veja-como-foi-a-palestra-de-fabio-akita-no-japao/</a></p>
<div style="min-height:33px;" class="really_simple_share really_simple_share_button robots-nocontent snap_nopreview"><div class="really_simple_share_facebook_share" style="width:100px;"><a name="fb_share" rel="nofollow" href="https://www.facebook.com/sharer.php?u=www.gonow.com.br%2Fblog%2F2011%2F08%2F22%2Fgonow-tecnologia-no-portal-made-in-japan%2F&amp;t=Gonow%20Tecnologia%20no%20portal%20Made%20in%20Japan" title="Share on Facebook" target="_blank">Share!</a></div></div>
		<div style="clear:both;"></div>]]></content:encoded>
			<wfw:commentRss>http://www.gonow.com.br/blog/2011/08/22/gonow-tecnologia-no-portal-made-in-japan/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Gems &#8220;locais&#8221;, irb e Bundler</title>
		<link>http://www.gonow.com.br/blog/2011/08/04/gems-locais-irb-e-bundler/</link>
		<comments>http://www.gonow.com.br/blog/2011/08/04/gems-locais-irb-e-bundler/#comments</comments>
		<pubDate>Thu, 04 Aug 2011 20:36:20 +0000</pubDate>
		<dc:creator>Gonow</dc:creator>
				<category><![CDATA[Rails]]></category>
		<category><![CDATA[Bundler]]></category>
		<category><![CDATA[Gemfile]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[RoR]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[ruby on rails]]></category>
		<category><![CDATA[wirble]]></category>

		<guid isPermaLink="false">http://www.gonow.com.br/blog/?p=1699</guid>
		<description><![CDATA[Por Lucas Húngaro* Gosto de algumas gems como o wirble, que adicionam algumas funcionalidades ao irb (e, por consequência, ao console do Rails). O problema é que, em projetos que [...]]]></description>
				<content:encoded><![CDATA[<p><strong><em>Por Lucas Húngaro*</em></strong></p>
<p>Gosto de algumas gems como o <a href="https://rubygems.org/gems/wirble" target="_blank">wirble</a>, que adicionam algumas funcionalidades ao irb (e, por consequência, ao console do Rails). O problema é que, em projetos que utilizam o Bundler, fica complicado adicionar esse tipo de gem ao Gemfile, pois elas não são realmente dependências do projeto e nem todos gostariam de utilizá-las.</p>
<p>Como programadores costumam ser bem radicais (ainda mais com essa mania de ser “opinionado”), isso sempre gera discussões e atritos. Eu já penso que é mais fácil simplesmente buscar uma solução, e eis aqui uma: <a href="https://gist.github.com/1096494" target="_blank">https://gist.github.com/1096494</a>.</p>
<p>Colocando esse snippet no seu arquivo .irbrc, ao abrir o irb (ou console do Rails), todas as gems do gemset global do RVM serão colocadas no <em>load path</em>, podendo assim serem requeridas na sequência. Eu não costumo usar gemsets por projeto (uso apenas o Bundler, da maneira explicada <a href="http://ryan.mcgeary.org/2011/02/09/vendor-everything-still-applies/" target="_blank">nesse post</a>), mas deixo o gemset global com algumas gems para esse fim. Meu arquivo .irbrc <a href="https://github.com/lucashungaro/dotfiles/blob/master/irbrc" target="_blank">está disponível no GitHub</a>.</p>
<p>Essa solução não é lá muito elegante, mas funciona muito bem para gems utilizadas no irb. Há algum tempo propus uma solução na lista do Bundler e recebi algumas sugestões, porém nenhuma me agradou (como, por exemplo, obrigar todo mundo que não quer as gems a usar a flag –without a cada bundle install). A discussão pode ser vista <a href="http://groups.google.com/group/ruby-bundler/browse_thread/thread/f05d8613fc434c37" target="_blank">aqui</a>. Até cheguei a fazer um fork do Bundler para implementar algum tipo de metadado para controlar isso, mas o código é bem complicado e acoplado, então deixei pra lá.</p>
<p>Acesse o post original no <a href="http://blog.lucashungaro.com/2011/07/23/gems-locais-irb-e-bundler/" target="_blank">blog pessoal</a> dele.</p>
<p>&#8211;</p>
<p><em>*Lucas Húngaro é desenvolvedor de software há 10 anos e escreve código em Ruby desde o início de 2007. Seu foco é o minimalismo aplicado ao código e como os princípios da orientação a objetos podem ajudar a criar arquiteturas bonitas e flexíveis.<br />
Lucas palestrou no último TDC (Developers Conference) em São Paulo, acesse <a href="http://www.gonow.com.br/blog/2011/07/21/seus-testes-e-boas-praticas-gritam-sera-que-voce-os-ouve-mesmo/" target="_blank">o post e assista ao vídeo da palestra dele</a>.</em></p>
<div style="min-height:33px;" class="really_simple_share really_simple_share_button robots-nocontent snap_nopreview"><div class="really_simple_share_facebook_share" style="width:100px;"><a name="fb_share" rel="nofollow" href="https://www.facebook.com/sharer.php?u=www.gonow.com.br%2Fblog%2F2011%2F08%2F04%2Fgems-locais-irb-e-bundler%2F&amp;t=Gems%20%26%238220%3Blocais%26%238221%3B%2C%20irb%20e%20Bundler" title="Share on Facebook" target="_blank">Share!</a></div></div>
		<div style="clear:both;"></div>]]></content:encoded>
			<wfw:commentRss>http://www.gonow.com.br/blog/2011/08/04/gems-locais-irb-e-bundler/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Conhece o Grok Podcast?</title>
		<link>http://www.gonow.com.br/blog/2011/07/23/conhece-o-grok-podcast/</link>
		<comments>http://www.gonow.com.br/blog/2011/07/23/conhece-o-grok-podcast/#comments</comments>
		<pubDate>Sat, 23 Jul 2011 18:08:23 +0000</pubDate>
		<dc:creator>Gonow</dc:creator>
				<category><![CDATA[Eventos]]></category>
		<category><![CDATA[Gonow Tecnologia]]></category>
		<category><![CDATA[Rails]]></category>
		<category><![CDATA[Ferbass]]></category>
		<category><![CDATA[Fernando Ribeiro]]></category>
		<category><![CDATA[gonow tecnologia]]></category>
		<category><![CDATA[Grok]]></category>
		<category><![CDATA[Grok Podcast]]></category>
		<category><![CDATA[Objective C]]></category>

		<guid isPermaLink="false">http://www.gonow.com.br/blog/?p=1852</guid>
		<description><![CDATA[O Grok é um podcast feito &#8220;para programadores e empreendedores&#8221;, como se auto-definem os organizadores do projeto no link da página no iTunes. Na semana passada o tema foi o [...]]]></description>
				<content:encoded><![CDATA[<p><a href="http://www.gonow.com.br/blog/wp-content/uploads/2011/08/grok.jpg"><img class="alignright size-full wp-image-1853" title="Grok Podcast logo" src="http://www.gonow.com.br/blog/wp-content/uploads/2011/08/grok.jpg" alt="" width="172" height="175" /></a>O Grok é um podcast feito &#8220;para programadores e empreendedores&#8221;, como se auto-definem os organizadores do projeto no link da página no iTunes. Na semana passada o tema foi o desenvolvimento para iOS, com a participação do nosso desenvolvedor Fernando Ribeiro &#8211; vulgo &#8220;ferbass&#8221; &#8211; que, segundo o próprio, usa produtos da Apple antes mesmo da marca &#8220;virar moda&#8221; e tem no currículo vários projetos interessantes como, por exemplo, Veja São Paulo (Cai na Noite) e revista Época para iPhone, estes dois pela Gonow Tecnologia, e Folha de São Paulo, jornal O Globo e Valor Econômico, estes últimos para iPad. Ferbass acumula já cerca de 12 aplicativos &#8220;no mínimo&#8221;, conforme nos conta no podcast.</p>
<p>Nessa parte do áudio sobre iOS, que continua na quinta-feira desta semana, Fernando conta da sua paixão por Objective-C, que começou há mais de 10 anos. Fala também sobre a relação do Objetive-c com o C e da sua experiência com iPhone e iPad, que já soma 2 anos no portfolio.</p>
<p>Para ouvir o podcast, episódio 42, acesse:<br />
<a href="http://itunes.apple.com/us/podcast/grok-podcast/id393122038 " target="_blank">http://itunes.apple.com/us/podcast/grok-podcast/id393122038</a></p>
<p>Para acessar a página do Grok Podcast:<br />
<a href="http://grokpodcast.com/" target="_blank">http://grokpodcast.com/</a></p>
<div style="min-height:33px;" class="really_simple_share really_simple_share_button robots-nocontent snap_nopreview"><div class="really_simple_share_facebook_share" style="width:100px;"><a name="fb_share" rel="nofollow" href="https://www.facebook.com/sharer.php?u=www.gonow.com.br%2Fblog%2F2011%2F07%2F23%2Fconhece-o-grok-podcast%2F&amp;t=Conhece%20o%20Grok%20Podcast%3F" title="Share on Facebook" target="_blank">Share!</a></div></div>
		<div style="clear:both;"></div>]]></content:encoded>
			<wfw:commentRss>http://www.gonow.com.br/blog/2011/07/23/conhece-o-grok-podcast/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Seus testes e boas práticas gritam: será que você os ouve mesmo?</title>
		<link>http://www.gonow.com.br/blog/2011/07/21/seus-testes-e-boas-praticas-gritam-sera-que-voce-os-ouve-mesmo/</link>
		<comments>http://www.gonow.com.br/blog/2011/07/21/seus-testes-e-boas-praticas-gritam-sera-que-voce-os-ouve-mesmo/#comments</comments>
		<pubDate>Thu, 21 Jul 2011 22:19:14 +0000</pubDate>
		<dc:creator>Gonow</dc:creator>
				<category><![CDATA[Eventos]]></category>
		<category><![CDATA[Gonow Tecnologia]]></category>
		<category><![CDATA[Rails]]></category>
		<category><![CDATA[Dependency Inversion]]></category>
		<category><![CDATA[gonow tecnologia]]></category>
		<category><![CDATA[Lucas Hungaro]]></category>
		<category><![CDATA[OOP]]></category>
		<category><![CDATA[Orientação a Objetos]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[ruby on rails]]></category>
		<category><![CDATA[Single Responsability]]></category>
		<category><![CDATA[Single Responsability Principle]]></category>
		<category><![CDATA[SOLID]]></category>
		<category><![CDATA[TDC]]></category>
		<category><![CDATA[TDC 2011]]></category>

		<guid isPermaLink="false">http://www.gonow.com.br/blog/?p=1507</guid>
		<description><![CDATA[Desenvolvedor de software há 10 anos, Lucas Húngaro escreve código em Ruby desde o início de 2007. Seu foco é o minimalismo aplicado ao código e como os princípios da [...]]]></description>
				<content:encoded><![CDATA[<p>Desenvolvedor de software há 10 anos, Lucas Húngaro escreve código em Ruby desde o início de 2007. Seu foco é o minimalismo aplicado ao código e como os princípios da orientação a objetos podem ajudar a criar arquiteturas bonitas e flexíveis. Na última edição do <a href="http://www.thedevelopersconference.com.br/" target="_blank">TDC</a> em São Paulo, apesar do nome da palestra estar relacionada à testes, Lucas optou por um bate-papo mais descontraído sobre <a href="http://en.wikipedia.org/wiki/Object-oriented_programming" target="_blank">OOP</a> e <a href="http://blog.lucashungaro.com/" target="_blank">SOLID</a>. Também falou sobre a maturidade da comunidade Ruby atual e deu dicas para os interessados em se aprofundar na orientação a objetos (como estudar <a href="http://pt.wikipedia.org/wiki/Smalltalk" target="_blank">Smalltalk</a> e <a href="http://pt.wikipedia.org/wiki/LISP" target="_blank">LISP</a>, duas linguagens que, segundo ele, são ótimas para aprender conceitos fundamentais da programação).</p>
<p><strong>OO = Data + Behavior</strong></p>
<p><strong> </strong></p>
<p><strong> </strong>Lucas lembra que orientação a objeto nada mais é do que misturar dados com &#8220;comportamento&#8221; (atributos e métodos). E a armadilha que tendemos a começar a cair é separar os dois: &#8220;a partir do momento que você começa a separar tudo, começa a voltar ao código procedural. Eles têm que estar juntos e interagindo no seu código&#8221;, diz. E comenta que observa pessoas influentes na comunidade afirmarem que o Rails trouxe muita coisa boa mas trouxe também um vício de fazer com que os programadores esqueçam os preceitos básicos da orientação a objetos. &#8220;E como fazemos para aprender isso? Temos que praticar muito. Eu sempre fui crítico em relação ao meu código, comecei a ler bastante e só comecei a fazer direito depois de praticar muito&#8221;, completa.</p>
<p>Uma das dicas de Lucas é prestar atenção no que dizem os &#8220;tiozões&#8221; do software, como <a href="http://en.wikipedia.org/wiki/Kent_Beck" target="_blank">Kent Beck</a> e <a href="http://en.wikipedia.org/wiki/Uncle_Bob" target="_blank">Uncle Bob</a>, pois são &#8220;veteranos&#8221; que já fizeram e continuam fazendo muito software, e que estão também sempre aprendendo, ensinando e compartilhando conhecimento. E a outra dica é ignorar as &#8220;prima donnas&#8221;, ou evitar aqueles que acham que já sabem tudo.</p>
<p>&#8220;Acredito é necessário aprender conceitos antes de sair aprendendo um monte de diferentes linguagens de programação. É bom aprender um pouquinho dos princípios primeiro para depois expandir as linguagens. Aí sim você vai aprender&#8221;, diz Lucas, e cita uma frase de <a href="http://en.wikipedia.org/wiki/Ralph_Waldo_Emerson" target="_blank">Ralph Waldo Emerson</a> para embasar seu comentário, adaptando-o ao contexto da programação: &#8220;você pode ter milhões de métodos (linguagens/ferramentas) mas quando você entende o princípio, você pode mudar a linguagem, do contrário, você terá problemas&#8221;. Do original: &#8220;<em>As to methods there may be a millionand then some, but principles are few. The man who grasps principles can successfully select his own methods. The man who tries methods, ignoring principles, is sure to have trouble</em>&#8220;.</p>
<p>E quando há um problema no projeto, é normalmente o gerente quem leva a culpa. &#8220;Eu me considero 100% responsável pelo código que escrevo&#8221;, afirma Lucas. &#8220;Se deu <em>bug</em>, problema meu, devia ter me manifestado na hora ao invés de esperar que as coisas piorem lá na frente&#8221;. Resumindo: faça seu código bem feito e nao jogue a culpa nos outros, para não ter que trabalhar mais depois.</p>
<p>E esclarece o título da palestra: &#8220;Acredito que os testes falam. Só que às vezes mesmo com 100% de cobertura, os testes estão ruins. O <a href="http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller" target="_blank">MVC</a> deixou o desenvolvedor viciado: é muito legal mas também muito perigoso, pois parece que só existe isso. Estamos tão acostumado com o Rails que abrimos o diretório e já vamos direto para o Model. Depois acabamos pensando que deveríamos ter feito outra coisa&#8221;, afirma. &#8220;Geralmente a estrutura do meu diretório app tem vários diretórios a mais: tem uma pasta para extensões, services, para modelos que não são do banco de dados. O que está lá é o padrão, mas não significa que você deva necessariamente seguir aquilo&#8221; conclui.</p>
<p><strong>Dois princípios importantes do SOLID</strong></p>
<p>Como aplicar o <a href="http://blog.lucashungaro.com/2011/05/04/solid-ruby-single-responsibility-principle/" target="_blank">Single Responsability</a> (ou &#8220;Princípio da Única Responsabilidade&#8221;) e o <a href="http://blog.lucashungaro.com/2011/05/09/solid-ruby-dependency-inversion-principle/" target="_blank">Dependency Inversion</a> (ou &#8220;Inversão de Independência&#8221;) e identificar quando não estiver seguindo-os.</p>
<p>O Single Responsability afeta o que chamamos de coesão. Componentes com baixa coesão executam parte de uma responsabilidade ou mais de uma. Quando o objeto executa mais de uma responsabilidade, você terá um código extenso como resultado. E quando ele executa apenas uma parte de uma responsabilidade, você começará a ver uma fragmentação na mesma camada de software. Haverão várias partes menores que você terá que coordenar para juntar tudo. Isso é baixa coesão, e é isso que buscamos evitar através do princípio da única responsabilidade.</p>
<p>Já o Dependency Inversion, trata do acoplamento. E, neste caso, estamos falando em alto acoplamento, ou seja, um código preso a um caso de uso específico. Ele ficou preso a um caso de uso e você não consegue desacoplá-lo para usar em outros casos. Utilizamos a inversão de depenência para evitar esse problema.</p>
<p>As 3 características que desejamos para nos livrarmos disso são:</p>
<p>- Interface mais concisa possível: não defina nada que você não irá usar<br />
- Narrativa consistente: pegue sua classe e comece a ler o que ela faz. Ela precisa ser capaz de executar a responsabilidade completa<br />
- Componentes bem independentes entre eles</p>
<p>&#8220;A melhor forma que vejo de atingir o &#8220;Princípio da Única Responsabilidade&#8221; é pela leitura fácil do componente. Analise suas classes: se notar que há mais de uma razão pela qual uma determinada classe precisa mudar é porque você precisa quebrá-la. E, juntando isso com teste, percebi que frameworks que possuem contextos ajudam a ver isso, como é o caso do <a href="http://en.wikipedia.org/wiki/RSpec" target="_blank">RSpec</a> e do <a href="http://www.riotfamily.org/index.html" target="_blank">Riot</a>&#8220;, diz Lucas Húngaro, que mostra no código <strong>(veja o vídeo)</strong> como fazer isso.</p>
<p>E uma outra observação importante, segundo a visão dele, é a necessidade de se aprender a modelar processos de NEGÓCIO ao invés de refletir entidades do mundo real. Orientação a Objetos é erroneamente associada ao mapeamento um-para-um de entidades reais mas, na verdade, devemos buscar o mapeamento de processos e interações.</p>
<p><strong>Inversão de Dependência através de Injeção de Dependência (DI x DI)</strong></p>
<p>A Injeção de Dependência é uma das formas de se atingir a Inversão de Dependência. &#8220;As pessoas confundem um pouco por conta do mundo Java e C#, com aqueles containers de injeção de dependência, Spring e outras coisas, onde se configura um .xml e classes abstratas. Mas no Ruby é bem mais simples&#8221;, diz. <strong>(Assista ao vídeo para ver a demonstração do código).</strong></p>
<p>E uma outra dica importante é: nunca coloque mock ou stub em tipos que não são seus. Sempre for depender de algo externo assim, escreva um <a href="http://en.wikipedia.org/wiki/Wrapper_function" target="_blank">wrapper</a>. E para saber mais sobre isso, acesse o paper &#8220;<a href="http://goo.gl/7NsEU" target="_blank">Mock roles, not objects</a>&#8220;.</p>
<p>E sobre <a href="http://en.wikipedia.org/wiki/Mock_object" target="_blank">mocks</a> e <a href="http://en.wikipedia.org/wiki/Test_stubs" target="_blank">stubs</a>, Lucas Húngaro mostra como e quando se deve usá-los. E explica: &#8220;Desenvolver software orientado a objeto basicamente é gerenciar dependência. É um objeto que depende do outro, que depende do outro, e assim sucessivamente. Você tem que garantir que a supercífie de contato entre eles seja a menor possível. Porque se for muito grande, você terá problemas. Se você tiver que escrever um monte de stub para uma coisa que não tem nada a ver com aquilo que você está querendo testar, pode ter certeza de que quebrou o encapsulamento&#8221;. &#8221;Então ao invés de fazer queries, você faz um comando&#8221;, e recomenda a leitura do artigo &#8220;<a href="http://pragprog.com/articles/tell-dont-ask" target="_blank">Tell, Don´t Ask</a>&#8221; para entender melhor o que isso significa.</p>
<p><strong>Checklist</strong></p>
<p>- Crie o hábito de passar dependências como parâmetros<br />
- Escreva código declarativo (assertividade)<br />
- Reduza ao máximo o uso de estado compartilhado (nunca faça um objeto usar estado global de outro)<br />
- Ao &#8220;terminar&#8221; um componente, pergunte:<br />
<a href="http://en.wikipedia.org/wiki/DRY" target="_blank">DRY</a>?<br />
Apenas uma responsabilidade<br />
Tudo muda à mesma taxa (velocidade/quantidade)?<br />
Depende de coisas que mudam menos? (Sempre uma entidade tem que depender de entidades que mudam menos)</p>
<p><strong>Referências:</strong></p>
<p><a href="http://www.cleancoders.com" target="_blank">http://www.cleancoders.com</a><br />
<a href="http://c2.com/cgi/wiki" target="_blank">http://c2.com/cgi/wiki</a></p>
<p><strong>Livros*:</strong></p>
<p><a href="http://www.amazon.com/Clean-Code-Handbook-Software-Craftsmanship/dp/0132350882" target="_blank">Clean Code (Uncle Bob)</a><br />
<a href="http://www.amazon.com/Clean-Coder-Conduct-Professional-Programmers/dp/0137081073" target="_blank">The Clean Coder</a><br />
<a href="http://www.amazon.com/Code-Complete-Practical-Handbook-Construction/dp/0735619670" target="_blank">Code Complete 2</a></p>
<p><em>*Utilizamos os links da Amazon somente para identificar os livros que mencionamos neste post.</em></p>
<p>Assista à íntegra da palestra de Lucas Húngaro na trilha Ruby do TDC 2011 em São Paulo:</p>
<p><iframe width="560" height="349" src="http://www.youtube.com/embed/5gUoJTWnAMk" frameborder="0" allowfullscreen></iframe></p>
<p>E veja também os slides da apresentação dele:</p>
<div style="width:425px" id="__ss_8547779"> <strong style="display:block;margin:12px 0 4px"><a href="http://www.slideshare.net/lucashungaro/seus-testes-esto-gritando-voc-est-ouvindo" title="Seus testes estão gritando. Você está ouvindo?" target="_blank">Seus testes estão gritando. Você está ouvindo?</a></strong> <iframe src="http://www.slideshare.net/slideshow/embed_code/8547779" width="425" height="355" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe>
<div style="padding:5px 0 12px"> View more <a href="http://www.slideshare.net/" target="_blank">presentations</a> from <a href="http://www.slideshare.net/lucashungaro" target="_blank">lucashungaro</a> </div>
</p></div>
<div style="min-height:33px;" class="really_simple_share really_simple_share_button robots-nocontent snap_nopreview"><div class="really_simple_share_facebook_share" style="width:100px;"><a name="fb_share" rel="nofollow" href="https://www.facebook.com/sharer.php?u=www.gonow.com.br%2Fblog%2F2011%2F07%2F21%2Fseus-testes-e-boas-praticas-gritam-sera-que-voce-os-ouve-mesmo%2F&amp;t=Seus%20testes%20e%20boas%20pr%C3%A1ticas%20gritam%3A%20ser%C3%A1%20que%20voc%C3%AA%20os%20ouve%20mesmo%3F" title="Share on Facebook" target="_blank">Share!</a></div></div>
		<div style="clear:both;"></div>]]></content:encoded>
			<wfw:commentRss>http://www.gonow.com.br/blog/2011/07/21/seus-testes-e-boas-praticas-gritam-sera-que-voce-os-ouve-mesmo/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Veja como foi a palestra de Fábio Akita no Japão</title>
		<link>http://www.gonow.com.br/blog/2011/07/20/veja-como-foi-a-palestra-de-fabio-akita-no-japao/</link>
		<comments>http://www.gonow.com.br/blog/2011/07/20/veja-como-foi-a-palestra-de-fabio-akita-no-japao/#comments</comments>
		<pubDate>Wed, 20 Jul 2011 15:14:15 +0000</pubDate>
		<dc:creator>Gonow</dc:creator>
				<category><![CDATA[Eventos]]></category>
		<category><![CDATA[Gonow Tecnologia]]></category>
		<category><![CDATA[Rails]]></category>
		<category><![CDATA[fabio akita]]></category>
		<category><![CDATA[RoR]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[RubyKaigi]]></category>
		<category><![CDATA[RubyonRails]]></category>

		<guid isPermaLink="false">http://www.gonow.com.br/blog/?p=1499</guid>
		<description><![CDATA[Semana passada publicamos um post sobre o RubyKaigi, evento de Ruby que rolou no Japão dias atrás. Fabio Akita, coordenador das equipes de Ruby on Rails na Gonow Tecnologia, foi [...]]]></description>
				<content:encoded><![CDATA[<p>Semana passada <a href="http://www.gonow.com.br/blog/2011/07/11/fabio-akita-ira-palestrar-em-evento-de-ruby-no-japao/" target="_blank">publicamos um post</a> sobre o <a href="http://rubykaigi.org/2011/en/" target="_blank">RubyKaigi</a>, evento de Ruby que rolou no Japão dias atrás. <a href="http://akitaonrails.com/" target="_blank">Fabio Akita</a>, coordenador das equipes de Ruby on Rails na Gonow Tecnologia, foi o primeiro convidado sul-americano a se apresentar no evento. O tema da sua palestra foi o crescimento sustentável do mercado brasileiro de Ruby.</p>
<p>Curioso para saber como foi? Assista ao vídeo da palestra dele, abaixo:</p>
<p><iframe src="http://player.vimeo.com/video/26584318?title=0&amp;byline=0&amp;portrait=0" width="400" height="226" frameborder="0"></iframe>
<p><a href="http://vimeo.com/26584318">[18S06] Personal Dilemma: How to work with Ruby in Brazil? (en)</a> from <a href="http://vimeo.com/iogi">ogi</a> on <a href="http://vimeo.com">Vimeo</a>.</p>
<div style="min-height:33px;" class="really_simple_share really_simple_share_button robots-nocontent snap_nopreview"><div class="really_simple_share_facebook_share" style="width:100px;"><a name="fb_share" rel="nofollow" href="https://www.facebook.com/sharer.php?u=www.gonow.com.br%2Fblog%2F2011%2F07%2F20%2Fveja-como-foi-a-palestra-de-fabio-akita-no-japao%2F&amp;t=Veja%20como%20foi%20a%20palestra%20de%20F%C3%A1bio%20Akita%20no%20Jap%C3%A3o" title="Share on Facebook" target="_blank">Share!</a></div></div>
		<div style="clear:both;"></div>]]></content:encoded>
			<wfw:commentRss>http://www.gonow.com.br/blog/2011/07/20/veja-como-foi-a-palestra-de-fabio-akita-no-japao/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Fabio Akita analisa Rails, arquiteturas e boas práticas no TDC 2011</title>
		<link>http://www.gonow.com.br/blog/2011/07/18/fabio-akita-analisa-rails-arquiteturas-e-boas-praticas-no-tdc-2011/</link>
		<comments>http://www.gonow.com.br/blog/2011/07/18/fabio-akita-analisa-rails-arquiteturas-e-boas-praticas-no-tdc-2011/#comments</comments>
		<pubDate>Mon, 18 Jul 2011 23:25:32 +0000</pubDate>
		<dc:creator>Gonow</dc:creator>
				<category><![CDATA[Eventos]]></category>
		<category><![CDATA[Gonow Tecnologia]]></category>
		<category><![CDATA[Rails]]></category>
		<category><![CDATA[Arquitetura Assíncrona]]></category>
		<category><![CDATA[Eventos Assíncronos]]></category>
		<category><![CDATA[fabio akita]]></category>
		<category><![CDATA[gonow tecnologia]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[RoR]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[RubyonRails]]></category>
		<category><![CDATA[TDC]]></category>
		<category><![CDATA[TDC 2011]]></category>

		<guid isPermaLink="false">http://www.gonow.com.br/blog/?p=1481</guid>
		<description><![CDATA[No terceiro dia do TDC 2011, acompanhamos duas palestras da Trilha Ruby: uma delas foi a do Fabio Akita, coordenador das equipes Ruby e Ruby on Rails na Gonow Tecnologia. [...]]]></description>
				<content:encoded><![CDATA[<p>No terceiro dia do <a href="http://www.thedevelopersconference.com.br/#geral" target="_blank">TDC 2011</a>, acompanhamos duas palestras da Trilha Ruby: uma delas foi a do <a href="http://www.akitaonrails.com/" target="_blank">Fabio Akita</a>, coordenador das equipes <a href="http://www.ruby-lang.org/pt/" target="_blank">Ruby</a> e <a href="http://www.rubyonrails.pro.br/" target="_blank">Ruby on Rails</a> na Gonow Tecnologia. Akita dividiu sua apresentação em um &#8220;prólogo&#8221;, aonde apresentou conceitos gerais de como pensar o desenvolvimento de software uma vez que, como bem observa ele, programar continua sendo uma Ciência da Computação e, dessa forma, uma reflexão mais aprofundada sobre o tema se faz necessária para entendermos melhor o momento em que vivemos hoje no mercado de TI. Em seguida falou sobre o histórico da linguagem Ruby e da plataforma Rails, e encerrou com um &#8220;epílogo&#8221;, onde ressaltou a importância de se fazer software livre.</p>
<p><strong>Prólogo: Arquitetura e Design</strong></p>
<p><strong> </strong></p>
<p><strong> </strong>Design pattern em desenvolvimento de software não se refere a algo &#8220;standard&#8221;. Cita <a href="http://en.wikipedia.org/wiki/Christopher_Alexander" target="_blank">Christopher Alexander</a>, um arquiteto e matemático &#8211; autor de &#8220;<a href="http://en.wikipedia.org/wiki/A_Pattern_Language" target="_blank">A Pattern Language</a>&#8221; &#8211; para fundamentar que patterns são só as formas recorrentes mais vistas na forma de construir um prédio, por exemplo, capazes de diminuir sua complexidade, e de identificar e descrever o que você quer construir. E que leva, por sua vez, a livros software como os famosos &#8220;<a href="http://en.wikipedia.org/wiki/Design_Patterns:_Elements_of_Reusable_Object-Oriented_Software" target="_blank">Design Patterns</a>&#8221; e &#8220;<a href="http://en.wikipedia.org/wiki/Domain-Driven_Design" target="_blank">Domain-Driven Design</a>&#8220;, de Eric Evans. Diz Akita: &#8220;<em>Quando falamos em design e arquiteturas de software, não existem estruturas que são fixas, ou leis que figuram como a única forma de se usar isso ou aquilo</em>&#8220;. E completa: &#8220;<em>temos que tomar extremo cuidado com aquilo que vemos e tomamos como certo, sem refletir melhor a respeito</em>&#8220;.<br />
E cita uma premissa de Alexander, para quem &#8220;cada padrão &#8211; pattern &#8211; representa nosso melhor chute <em>AGORA</em>&#8230; os padrões ainda são <em>HIPÓTESES</em>&#8230; e portanto todos são tentativas, todos livres para evoluir sob o impacto de novas experiências e observações&#8221;.</p>
<p>&#8220;<em>Quando falamos em construção de software precisamos ter em mente que não se trata simplesmente de uma questão de gosto ou de opinião. É uma questão de estrutura, de otimização, de custo, de formas mais avançadas de se desenvolver e assim por diante</em>&#8220;. afirma Akita. E comenta que, hoje em dia, temos o problema do que ele denomina de &#8220;popularidade estatística&#8221; no desenvolvimento de software. Mas alerta que a popularidade por si só não pode definir a solução. Na visão dele, seria o mesmo que dizer, por exemplo, que se uma multidão afirmar que &#8217;2+2=5&#8242;, portanto a afirmação é verdadeira. Só que na matemática, como sabemos, as coisas não funcionam dessa maneira: basta que uma pessoa diga e consiga provar que &#8217;2+2=4&#8242;, que esta será a resposta certa. E aí não importa se há 1 milhão de pessoas dizendo que essa resposta está errada pois, se há alguém que prove, demonstre e afirme que essa é a resposta certa, existe uma linha de raciocício concreta que chega a essa resposta.</p>
<p>Em resumo, não é porque 100 mil pessoas afirmam qual a melhor forma de fazer uma determinada coisa, que é como essa mesma coisa deverá ser feita. &#8220;<em>Se assim fosse</em>&#8220;, diz Akita, &#8220;<em>e eu fosse buscar simplesmente por estatística de uso, ou qualquer tipo de estatística em relação a uso de software, vamos pensar por exemplo, qual é o tipo de sistema de software aonde trafega dados que valem muito dinheiro e que portanto deveria ser a tecnologia de escolha de todo mundo aqui neste momento: eu deveria escolher Cobol. Está em todos os bancos, trafega trilhões de dólares sendo processados em Cobol, mas nem por isso eu uso Cobol</em>&#8220;.</p>
<p><em>&#8220;Não é bem assim que a gente tem que definir software. E como é que a gente tenta definir arquiteturas, como é que a gente tenta definir soluções de sistemas, soluções de problemas?</em>&#8220;, questiona. E, como resposta, cita duas frases célebres de <a href="http://en.wikipedia.org/wiki/W._Edward_Deming" target="_blank">W. Edward Deming</a>: &#8220;A experiência por si só não é nada&#8221; e também &#8220;Em Deus nós acreditamos, todos os outros devem trazer dados&#8221;. Mensuráveis, e que podem levar a conclusões objetivas e não simplesmente a estatístcas de popularidade, completa Akita.</p>
<p><strong>Histórico Ruby x Ruby on Rails</strong></p>
<p>Em projetos open-source, normalmente os desenvolvedores lidam com 3 versões de cada tipo de sistema: a estável mais usada, a estável em transição e a versão em desenvolvimento que vai ser a próxima versão estável. E o mundo Ruby on Rails anda bastante rápido: nos últimos 5 anos, já surgiram 34 versões. Ruby on Rails é um framework para desenvolver aplicações web.</p>
<p>Atualmente, o framework Rails &#8211; não confundir com a linguagem Ruby, pois são coisas distintas &#8211; está na versão estável <a href="http://weblog.rubyonrails.org/2011/6/8/ann-rails-2-3-12-has-been-released" target="_blank">2.3.12</a>, que não é a mais recente mas é a mais usada. Já a linguagem Ruby mais usada é a <a href="http://www.ruby-lang.org/en/news/2008/05/31/ruby-1-8-7-has-been-released/" target="_blank">1.8.7</a>, as duas estáveis mais recentes são <a href="http://weblog.rubyonrails.org/2011/6/16/ann-rails-3-0-9-has-been-released" target="_blank">3.0.9</a> (framework Rails) e <a href="http://www.ruby-lang.org/en/news/2010/08/18/ruby-1-9.2-released/" target="_blank">1.9.2</a> (linguagem Ruby) e em desenvolvimento temos a 1.9.3-dev (linguagem Ruby, que deve sair em Agosto) e <a href="http://weblog.rubyonrails.org/2011/6/9/ann-rails-3-1-0-rc4-has-been-released" target="_blank">3.1-RC4</a> (Rails, que está perto de ser a próxima mais estável).</p>
<p><strong>Como funciona a pilha padrão do Rails no lado servidor</strong></p>
<p>O ciclo padrão da maioria dos frameworks web segue a seguinte ordem, explicada detalhadamente no vídeo da palestra (ver abaixo):</p>
<p>Recebe:<br />
<strong>Request &gt; Web Server &gt;&gt; Rack Middlewares &gt;&gt;&gt; Routes &gt;&gt;&gt;&gt; Controller &gt;&gt;&gt;&gt;&gt; Model &gt;&gt;&gt;&gt;&gt;&gt; View<br />
</strong><br />
Retorna:<br />
<strong>View &gt; Controller &gt;&gt; Rack Middlewares &gt;&gt;&gt; Web Server &gt;&gt;&gt;&gt; Response</strong></p>
<p>No nível Web Server: NginX / Apache<br />
No nível Application Server Pack: Unicorn / Passanger</p>
<p>A arquitetura em camadas permite que a sua aplicação cresça: em um primeiro momento você pode não precisar, mas em um segundo momento, poderá acrescentar camadas, como balanceador de carga (<a href="http://haproxy.1wt.eu/" target="_blank">HAProxy</a>), você pode trocar por Web Services (REST, SOAP) para se comunicar com outros repositórios de dados, posso adicionar caches (<a href="https://www.varnish-cache.org/" target="_blank">Varnish</a>) em nível Web Server ou no extrato do banco de dados (<a href="http://memcached.org/" target="_blank">Memcached</a>), ou seja, é uma arquitetura que pode evoluir de diversas formas.</p>
<p>O problema é quando há requisições concorrentes. A recomendação é fazer com que haja uma diminuição do tempo de processamento de cada requisição. Existem várias formas de se fazer isso &#8211; acompanhe a explicação detalhada de Fabio Akita no vídeo da palestra &#8211; mas uma maneira de se otimizar o processo é utilizar <a href="http://en.wikipedia.org/wiki/Asynchronous_method_invocation" target="_blank">eventos assíncronos</a>.<br />
Dessa forma, as requisições seriam simultâneas, na ordem dos milhares, e seu processamento passaria pelo modelo representado abaixo:</p>
<p><strong>Request &gt; NginX &gt;&gt; Async App &gt;&gt;&gt; RDBMS<br />
</strong><br />
Algumas referências citadas por Fabio Akita de servidor-cliente para arquitetura assíncrona são:<br />
<a href="http://dev.w3.org/html5/websockets/" target="_blank">The Web Socket API</a><br />
<a href="http://rubyeventmachine.com/" target="_blank">EventMachine</a><br />
<a href="http://nodejs.org/" target="_blank">NodeJS</a><br />
Servidor assíncrono:<br />
<a href="http://pusher.com/" target="_blank">Pusher</a><br />
Questões cliente-servidor:<br />
<a href="http://www.kegel.com/c10k.html" target="_blank">The C10K problem</a></p>
<p><strong>Lado front-end</strong></p>
<p>Assuntos &#8220;polêmicos&#8221; comentados: Processamento de Assets. Para quem trabalha com desenvolvimento web, assets é composto por seu CSS, JavaScript e imagens. E como juntar tudo isso sem poluir a aplicação? Para organizar isso em uma arquitetura mais prático, criou-se uma biblioteca chamada &#8220;Sprockets&#8221;, que funciona basicamente como um filtro, onde as requisições são checadas e gerados arquivos em tempo real no caso de desenvolvimento, ou um arquivo estático no caso de produção.</p>
<p><strong>Epílogo<br />
</strong><br />
Akita concluiu a apresentação falando da importância de se criar projetos open-source. Na opinião dele, é preciso otimizar processos para geração de software de maior qualidade no mercado. &#8220;A ideia aqui é abrir código para melhorar o design desse código. Testar um software em ambientes reais, conseguir dados que de outra forma não se conseguiria normalmente, e criar novas arquiteturas e alternativas de soluções que me permitam ganhar melhores projetos e, com isso, ganhar de fato mais dinheiro&#8221;, resumiu ele.<br />
E também anunciou o <a href="http://rubyconf2011.akitaonrails.com/" target="_blank">RubyConf Brasil 2011</a>, que acontece no ínicio de novembro em São Paulo.</p>
<p>Assista à íntegra da palestra de Fabio Akita na trilha Ruby do TDC 2011:</p>
<p><iframe width="560" height="349" src="http://www.youtube.com/embed/82T-NzobWAg" frameborder="0" allowfullscreen></iframe></p>
<div style="min-height:33px;" class="really_simple_share really_simple_share_button robots-nocontent snap_nopreview"><div class="really_simple_share_facebook_share" style="width:100px;"><a name="fb_share" rel="nofollow" href="https://www.facebook.com/sharer.php?u=www.gonow.com.br%2Fblog%2F2011%2F07%2F18%2Ffabio-akita-analisa-rails-arquiteturas-e-boas-praticas-no-tdc-2011%2F&amp;t=Fabio%20Akita%20analisa%20Rails%2C%20arquiteturas%20e%20boas%20pr%C3%A1ticas%20no%20TDC%202011" title="Share on Facebook" target="_blank">Share!</a></div></div>
		<div style="clear:both;"></div>]]></content:encoded>
			<wfw:commentRss>http://www.gonow.com.br/blog/2011/07/18/fabio-akita-analisa-rails-arquiteturas-e-boas-praticas-no-tdc-2011/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Fábio Akita irá palestrar em evento de Ruby no Japão</title>
		<link>http://www.gonow.com.br/blog/2011/07/11/fabio-akita-ira-palestrar-em-evento-de-ruby-no-japao/</link>
		<comments>http://www.gonow.com.br/blog/2011/07/11/fabio-akita-ira-palestrar-em-evento-de-ruby-no-japao/#comments</comments>
		<pubDate>Mon, 11 Jul 2011 14:55:10 +0000</pubDate>
		<dc:creator>Gonow</dc:creator>
				<category><![CDATA[Eventos]]></category>
		<category><![CDATA[Gonow Tecnologia]]></category>
		<category><![CDATA[Rails]]></category>
		<category><![CDATA[Evento Ruby]]></category>
		<category><![CDATA[fabio akita]]></category>
		<category><![CDATA[gonow tecnologia]]></category>
		<category><![CDATA[Linguagem Ruby]]></category>
		<category><![CDATA[ruby on rails]]></category>
		<category><![CDATA[RubyKaigi]]></category>
		<category><![CDATA[RubyKaigi 2011]]></category>
		<category><![CDATA[RubyKaigi Japão]]></category>
		<category><![CDATA[RubyonRails]]></category>

		<guid isPermaLink="false">http://www.gonow.com.br/blog/?p=1393</guid>
		<description><![CDATA[Criado em 2006 e considerado um dos principais congressos de Ruby no Japão, o RubyKaigi espera atrair mais de 2 mil rubistas na edição 2011 do evento, que será realizado em [...]]]></description>
				<content:encoded><![CDATA[<p><a href="http://www.gonow.com.br/blog/wp-content/uploads/2011/07/akita.png"><img class="alignright size-medium wp-image-1395" title="Palestra Akita no Japão" src="http://www.gonow.com.br/blog/wp-content/uploads/2011/07/akita-300x174.png" alt="" width="300" height="174" /></a>Criado em 2006 e considerado um dos principais congressos de Ruby no Japão, o <a href="http://rubykaigi.org/2011/en/about" target="_blank">RubyKaigi</a> espera atrair mais de 2 mil rubistas na edição 2011 do evento, que será realizado em Tóquio entre os dias 16 e 18 de Julho. Fábio AKita, nosso coordenador e mais conhecido <a href="http://akitaonrails.com/" target="_blank">evangelista Ruby</a> brasileiro, idealizador da <a href="http://rubyconf2011.akitaonrails.com/" target="_blank">RubyConfBrasil</a>, estará presente para ministrar uma palestra sobre o <a href="http://rubykaigi.org/2011/en/schedule/details/18S06" target="_blank">crescimento sustentável do mercado brasileiro de Ruby</a> desde quando começou a trabalhar com esta linguagem, em meados de 2005.</p>
<p>Akita será o <a href="http://rubykaigi.org/2011/en/schedule/grid" target="_blank">primeiro sul-americano</a> convidado a se apresentar no evento &#8211; com exceção da Antártica &#8211; e está bastante empolgado com o convite, conforme relata em seu <a href="http://akitaonrails.com/2011/07/11/indo-para-a-rubykaigi-2011-fechando-um-ciclo" target="_blank">blog pessoal</a>.</p>
<p>Veja fotos das duas últimas edições do RubyKaigi em:</p>
<p><a href="http://www.flickr.com/photos/kakutani/3745179235/in/set-72157621775178508" target="_blank">http://www.flickr.com/photos/kakutani/3745179235/in/set-72157621775178508</a><br />
<a href="http://www.flickr.com/photos/kakutani/5010963014/in/set-72157624877140969" target="_blank">http://www.flickr.com/photos/kakutani/5010963014/in/set-72157624877140969</a></p>
<p>Visite também a página oficial do evento:<br />
<a href="http://rubykaigi.org/2011/en" target="_blank">http://rubykaigi.org/2011/en</a></p>
<div style="min-height:33px;" class="really_simple_share really_simple_share_button robots-nocontent snap_nopreview"><div class="really_simple_share_facebook_share" style="width:100px;"><a name="fb_share" rel="nofollow" href="https://www.facebook.com/sharer.php?u=www.gonow.com.br%2Fblog%2F2011%2F07%2F11%2Ffabio-akita-ira-palestrar-em-evento-de-ruby-no-japao%2F&amp;t=F%C3%A1bio%20Akita%20ir%C3%A1%20palestrar%20em%20evento%20de%20Ruby%20no%20Jap%C3%A3o" title="Share on Facebook" target="_blank">Share!</a></div></div>
		<div style="clear:both;"></div>]]></content:encoded>
			<wfw:commentRss>http://www.gonow.com.br/blog/2011/07/11/fabio-akita-ira-palestrar-em-evento-de-ruby-no-japao/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Tech-Talk Gonow &#8211; Capítulo 1</title>
		<link>http://www.gonow.com.br/blog/2011/05/24/tech-talk-gonow-capitulo-1/</link>
		<comments>http://www.gonow.com.br/blog/2011/05/24/tech-talk-gonow-capitulo-1/#comments</comments>
		<pubDate>Tue, 24 May 2011 19:25:11 +0000</pubDate>
		<dc:creator>Gonow</dc:creator>
				<category><![CDATA[Mercado de TI]]></category>
		<category><![CDATA[Rails]]></category>
		<category><![CDATA[fabio akita]]></category>
		<category><![CDATA[gonow tecnologia]]></category>

		<guid isPermaLink="false">http://www.gonow.com.br/blog/?p=949</guid>
		<description><![CDATA[Conselhos para quem está começando no mercado de trabalho de TI não faltam. Você pode pesquisar zilhões de páginas na web que satisfaçam sua curiosidade de saber, por exemplo, qual [...]]]></description>
				<content:encoded><![CDATA[<p>Conselhos para quem está começando no mercado de trabalho de TI não faltam. Você pode pesquisar zilhões de páginas na web que satisfaçam sua curiosidade de saber, por exemplo, qual a melhor metodologia a ser aplicada na execução de um projeto, qual a mais eficaz, qual a que melhor atende as suas necessidades e &#8211; principalmente &#8211; as do seu cliente. Mas tem momentos que tudo o que você mais deseja é que alguém lhe dê o tão almejado e sagrado &#8220;caminho das pedras&#8221;. Ou ainda um ombro amigo, uma reflexão de qual a melhor forma de agir, ou simplesmente uma abordagem &#8220;holística&#8221; da coisa toda (usando um termo empregado das ciências naturais) para só então pensar em qual rumo tomar no seu dia-a-dia como programador/desenvolvedor.<br />
Pois bem. Atente a essas palavras, pois elas são para você:</p>
<p><iframe width="425" height="349" src="http://www.youtube.com/embed/ACIc-V156k8" frameborder="0" allowfullscreen></iframe></p>
<div style="min-height:33px;" class="really_simple_share really_simple_share_button robots-nocontent snap_nopreview"><div class="really_simple_share_facebook_share" style="width:100px;"><a name="fb_share" rel="nofollow" href="https://www.facebook.com/sharer.php?u=www.gonow.com.br%2Fblog%2F2011%2F05%2F24%2Ftech-talk-gonow-capitulo-1%2F&amp;t=Tech-Talk%20Gonow%20%26%238211%3B%20Cap%C3%ADtulo%201" title="Share on Facebook" target="_blank">Share!</a></div></div>
		<div style="clear:both;"></div>]]></content:encoded>
			<wfw:commentRss>http://www.gonow.com.br/blog/2011/05/24/tech-talk-gonow-capitulo-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Fabio Akita leva o Ruby para Unesp e UFSCar em palestra e workshop</title>
		<link>http://www.gonow.com.br/blog/2011/05/24/fabio-akita-palestra-leva-o-ruby-para-unesp-e-ufscar/</link>
		<comments>http://www.gonow.com.br/blog/2011/05/24/fabio-akita-palestra-leva-o-ruby-para-unesp-e-ufscar/#comments</comments>
		<pubDate>Tue, 24 May 2011 16:10:03 +0000</pubDate>
		<dc:creator>Gonow</dc:creator>
				<category><![CDATA[Eventos]]></category>
		<category><![CDATA[Mercado de TI]]></category>
		<category><![CDATA[Rails]]></category>
		<category><![CDATA[Semana da Computação e Tecnologia da UFSCar]]></category>
		<category><![CDATA[XXI Semana da Computação da Unesp]]></category>

		<guid isPermaLink="false">http://www.gonow.com.br/blog/?p=935</guid>
		<description><![CDATA[Semana passada nosso coordenador das equipes Ruby fez uma espécie de &#8220;tour&#8221; pelo interior de São Paulo em dois congressos distintos: um deles foi a III Semana da Computação e [...]]]></description>
				<content:encoded><![CDATA[<p>Semana passada nosso coordenador das equipes Ruby fez uma espécie de &#8220;tour&#8221; pelo interior de São Paulo em dois congressos distintos: um deles foi a <a href="http://www.ufscar.br/secot/" target="_blank">III Semana da Computação e Tecnologia da UFSCar</a> de Sorocaba, onde ministrou um workshop de 4 horas. A outra foi a <a href="http://www.semac.sjrp.unesp.br/index.php?page=programacao" target="_blank">XXI Semana da Computação da Unesp</a>, em São José do Rio Preto.</p>
<p>Apresentamos aqui os slides das palestras de Fabio Akita, para que você possa compatilhar referências interessantes para estudo e também clarear as ideias para novos rumos na área, que é justamente o que ele incentiva e desafia suas equipes a fazer diariamente aqui na Gonow:</p>
<div style="width:425px" id="__ss_8070585"> <strong style="display:block;margin:12px 0 4px"><a href="http://www.slideshare.net/akitaonrails/semac-2011-apresentando-ruby-e-ruby-on-rails" title="SEMAC 2011 - Apresentando Ruby e Ruby on Rails">SEMAC 2011 &#8211; Apresentando Ruby e Ruby on Rails</a></strong> <iframe src="http://www.slideshare.net/slideshow/embed_code/8070585" width="425" height="355" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe>
<div style="padding:5px 0 12px"> View more <a href="http://www.slideshare.net/">presentations</a> from <a href="http://www.slideshare.net/akitaonrails">Fabio Akita</a> </div>
</p></div>
<div style="width:425px" id="__ss_8070674"> <strong style="display:block;margin:12px 0 4px"><a href="http://www.slideshare.net/akitaonrails/workshop-de-ruby-ufscar-2011" title="Workshop de Ruby - UFSCar 2011">Workshop de Ruby &#8211; UFSCar 2011</a></strong> <iframe src="http://www.slideshare.net/slideshow/embed_code/8070674" width="425" height="355" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe>
<div style="padding:5px 0 12px"> View more <a href="http://www.slideshare.net/">presentations</a> from <a href="http://www.slideshare.net/akitaonrails">Fabio Akita</a> </div>
</p></div>
<div style="min-height:33px;" class="really_simple_share really_simple_share_button robots-nocontent snap_nopreview"><div class="really_simple_share_facebook_share" style="width:100px;"><a name="fb_share" rel="nofollow" href="https://www.facebook.com/sharer.php?u=www.gonow.com.br%2Fblog%2F2011%2F05%2F24%2Ffabio-akita-palestra-leva-o-ruby-para-unesp-e-ufscar%2F&amp;t=Fabio%20Akita%20leva%20o%20Ruby%20para%20Unesp%20e%20UFSCar%20em%20palestra%20e%20workshop" title="Share on Facebook" target="_blank">Share!</a></div></div>
		<div style="clear:both;"></div>]]></content:encoded>
			<wfw:commentRss>http://www.gonow.com.br/blog/2011/05/24/fabio-akita-palestra-leva-o-ruby-para-unesp-e-ufscar/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SOLID Ruby: Liskov Substitution Principle e Interface Segregation Principle</title>
		<link>http://www.gonow.com.br/blog/2011/05/23/solid-ruby-liskov-substitution-principle-e-interface-segregation-principle/</link>
		<comments>http://www.gonow.com.br/blog/2011/05/23/solid-ruby-liskov-substitution-principle-e-interface-segregation-principle/#comments</comments>
		<pubDate>Mon, 23 May 2011 21:02:19 +0000</pubDate>
		<dc:creator>Gonow</dc:creator>
				<category><![CDATA[Rails]]></category>

		<guid isPermaLink="false">http://www.gonow.com.br/blog/?p=927</guid>
		<description><![CDATA[Por Lucas Húngaro* Para fechar os cinco princípios do SOLID, vamos falar sobre os dois princípios restantes: Liskov Substitution Principle (LSP) e Interface Segregation Principle (ISP). Como já foi falado [...]]]></description>
				<content:encoded><![CDATA[<p><strong><em>Por Lucas Húngaro</em></strong>*</p>
<p>Para fechar os cinco princípios do SOLID, vamos falar sobre os dois princípios restantes: <a href="http://en.wikipedia.org/wiki/Liskov_substitution_principle">Liskov Substitution Principle</a> (LSP) e <a href="http://en.wikipedia.org/wiki/Interface_segregation_principle">Interface Segregation Principle</a> (ISP).</p>
<p>Como já foi falado anteriormente, esses princípios foram formulados  com linguagens estáticas em mente e, por essa razão, precisam ser  “adaptados” para que sejam aplicados em linguagens dinâmicas. Note que,  em suas formas originais, esses princípios em geral recorrem a técnicas  como herança para contornar as “amarras” do sistema estático de tipos.</p>
<p>No caso do LSP temos mais um exemplo disso. Em sua forma original ele é definido da seguinte forma:</p>
<blockquote><p>If for each object o1 of type S there is an object o2 of  type T such that for all programs P defined in terms of T, the behavior  of P is unchanged when o1 is substituted for o2, then S is a subtype of  T.</p></blockquote>
<p>O que foi “traduzido” para o OOP da seguinte forma:</p>
<blockquote><p>Functions that use pointers or references to base classes must be able to use objects of derived classes without knowing it.</p></blockquote>
<p>Em Ruby isso não é muito problemático pois, como sabemos, não estamos  presos à tipos. O importante, como já vimos com o OCP, é manter a mesma  interface, de forma que se precisarmos modificar alguma entidade, as  demais entidades que dela dependem não precisem ser modificadas.</p>
<p>Além da interface, também precisamos prestar atenção ao  comportamento. Modificações no comportamento podem fazer com que  clientes da entidade sofram consequências inesperadas.</p>
<p>Já o ISP é definido da seguinte forma:</p>
<blockquote><p>Clients should not be forced to depend upon interfaces that they do not use.</p></blockquote>
<p>Isso quer dizer que um cliente (entidade que depende de alguma outra)  não deve depender de interfaces não utilizadas por ele pois, em caso de  modificação nessa interface, mesmo que o cliente em questão não a  utilize, também terá que ser modificado.</p>
<p>Em linguagens estáticas há uma série de técnicas e artifícios para  atingir isso. Em Ruby, o Duck Typing nos entrega esse princípio “de  graça”, já que cada entidade depende apenas da interface que utiliza,  independente do restante (e de tipos). Apesar disso, devemos sempre  buscar entidades com interfaces coesas e bem delimitadas, evitando que  sejam muito extensas e genéricas (o SRP se aplica aqui também). Aplicar o  design pattern <a href="http://en.wikipedia.org/wiki/Adapter_pattern">Adapter</a> é uma boa forma de respeitar isso.</p>
<p>Bem, é fácil perceber que os últimos três princípios discutidos (OCP,  LSP e ISP) lidam diretamente com formas de garantir interfaces estáveis  para atingirmos o nosso objetivo de evitar que mudanças no código gerem  um “efeito dominó” e façam com que tenhamos que alterar várias partes  do software.</p>
<p>Mas, já que não temos estruturas como Interfaces e classes abstratas  para garantir que estamos respeitando a interface definida, como  garantir a aplicação desses princípios? Bom, há algumas formas para  fazer isso. Aprenda a “emular” uma interface e pesquisar outros materiais recomendados em:</p>
<p><a href="http://blog.lucashungaro.com/2011/05/18/solid-ruby-liskov-substitution-principle-e-interface-segregation-principle/" target="_blank">http://blog.lucashungaro.com/2011/05/18/solid-ruby-liskov-substitution-principle-e-interface-segregation-principle/</a></p>
<div><em></em><em>*Lucas Húngaro é desenvolvedor da equipe de Ruby da Gonow.</em></div>
<div style="min-height:33px;" class="really_simple_share really_simple_share_button robots-nocontent snap_nopreview"><div class="really_simple_share_facebook_share" style="width:100px;"><a name="fb_share" rel="nofollow" href="https://www.facebook.com/sharer.php?u=www.gonow.com.br%2Fblog%2F2011%2F05%2F23%2Fsolid-ruby-liskov-substitution-principle-e-interface-segregation-principle%2F&amp;t=SOLID%20Ruby%3A%20Liskov%20Substitution%20Principle%20e%20Interface%20Segregation%20Principle" title="Share on Facebook" target="_blank">Share!</a></div></div>
		<div style="clear:both;"></div>]]></content:encoded>
			<wfw:commentRss>http://www.gonow.com.br/blog/2011/05/23/solid-ruby-liskov-substitution-principle-e-interface-segregation-principle/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SOLID Ruby: Dependency Inversion Principle</title>
		<link>http://www.gonow.com.br/blog/2011/05/23/solid-ruby-dependency-inversion-principle/</link>
		<comments>http://www.gonow.com.br/blog/2011/05/23/solid-ruby-dependency-inversion-principle/#comments</comments>
		<pubDate>Mon, 23 May 2011 20:48:40 +0000</pubDate>
		<dc:creator>Gonow</dc:creator>
				<category><![CDATA[Rails]]></category>

		<guid isPermaLink="false">http://www.gonow.com.br/blog/?p=923</guid>
		<description><![CDATA[Por Lucas Húngaro* Continuando os artigos sobre SOLID, vamos falar um pouco sobre o Dependency Inversion Principle. Em resumo, esse princípio diz que os componentes devem depender de abstrações ao [...]]]></description>
				<content:encoded><![CDATA[<p><em><strong>Por Lucas Húngaro*</strong></em></p>
<p>Continuando os artigos sobre SOLID, vamos falar um pouco sobre o <a href="http://en.wikipedia.org/wiki/Dependency_inversion_principle" target="_blank">Dependency Inversion Principle</a>. Em resumo, esse princípio diz que os componentes devem depender de abstrações ao invés de implementações.</p>
<p>Bom, isso faz muito sentido em linguagens estáticas como Java, onde há estruturas como Interfaces, classes abstratas e outras parafernalhas. No final, na minha modesta opinião, o código torna-se um espetáculo bizarro de indireção e pode mais confundir do que ajudar se você não for cuidadoso. Mas e nas linguagens dinâmicas?</p>
<p>É comum ouvir que, quando você utiliza uma linguagem que contém Duck Typing (a característica que mais gosto no Ruby), você obtém os benefícios do DIP “de graça”. Isso não é bem verdade. Você os obtém de graça somente se pedir com jeitinho. <img src='http://www.gonow.com.br/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>O que quero dizer com isso?</p>
<p>Acesse a post original com as explicações das telas e também uma leitura adicional para clarear ainda mais esta explanação:<br />
<a href="http://blog.lucashungaro.com/2011/05/09/solid-ruby-dependency-inversion-principle/" target="_blank">http://blog.lucashungaro.com/2011/05/09/solid-ruby-dependency-inversion-principle/</a></p>
<div style="min-height:33px;" class="really_simple_share really_simple_share_button robots-nocontent snap_nopreview"><div class="really_simple_share_facebook_share" style="width:100px;"><a name="fb_share" rel="nofollow" href="https://www.facebook.com/sharer.php?u=www.gonow.com.br%2Fblog%2F2011%2F05%2F23%2Fsolid-ruby-dependency-inversion-principle%2F&amp;t=SOLID%20Ruby%3A%20Dependency%20Inversion%20Principle" title="Share on Facebook" target="_blank">Share!</a></div></div>
		<div style="clear:both;"></div>]]></content:encoded>
			<wfw:commentRss>http://www.gonow.com.br/blog/2011/05/23/solid-ruby-dependency-inversion-principle/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SOLID Ruby: Open-Closed Principle</title>
		<link>http://www.gonow.com.br/blog/2011/05/20/solid-ruby-open-closed-principle/</link>
		<comments>http://www.gonow.com.br/blog/2011/05/20/solid-ruby-open-closed-principle/#comments</comments>
		<pubDate>Fri, 20 May 2011 17:26:33 +0000</pubDate>
		<dc:creator>Gonow</dc:creator>
				<category><![CDATA[Rails]]></category>
		<category><![CDATA[Open Closed Principle]]></category>
		<category><![CDATA[SOLID]]></category>
		<category><![CDATA[SOLID Ruby]]></category>

		<guid isPermaLink="false">http://www.gonow.com.br/blog/?p=895</guid>
		<description><![CDATA[Semanas atrás publicamos um post sobre SOLID Ruby, artigo de Lucas Húngaro, desenvolvedor da equipe de Ruby da Gonow. Lucas examinou a aplicação do Single Responsability Principle em detalhes, e [...]]]></description>
				<content:encoded><![CDATA[<p><em>Semanas atrás publicamos um post sobre SOLID Ruby, artigo de Lucas Húngaro, desenvolvedor da equipe de Ruby da Gonow. Lucas examinou a aplicação do Single Responsability Principle em detalhes, e neste post analisa o Open Closed Principle.</em></p>
<p><em> </em></p>
<p><em><strong>Por Lucas Húngaro*</strong><br />
</em></p>
<p>Muitos dos princípios da programação orientada a objetos foram criados com linguagens estáticas em mente. Esse é o caso do <a href="http://en.wikipedia.org/wiki/Open/closed_principle">Open-Closed Principle</a>, enunciado da seguinte maneira:</p>
<blockquote><p><em><strong>&#8220;Software entities (classes, modules, functions, etc) should be open for extension, but closed for modification.&#8221;</strong></em></p></blockquote>
<p>Originalmente, a ideia é que, uma vez finalizada, uma entidade só poderia ser modificada para correções. Qualquer nova “feature” deveria ser implementada em uma nova entidade, que aproveitaria o código da primeira principalmente através de herança. Isso resulta em reaproveitamento da implementação, mas não garante a consistência da interface.</p>
<p>Um pouco depois, com a introdução e popularização de classes abstratas e recursos de linguagem como Interfaces, o princípio evoluiu e passou a ser aplicado em conjunto com o DIP, fazendo com que o código sempre dependesse de interfaces ao invés de implementações. Com isso, era possível reaproveitar uma interface (closed) e modificar a implementação (open).</p>
<p>Mas e nas linguagens como Ruby, em que abrir uma classe é tão simples como defini-la e pode ser feito a qualquer momento? Será que esse princípio se aplica? Isso sempre é tema de muita discussão e aqui vai minha visão sobre isso.</p>
<p>Bem, com Ruby temos algumas formas de modificar uma classe, como herança, mixins, reabrir a classe ou usar metaprogramação. Perceba que, exceto pela herança, as outras maneiras infringem a ideia original do princípio. Mas, como já vimos, o próprio princípio evoluiu para abraçar mudanças nas linguagens e paradigmas.</p>
<p>O importante, principalmente em linguagens com Duck Typing (que, como já vimos, não dão a mínima para tipos), é que a interface seja fechada. Não importa o modo que você escolher para fazer as modificações, desde que a “superfície de contato” entre as entidades permaneça estável.</p>
<p>No exemplo do post anterior poderíamos modificar as classes que passamos como dependências via parâmetro e utilizá-las sem problemas, desde que a interface permanecesse a mesma. Uma vantagem adicional da tipagem dinâmica é que nesse caso podemos utilizar também herança (modificando o “tipo”) sem precisar modificar o código cliente, que só se importa com a interface.</p>
<p>Dessa forma, podemos modificar um pouco o enunciado do OCP para adaptá-lo à nossa linguagem preferida:</p>
<blockquote><p><em><strong>&#8220;Software entities (classes, modules, functions, etc) should be open for extension, but closed for interface modification.&#8221;</strong></em></p></blockquote>
<p>Recomendo esse vídeo-podcast sobre o assunto: <a href="http://www.heartmindcode.com/blog/2011/03/monkeypatching-and-the-open-closed-principle/">Monkeypatching and the Open-Closed Principle</a>.</p>
<p>*Acesse o post anterior sobre Single Responsability Principle no <a href="http://blog.lucashungaro.com/2011/05/11/solid-ruby-open-closed-principle/" target="_blank">blog pessoal</a> de Lucas Húngaro.<em></em></p>
<div style="min-height:33px;" class="really_simple_share really_simple_share_button robots-nocontent snap_nopreview"><div class="really_simple_share_facebook_share" style="width:100px;"><a name="fb_share" rel="nofollow" href="https://www.facebook.com/sharer.php?u=www.gonow.com.br%2Fblog%2F2011%2F05%2F20%2Fsolid-ruby-open-closed-principle%2F&amp;t=SOLID%20Ruby%3A%20Open-Closed%20Principle" title="Share on Facebook" target="_blank">Share!</a></div></div>
		<div style="clear:both;"></div>]]></content:encoded>
			<wfw:commentRss>http://www.gonow.com.br/blog/2011/05/20/solid-ruby-open-closed-principle/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Um pouco de SOLID Ruby</title>
		<link>http://www.gonow.com.br/blog/2011/05/04/um-pouco-de-solid-ruby/</link>
		<comments>http://www.gonow.com.br/blog/2011/05/04/um-pouco-de-solid-ruby/#comments</comments>
		<pubDate>Wed, 04 May 2011 21:36:39 +0000</pubDate>
		<dc:creator>Gonow</dc:creator>
				<category><![CDATA[Rails]]></category>
		<category><![CDATA[Single Responsability Principle]]></category>
		<category><![CDATA[SOLID]]></category>
		<category><![CDATA[SOLID Ruby]]></category>

		<guid isPermaLink="false">http://www.gonow.com.br/blog/?p=819</guid>
		<description><![CDATA[O principal objetivo de se usar técnicas de programação orientada a objetos é criar um código que tenha baixo custo de manutenção, ou seja, que não demande muito tempo e [...]]]></description>
				<content:encoded><![CDATA[<p>O principal objetivo de se usar técnicas de programação orientada a objetos é criar um código que tenha baixo custo de manutenção, ou seja, que não demande muito tempo e pessoas para correções e melhorias. Essa é uma proposição de Lucas Húngaro, nosso desenvolvedor da equipe de Ruby, que apresenta em seu artigo 5 princípios para atingir esse objetivo com mais facilidade. Denominada &#8220;<a href="http://en.wikipedia.org/wiki/Solid_%28object-oriented_design%29" target="_blank">SOLID</a>&#8220;, a sigla embute os seguintes conceitos:</p>
<ul>
<li><strong>S</strong>ingle Responsibility Principle</li>
<li><strong>O</strong>pen-Closed Principle</li>
<li><strong>L</strong>iskov Substitution Principle</li>
<li><strong>I</strong>nterface Segregation Principle</li>
<li><strong>D</strong>ependency Inversion Principle</li>
</ul>
<p>O objetivo desses princípios é fazer com que alterações necessárias sejam feitas no menor número possível de locais no código. Em outras palavras, é diminuir o custo dessas mudanças através de um design que reduz os efeitos colaterais das modificações.<br />
Cada um desses conceitos merece uma investigação mais detalhada. Conheça então um pouco mais sobre a aplicação do <a href="http://en.wikipedia.org/wiki/Single_responsibility_principle" target="_blank">Single Responsibility Principle</a> em Ruby acessando <a href="http://blog.lucashungaro.com/2011/05/04/solid-ruby-single-responsibility-principle/" target="_blank">o post de Lucas em seu blog pessoal</a> e bons estudos!  <img src='http://www.gonow.com.br/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<div style="min-height:33px;" class="really_simple_share really_simple_share_button robots-nocontent snap_nopreview"><div class="really_simple_share_facebook_share" style="width:100px;"><a name="fb_share" rel="nofollow" href="https://www.facebook.com/sharer.php?u=www.gonow.com.br%2Fblog%2F2011%2F05%2F04%2Fum-pouco-de-solid-ruby%2F&amp;t=Um%20pouco%20de%20SOLID%20Ruby" title="Share on Facebook" target="_blank">Share!</a></div></div>
		<div style="clear:both;"></div>]]></content:encoded>
			<wfw:commentRss>http://www.gonow.com.br/blog/2011/05/04/um-pouco-de-solid-ruby/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Como desenvolver uma aplicação para o Facebook do Zero com Rails 3 (Parte 2)</title>
		<link>http://www.gonow.com.br/blog/2011/05/02/como-desenvolver-uma-aplicacao-para-o-facebook-do-zero-com-rails-3-parte-2/</link>
		<comments>http://www.gonow.com.br/blog/2011/05/02/como-desenvolver-uma-aplicacao-para-o-facebook-do-zero-com-rails-3-parte-2/#comments</comments>
		<pubDate>Mon, 02 May 2011 21:42:05 +0000</pubDate>
		<dc:creator>Gonow</dc:creator>
				<category><![CDATA[Rails]]></category>
		<category><![CDATA[Aplicativo Facebook Rails]]></category>
		<category><![CDATA[Aplicativo Rails]]></category>

		<guid isPermaLink="false">http://www.gonow.com.br/blog/?p=785</guid>
		<description><![CDATA[Lembra do post da semana passada ensinando como desenvolver uma aplicação para o Facebook com Rails 3? Pois bem. Chegamos à parte 2 e também à parte 2 e 1/2 [...]]]></description>
				<content:encoded><![CDATA[<p><a href="http://www.gonow.com.br/blog/wp-content/uploads/2011/05/serra.jpg"><img class="alignright size-medium wp-image-795" title="Sistema binário" src="http://www.gonow.com.br/blog/wp-content/uploads/2011/05/serra-300x199.jpg" alt="" width="300" height="199" /></a>Lembra do post da semana passada ensinando como desenvolver uma aplicação para o Facebook com Rails 3? Pois bem. Chegamos à <a href="http://blog.serraduralabs.com/desenvolvendo-uma-aplicacao-facebook-do-zero-2" target="_blank">parte 2</a> e também à <a href="http://blog.serraduralabs.com/desenvolvendo-uma-aplicacao-facebook-do-zero" target="_blank">parte 2 e 1/2</a> na construção do aplicativo, e você confere aqui passo a passo como fazer e chegar ao resultado final na tela do Facebook. Rodrigo Serradura, nosso desenvolvedor Ruby, ensina na parte 2 a integrar Rails no projeto e apresenta o código utilizado. E na parte 2 e 1/2, explica como entender o que esse código faz.</p>
<p>E fique despreocupado pois o tutorial de como fazer uma aplicação Rails termina logo na parte 2. Mas para você que é ou não especialista em Ruby on Rails, Serradura fornece uma série de dicas e links úteis onde colher informações para se aprofundar no tema.</p>
<p>Quer aprender a fazer? Então <a href="http://blog.serraduralabs.com/" target="_blank">acesse o blog e veja os detalhes</a>!<br />
Lembrando que esse é o post número 2 de uma série, então fique ligado no blog Gonow! <img src='http://www.gonow.com.br/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<div style="min-height:33px;" class="really_simple_share really_simple_share_button robots-nocontent snap_nopreview"><div class="really_simple_share_facebook_share" style="width:100px;"><a name="fb_share" rel="nofollow" href="https://www.facebook.com/sharer.php?u=www.gonow.com.br%2Fblog%2F2011%2F05%2F02%2Fcomo-desenvolver-uma-aplicacao-para-o-facebook-do-zero-com-rails-3-parte-2%2F&amp;t=Como%20desenvolver%20uma%20aplica%C3%A7%C3%A3o%20para%20o%20Facebook%20do%20Zero%20com%20Rails%203%20%28Parte%202%29" title="Share on Facebook" target="_blank">Share!</a></div></div>
		<div style="clear:both;"></div>]]></content:encoded>
			<wfw:commentRss>http://www.gonow.com.br/blog/2011/05/02/como-desenvolver-uma-aplicacao-para-o-facebook-do-zero-com-rails-3-parte-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Quer saber como desenvolver uma aplicação para o Facebook do Zero com Rails 3?</title>
		<link>http://www.gonow.com.br/blog/2011/04/28/quer-saber-como-desenvolver-uma-aplicacao-para-o-facebook-do-zero-com-rails-3/</link>
		<comments>http://www.gonow.com.br/blog/2011/04/28/quer-saber-como-desenvolver-uma-aplicacao-para-o-facebook-do-zero-com-rails-3/#comments</comments>
		<pubDate>Thu, 28 Apr 2011 21:38:25 +0000</pubDate>
		<dc:creator>Gonow</dc:creator>
				<category><![CDATA[Rails]]></category>
		<category><![CDATA[Aplicativo Facebook Rails]]></category>
		<category><![CDATA[Aplicativo Rails]]></category>

		<guid isPermaLink="false">http://www.gonow.com.br/blog/?p=739</guid>
		<description><![CDATA[O Facebook hoje conta com mais de 500 milhões de usuários ativos, sendo que desse número, aproximadamente 50% acessa a rede social todos os dias. As pessoas gastam em média [...]]]></description>
				<content:encoded><![CDATA[<p><a href="http://www.gonow.com.br/blog/wp-content/uploads/2011/04/face.png"><img class="alignright size-medium wp-image-759" title="Tela para desenvolvedores" src="http://www.gonow.com.br/blog/wp-content/uploads/2011/04/face-300x142.png" alt="" width="300" height="142" /></a>O Facebook hoje conta com mais de 500 milhões de usuários ativos, sendo que desse número, aproximadamente 50% acessa a rede social todos os dias. As pessoas gastam em média 700 bilhões de minutos por mês no <a href="http://www.facebook.com/press/info.php?statistics" target="_blank">Facebook</a>. Diante de números tão vultosos, como enxergar uma oportunidade de mercado neles? Por se tratar de uma interface social, o poder de <a href="http://pt.wikipedia.org/wiki/Marketing_viral" target="_blank">viralização</a> que ela proporciona merece ser melhor investigado.</p>
<p>E quem resolveu dar esse pontapé inicial foi Rodrigo Serradura, nosso desenvolvedor Ruby, que tem se debruçado na criação de uma aplicação para Facebook do zero com Rails 3. Será uma série de 7 posts, ensinando passo a passo como matar essa charada. O aplicativo que ele propõe é bastante simples e mostrará quantos amigos do sexo masculino e feminino um usuário possui e com quais dos gêneros ele mais interage.</p>
<p>Quer aprender a fazer? Então <a href="http://blog.serraduralabs.com/desenvolvendo-uma-aplicacao-facebook-do-zero-0" target="_blank">acesse o blog</a> e veja os detalhes!<br />
Lembrando que esse é o post número 1 de uma série, portanto em breve divulgaremos a segunda parte, fique ligado no blog Gonow! <img src='http://www.gonow.com.br/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<div style="min-height:33px;" class="really_simple_share really_simple_share_button robots-nocontent snap_nopreview"><div class="really_simple_share_facebook_share" style="width:100px;"><a name="fb_share" rel="nofollow" href="https://www.facebook.com/sharer.php?u=www.gonow.com.br%2Fblog%2F2011%2F04%2F28%2Fquer-saber-como-desenvolver-uma-aplicacao-para-o-facebook-do-zero-com-rails-3%2F&amp;t=Quer%20saber%20como%20desenvolver%20uma%20aplica%C3%A7%C3%A3o%20para%20o%20Facebook%20do%20Zero%20com%20Rails%203%3F" title="Share on Facebook" target="_blank">Share!</a></div></div>
		<div style="clear:both;"></div>]]></content:encoded>
			<wfw:commentRss>http://www.gonow.com.br/blog/2011/04/28/quer-saber-como-desenvolver-uma-aplicacao-para-o-facebook-do-zero-com-rails-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Gonow inicia projeto de Home Broker para corretora de valores</title>
		<link>http://www.gonow.com.br/blog/2011/04/15/gonow-inicia-projeto-de-home-broker-para-corretora-de-valores/</link>
		<comments>http://www.gonow.com.br/blog/2011/04/15/gonow-inicia-projeto-de-home-broker-para-corretora-de-valores/#comments</comments>
		<pubDate>Fri, 15 Apr 2011 19:29:37 +0000</pubDate>
		<dc:creator>Gonow</dc:creator>
				<category><![CDATA[Gonow Tecnologia]]></category>
		<category><![CDATA[Rails]]></category>
		<category><![CDATA[gonow tecnologia]]></category>
		<category><![CDATA[RoR]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[ruby on rails]]></category>

		<guid isPermaLink="false">http://www.gonow.com.br/blog/?p=691</guid>
		<description><![CDATA[Muitas pessoas imaginam que com a tecnologia Ruby só é possível criar pequenos websites ou hotsites de campanhas publicitárias. Mas na prática as coisas não são bem assim. E a [...]]]></description>
				<content:encoded><![CDATA[<p>Muitas pessoas imaginam que com a tecnologia Ruby só é possível criar pequenos websites ou hotsites de campanhas publicitárias. Mas na prática as coisas não são bem assim. E a Gonow Tecnologia, posicionando-se cada vez mais no mercado como a maior e melhor empresa provedora de soluções Ruby on Rails no Brasil, inicia projeto com uma corretora de valores para construção de uma interface de <a href="http://pt.wikipedia.org/wiki/Home_Broker" target="_blank">home broker</a>.</p>
<p>O projeto é bem ousado e visa criar uma nova linguagem para aproximar mercado de valores e pessoas físicas sem conhecimentos avançados em finanças. &#8220;Será um portal e uma plataforma que permitirá realizar operações na Bolsa com facilidade, numa interface intuitiva e convidativa. E a plataforma Rails será muito importante para garantir produtividade, dinamismo, e integração com vários back-ends tradicionais voltados à Bolsa de Valores&#8221;, explica Fabio Akita, coordenador do projeto e um dos principais expoentes da linguagem Ruby no Brasil. Esse é um dos maiores projetos com a plataforma, e em breve divulgaremos como vai ficar a solução &#8211; e a satisfação &#8211; para o cliente.</p>
<div style="min-height:33px;" class="really_simple_share really_simple_share_button robots-nocontent snap_nopreview"><div class="really_simple_share_facebook_share" style="width:100px;"><a name="fb_share" rel="nofollow" href="https://www.facebook.com/sharer.php?u=www.gonow.com.br%2Fblog%2F2011%2F04%2F15%2Fgonow-inicia-projeto-de-home-broker-para-corretora-de-valores%2F&amp;t=Gonow%20inicia%20projeto%20de%20Home%20Broker%20para%20corretora%20de%20valores" title="Share on Facebook" target="_blank">Share!</a></div></div>
		<div style="clear:both;"></div>]]></content:encoded>
			<wfw:commentRss>http://www.gonow.com.br/blog/2011/04/15/gonow-inicia-projeto-de-home-broker-para-corretora-de-valores/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
