<?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>WEB COM FARINHA</title>
	<atom:link href="http://webcomfarinha.com/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://webcomfarinha.com/blog</link>
	<description>Devorando a Web... e Comendo com Farinha</description>
	<lastBuildDate>Sun, 20 Jan 2013 19:30:44 +0000</lastBuildDate>
	<language>pt-BR</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5</generator>
		<item>
		<title>Git: Juntando vários Commits em um só usando SQUASH</title>
		<link>http://webcomfarinha.com/blog/juntando-varios-commits-em-um-so-usando-git-squash/</link>
		<comments>http://webcomfarinha.com/blog/juntando-varios-commits-em-um-so-usando-git-squash/#comments</comments>
		<pubDate>Sun, 20 Jan 2013 18:26:10 +0000</pubDate>
		<dc:creator>Matheus</dc:creator>
				<category><![CDATA[Git]]></category>
		<category><![CDATA[branch]]></category>
		<category><![CDATA[branches]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[git merge squash]]></category>
		<category><![CDATA[merge]]></category>
		<category><![CDATA[squash]]></category>
		<category><![CDATA[Truque e Dicas]]></category>
		<category><![CDATA[versionamento]]></category>

		<guid isPermaLink="false">http://webcomfarinha.com/blog/?p=624</guid>
		<description><![CDATA[Hoje, deixo aqui uma dica bastante legal a ser utilizada no versionamento de seus códigos utilizando Git. Situação Você está com o código de seu projeto organizado e versionado com Git. Para desenvolvimento de novas funcionalidades, você adota a boa prática do uso de branches, assim como para correções de erros também &#8211; bugfixes. Adotando <a href='http://webcomfarinha.com/blog/juntando-varios-commits-em-um-so-usando-git-squash/' class='excerpt-more'>[...]</a>]]></description>
				<content:encoded><![CDATA[<p style="text-align: justify;">Hoje, deixo aqui uma dica bastante legal a ser utilizada no versionamento de seus códigos utilizando <strong>Git</strong>.</p>
<h2 style="text-align: justify;">Situação</h2>
<p style="text-align: justify;">Você está com o código de seu projeto organizado e versionado com <strong>Git</strong>. Para desenvolvimento de novas funcionalidades, você adota a boa prática do uso de branches, assim como para correções de erros também &#8211; bugfixes.</p>
<p style="text-align: justify;">Adotando o fluxo recomendado em um versionamento Git, teríamos um ambiente semelhante a figura abaixo:</p>
<p style="text-align: justify;"><img class="aligncenter" alt="pricipais branches no versionamento com Git" src="http://git-scm.com/images/about/branches@2x.png" width="350" height="202" /></p>
<p style="font-size: 10px; text-align: center;">http://git-scm.com/images/about/branches@2x.png</p>
<p style="text-align: justify;"><span id="more-624"></span>Seu código em produção, funcional, testado, aprovado, estaria no <strong>branch master.</strong> Para desenvolvimento, sempre teríamos um branch específico (neste caso chamado <strong>develop</strong>), do qual criaríamos branches para cada funcionalidade, correção de bugs ou códigos adicionais. Assim, sempre ao término do desenvolvimento de um branch, faríamos um <strong>merge</strong> com o <strong>develop</strong>, resolveríamos os conflitos, faríamos testes e posteriormente jogaríamos o código pronto e funcional no branch principal (<strong>master</strong>).</p>
<p style="text-align: justify;">No fluxo normal de seu trabalho na correção de um bug no código vc seguirá (geralmente) as seguintes etapas:</p>
<ul style="text-align: justify;">
<li>criação de um branch bugfix a partir do branch develop.</li>
<li>desenvolvimento no branch bugfix de seu código para corrigir o erro.</li>
<li>merge/rebase dos branches develop e bugfix</li>
<li>rebase/merge no branch master com o branch develop</li>
</ul>
<h2 style="text-align: justify;">Problema</h2>
<p style="text-align: justify;">Como convenção de versionamento adotada na sua equipe na correção de bugs, o código retificado (com a solução do problema) deve ir para produção (branch master) em um único commit. Contudo, você como bom desenvolvedor e versionador <strong>Git</strong>, adota também a máxima <strong>&#8220;Commit all the time&#8221;</strong> para proteger seu código garantindo bom versionamento.</p>
<h2 style="text-align: justify;">Como Fazer?</h2>
<p style="text-align: justify;">Em seu desenvolvimento, não tenha medo ou preguiça de commitar. Em nosso caso, suponhamos que em seu branch bugfix vc realizou os seguintes commits:</p>
<ul style="text-align: justify;">
<li><span style="line-height: 13px;">Commit #1: inserindo novos testes para correção do bug;</span></li>
<li>Commit #2: implementando lógica para que os testes funcionem;</li>
<li>Commit #3: mais implementações para que os testes funcionem</li>
</ul>
<p style="text-align: justify;">Você consegue resolver o bug apresentado em seu código. Quando olha o status de seu branch percebe que ele possui 03 commits. Mas, para o merge com o branch develop, precisa ir tudo em um commit único. Como fazer? Simples:</p>
<p style="text-align: justify;"><em>$ git checkout develop</em></p>
<p style="text-align: justify;"><em>$ git merge &#8212; squash bugfix</em></p>
<p style="text-align: justify;">Veja o status de seu branch develop. Perceba que o Git trouxe para você todos os commits realizados em seu branch bugfix, mas não realizou ainda o commit no develop. Ele pega todos os arquivos, aplica o merge, porém deixa-os na <a href="http://git-scm.com/about/staging-area"><strong>staging area </strong></a>preparados para commit. Assim, basta você agora realizar um:</p>
<p style="text-align: justify;"><em>$ git commit -m &#8220;adicionando correcao do bug foo bla&#8221; </em></p>
<p style="text-align: justify;">que todos os commits do branch bugfix virarão um único commit no branch develop.</p>
<p style="text-align: justify;">O squash é muito útil, pois o desenvolvedor precisa commitar o tempo todo em seu ambiente de desenvolvimento garantindo a segurança de seu código e para manter o branch master mais clean e fácil de visualização, pois neste caso, toda a correção do bug estaria representado na linha do tempo por um único commit.</p>
]]></content:encoded>
			<wfw:commentRss>http://webcomfarinha.com/blog/juntando-varios-commits-em-um-so-usando-git-squash/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Palestra: Git: Primeiras Impressões e Primeiros Passos</title>
		<link>http://webcomfarinha.com/blog/palestra-git-primeiras-impressoes-e-primeiros-passos/</link>
		<comments>http://webcomfarinha.com/blog/palestra-git-primeiras-impressoes-e-primeiros-passos/#comments</comments>
		<pubDate>Fri, 11 Jan 2013 00:28:45 +0000</pubDate>
		<dc:creator>Matheus</dc:creator>
				<category><![CDATA[Campanhas & Eventos]]></category>
		<category><![CDATA[Palestras]]></category>
		<category><![CDATA[cpdx]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[palestras]]></category>
		<category><![CDATA[subversion]]></category>
		<category><![CDATA[svn]]></category>
		<category><![CDATA[ufba]]></category>
		<category><![CDATA[versionamento]]></category>

		<guid isPermaLink="false">http://webcomfarinha.com/blog/?p=608</guid>
		<description><![CDATA[Realizei no último dia 09 deste mês de Janeiro uma mini-palestra sobre o sistema de controle de versão distribuído mais conhecido e utilizado do momento: Git. A apresentação fez parte do primeiro encontro (de muitos que virão) do CPDx: Ciclo de Palestras para Desenvolvedores. O CPDx é uma iniciativa de servidores do Centro de Processamento <a href='http://webcomfarinha.com/blog/palestra-git-primeiras-impressoes-e-primeiros-passos/' class='excerpt-more'>[...]</a>]]></description>
				<content:encoded><![CDATA[<p style="text-align: justify;">Realizei no último dia 09 deste mês de Janeiro uma mini-palestra sobre o sistema de controle de versão distribuído mais conhecido e utilizado do momento: Git. A apresentação fez parte do primeiro encontro (de muitos que virão) do CPDx: Ciclo de Palestras para Desenvolvedores.</p>
<p style="text-align: justify;">O <a title="Ciclo de Palestras para Desenvolvedores" href="http://blog.ufba.br/cpdx">CPDx</a> é uma iniciativa de servidores do Centro de Processamento de Dados da Universidade Federal da Bahia (da qual faço parte desde Outubro/2012) para promover a discussão de tecnologias de desenvolvimento de software e tópicos relacionados. O formato dos encontros semanais são palestras com duração de 20 a 30 minutos, seguidos de 20 minutos de discussão.</p>
<p style="text-align: justify;">E aproveitando a &#8220;vibe&#8221;, o blog estará de volta com novos posts inclusive uma série de artigos sobre versionamento de código com Git.</p>
<p style="text-align: justify;">Deixo abaixo, link para os slides da palestra:</p>
<ul>
<li><span style="line-height: 13px;"><a href="https://speakerdeck.com/matheuslao/git-primeiras-impressoes">https://speakerdeck.com/matheuslao/git-primeiras-impressoes</a><br />
</span></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://webcomfarinha.com/blog/palestra-git-primeiras-impressoes-e-primeiros-passos/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Introdução às Metodologias Ágeis</title>
		<link>http://webcomfarinha.com/blog/introducao-as-metodologias-ageis/</link>
		<comments>http://webcomfarinha.com/blog/introducao-as-metodologias-ageis/#comments</comments>
		<pubDate>Sat, 06 Nov 2010 21:03:20 +0000</pubDate>
		<dc:creator>Matheus</dc:creator>
				<category><![CDATA[Web Standards]]></category>

		<guid isPermaLink="false">http://webcomfarinha.com/blog/?p=593</guid>
		<description><![CDATA[Processos ágeis de desenvolvimento de software. Assunto bom de estudar, discutir! Aqui no blog ainda não escrevi post nenhum, porém venho ao longo do ano lendo, conhecendo mais sobre esta nova maneira de enxergar o desenvolvimento de software e o trabalho em equipe. Iniciei na metade do ano de 2010 uma Pós Graduação em Qualidade <a href='http://webcomfarinha.com/blog/introducao-as-metodologias-ageis/' class='excerpt-more'>[...]</a>]]></description>
				<content:encoded><![CDATA[<p style="text-align: justify;">Processos ágeis de desenvolvimento de software. Assunto bom de estudar, discutir! Aqui no blog ainda não escrevi post nenhum, porém venho ao longo do ano lendo, conhecendo mais sobre esta nova maneira de enxergar o desenvolvimento de software e o trabalho em equipe.</p>
<p style="text-align: justify;">
<p style="text-align: justify;">Iniciei na metade do ano de 2010 uma Pós Graduação em Qualidade em Tecnologia da Informação (falarei posteriormente em outros posts, sobre minhas expectativas e críticas) e de cara, em minha segunda matéria com o tema de Processos de Software, preciso fazer um trabalho sobre Processos Ágeis.</p>
<p style="text-align: justify;">
<p style="text-align: justify;">Bacana, não? Matei 2 coelhos de uma vez só! Estudo o que gosto para a pós e para meus projetos/satisfação pessoal!</p>
<p style="text-align: justify;">
<p style="text-align: justify;">Pois bem, então para estrear, segue abaixo o resultado da matéria: um pequeno artigo que escrevi com Alexsandro Oliveira e <a href="http://cvu.vg/vrfcorrea" target="_blank">Vinicius Correa</a> resumindo um pouco sobre o que são estas metodologias ágeis, assim como um slidecast (sim, resolvi me arriscar a fazer) sobre o tema.</p>
<p style="text-align: justify;">
<p style="text-align: justify;"><p><a href="http://webcomfarinha.com/blog/introducao-as-metodologias-ageis/"><em>Clique aqui para assistir o vídeo inserido.</em></a></p></p>
<p style="text-align: justify;">
]]></content:encoded>
			<wfw:commentRss>http://webcomfarinha.com/blog/introducao-as-metodologias-ageis/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Codificação do Banco de Dados com Ruby on Rails</title>
		<link>http://webcomfarinha.com/blog/codificacao-do-banco-de-dados-com-ruby-on-rails/</link>
		<comments>http://webcomfarinha.com/blog/codificacao-do-banco-de-dados-com-ruby-on-rails/#comments</comments>
		<pubDate>Thu, 30 Sep 2010 23:55:31 +0000</pubDate>
		<dc:creator>Matheus</dc:creator>
				<category><![CDATA[Ruby on Rails]]></category>
		<category><![CDATA[codificação]]></category>
		<category><![CDATA[migrations]]></category>
		<category><![CDATA[ruby on rails]]></category>
		<category><![CDATA[utf-8]]></category>

		<guid isPermaLink="false">http://webcomfarinha.com/blog/?p=586</guid>
		<description><![CDATA[Saudações! Desenvolvendo um aplicativo exemplo com Ruby on Rails deparei-me com a seguinte situação: Criei um model para representar os estados brasileiros e decidi em sua migration, além de criar a tabela com os atributos necessários, aproveitar e popular o banco com os estados brasileiros. Meu arquivo ficou assim: class CreateStates &#60; ActiveRecord::Migration &#160; &#160;def <a href='http://webcomfarinha.com/blog/codificacao-do-banco-de-dados-com-ruby-on-rails/' class='excerpt-more'>[...]</a>]]></description>
				<content:encoded><![CDATA[<p style="text-align: justify;">Saudações!</p>
<p style="text-align: justify;">Desenvolvendo um aplicativo exemplo com Ruby on Rails deparei-me com a seguinte situação: Criei um model para representar os estados brasileiros e decidi em sua migration, além de criar a tabela com os atributos necessários, aproveitar e popular o banco com os estados brasileiros.</p>
<p style="text-align: justify;">Meu arquivo ficou assim:</p>
<div class="dean_ch" style="white-space: wrap;"><span class="kw1">class</span> CreateStates &lt; <span class="re2">ActiveRecord::Migration</span><br />
&nbsp; &nbsp;<span class="kw1">def</span> <span class="kw2">self</span>.<span class="me1">up</span><br />
&nbsp; &nbsp; &nbsp; create_table <span class="re3">:states</span> <span class="kw1">do</span> |t|<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; t.<span class="kw3">string</span> <span class="re3">:name</span>, <span class="re3">:nil</span> =&gt; <span class="kw2">false</span>, <span class="re3">:limit</span> =&gt; <span class="nu0">255</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; t.<span class="kw3">string</span> <span class="re3">:acronym</span>, <span class="re3">:nil</span> =&gt; <span class="kw2">false</span>, <span class="re3">:limit</span> =&gt; <span class="nu0">2</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; t.<span class="me1">timestamps</span><br />
&nbsp; &nbsp; &nbsp; <span class="kw1">end</span></p>
<p>&nbsp; &nbsp; &nbsp; State.<span class="me1">create</span><span class="br0">&#40;</span><span class="re3">:name</span> =&gt; <span class="st0">&quot;Amazonas&quot;</span>, <span class="re3">:acronym</span> =&gt; <span class="st0">&quot;AM&quot;</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; State.<span class="me1">create</span><span class="br0">&#40;</span><span class="re3">:name</span> =&gt; <span class="st0">&quot;Amapá&quot;</span>, <span class="re3">:acronym</span> =&gt; <span class="st0">&quot;AP&quot;</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; State.<span class="me1">create</span><span class="br0">&#40;</span><span class="re3">:name</span> =&gt; <span class="st0">&quot;Bahia&quot;</span>, <span class="re3">:acronym</span> =&gt; <span class="st0">&quot;BA&quot;</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; State.<span class="me1">create</span><span class="br0">&#40;</span><span class="re3">:name</span> =&gt; <span class="st0">&quot;São Paulo&quot;</span>, <span class="re3">:acronym</span> =&gt; <span class="st0">&quot;SP&quot;</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; State.<span class="me1">create</span><span class="br0">&#40;</span><span class="re3">:name</span> =&gt; <span class="st0">&quot;Rio de Janeiro&quot;</span>, <span class="re3">:acronym</span> =&gt; <span class="st0">&quot;RJ&quot;</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; State.<span class="me1">create</span><span class="br0">&#40;</span><span class="re3">:name</span> =&gt; <span class="st0">&quot;Espírito Santo&quot;</span>, <span class="re3">:acronym</span> =&gt; <span class="st0">&quot;ES&quot;</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; State.<span class="me1">create</span><span class="br0">&#40;</span><span class="re3">:name</span> =&gt; <span class="st0">&quot;Minas Gerais&quot;</span>, <span class="re3">:acronym</span> =&gt; <span class="st0">&quot;MG&quot;</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; State.<span class="me1">create</span><span class="br0">&#40;</span><span class="re3">:name</span> =&gt; <span class="st0">&quot;Sergipe&quot;</span>, <span class="re3">:acronym</span> =&gt; <span class="st0">&quot;SE&quot;</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; State.<span class="me1">create</span><span class="br0">&#40;</span><span class="re3">:name</span> =&gt; <span class="st0">&quot;Alagoas&quot;</span>, <span class="re3">:acronym</span> =&gt; <span class="st0">&quot;AL&quot;</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; State.<span class="me1">create</span><span class="br0">&#40;</span><span class="re3">:name</span> =&gt; <span class="st0">&quot;Pernambuco&quot;</span>, <span class="re3">:acronym</span> =&gt; <span class="st0">&quot;PE&quot;</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; State.<span class="me1">create</span><span class="br0">&#40;</span><span class="re3">:name</span> =&gt; <span class="st0">&quot;Paraíba&quot;</span>, <span class="re3">:acronym</span> =&gt; <span class="st0">&quot;PB&quot;</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; State.<span class="me1">create</span><span class="br0">&#40;</span><span class="re3">:name</span> =&gt; <span class="st0">&quot;Rio Grande do Norte&quot;</span>, <span class="re3">:acronym</span> =&gt; <span class="st0">&quot;RN&quot;</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; State.<span class="me1">create</span><span class="br0">&#40;</span><span class="re3">:name</span> =&gt; <span class="st0">&quot;Maranhão&quot;</span>, <span class="re3">:acronym</span> =&gt; <span class="st0">&quot;MA&quot;</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; State.<span class="me1">create</span><span class="br0">&#40;</span><span class="re3">:name</span> =&gt; <span class="st0">&quot;Ceará&quot;</span>, <span class="re3">:acronym</span> =&gt; <span class="st0">&quot;CE&quot;</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; State.<span class="me1">create</span><span class="br0">&#40;</span><span class="re3">:name</span> =&gt; <span class="st0">&quot;Piauí&quot;</span>, <span class="re3">:acronym</span> =&gt; <span class="st0">&quot;PI&quot;</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; State.<span class="me1">create</span><span class="br0">&#40;</span><span class="re3">:name</span> =&gt; <span class="st0">&quot;Pará&quot;</span>, <span class="re3">:acronym</span> =&gt; <span class="st0">&quot;PA&quot;</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; State.<span class="me1">create</span><span class="br0">&#40;</span><span class="re3">:name</span> =&gt; <span class="st0">&quot;Roraima&quot;</span>, <span class="re3">:acronym</span> =&gt; <span class="st0">&quot;RR&quot;</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; State.<span class="me1">create</span><span class="br0">&#40;</span><span class="re3">:name</span> =&gt; <span class="st0">&quot;Rondonia&quot;</span>, <span class="re3">:acronym</span> =&gt; <span class="st0">&quot;RO&quot;</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; State.<span class="me1">create</span><span class="br0">&#40;</span><span class="re3">:name</span> =&gt; <span class="st0">&quot;Mato Grosso do Sul&quot;</span>, <span class="re3">:acronym</span> =&gt; <span class="st0">&quot;MS&quot;</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; State.<span class="me1">create</span><span class="br0">&#40;</span><span class="re3">:name</span> =&gt; <span class="st0">&quot;Mato Grosso&quot;</span>, <span class="re3">:acronym</span> =&gt; <span class="st0">&quot;MT&quot;</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; State.<span class="me1">create</span><span class="br0">&#40;</span><span class="re3">:name</span> =&gt; <span class="st0">&quot;Goiás&quot;</span>, <span class="re3">:acronym</span> =&gt; <span class="st0">&quot;GO&quot;</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; State.<span class="me1">create</span><span class="br0">&#40;</span><span class="re3">:name</span> =&gt; <span class="st0">&quot;Paraná&quot;</span>, <span class="re3">:acronym</span> =&gt; <span class="st0">&quot;PR&quot;</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; State.<span class="me1">create</span><span class="br0">&#40;</span><span class="re3">:name</span> =&gt; <span class="st0">&quot;Santa Catarina&quot;</span>, <span class="re3">:acronym</span> =&gt; <span class="st0">&quot;SC&quot;</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; State.<span class="me1">create</span><span class="br0">&#40;</span><span class="re3">:name</span> =&gt; <span class="st0">&quot;Rio Grande do Sul&quot;</span>, <span class="re3">:acronym</span> =&gt; <span class="st0">&quot;RS&quot;</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; State.<span class="me1">create</span><span class="br0">&#40;</span><span class="re3">:name</span> =&gt; <span class="st0">&quot;Acre&quot;</span>, <span class="re3">:acronym</span> =&gt; <span class="st0">&quot;AC&quot;</span><span class="br0">&#41;</span><br />
<span class="kw1">end</span></p>
<p><span class="kw1">def</span> <span class="kw2">self</span>.<span class="me1">down</span><br />
&nbsp; &nbsp; &nbsp; drop_table <span class="re3">:states</span><br />
<span class="kw1">end</span><br />
<span class="kw1">end</span></div>
<p>Somente que, quando executei meu rake db:migrate fui apresentado ao seguinte erro:</p>
<p>db/migrate/20100930232925_create_states.rb:10:<span style="color: #ff0000;"><strong> invalid multibyte char (US-ASCII)</strong></span></p>
<p>Neste meu exemplo, utilizei o SQLite. Como a própria descrição do erro mostra (<em>mensagens de erros com RoR são autoexplicativas em sua maior parte</em>), há um erro na codificação do caracter que não está sendo interpretado corretamente pelo banco de dados.</p>
<h3>Como solucionar?</h3>
<p>Simples, basta no início do arquivo passarmos um comentário mágico (magic comment) que diz qual o tipo de codificação, que no nosso caso é o utf-8:</p>
<div class="dean_ch" style="white-space: wrap;"><span class="co1"># coding: utf-8</span><br />
<span class="kw1">class</span> CreateStates &lt; <span class="re2">ActiveRecord::Migration</span><br />
&nbsp; &nbsp; &nbsp; <span class="kw1">def</span> <span class="kw2">self</span>.<span class="me1">up</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; create_table <span class="re3">:states</span> <span class="kw1">do</span> |t|</div>
]]></content:encoded>
			<wfw:commentRss>http://webcomfarinha.com/blog/codificacao-do-banco-de-dados-com-ruby-on-rails/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>LinguÁgil: Misturando Linguagens e Agilidade</title>
		<link>http://webcomfarinha.com/blog/linguagil-misturando-linguagens-e-agilidade/</link>
		<comments>http://webcomfarinha.com/blog/linguagil-misturando-linguagens-e-agilidade/#comments</comments>
		<pubDate>Thu, 09 Sep 2010 21:52:04 +0000</pubDate>
		<dc:creator>Matheus</dc:creator>
				<category><![CDATA[Web Standards]]></category>

		<guid isPermaLink="false">http://webcomfarinha.com/blog/?p=580</guid>
		<description><![CDATA[Próxima semana acontecerá aqui em Salvador um evento muito bacana: o LinguAgil 2010. Tive a oportunidade de participar do evento no ano passado no dia das palestras e fiquei muito contente com o conteúdo apresentado, as pessoas que estavam organizando o evento e o clima cujo lema o evento prega: &#8216;Misturando Linguagens e Agilidade&#8217;. Foi <a href='http://webcomfarinha.com/blog/linguagil-misturando-linguagens-e-agilidade/' class='excerpt-more'>[...]</a>]]></description>
				<content:encoded><![CDATA[<p style="text-align: justify;"><a href="http://www.linguagil.com.br" target="_blank"><img class="alignleft" src="http://softwarelivre.org/articles/0023/7712/banner200X194.jpg" alt="" /></a><br />
Próxima semana acontecerá aqui em Salvador um evento muito bacana: o <a href="http://www.linguagil.com.br" target="_blank">LinguAgil</a> 2010.</p>
<p style="text-align: justify;">Tive a oportunidade de participar do evento no ano passado no dia das palestras e fiquei muito contente com o conteúdo apresentado, as pessoas que estavam organizando o evento e o clima cujo lema o evento prega: &#8216;Misturando Linguagens e Agilidade&#8217;.</p>
<p style="text-align: justify;">Foi em 2009 que conheci o movimento Agile, comecei a ler sobre SCRUM, XP, conheci o Ruby e o Rails, e as palestras apresentadas no encontro cairam como uma luva e me fizeram ter certeza que o caminho que queria seguir/estudar era este. Curti todas as palestras, destacando em particular as apresentações do <a href="http://twitter.com/alegomes" target="_blank">Alexandre Gomes</a> com a participação do <a href="http://twitter.com/serge_rehem" target="_blank">Serge Rehem</a> sobre o <a href="http://blog.seatecnologia.com.br/2009/01/12/manifesto-2-0" target="_blank">Manifesto 2.0</a> e a palestra do <a href="http://twitter.com/danielvlopes" target="_blank">Daniel Lopes</a> sobre Ruby on Rails, pois era o que eu estava conhecendo na época(e ainda estou).</p>
<p style="text-align: justify;">Um ponto negativo que observei não foi o evento em si, mas a quantidade de pessoas que estavam presentes no dia das palestras: muito pouca. E olha que ano passado as palestras foram gratuitas! Não recordo se faltou uma divulgação considerável ou se realmente as pessoas aqui em Salvador são pouco interessadas em participar de eventos, encontros, mini-cursos na área de TI. Atenta-se também que em 2009 foi a primeira edição do LinguÁgil, portanto o networking ainda estava nascendo.</p>
<p style="text-align: justify;">&nbsp;</p>
<h2 style="text-align: justify;">Edição de 2010</h2>
<p style="text-align: justify;">Este ano, a organização do LinguÁgil em minha opnião &#8220;botou pra lenhar&#8221;, como dizem por aqui na Bahia. Trazer para palestrar e/ou ministrar cursos <a href="http://twitter.com/akitaonrails" target="_blank">Fábio Akita</a>, <a href="http://twitter.com/gchapiewski" target="_blank">Guilherme Chapiewski</a>, <a href="http://twitter.com/alegomes" target="_blank">Alexandre Gomes</a>, e muitos outros exímios desenvolvedores assim como excelentes profissionais daqui da terrinha é sem dúvida, programação insubstituível para o próximo fim de semana (praia, clube ou outro evento que me desculpem).</p>
<p style="text-align: justify;">Fica aê minha dica:</p>
<ul style="text-align: justify;">
<li>Se você gosta de desenvolver/programar seja em qualquer linguagem;</li>
<li>Se gosta de metodologias de desenvolvimento seja ela qual for, e se de preferência, for uma metodologia que evangeliza agilidade;</li>
<li>Se você curte conhecer novas pessoas, aumentar sua rede de relacionamentos, conhecer outros projetos, ideias;</li>
</ul>
<p style="text-align: justify;">Então,</p>
<p style="text-align: justify;">Não deixe de participar do LinguÁgil 2010. Confira o site do Evento:</p>
<p style="text-align: justify;"><a href="http://www.linguagil.com.br/" target="_blank">http://www.linguagil.com.br/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://webcomfarinha.com/blog/linguagil-misturando-linguagens-e-agilidade/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>calendar_date_select: Calendário Javascript no Rails</title>
		<link>http://webcomfarinha.com/blog/calendar_date_select-calendario-javascript-no-rails/</link>
		<comments>http://webcomfarinha.com/blog/calendar_date_select-calendario-javascript-no-rails/#comments</comments>
		<pubDate>Tue, 31 Aug 2010 04:02:05 +0000</pubDate>
		<dc:creator>Matheus</dc:creator>
				<category><![CDATA[Ruby on Rails]]></category>
		<category><![CDATA[calendar_date_select]]></category>

		<guid isPermaLink="false">http://webcomfarinha.com/blog/?p=510</guid>
		<description><![CDATA[Continuando minha jornada no aprendizado do Rails, deparei-me com a tarefa de preencher um formulário com datas. A opção de disponibilizar ao usuário a visualização de um calendário para escolha de uma data é bastante aplicada hoje em dia devido a facilidade e beleza disponibilizada. Com o Rails, dei uma olhada na gem calendar_date_select e <a href='http://webcomfarinha.com/blog/calendar_date_select-calendario-javascript-no-rails/' class='excerpt-more'>[...]</a>]]></description>
				<content:encoded><![CDATA[<p style="text-align: justify;">Continuando minha jornada no aprendizado do Rails, deparei-me com a tarefa de preencher um formulário com datas. A opção de disponibilizar ao usuário a visualização de um calendário para escolha de uma data é bastante aplicada hoje em dia devido a facilidade e beleza disponibilizada.</p>
<p style="text-align: justify;">Com o Rails, dei uma olhada na gem <em>calendar_date_select</em> e este atendeu às necessidades além de ser muito fácil configurar e inserir em seu código.</p>
<h2 style="text-align: justify;">Instalando</h2>
<p style="text-align: justify;">
<p style="text-align: justify;">Bem, utilizei para exemplo Rails 2.3.8.</p>
<p style="text-align: justify;">Caso você deseje apenas instalar em um projeto, escolha:</p>
<p style="text-align: justify;"><strong><span style="color: #888888;"><em>$ cd my_app</em></span></strong></p>
<p style="text-align: left;"><span style="color: #888888;"><em><strong>$ script/plugin install http://calendardateselect.googlecode.com/svn/tags/calendar_date_select</strong></em></span></p>
<p style="text-align: justify;">Isto instalará o plugin dentro do diretório <span style="color: #888888;"><strong><em>my_app/vendor/plugins</em></strong></span></p>
<p style="text-align: justify;">Você também pode optar por instalar a gem em seu ambiente</p>
<p style="text-align: justify;"><span style="color: #888888;"><em><strong>$ gem install calendar_date_select</strong></em></span></p>
<p style="text-align: justify;">sendo a versão mais atual até a confecção deste post a 1.6.1 e adicionar ao arquivo environment.rb a dependência de sua aplicação com a gem:</p>
<p style="text-align: justify;">
<div class="dean_ch" style="white-space: wrap;">config.<span class="me1">gem</span> <span class="st0">&quot;calendar_date_select&quot;</span></div>
<p style="text-align: justify;">
<h2 style="text-align: justify;">Utilizando</h2>
<p style="text-align: justify;">De forma simples e resumida, primeiramente, devemos adicionar em nosso layout, a chamada para os arquivos javascripts do Rails:</p>
<div class="dean_ch" style="white-space: wrap;">&lt;%= javascript_include_tag <span class="re3">:defaults</span> %&gt;</div>
<p style="text-align: justify;">em seguida a chamada aos arquivos javascript e css do calendário:</p>
<div class="dean_ch" style="white-space: wrap;">&lt;%= calendar_date_select_includes <span class="st0">&quot;silver&quot;</span>%&gt;</div>
<p style="text-align: justify;">O calendar_date_select proporciona diversas maneiras de utilização. Você pode conferir diversas formas de integração com o seu projeto no site <a href="http://electronicholas.com/calendar" target="_blank">demo</a>. No caso mais simples, para a inserção de uma data em um formulário, apenas adicionamos na view do formulário:</p>
<div class="dean_ch" style="white-space: wrap;">&lt;%= calendar_date_select_tag <span class="st0">&quot;minha_data&quot;</span> %&gt;</div>
<p style="text-align: justify;">
<p style="text-align: justify;">
<p style="text-align: justify;">No meu caso, como a data é um atributo de meu modelo Edição do Evento, associei-o:</p>
<div class="dean_ch" style="white-space: wrap;">&lt;% form_for<span class="br0">&#40;</span><span class="br0">&#91;</span>@event, <span class="re1">@event_edition</span><span class="br0">&#93;</span><span class="br0">&#41;</span> <span class="kw1">do</span> |f| %&gt;<br />
&nbsp; &nbsp; &lt;%= f.<span class="me1">label</span> <span class="re3">:start_date</span> %&gt;&lt;br /&gt;<br />
&nbsp; &nbsp; &lt;%= calendar_date_select_tag  <span class="st0">&quot;event_edition[start_date]&quot;</span>, <span class="re1">@event_edition</span>.<span class="me1">start_date</span> %&gt;<br />
&lt;% <span class="kw1">end</span> %&gt;</div>
]]></content:encoded>
			<wfw:commentRss>http://webcomfarinha.com/blog/calendar_date_select-calendario-javascript-no-rails/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Retorno de Valor com o Operador IF</title>
		<link>http://webcomfarinha.com/blog/retorno-de-valor-com-o-operador-if/</link>
		<comments>http://webcomfarinha.com/blog/retorno-de-valor-com-o-operador-if/#comments</comments>
		<pubDate>Wed, 04 Aug 2010 19:19:16 +0000</pubDate>
		<dc:creator>Matheus</dc:creator>
				<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://webcomfarinha.com/blog/?p=564</guid>
		<description><![CDATA[Quando escrevemos métodos em Ruby, sabemos que a última linha lida/executada no método corresponde ao valor de retorno deste. A dica rápida de hoje é que, apesar do operador IF &#8220;não ser um método&#8221;, ele também retorna uma resposta! Observe o exemplo: ensolarado = true local = &#160;if ensolarado &#160; &#160; &#160; &#160; &#160; &#160; <a href='http://webcomfarinha.com/blog/retorno-de-valor-com-o-operador-if/' class='excerpt-more'>[...]</a>]]></description>
				<content:encoded><![CDATA[<p style="text-align: justify;">Quando escrevemos métodos em Ruby, sabemos que a última linha lida/executada no método corresponde ao valor de retorno deste.</p>
<p style="text-align: justify;">A dica rápida de hoje é que, apesar do operador IF &#8220;não ser um método&#8221;, ele também retorna uma resposta! Observe o exemplo:</p>
<div class="dean_ch" style="white-space: wrap;">ensolarado = <span class="kw2">true</span><br />
local = &nbsp;<span class="kw1">if</span> ensolarado<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="st0">&quot;praia&quot;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">else</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="st0">&quot;cinema&quot;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">end</span></div>
<p style="text-align: justify;">Bem melhor do que atribuir o valor para a variável &#8216;local&#8217; dentro dos blocos não é?</p>
]]></content:encoded>
			<wfw:commentRss>http://webcomfarinha.com/blog/retorno-de-valor-com-o-operador-if/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Autenticação no Ruby on Rails com Devise</title>
		<link>http://webcomfarinha.com/blog/autenticacao-no-ruby-on-rails-com-devise/</link>
		<comments>http://webcomfarinha.com/blog/autenticacao-no-ruby-on-rails-com-devise/#comments</comments>
		<pubDate>Mon, 02 Aug 2010 23:06:21 +0000</pubDate>
		<dc:creator>Matheus</dc:creator>
				<category><![CDATA[Ruby on Rails]]></category>
		<category><![CDATA[autenticação]]></category>
		<category><![CDATA[devise]]></category>
		<category><![CDATA[gems]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[ror]]></category>

		<guid isPermaLink="false">http://webcomfarinha.com/blog/?p=521</guid>
		<description><![CDATA[Simples tutorial de instalação e configuração do Devise como recurso na autenticação de usuários no Ruby on Rails. Um bom espaço para conhecer o Devise é no blog da empresa que desenvolveu a gem. Tanto no blog da PlataformaTec quanto no github do projeto, existem diversos documentos que fornecem uma excelente documentação para quem quer utilizar o Devise. Neste primeiro post, vou mostrar procedimentos básicos, mas suficientes para integrar e configurar o Devise com seu projeto.]]></description>
				<content:encoded><![CDATA[<p style="text-align: justify;"><img class="alignleft" src="http://lh6.ggpht.com/_Zd2EyrjMBKY/S1d9JmqsbJI/AAAAAAAAAKA/pZ0VIT5p_fk/encriptar-md5.png" alt="" width="154" height="154" />Resolvi utilizar o <a href="http://github.com/plataformatec/devise" target="_blank">Devise </a>para autenticação de usuários no rails. Existem outras alternativas como <a href="http://github.com/binarylogic/authlogic" target="_blank">Authologic</a>, <a href="http://github.com/thoughtbot/clearance" target="_blank">Clearance</a>, etc. Não sei responder qual destas é a melhor ou mais completa. Contudo, após uma pesquisa em fóruns e na comunidade ativa do rails, percebi que muitos adotam o Devise para autenticação e o CanCan para autorização (falarei mais adiante sobre ele) em projetos que necessitam destes recursos. Logo, cabe a você, desenvolvedor, escolher os recursos que mais lhe agradem e que resolvam as suas necessidades e problemas.</p>
<p style="text-align: justify;">Um bom espaço para conhecer o Devise é no <a href="http://blog.plataformatec.com.br/tag/devise/" target="_blank">blog</a> da empresa que desenvolveu a gem. Tanto no blog da PlataformaTec quanto no <a href="http://github.com/plataformatec/devise" target="_blank">github</a> do projeto, existem diversos documentos que fornecem uma excelente documentação para quem quer utilizar o Devise.</p>
<p style="text-align: justify;">Neste primeiro post, vou mostrar procedimentos básicos, mas suficientes para integrar e configurar o Devise com seu projeto.</p>
<p style="text-align: justify;">
<p style="text-align: justify;"><span id="more-521"></span></p>
<h2 style="text-align: justify;">Condições Iniciais</h2>
<p style="text-align: justify;">Primeiramente, deixo aqui a configuração do ambiente que utilizei para este post:</p>
<ul>
<li>
<div style="text-align: justify;">Ubuntu 10.04</div>
</li>
<li>
<div style="text-align: justify;">Ruby 1.8.7 MRI</div>
</li>
<li>
<div style="text-align: justify;">Rubygems 1.3.7</div>
</li>
<li>
<div style="text-align: justify;">Rails 2.3.8</div>
</li>
</ul>
<h2 style="text-align: justify;">Instalando a GEM</h2>
<p style="text-align: justify;">Para minha configuração, segundo a <a href="http://github.com/plataformatec/devise" target="_blank">documentação</a> do Devise até a data deste post, a versão da gem que preciso instalar é a 1.0.8. Se você já está utilizando Rails 3, consulte a página do Devise para saber qual a melhor versão indicada.</p>
<p style="text-align: justify;"><strong><em><span style="color: #ff0000;">$ sudo gem install devise -v 1.0.8</span></em></strong></p>
<p style="text-align: justify;">Este comando, instalará o devise e o warden (necessário para o correto funcionamento).</p>
<p style="text-align: justify;">Você pode verificar se as gems foram instaladas através de:</p>
<p style="text-align: justify;"><strong><em><span style="color: #ff0000;">$ gem list</span></em></strong></p>
<p style="text-align: justify;"><strong><em><span style="color: #ff0000;"><br />
</span></em></strong></p>
<h2 style="text-align: justify;">Configurando</h2>
<p style="text-align: justify;">Precisamos informar ao rails do nosso projeto que este dependerá da gem Devise. No arquivo e<em>nviroment.rb </em>adicionamos a seguinte linha:</p>
<p style="text-align: justify;">
<div class="dean_ch" style="white-space: wrap;">config.<span class="me1">gem</span> <span class="st0">&quot;devise&quot;</span>,  <span class="re3">:version</span> =&gt; <span class="st0">&quot;1.0.8&quot;</span></div>
<p style="text-align: justify;">A informação da versão é opcional, porém por questões de compatibilidade com o projeto, achei conveniente informar. Se você desejar vendorizar a gem para a sua aplicação (importar para /vendor/gems) execute:</p>
<p style="text-align: justify;">
<div class="dean_ch" style="white-space: wrap;">rake gems:unpack</div>
<p style="text-align: justify;">Isto importará a gem Devise, ou ainda</p>
<p style="text-align: justify;">
<div class="dean_ch" style="white-space: wrap;">rake gems:unpack:dependencies</div>
<p>que vendorizará as gems necessárias e todas as suas dependências (neste caso Devise + warden). Depois rodamos o seguinte comando rake:</p>
<div class="dean_ch" style="white-space: wrap;">rake gems:build<br />
&nbsp;</div>
<h2 style="text-align: justify;">Utilizando o Devise</h2>
<p style="text-align: justify;">Vamos criar uma aplicação em que existirá uma seção Eventos onde somente usuários cadastrados no site podem acessar a página. Utilizando o scaffold para agilizar esta parte:</p>
<p style="text-align: justify;"><strong><em><span style="color: #ff0000;">$ script/generate scaffold Event name:string info:text</span></em></strong></p>
<p style="text-align: justify;">Feito isto, iniciamos o uso do Devise, onde precisamos rodar primeiramente a instalação do devise em nossa aplicação:</p>
<p style="text-align: justify;"><strong><em><span style="color: #ff0000;">$ script/generate devise_install</span></em></strong></p>
<p style="text-align: justify;">Assim que voce rodar o comando acima, 3 passos da configuração deverão ser feitas manualmente:</p>
<p>1. Adicionar em <em>config/enviroments/development.rb</em> a seguinte linha:</p>
<div class="dean_ch" style="white-space: wrap;">config.<span class="me1">action_mailer</span>.<span class="me1">default_url_options</span> = <span class="br0">&#123;</span> <span class="re3">:host</span> =&gt; &nbsp;<span class="st0">&#8216;localhost:3000&#8242;</span> <span class="br0">&#125;</span></div>
<p>(caso o endereço do host de desenvolvimento seja  este)</p>
<p>2. Verificar se no arquivo de rotas <em>(config/routes.rb</em>) existe a definição de uma url root como:</p>
<div class="dean_ch" style="white-space: wrap;">map.<span class="me1">root</span> <span class="re3">:controller</span> =&gt; <span class="st0">&#8216;home&#8217;</span></div>
<p>3. Verificar se existe o arquivo de layout padrão (<em>views/layouts</em>) e a chamada de mensagens flash</p>
<div class="dean_ch" style="white-space: wrap;">&lt;p&gt;&lt;%= flash<span class="br0">&#91;</span><span class="re3">:notice</span><span class="br0">&#93;</span> %&gt;&lt;/p&gt;</div>
<div class="dean_ch" style="white-space: wrap;">&lt;p&gt;&lt;%= flash<span class="br0">&#91;</span><span class="re3">:alert</span><span class="br0">&#93;</span> %&gt;&lt;/p&gt;</div>
<p style="text-align: justify;">Agora, podemos criar nosso model User com a autenticação:</p>
<p style="text-align: justify;"><strong><em><span style="color: #ff0000;">$ script/generate devise User</span></em></strong></p>
<p style="text-align: justify;">Caso o model User já exista não tem problema, pois o Devise apenas adicionará todos os recursos necessários para a autenticação.</p>
<p style="text-align: justify;">Repare agora que alguns arquivos foram criados como a migration para criação da tabela de usuários no banco de dados assim como o model user.rb. Vale a pena conferir a estrutura e o conteúdo destes arquivos para entender quais campos são criados e habilitar os recursos necessários para seu projeto.</p>
<p style="text-align: justify;">Verifique também em seu arquivo config/routes.rb se foi adicionado a seguinte linha:</p>
<div style="text-align: justify;">
<div class="dean_ch" style="white-space: wrap;">devise_for <span class="re3">:users</span></div>
<p style="text-align: justify;">Feito isto, atualizamos nosso banco de dados com:</p>
<p style="text-align: justify;"><strong><em><span style="color: #ff0000;">$ rake db:migrate</span></em></strong></p>
<p style="text-align: justify;">Observe que a autenticação já funciona! No nosso caso, possuímos os seguintes endereços:</p>
<ul>
<li>
<div style="text-align: justify;"><a href="http://localhost:3000/users_sign_in">localhost:3000/users_sign_in</a> : fazer login (iniciar sessão)</div>
</li>
<li>
<div style="text-align: justify;">localhos:3000/users_sign_out :fazer logout (destruir sessão)</div>
</li>
<li>
<div style="text-align: justify;">localhost:3000/users_sign_up : cadastrar novo usuário</div>
</li>
</ul>
<p style="text-align: justify;">No controller de Eventos, basta adicionar</p>
<p style="text-align: justify;">
<div class="dean_ch" style="white-space: wrap;">before_filter <span class="re3">:authenticate_user</span>!</div>
<p style="text-align: justify;">que habilitará a necessidade da autenticação de um usuário para todas as actions do Evento.</p>
<h2 style="text-align: justify;">Conclusão</h2>
<p style="text-align: justify;">Em outros posts, falarei mais sobre algumas configurações que o Devise proporciona. Mas nada impede de olhar a documentação dele que é muito fácil e completa! Recomendo também fortemente assistir os episódios do <a href="http://railscasts.com/episodes?search=devise" target="_blank">RailsCasts</a> sobre o Devise.</p>
<p style="text-align: justify;">Valeu!</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://webcomfarinha.com/blog/autenticacao-no-ruby-on-rails-com-devise/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Exemplos e Demonstrações do HTML5</title>
		<link>http://webcomfarinha.com/blog/exemplos-e-demonstracoes-do-html5/</link>
		<comments>http://webcomfarinha.com/blog/exemplos-e-demonstracoes-do-html5/#comments</comments>
		<pubDate>Sat, 22 May 2010 12:18:40 +0000</pubDate>
		<dc:creator>Matheus</dc:creator>
				<category><![CDATA[HTML]]></category>
		<category><![CDATA[HTML5]]></category>

		<guid isPermaLink="false">http://webcomfarinha.com/blog/?p=492</guid>
		<description><![CDATA[HTML5&#8230;.. Assunto que está bombando no nosso meio. Confesso que ainda não iniciei meus estudos na nova versão da linguagem pois há ainda muito que aprender em outros tópicos. Porém, é fato que não se pode fechar os olhos e não acompanhar as novidades nas especificações além dos belos e eficientes exemplos que surgem a <a href='http://webcomfarinha.com/blog/exemplos-e-demonstracoes-do-html5/' class='excerpt-more'>[...]</a>]]></description>
				<content:encoded><![CDATA[<p style="text-align: justify;">HTML5&#8230;..</p>
<p style="text-align: justify;">Assunto que está bombando no nosso meio. Confesso que ainda não iniciei meus estudos na nova versão da linguagem pois há ainda muito que aprender em outros tópicos. Porém, é fato que não se pode fechar os olhos e não acompanhar as novidades nas especificações além dos belos e eficientes exemplos que surgem a cada dia.</p>
<p style="text-align: justify;">O <a href="http://pt.wikipedia.org/wiki/HTML_5" target="_blank">HTML5</a> veio para ficar e junto com outras &#8220;evoluções&#8221; de outras linguagens, técnicas, vêem com o intuito de melhorar o modo como fazemos a web trazendo um pouco mais de semântica. Claro que tudo depende de quem está entre o monitor e a cadeira corcordam?</p>
<p style="text-align: justify;">Venho neste post mostrar um site interessante: o <a href="http://html5demos.com/" target="_blank">HTML5 Demos</a>. Um site que mostra alguns recursos e novidades da nova versão da linguagem como vídeo, áudio, canvas, geolocalização e muito mais. O bacana também é que o espaço fornece uma amostra de quais novos recursos são compatíveis com os principais navegadores. Vale a pena conferir:</p>
<p style="text-align: justify;"><img class="aligncenter" src="http://www.webresourcesdepot.com/wp-content/uploads/html5-demos.gif" alt="html5 demos" width="480" height="190" /></p>
<p style="text-align: justify;"><a href="http://html5demos.com/" target="_blank">http://html5demos.com/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://webcomfarinha.com/blog/exemplos-e-demonstracoes-do-html5/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Sites para Auxiliar o Desenvolvedor Web</title>
		<link>http://webcomfarinha.com/blog/sites-para-auxiliar-o-desenvolvedor-web/</link>
		<comments>http://webcomfarinha.com/blog/sites-para-auxiliar-o-desenvolvedor-web/#comments</comments>
		<pubDate>Thu, 20 May 2010 01:08:32 +0000</pubDate>
		<dc:creator>Matheus</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[Truques e Dicas]]></category>
		<category><![CDATA[Truque e Dicas]]></category>

		<guid isPermaLink="false">http://webcomfarinha.com/blog/?p=482</guid>
		<description><![CDATA[Existem centenas de sites na web que fornecem serviços que podem auxiliar o desenvolvedor em sua tarefa. Abaixo, seguem alguns sites que podem ajudar você na execução de seus projetos &#160; MySql Format Date Problemas em escrever ou executar queries no MySql com datas? Este site bem bacana fornece a opção de você configurar o <a href='http://webcomfarinha.com/blog/sites-para-auxiliar-o-desenvolvedor-web/' class='excerpt-more'>[...]</a>]]></description>
				<content:encoded><![CDATA[<p style="text-align: justify;">Existem centenas de  sites na web que fornecem serviços que podem auxiliar o desenvolvedor em sua tarefa. Abaixo, seguem alguns sites que podem ajudar você na execução de seus projetos</p>
<p style="text-align: justify;">&nbsp;</p>
<h2 style="text-align: justify;">MySql Format Date</h2>
<p style="text-align: justify;">Problemas em escrever ou executar queries no MySql com datas? Este site bem bacana fornece a opção de você configurar o formato de data que você deseja de retorno em sua query e ele gera para vocẽ o código para inserir em sua implementação. O site baseia-se na funçao MySQL DATE_FORMAT.</p>
<p style="text-align: justify;">Visite o site: <a href="http://www.mysqlformatdate.com/" target="_blank">http://www.mysqlformatdate.com/</a></p>
<p><span id="more-482"></span></p>
<p style="text-align: justify;">&nbsp;</p>
<h2 style="text-align: justify;">Script Src</h2>
<p style="text-align: justify;">Achei esta ideia bem bacana. O site fornece a opção de você copiar a script tag da última versão de várias bibliotecas Javascript. Não sabe qual a última versão do jQuery, Mootools, Prototype? Basta acessar o site e obter o código completo para inserir em seu projeto.</p>
<p style="text-align: justify;">Por exemplo: Para o jQuery ele fornece-me o seguinte resultado:</p>
<p style="text-align: justify;">&lt;script type=&#8221;text/javascript&#8221; src=&#8221;http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js&#8221;&gt;&lt;/script&gt;</p>
<p style="text-align: justify;"><strong>Visite site: <a href="http://scriptsrc.net/">http://scriptsrc.net</a></strong></p>
<p style="text-align: justify;">&nbsp;</p>
<h2 style="text-align: justify;">EmChart</h2>
<p style="text-align: justify;">Para quem não gosta ou não tem muita familiaridade com tamanho de fontes na unidade de medida &#8216;em&#8217;, este site pode ajudar. É uma planilha com a relação entre as unidades em e pixel. Vale a pena dar uma olhada</p>
<p style="text-align: justify;"><strong>Visite site: <a href="http://aloestudios.com/tools/emchart">http://aloestudios.com/tools/emchart</a></strong></p>
<p style="text-align: justify;">&nbsp;</p>
<h2 style="text-align: justify;">Smush it</h2>
<p style="text-align: justify;">Serviço online oferecido pelo Yahoo com o intuito bem simples: reduzir o tamanho de suas imagens web sem perda de qualidade. Bacana os comparativos apresentados além da existência de um plugin para o WordPress que você encontra <a href="http://wordpress.org/extend/plugins/wp-smushit/" target="_blank">aqui</a>.</p>
<p style="text-align: justify;"><img class="aligncenter" src="http://www.catswhocode.com/blog/wp-content/uploads/2010/05/smushit.png" alt="" /><strong>Visite site: <a href="http://developer.yahoo.com/yslow/smushit/">http://developer.yahoo.com/yslow/smushit/</a></strong></p>
<p style="text-align: justify;">&nbsp;</p>
<h2 style="text-align: justify;"><strong>Quer mais?</strong></h2>
<p style="text-align: justify;">Se você deseja encontrar mais sites com serviços que auxiliam no desenvolvimento web não deixe de conferir o artigo original que possue mais algumas dicas<strong>.</strong></p>
<p style="text-align: justify;"><strong>Artigo original no <a href="http://www.catswhocode.com/blog/10-sites-developers-should-have-in-their-bookmarks" target="_blank">CatsWhoCode</a><br />
</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://webcomfarinha.com/blog/sites-para-auxiliar-o-desenvolvedor-web/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
