<?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"
	>

<channel>
	<title>Jefferson Girão</title>
	<atom:link href="http://jefferson.eti.br/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://jefferson.eti.br</link>
	<description>"When all other means of communication fail, try words"</description>
	<pubDate>Sat, 30 May 2009 19:55:13 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6</generator>
	<language>en</language>
			<item>
		<title>Introducão ao BDD com Cucumber, RSpec, Webrat e Selenium - Parte III</title>
		<link>http://jefferson.eti.br/?p=139</link>
		<comments>http://jefferson.eti.br/?p=139#comments</comments>
		<pubDate>Fri, 29 May 2009 16:08:32 +0000</pubDate>
		<dc:creator>Jefferson Girão</dc:creator>
		
		<category><![CDATA[bdd]]></category>

		<category><![CDATA[desenvolvimento]]></category>

		<category><![CDATA[bdd rspec cucumber webrat selenium]]></category>

		<guid isPermaLink="false">http://jefferson.eti.br/?p=139</guid>
		<description><![CDATA[Seguindo com a série de posts iniciada aqui e aqui, trataremos agora da implementação dos passos especificados no nosso Cenário.
Antes de tudo é bom entender o que é o tal Test Driven Development, de onde vieram boa parte das idéias por trás do BDD.
Test Driven Development prega o desenvolvimento através de pequenas iterações onde existe [...]]]></description>
			<content:encoded><![CDATA[<p>Seguindo com a série de posts iniciada <a href="http://jefferson.eti.br/?p=96">aqui</a> e <a href="http://jefferson.eti.br/?p=105">aqui</a>, trataremos agora da implementação dos passos especificados no nosso Cenário.</p>
<p>Antes de tudo é bom entender o que é o tal Test Driven Development, de onde vieram boa parte das idéias por trás do BDD.</p>
<p>Test Driven Development prega o desenvolvimento através de pequenas iterações onde existe primeiro a escrita de casos testes que definem o que precisa ser implementado e depois a produção de código necessário para que estes casos de testes sejam atendidos. Não vou explicar pq TDD é legal, uma busca rápida no google vai lhe dar muitos argumentos.</p>
<p>O BDD evolui a idéia do TDD no sentido que começamos o desenvolvimento do sistema com foco no comportamento esperado pelo cliente e expressamos esse comportamento através de uma linguagem mais adequada e mais próxima da natural. Isso ajuda bastante ao discutirmos requisitos com o cliente e no próprio entendimento pela equipe: nossa documentação é nosso código.</p>
<p>Quando construímos nossa User Story e fizemos o Cucumber rodá-la, mesmo com tudo pendente, fizemos isso para guiar nosso desenvolvimento olhando de fora para dentro: o que nosso cliente e espera (User Story), como ele espera (AcceptanceCriterias).</p>
<p>A partir de agora criaremos código para atender as essas expectativas e somente isso.</p>
<p>Por enquanto todos os nossos passos contidos no arquivo features/step_definitions/gerenciar_pessoas_steps.rb estão marcados como pendentes através do método pending</p>
<p>Comecemos então pelo primeiro passo:</p>
<blockquote><p>Dado que estou na listagem de pessoas</p></blockquote>
<p>A primeiro momento poderíamos implementar esse passo de forma específica no arquivo features/step_definitions/gerenciar_pessoas_steps.rb</p>
<p><script src="http://pastie.org/493966.js"></script> Mas vamos a uma reflexão: geralmente iniciamos os cenários partindo de um determinado ponto do sistema, seria muito interessante definir esse passo de forma genérica, assim poderíamos escrever novos cenários com passos similares, por exemplo:</p>
<blockquote><p>
Dado que eu estou em listagem de cidades</p></blockquote>
<p>sem a necessidade de implementar um novo passo.  Para isso iremos mover o pedaço de código relativo ao passo acima para um novo arquivo features/step_definitions/passos_compartilhados.rb e nele iremos generalizar o passo parametrizando-o  <script src="http://pastie.org/493965.js"></script></p>
<p>Onde visit é um método do webrat para &#8220;visitar&#8221; a página especificada e path_to é um helper do Cucumber para definirmos rotas em nossos passos.</p>
<p>Executemos o cucumber novamente:</p>
<blockquote><p>cucumber features &#8211;language pt</p></blockquote>
<p><script src="http://pastie.org/493961.js"></script> Na saída do comando verificamos que não foi possível encontrar um mapeamento para &#8220;listagem de pessoas&#8221;. Faremos esse mapeamento no arquivo features/support/paths.rb  <script src="http://pastie.org/493968.js"></script></p>
<p>Vamos executar o cucumber novamente e verificar a saída:</p>
<p><script src="http://pastie.org/493970.js"></script> Agora temos outro relato: não existe o método pessoas_path por simplesmente ainda não termos um Controller chamado pessoas.  O próximo passo de bebê seria adicionar um controller para pessoas e definir a rota. De toda forma como esse é um simples crud criaremos logo um scaffold através do gerador do rspec, executamos a migration de criação da tabela de passoas e preparamos o banco de teste:</p>
<blockquote><p>
script/generate rspec_scaffold pessoa nome:string endereco:string email:string   rake db:migrate rake db:test:prepare</p></blockquote>
<p>Executamos novamente o cucumber e agora temos o primeiro passo &#8220;verde&#8221; <img src='http://jefferson.eti.br/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' />  <script src="http://pastie.org/493976.js"></script></p>
<p>Temos um outro passo pendente que também pode (e deve) ser generalizado, tiramos o seguinte trecho de código do arquivo features/step_definitions/gerenciar_pessoas_steps.rb e o levamos para features/step_definitions/passos_compartilhados.rb</p>
<p><script src="http://pastie.org/493980.js"></script> e o alteramos para  <script src="http://pastie.org/493984.js"></script></p>
<p>Executamos novamente o cucumber</p>
<p><script src="http://pastie.org/493993.js"></script> Precisamos agora de um link chamado &#8220;Nova pessoa&#8221; na nossa listagem.  O script de geração de scaffold já gerou um link só que com o nome em inglês: &#8220;New pessoa&#8221;. Vamos no arquivo app/views/pessoas/index.html.erb e renomeamos:</p>
<blockquote><p>
&lt;%= link_to &#8216;Nova pessoa&#8217;, new_pessoa_path %&gt;</p></blockquote>
<p>para</p>
<blockquote><p>
&lt;%= link_to &#8216;Nova pessoa&#8217;, new_pessoa_path %&gt;</p></blockquote>
<p>Rodando o cucumber mais uma vez: <script src="http://pastie.org/493998.js"></script><br />
O negócio tá melhorando, já temos 2 passos &#8220;verdes&#8221;, partimos agora para os próximos passos:</p>
<blockquote><p>E defino nome com o valor &#8220;Fulano de Tal&#8221;<br />
E defino endereco com o valor &#8220;Rua Sicrano, 32&#8243;<br />
E defino email com o valor &#8220;fulano@exemplo.com.br&#8221;</p></blockquote>
<p>Como vocês podem ver, os três passos tem a mesma estrutura, vamos generalizá-lo também. Remova o seguinte trecho de código do arquivo features/step_definitions/gerenciar_pessoas_steps.rb</p>
<p><script src="http://pastie.org/494014.js"></script> e adicione o código abaixo no features/step_definitions/passos_compartilhados_steps.rb  <script src="http://pastie.org/494019.js"></script></p>
<p>Ao ver o saida do cucumber uma alegria: só faltam dois passos!</p>
<p><script src="http://pastie.org/494027.js"></script> Salvar o registro é um passo que pode existir em vários cenários, não é algo específico deste. Moveremos então o trecho de código abaixo de features/step_definitions/gerenciar_pessoas_steps.rb para features/step_definitions/passos_compartilhados.rb  <script src="http://pastie.org/494035.js"></script></p>
<p>E o alteramos para:</p>
<p><script src="http://pastie.org/494037.js"></script> Rodamos o cucumber novamente <script src="http://pastie.org/494049.js"></script><br />
Percebemos a necessidade de alterar a descrição do botão no arquivo app/views/pessoas/new.html.erb</p>
<blockquote><p>&lt;%= f.submit &#8216;Create&#8217; %&gt;</p></blockquote>
<p>para</p>
<blockquote><p>&lt;%= f.submit &#8216;Salvar&#8217; %&gt;</p></blockquote>
<p>Agora sim, estamos quase lá:<br />
<script src="http://pastie.org/494046.js"></script> Esvaziamos agora o arquivo features/step_definitions/gerenciar_pessoas_steps.rb pois o último passo também é algo genérico, pode ser aproveitado em outros cenários e funcionalidades. No futuro talvez adicionemos um passo específico da funcionalidade a medida que alteramos nossa User Story. Movemos a definição do último passo para features/step_definitions/passos_compartilhados.rb  <script src="http://pastie.org/494061.js"></script></p>
<p>Ao rodar o cucumber novamente vemos a necessidade de mudar a mensagem de retorno do método create do nosso controller</p>
<p><script src="http://pastie.org/494066.js"></script> Fazemos isso:  <script src="http://pastie.org/494069.js"></script></p>
<p>Finalizamos assim a implementação da funcionalidade.</p>
<p>Talvez você tenha achado um tanto chato fazer passo por passo código que poderia ser previsto, mas a idéia em TDD é justamente essa: passos de bebê.</p>
<p><script src="http://pastie.org/494071.js"></script></p>
<p>No próximo post trataremos da utilização do webrat em modo selenium.</p>
<p>Críticas e comentários são bem-vindos! Até mais! <img src='http://jefferson.eti.br/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /></p>
]]></content:encoded>
			<wfw:commentRss>http://jefferson.eti.br/?feed=rss2&amp;p=139</wfw:commentRss>
		</item>
		<item>
		<title>Introducão ao BDD com Cucumber, RSpec, Webrat e Selenium - Parte II</title>
		<link>http://jefferson.eti.br/?p=105</link>
		<comments>http://jefferson.eti.br/?p=105#comments</comments>
		<pubDate>Thu, 28 May 2009 19:17:05 +0000</pubDate>
		<dc:creator>Jefferson Girão</dc:creator>
		
		<category><![CDATA[bdd]]></category>

		<category><![CDATA[desenvolvimento]]></category>

		<category><![CDATA[bdd user story cucumber webrat selenium]]></category>

		<guid isPermaLink="false">http://jefferson.eti.br/?p=105</guid>
		<description><![CDATA[Continuando nossa série de artigos sobre BDD iniciada aqui, hoje trataremos da construção de cenários.
Cenários (Scenarios),  são perspectivas de utilização que validam um ou mais critérios de aceitação (Acceptance Criterias).
No BDD definimos Cenários seguindo o modelo:
Dado [pré-condição]
Quando [evento]
Então [pós-condição]
Em Dado definimos tudo o que precisamos antes para Quando o evento ocorrer Então verificarmos o resultado.
Exemplo [...]]]></description>
			<content:encoded><![CDATA[<p>Continuando nossa série de artigos sobre BDD iniciada <a href="http://jefferson.eti.br/?p=96">aqui</a>, hoje trataremos da construção de cenários.</p>
<p>Cenários (Scenarios),  são perspectivas de utilização que validam um ou mais critérios de aceitação (Acceptance Criterias).</p>
<p>No BDD definimos Cenários seguindo o modelo:</p>
<p>Dado <strong>[pré-condição]</strong><br />
Quando <strong>[evento]</strong><br />
Então <strong>[pós-condição]</strong></p>
<p>Em Dado definimos tudo o que precisamos antes para Quando o evento ocorrer Então verificarmos o resultado.</p>
<p>Exemplo em uma User Story Completa:</p>
<pre>    <strong>Funcionalidade:</strong> Gerenciar Pessoas
    <strong> Como</strong> um usuário do sistema
    <strong> Eu quero</strong> gerenciar o cadastro de pessoas
    <strong> Para</strong> utilizar este cadastro em outros pontos do sistema

    <strong>Cenário:</strong> Adicionar Pessoa Válida
        <strong> Dado</strong> que estou em listagem de pessoas
        <strong> E</strong> vou para "Nova pessoa"
        <strong> E</strong> defino nome com o valor "Fulano de Tal"
        <strong>E</strong> defino endereco com o valor "Rua Sicrano, 32"
        <strong>E</strong> defino email com o valor "fulano@exemplo.com.br"
        <strong>Quando</strong> salvar o registro
        <strong>Então</strong> preciso ver "Pessoa Cadastrada com Sucesso."</pre>
<p>Ok, ok, até agora você leu bastante mas não botou a mão na massa, que tal tornamos a User Story acima executável utilizando o Cucumber?</p>
<p>Mas primeiro, o que é o Cucumber?</p>
<p>O Cucumber é uma reescrita do Story Runner do RSpec com suporte a internacionalização, ajudantes para o Webrat e um monte de outros recursos legais.</p>
<p>Um Story Runner como o próprio nome já diz serve para executar User Stories, algo que converge para a tal documentação executável.</p>
<p>Criando o Projeto de Exemplo</p>
<p>Obs.: Meu ambiente de desenvolvimento roda Ubuntu 9.04, talvez seja necessário adaptar alguns destes passos ao seu próprio ambiente.</p>
<blockquote><p>rails exemplobdd</p>
<p>cd exemplobdd</p></blockquote>
<p>Para instalar o cucumber e suas dependências vamos alterar o arquivo de configuração do ambiente de teste adicionando as gems necessárias.</p>
<p><script src="http://pastie.org/492994.js"></script> Para instalar o Cucumber e suas dependências agora é só rodar:</p>
<blockquote><p>
rake gems:install RAILS_ENV=test</p></blockquote>
<p>Com o Cucumber instalado precisamos agora &#8220;inicializá-lo&#8221; no nosso projeto.</p>
<blockquote><p>
script/generate cucumber</p></blockquote>
<p>Após o comando acima estará criada no nosso projeto uma estrutura de pastas onde colocaremos nossas User Stories e passos para atender aos Cenários. Dentro da pasta features crie o arquivo gerenciar_pessoas.feature <script src='http://pastie.org/493905.js'></script></p>
<p>Nossa feature criada, agora executamos</p>
<blockquote><p>cucumber features &#8211;language pt</p></blockquote>
<p>E obtemos a seguinte saída:<br />
<script src='http://pastie.org/493895.js'></script> Criamos nossa feature mas ainda não definimos os passos do Cenário.</p>
<blockquote><p>
1 scenario (1 undefined) 7 steps (7 undefined)</p></blockquote>
<p>O Cucumber é um cara legal e já nos dá uma sugestão de como defini-los, faremos agora um CTRL+C e CTRL+V da sugestão para dentro do arquivo features/step_definitions/gerenciar_pessoas_steps.rb<br />
<script src='http://pastie.org/493900.js'></script></p>
<p>Ao executar o cucumber novamente</p>
<blockquote><p>cucumber features &#8211;language pt</p></blockquote>
<p><script src='http://pastie.org/493899.js'></script><br />
vemos agora que apesar de nossos passos estarem definidos ainda estão todos marcados como pendente, o primeiro passo acusa isso e os subsequentes não são executados.</p>
<blockquote><p>1 scenario (1 pending)<br />
7 steps (6 skipped, 1 pending)</p></blockquote>
<p>No próximo post trataremos do conceito de TDD, passos compartilhados no Cucumber e utilização do Webrat para testes funcionais. Quem viver verá! <img src='http://jefferson.eti.br/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /></p>
]]></content:encoded>
			<wfw:commentRss>http://jefferson.eti.br/?feed=rss2&amp;p=105</wfw:commentRss>
		</item>
		<item>
		<title>Introducão ao BDD com Cucumber, RSpec, Webrat e Selenium - Parte I</title>
		<link>http://jefferson.eti.br/?p=96</link>
		<comments>http://jefferson.eti.br/?p=96#comments</comments>
		<pubDate>Thu, 28 May 2009 14:47:32 +0000</pubDate>
		<dc:creator>Jefferson Girão</dc:creator>
		
		<category><![CDATA[bdd]]></category>

		<category><![CDATA[desenvolvimento]]></category>

		<category><![CDATA[bdd rspec selenium webrat rails ruby stories]]></category>

		<guid isPermaLink="false">http://jefferson.eti.br/?p=96</guid>
		<description><![CDATA[Behaviour-Driven Development (BDD) ou Desenvolvimento Dirigido por Comportamento é uma evolução no pensamento por trás do Test Driven Development (TDD) e Acceptance Test Driven Planning.
O objetivo é dar ao TDD e o DDD (Domain Driven Design) uma visão integrada, fazendo o relacionamento entre essas duas abordagem ficar mais evidente de forma que o desenvolvimento seja [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Behaviour-Driven Development (BDD)</strong> ou <strong>Desenvolvimento Dirigido por Comportamento</strong> é uma evolução no pensamento por trás do <a href="http://en.wikipedia.org/wiki/Test-driven_development">Test Driven Development (TDD)</a> e <a href="http://en.wikipedia.org/wiki/Acceptance_testing">Acceptance Test Driven Planning</a>.</p>
<p>O objetivo é dar ao TDD e o <a href="http://en.wikipedia.org/wiki/Domain-driven_design">DDD (Domain Driven Design)</a> uma visão integrada, fazendo o relacionamento entre essas duas abordagem ficar mais evidente de forma que o desenvolvimento seja focado em entregar algo de valor para o negócio de forma priorizada e verificável.</p>
<p>Para que esse objetivo seja alcançado é definido um vocabulário comum (Ubiquitous Language para pessoas familiarizadas com o conceito de DDD) que une quem entende de tecnologia com as pessoas que entendem do negócio. A idéia é que gerentes, usuários, analistas, desenvolvedores, testadores, enfim, todos envolvidos no projeto se expressem nos mesmos termos sobre o sistema em desenvolvimento.</p>
<p>O BDD apresenta um framework baseado em três princípios:</p>
<p><strong>1. A área de negócios e a de tecnologia precisam se referir a mesma parte do sistema da mesma forma<br />
- </strong><strong>Tudo é comportamento</strong></p>
<p><strong>2. Toda parte do sistema precisa ter um valor identificável e verificável para o negócio<br />
- </strong><strong>Valor de negócio</strong></p>
<p><strong>3. Analisar, projetar e planejar tudo de cima a baixo tem retorno decrescente.<br />
- O suficiente é suficiente</strong></p>
<p>Se você está achando que BDD é apenas um novo nome para uma série de boas práticas existentes, você não está de todo errado. O objetivo do BDD é juntar todas essas boas práticas existentes sob uma só bandeira com uma terminologia consistente e sem ambiguidades.</p>
<p><strong>User Story (História do Usuário)<br />
</strong><br />
&#8220;Uma User Story descreve funcionalmente o que será valioso para os usuários e aos compradores de um software.&#8221; Mike Cohn</p>
<p>Uma User Story precisa ser</p>
<p><strong>I</strong> ndependente<br />
<strong>N</strong> egóciável<br />
<strong>V</strong> aliosa ao comprador<br />
<strong>E</strong> stimável<br />
<strong>S</strong> mall (pequena)<br />
<strong>T</strong> estável</p>
<p><strong>Story Card</strong></p>
<p>No processo do BDD um especialista no assunto tratado(geralmente um usuário comum) trabalha com um analista de negócios para identificar um requisito de negócio. Este requisito é expresso utilizando um cartão.</p>
<p>A idéia da User Story ser escrita em um cartão ao invés de outra mídia permite nos manter no princípio Small (que a Story seja pequena). Se uma User Story ultrapassar os limites de um cartão talvez já seja hora de desmembrá-la.</p>
<p>Na escrita da User Story utilizamos o seguinte modelo:</p>
<blockquote><p>Como um <strong>[pessoa ou papel desempenhado]</strong></p>
<p>Eu quero <strong>[funcionalidade]</strong></p>
<p>Para <strong>[benefício ou valor dessa funcionalidade ao negócio]</strong></p></blockquote>
<p>No cartão definimos também os critérios para a sua aceitação (Acceptance Criterias). Uma User Story só estará pronta quando todos seus critérios de aceitação forem atendidos.</p>
<p>Exemplo de Story Card:</p>
<blockquote><p><strong>Como</strong> um autor<br />
<strong>Eu quero</strong> adicionar e gerenciar posts<br />
<strong>Para</strong> blogar</p>
<p><strong>Nota</strong>: Um post precisa ter nome, conteudo e status<br />
<strong>Nota</strong>: O status de um post pode ser PUBLICADO ou NAO_PUBLICADO<br />
<strong>Nota</strong>: Um post é criado com o status inicial NAO_PUBLICADO</p></blockquote>
<p>No nosso <a href="http://jefferson.eti.br/?p=105">próximo post</a> veremos o conceito de Cenário de utilização e tornaremos uma User Story executável em projeto Rails através do Cucumber</p>
<p>Fontes:<br />
<a href="http://behaviour-driven.org/"> http://behaviour-driven.org/</a><br />
<a href="http://www.milfont.org/tech/2009/03/29/palestra-behaviour-driven-development/"> http://www.milfont.org/tech/2009/03/29/palestra-behaviour-driven-development/</a><br />
User Stories Applied - Mike Cohn</p>
]]></content:encoded>
			<wfw:commentRss>http://jefferson.eti.br/?feed=rss2&amp;p=96</wfw:commentRss>
		</item>
		<item>
		<title>Tirando a poeira</title>
		<link>http://jefferson.eti.br/?p=85</link>
		<comments>http://jefferson.eti.br/?p=85#comments</comments>
		<pubDate>Wed, 27 May 2009 18:23:44 +0000</pubDate>
		<dc:creator>Jefferson Girão</dc:creator>
		
		<category><![CDATA[desenvolvimento]]></category>

		<category><![CDATA[geral]]></category>

		<category><![CDATA[poeira]]></category>

		<guid isPermaLink="false">http://jefferson.eti.br/?p=85</guid>
		<description><![CDATA[&#201; engra&#231;ado como em poucos meses sua vida pode virar de cabe&#231;a para baixo, meu filho nasceu, mudei de emprego, agora estou trabalhando profissionalmente com Ruby e Rails em minha cidade (Iguatu no inteiror do CE), algo que no meu pensamento era inconceb&#237;vel faz uns meses, enfim, muita coisa mudando e tamb&#233;m muito a fazer.
Agora [...]]]></description>
			<content:encoded><![CDATA[<p>&Eacute; engra&ccedil;ado como em poucos meses sua vida pode virar de cabe&ccedil;a para baixo, meu filho nasceu, mudei de emprego, agora estou trabalhando profissionalmente com Ruby e Rails em minha cidade (Iguatu no inteiror do CE), algo que no meu pensamento era inconceb&iacute;vel faz uns meses, enfim, muita coisa mudando e tamb&eacute;m muito a fazer.</p>
<p>Agora com a poeira baixando pretendo voltar a escrever aqui sobre as tecnologias que estou utilizando: Ruby, Rails, BDD, TDD, rSpec, Cucumber, Selenium, WebRat s&atilde;o as keywords <img src='http://jefferson.eti.br/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://jefferson.eti.br/?feed=rss2&amp;p=85</wfw:commentRss>
		</item>
		<item>
		<title>PHP em Juazeiro do Norte</title>
		<link>http://jefferson.eti.br/?p=78</link>
		<comments>http://jefferson.eti.br/?p=78#comments</comments>
		<pubDate>Thu, 11 Dec 2008 20:43:01 +0000</pubDate>
		<dc:creator>Jefferson Girão</dc:creator>
		
		<category><![CDATA[eventos]]></category>

		<category><![CDATA[software livre]]></category>

		<category><![CDATA[php cepug fjn seti]]></category>

		<guid isPermaLink="false">http://jefferson.eti.br/?p=78</guid>
		<description><![CDATA[Nos &#250;ltimo dia 4, participamos eu e o Fernando Chucre da programa&#231;&#227;o II Semana de Tecnologia de Informa&#231;&#227;o da Faculdade de Juazeiro do Norte, palestrando sobre PHP.

O Chucre passou um &#34;overview&#34; sobre a linguagem, apresentando seus pontos fortes e casos de sucesso na utiliza&#231;&#227;o da tecnologia, al&#233;m disso falou sobre algumas novidades advindas no PHP [...]]]></description>
			<content:encoded><![CDATA[<p>Nos &uacute;ltimo dia 4, participamos eu e o <a href="http://www.horizontesdigitais.com">Fernando Chucre</a> da programa&ccedil;&atilde;o <a href="http://www.setifjn.com.br/">II Semana de Tecnologia de Informa&ccedil;&atilde;o da Faculdade de Juazeiro do Norte</a>, palestrando sobre PHP.</p>
<p style="text-align: center;"><img src="http://www.setifjn.com.br/galeria/2008.12.04/13.jpg" alt="" /></p>
<p>O Chucre passou um &quot;overview&quot; sobre a linguagem, apresentando seus pontos fortes e casos de sucesso na utiliza&ccedil;&atilde;o da tecnologia, al&eacute;m disso falou sobre algumas novidades advindas no PHP 6.</p>
<p>Eu trabalhei a palestra&nbsp; Depura&ccedil;&atilde;o em PHP com XDebug e Firephp que j&aacute; havia apresentando no <a href="http://jefferson.eti.br/?p=67">encontro de Iguatu</a> e no <a href="http://jefferson.eti.br/?p=73">&uacute;ltimo encontro do CEPUG</a> em Fortaleza.</p>
<p>Como havia bastante gente na plat&eacute;ia que ainda n&atilde;o conhecia o PHP e outros tantos ainda iniciantes em programa&ccedil;ao resolvi deixar a palestra um pouco mais leve :D, segue abaixo os slides:</p>
<div id="__ss_839306" style="width: 425px; text-align: left;"><a title="Depurando Aplica&ccedil;&otilde;es PHP com XDebug e FirePHP - SETI 2008" href="http://www.slideshare.net/jeffersongirao/depurando-aplicaes-php-com-xdebug-e-firephp-seti-2008-presentation?type=powerpoint" style="margin: 12px 0pt 3px; font-family: Helvetica,Arial,Sans-serif; font-style: normal; font-variant: normal; font-weight: normal; font-size: 14px; line-height: normal; font-size-adjust: none; font-stretch: normal; display: block; text-decoration: underline;">Depurando Aplica&ccedil;&otilde;es PHP com XDebug e FirePHP - SETI 2008</a><object height="355" width="425" style="margin: 0px;"><param value="http://static.slideshare.net/swf/ssplayer2.swf?doc=seti-2008-1229027694148595-1&amp;stripped_title=depurando-aplicaes-php-com-xdebug-e-firephp-seti-2008-presentation" name="movie" /><param value="true" name="allowFullScreen" /><param value="always" name="allowScriptAccess" /><embed height="355" width="425" allowfullscreen="true" allowscriptaccess="always" type="application/x-shockwave-flash" src="http://static.slideshare.net/swf/ssplayer2.swf?doc=seti-2008-1229027694148595-1&amp;stripped_title=depurando-aplicaes-php-com-xdebug-e-firephp-seti-2008-presentation"></embed></object></p>
<div style="font-size: 11px; font-family: tahoma,arial; height: 26px; padding-top: 2px;">View SlideShare <a title="View Depurando Aplica&ccedil;&otilde;es PHP com XDebug e FirePHP - SETI 2008 on SlideShare" href="http://www.slideshare.net/jeffersongirao/depurando-aplicaes-php-com-xdebug-e-firephp-seti-2008-presentation?type=powerpoint" style="text-decoration: underline;">presentation</a> or <a href="http://www.slideshare.net/upload?type=powerpoint" style="text-decoration: underline;">Upload</a> your own. (tags: <a href="http://slideshare.net/tag/seti2008" style="text-decoration: underline;">seti2008</a> <a href="http://slideshare.net/tag/seti" style="text-decoration: underline;">seti</a>)</div>
</div>
<p>Al&eacute;m das palestras sobre PHP na sua Semana de Tecnologia, a FJN apresentou tamb&eacute;m uma Forma&ccedil;&atilde;o em PHP que ir&aacute; iniciar em janeiro de 2009, sendo que eu e o Fernando Chucre iremos lecionar parte dela.</p>
<p>Uma iniciativa realmente pioneira no interior do estado e que com certeza contribuir&aacute; bastante para o crescimento da comunidade em volta da tecnologia. Quem tiver interesse em participar pode obter mais detalhes <a href="http://www.setifjn.com.br/documentos/Formacao_PHP_2009.pdf">aqui</a>.</p>
<p>Fotos podem ser encontradas <a href="http://www.setifjn.com.br/index.php?categoria=galeria&amp;pagina=palestra1">aqui</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://jefferson.eti.br/?feed=rss2&amp;p=78</wfw:commentRss>
		</item>
		<item>
		<title>Encontro CEPUG 8/11 Fortaleza</title>
		<link>http://jefferson.eti.br/?p=73</link>
		<comments>http://jefferson.eti.br/?p=73#comments</comments>
		<pubDate>Tue, 11 Nov 2008 14:43:36 +0000</pubDate>
		<dc:creator>Jefferson Girão</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://jefferson.eti.br/?p=73</guid>
		<description><![CDATA[Nesse &#250;ltimo s&#225;bado estive em Fortaleza para apresentar a palestra Depurando Aplica&#231;&#245;es PHP com XDebug e FirePHP (basicamente a mesma apresentada no encontro de Iguatu) durante a o evento mensal do CEPUG.
O evento aconteceu na Fortes Inform&#225;tica e contou tamb&#233;m com a palestra do Eric Saboia com uma abordagem comparativa entre os principais Frameworks PHP.

Meus [...]]]></description>
			<content:encoded><![CDATA[<p>Nesse &uacute;ltimo s&aacute;bado estive em Fortaleza para apresentar a palestra Depurando Aplica&ccedil;&otilde;es PHP com XDebug e FirePHP (basicamente a mesma apresentada no <a href="http://jefferson.eti.br/?p=67">encontro de Iguatu</a>) durante a o evento mensal do <a href="http://cepug.org">CEPUG</a>.</p>
<p>O evento aconteceu na <a href="http://www.fortesinformatica.com.br">Fortes Inform&aacute;tica</a> e contou tamb&eacute;m com a palestra do Eric Saboia com uma abordagem comparativa entre os principais Frameworks PHP.</p>
<p style="text-align: center;"><img alt="" src="http://farm4.static.flickr.com/3172/3013998020_e48e788138.jpg?v=0" /></p>
<p>Meus parab&eacute;ns a comunidade PHP cearense que a cada evento vem se mostrando s&oacute;lida e com vontade de aprender, espero que todos tenham gostado como eu gostei.</p>
<p>Agrade&ccedil;o ao Fernando Chucre que vem batalhando para organizar a comunidade e a todos os outros que compareceram ao evento.</p>
<p>Keep PHP&#8217;ing!!</p>
<p style="text-align: center;"><img alt="" src="http://farm4.static.flickr.com/3143/3013223429_f782d078f5.jpg?v=0" /></p>
<p><strong><span style="font-size: large;">Fotos</span></strong></p>
<p><a href="http://www.flickr.com/photos/silveiraneto/sets/72157608768747058/">Flickr do Silveira Neto</a></p>
<p><span style="font-size: large;"><strong>Material</strong></span></p>
<div style="width: 425px; text-align: left;" id="__ss_723115"><a style="margin: 12px 0pt 3px; font-family: Helvetica,Arial,Sans-serif; font-style: normal; font-variant: normal; font-weight: normal; font-size: 14px; line-height: normal; font-size-adjust: none; font-stretch: normal; display: block; text-decoration: underline;" href="http://www.slideshare.net/jeffersongirao/depurando-aplicacoes-php-presentation?type=powerpoint" title="Depurando Aplicacoes PHP">Depurando Aplicacoes PHP</a><object height="355" width="425" style="margin: 0px;"><param name="movie" value="http://static.slideshare.net/swf/ssplayer2.swf?doc=depurando-aplicacoes-php-1225887352300853-8&amp;stripped_title=depurando-aplicacoes-php-presentation" /><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" /><embed height="355" width="425" src="http://static.slideshare.net/swf/ssplayer2.swf?doc=depurando-aplicacoes-php-1225887352300853-8&amp;stripped_title=depurando-aplicacoes-php-presentation" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<div style="font-size: 11px; font-family: tahoma,arial; height: 26px; padding-top: 2px;">View SlideShare <a style="text-decoration: underline;" href="http://www.slideshare.net/jeffersongirao/depurando-aplicacoes-php-presentation?type=powerpoint" title="View Depurando Aplicacoes PHP on SlideShare">presentation</a> or <a style="text-decoration: underline;" href="http://www.slideshare.net/upload?type=powerpoint">Upload</a> your own. (tags: <a style="text-decoration: underline;" href="http://slideshare.net/tag/php">php</a> <a style="text-decoration: underline;" href="http://slideshare.net/tag/debug">debug</a>)</div>
</div>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://jefferson.eti.br/?feed=rss2&amp;p=73</wfw:commentRss>
		</item>
		<item>
		<title>CEJUG e CEPUG em Iguatu</title>
		<link>http://jefferson.eti.br/?p=67</link>
		<comments>http://jefferson.eti.br/?p=67#comments</comments>
		<pubDate>Wed, 05 Nov 2008 13:03:24 +0000</pubDate>
		<dc:creator>Jefferson Girão</dc:creator>
		
		<category><![CDATA[educacao]]></category>

		<category><![CDATA[eventos]]></category>

		<category><![CDATA[java]]></category>

		<category><![CDATA[php]]></category>

		<category><![CDATA[eventos cejug cepug php java]]></category>

		<guid isPermaLink="false">http://jefferson.eti.br/?p=67</guid>
		<description><![CDATA[Conforme j&#225; havia avisado por aqui, aconteceu neste s&#225;bado dia 1 de Novembro o I Encontro Java e PHP unindo o CEJUG e CEPUG em Iguatu. O evento foi um sucesso, contamos com um bom p&#250;blico, palestras muito ricas e o melhor: tudo isso acontecendo com um grande demontra&#231;&#227;o de maturidade de ambas as comunidades, [...]]]></description>
			<content:encoded><![CDATA[<p>Conforme j&aacute; havia avisado por <a href="http://jefferson.eti.br/?p=60">aqui</a>, aconteceu neste s&aacute;bado dia 1 de Novembro o I Encontro Java e PHP unindo o <a href="http://cejug.org">CEJUG</a> e <a href="http://cepug.org">CEPUG</a> em Iguatu. O evento foi um sucesso, contamos com um bom p&uacute;blico, palestras muito ricas e o melhor: tudo isso acontecendo com um grande demontra&ccedil;&atilde;o de maturidade de ambas as comunidades, sem picuinhas e agress&otilde;es comuns em muitos eventos.</p>
<p>Outra coisa que posso destacar sobre &eacute; o evento &eacute; que os participantes se sentiram muito provocados e com certeza teremos mais eventos acontecendo na regi&atilde;o. O pontap&eacute; para uma comunidade de desenvolvedores ativa no Centro-Sul do Cear&aacute; est&aacute; dado! <img src='http://jefferson.eti.br/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<p>Agrade&ccedil;o demais o <a href="http://horizontesdigitais.com">Fernando Chucre</a>, <a href="http://www.milfont.org/tech/">Christiano Milfont</a> e o <a href="http://www.milfont.org/tech/">Silveira Neto</a> que se dispuseram a atravessar 400 Km para apoiar esse evento, ao SENAC por acreditar na id&eacute;ia e nos dar apoio incondicional, aos <a href="http://cepug.org/wp-content/uploads/2008/10/patrocinio-1-novembro-sobral-260x300.jpg">patrocinadores</a> e principalmente a todos que se fizeram presente e tornaram esse evento o grande momento que foi.</p>
<p style="text-align: center;"><img src="http://farm4.static.flickr.com/3014/3003975368_8311247546.jpg?v=0" alt="" /></p>
<p style="text-align: center;">&nbsp;</p>
<p style="text-align: center;"><img src="http://farm4.static.flickr.com/3059/3003975348_ee2fea09a8.jpg?v=0" alt="" /></p>
<p>&nbsp;</p>
<p><span style="font-size: large;"><strong>Material</strong></span></p>
<div style="width: 425px; text-align: left;" id="__ss_723115"><a style="margin: 12px 0pt 3px; font-family: Helvetica,Arial,Sans-serif; font-style: normal; font-variant: normal; font-weight: normal; font-size: 14px; line-height: normal; font-size-adjust: none; font-stretch: normal; display: block; text-decoration: underline;" href="http://www.slideshare.net/jeffersongirao/depurando-aplicacoes-php-presentation?type=powerpoint" title="Depurando Aplicacoes PHP">Depurando Aplicacoes PHP</a><object height="355" width="425" style="margin: 0px;"><param name="movie" value="http://static.slideshare.net/swf/ssplayer2.swf?doc=depurando-aplicacoes-php-1225887352300853-8&amp;stripped_title=depurando-aplicacoes-php-presentation" /><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" /><embed height="355" width="425" src="http://static.slideshare.net/swf/ssplayer2.swf?doc=depurando-aplicacoes-php-1225887352300853-8&amp;stripped_title=depurando-aplicacoes-php-presentation" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<div style="font-size: 11px; font-family: tahoma,arial; height: 26px; padding-top: 2px;">View SlideShare <a style="text-decoration: underline;" href="http://www.slideshare.net/jeffersongirao/depurando-aplicacoes-php-presentation?type=powerpoint" title="View Depurando Aplicacoes PHP on SlideShare">presentation</a> or <a style="text-decoration: underline;" href="http://www.slideshare.net/upload?type=powerpoint">Upload</a> your own. (tags: <a style="text-decoration: underline;" href="http://slideshare.net/tag/php">php</a> <a style="text-decoration: underline;" href="http://slideshare.net/tag/debug">debug</a>)</div>
</div>
<p><span style="font-size: larger;"><strong>Fotos</strong></span></p>
<p><a href="http://picasaweb.google.com.br/cmilfont/Iguatu1112008">Picasa do Milfont</a></p>
<p><a href="http://www.flickr.com/photos/silveiraneto/sets/72157608607361149/">Flickr do Silveira</a></p>
<p><a href="http://www.flickr.com/photos/jeffersongirao/sets/72157608653429590/">Flickr do Jefferson</a></p>
]]></content:encoded>
			<wfw:commentRss>http://jefferson.eti.br/?feed=rss2&amp;p=67</wfw:commentRss>
		</item>
		<item>
		<title>Encontro Java+PHP em Iguatu</title>
		<link>http://jefferson.eti.br/?p=60</link>
		<comments>http://jefferson.eti.br/?p=60#comments</comments>
		<pubDate>Fri, 24 Oct 2008 15:07:01 +0000</pubDate>
		<dc:creator>Jefferson Girão</dc:creator>
		
		<category><![CDATA[desenvolvimento]]></category>

		<category><![CDATA[eventos]]></category>

		<category><![CDATA[php java eventos]]></category>

		<guid isPermaLink="false">http://jefferson.eti.br/?p=60</guid>
		<description><![CDATA[No dia 1 de novembro pr&#243;ximo estar&#225; acontecendo o Encontro Java e PHP em Iguatu.
Percebe-se uma defici&#234;ncia muito grande no mercado de TI na regi&#227;o em que vivo e este evento al&#233;m de seu cunho t&#233;cnico tem um objetivo muito ambicioso que &#233; reunir estudantes e profissionais poucos e dispersos e criar uma verdadeira comunidade [...]]]></description>
			<content:encoded><![CDATA[<p>No dia 1 de novembro pr&oacute;ximo estar&aacute; acontecendo o Encontro Java e PHP em Iguatu.</p>
<p>Percebe-se uma defici&ecirc;ncia muito grande no mercado de TI na regi&atilde;o em que vivo e este evento al&eacute;m de seu cunho t&eacute;cnico tem um objetivo muito ambicioso que &eacute; reunir estudantes e profissionais poucos e dispersos e criar uma verdadeira comunidade de desenvolvedores se articulando para trazer (e ir para) eventos, buscar cursos de n&iacute;vel superior na &aacute;rea de ti, compartilhar experi&ecirc;ncias, enfim:&nbsp; ao inv&eacute;s da atitude c&ocirc;moda de reclamar das circunst&acirc;ncias ou ir busc&aacute;-las fora, iremos tentar cri&aacute;-las por aqui.</p>
<p>Mais informa&ccedil;&otilde;es sobre o evento <a href="http://cepug.org/2008/10/encontro-cepug-e-cejug-java-php-em-iguatu/">aqui</a>.</p>
<p>Tecnologia como fator de transforma&ccedil;&atilde;o social: Eu acredito nisso!</p>
]]></content:encoded>
			<wfw:commentRss>http://jefferson.eti.br/?feed=rss2&amp;p=60</wfw:commentRss>
		</item>
		<item>
		<title>Uso de programação em par na educação</title>
		<link>http://jefferson.eti.br/?p=54</link>
		<comments>http://jefferson.eti.br/?p=54#comments</comments>
		<pubDate>Thu, 09 Oct 2008 23:28:05 +0000</pubDate>
		<dc:creator>Jefferson Girão</dc:creator>
		
		<category><![CDATA[educacao]]></category>

		<category><![CDATA[pair programming]]></category>

		<category><![CDATA[xp]]></category>

		<guid isPermaLink="false">http://jefferson.eti.br/?p=54</guid>
		<description><![CDATA[Tirando a poeira desse blog.  
Em algumas aulas de programa&#231;&#227;o tenho feito uma experi&#234;ncia com meus alunos: fazendo com que pratiquem programa&#231;&#227;o em par, uma pr&#225;tica de XP. Pesquisando sobre quem mais andava utilizando essa t&#233;cnica no processo de aprendizagem achei esse estudo fant&#225;stico sobre tema. Al&#233;m de tudo eles produziram um video super [...]]]></description>
			<content:encoded><![CDATA[<p>Tirando a poeira desse blog. <img src='http://jefferson.eti.br/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<p>Em algumas aulas de programa&ccedil;&atilde;o tenho feito uma experi&ecirc;ncia com meus alunos: fazendo com que pratiquem programa&ccedil;&atilde;o em par, uma pr&aacute;tica de <a href="http://pt.wikipedia.org/wiki/Programa%C3%A7%C3%A3o_extrema">XP</a>. Pesquisando sobre quem mais andava utilizando essa t&eacute;cnica no processo de aprendizagem achei <a href="http://agile.csc.ncsu.edu/pairlearning/index.php">esse estudo fant&aacute;stico sobre tema</a>. Al&eacute;m de tudo eles produziram um <a href="http://agile.csc.ncsu.edu/pairlearning/educators.php">video</a> super legal apresentando a programa&ccedil;&atilde;o em par para os estudantes que pretendo legendar para usar em sala (com certeza postarei isso por aqui).</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://jefferson.eti.br/?feed=rss2&amp;p=54</wfw:commentRss>
		</item>
		<item>
		<title>Subversion no Delphi</title>
		<link>http://jefferson.eti.br/?p=43</link>
		<comments>http://jefferson.eti.br/?p=43#comments</comments>
		<pubDate>Tue, 02 Sep 2008 13:00:53 +0000</pubDate>
		<dc:creator>Jefferson Girão</dc:creator>
		
		<category><![CDATA[delphi]]></category>

		<category><![CDATA[desenvolvimento]]></category>

		<category><![CDATA[delphi subversion svn]]></category>

		<guid isPermaLink="false">http://jefferson.eti.br/?p=43</guid>
		<description><![CDATA[O Delphi (até a versão 2005 que é a última que utilizei) não possui nenhum recurso para controle de versão com subversion na própria ferramenta. Uma forma e solucionar isso é utilizar o TortoiseSVN com um Add-In que permite seu uso integrado.
Segue os passos para a Instalação:

Baixe e Instale o TortoiseSVN  (Sem mistérios aqui, apenas [...]]]></description>
			<content:encoded><![CDATA[<p>O Delphi (até a versão 2005 que é a última que utilizei) não possui nenhum recurso para controle de versão com subversion na própria ferramenta. Uma forma e solucionar isso é utilizar o <a href="http://tortoisesvn.tigris.org/">TortoiseSVN</a> com um Add-In que permite seu uso integrado.</p>
<p>Segue os passos para a Instalação:</p>
<ul>
<li>Baixe e Instale o TortoiseSVN  (Sem mistérios aqui, apenas o esquema Next-&gt;Next-&gt;Finish)</li>
<li>Baixe o <a href="http://delphiaddinfortortoisesvn.tigris.org/tsvnWizard.pas">código fonte do Add-In</a> e <a href="http://http://delphiaddinfortortoisesvn.tigris.org/icons.res">este arquivo de recurso</a> e coloque-os em uma mesma pasta.</li>
<li>No Delphi crie um novo projeto do tipo Package ( no D7 é File-&gt;New-&gt;Other-&gt;Package)</li>
<li>Clique no botão Add é adicione a unit tsvnWizard.pas que você baixou</li>
<li>Compile e depois Install</li>
</ul>
<p>No Delphi aparecerá um novo menu com as ações do TortoiseSVN.</p>
<p>É isso!</p>
]]></content:encoded>
			<wfw:commentRss>http://jefferson.eti.br/?feed=rss2&amp;p=43</wfw:commentRss>
		</item>
	</channel>
</rss>
