<?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>Herberth Amaral &#187; tdd</title> <atom:link href="http://herberthamaral.com/tag/tdd/feed/" rel="self" type="application/rss+xml" /><link>http://herberthamaral.com</link> <description>Software development adventures</description> <lastBuildDate>Thu, 26 Aug 2010 13:59:42 +0000</lastBuildDate> <language>en</language> <sy:updatePeriod>hourly</sy:updatePeriod> <sy:updateFrequency>1</sy:updateFrequency> <generator>http://wordpress.org/?v=3.0.1</generator> <item><title>Testes unitarios no Flex usando o FlexUnit 4</title><link>http://herberthamaral.com/2010/01/testes-unitarios-no-flex-usando-o-flexunit-4/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=testes-unitarios-no-flex-usando-o-flexunit-4</link> <comments>http://herberthamaral.com/2010/01/testes-unitarios-no-flex-usando-o-flexunit-4/#comments</comments> <pubDate>Thu, 28 Jan 2010 14:12:08 +0000</pubDate> <dc:creator>Herberth Amaral</dc:creator> <category><![CDATA[Flex & Actionscript]]></category> <category><![CDATA[agile]]></category> <category><![CDATA[tdd]]></category> <category><![CDATA[flex]]></category> <category><![CDATA[flex builder]]></category> <category><![CDATA[flexunit 4]]></category> <category><![CDATA[integração contínua]]></category> <category><![CDATA[tutorial]]></category><guid isPermaLink="false">http://herberthamaral.com/?p=179</guid> <description><![CDATA[O FlexUnit 4 é a mais nova versão (não tem a oficial, só a RC, por enquanto) e apresenta uma série de vantagens sobre o seu antecessor, o FlexUnit 0.9, como os metadados de teste ([Test], [After] e [Before], para citar as mais populares), Theories, DataPoints e Assumptions que são úteis para testar grandes quantidades [...]]]></description> <content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;"> <a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fherberthamaral.com%2F2010%2F01%2Ftestes-unitarios-no-flex-usando-o-flexunit-4%2F"> <img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fherberthamaral.com%2F2010%2F01%2Ftestes-unitarios-no-flex-usando-o-flexunit-4%2F&amp;source=HerberthAmaral&amp;style=normal" height="61" width="50" /> </a></div><p>O FlexUnit 4 é a mais nova versão (não tem a oficial, só a RC, por enquanto) e apresenta uma série de vantagens sobre o seu antecessor, o FlexUnit 0.9, como os metadados de teste ([Test], [After] e [Before], para citar as mais populares), Theories, DataPoints e Assumptions que são úteis para testar grandes quantidades (talvez até infinita) de dados e ver como a aplicação se comporta e a possibilidade de executar os testes com diferentes Runners.</p><p>Este tutorial tem como objetivo mostrar o básico de testes unitários no Flex, sem se aprofundar muito nos recursos avançados do framework de testes.  Eu pretendo ir postando mais tutoriais à medida que eu for me aprofundando na tecnologia.</p><p><strong>O setup</strong></p><p>Para usar o FlexUnit4, você precisa baixa-lo <a href="http://opensource.adobe.com/wiki/display/flexunit/Downloads" target="_blank">aqui</a>. Após isso, crie um projeto no Flex Builder e adicione todas as libs que vieram no pacote no seu diretório libs:<br /> <a href="http://herberthamaral.com/wp-content/uploads/2010/01/flex_new_project.png"><img class="aligncenter size-full wp-image-180" title="flex_new_project" src="http://herberthamaral.com/wp-content/uploads/2010/01/flex_new_project.png" alt="" width="680" height="591" /></a></p><div id="attachment_182" class="wp-caption aligncenter" style="width: 275px"><a href="http://herberthamaral.com/wp-content/uploads/2010/01/flex_navigator1.png"><img class="size-full wp-image-182" title="flex_navigator" src="http://herberthamaral.com/wp-content/uploads/2010/01/flex_navigator1.png" alt="" width="265" height="308" /></a><p class="wp-caption-text">Verifique se todas as libs estão lá</p></div><p>Como o bom e velho TDD manda, vamos primeiro escrever a classe de teste de exemplo antes de escrever nosso código de produção.</p><p><strong>A classe de teste</strong></p><p>Uma classe de testes é uma classe comum que usa a classe Assert para fazer asserções. No exemplo que irei mostrar, usarei dois tipos básicos de asserção, mas se você observar, o FlexUnit possui vários tipos diferentes de asserções:</p><pre class="brush:java">package tests
{
	import org.flexunit.Assert;
	import org.flexunit.runner.manipulation.filters.IncludeAllFilter;

	import production.BasicClass;

	public class BasicTests
	{
		public function BasicTests(){}
		private var basicClass:BasicClass;

		[Before]
		public function before():void
		{
			basicClass = new BasicClass();
		}

		[Test]
		public function Verifica_Se_As_Duas_Strings_Sao_Iguais():void
		{
			var str:String = "MinhaString";
			Assert.assertTrue(basicClass.areStringsEqual(str,"MinhaString"));
		}

		[Test]
		public function Verifica_Se_A_Soma_Retorna_Resultado_Correto():void
		{
			var soma:int = 10;
			Assert.assertEquals(soma,basicClass.somar(2,8));
		}

		[After]
		public function after():void
		{
			//codigo de after
		}

	}
}</pre><p><strong>A suíte de teste</strong></p><p>A suíte de testes inclui nosso caso de teste descrito acima e será útil para o Flex executar nossos testes. Sendo assim, nossa suíte de testes ficaria mais ou menos desse jeito:</p><pre class="brush:java">package tests
{
	[Suite]
	[RunWith("org.flexunit.runners.Suite")]
	public class MyTestSuite
	{
		public var baseTest:BasicTests;
		public function MyTestSuite(){}

	}
}</pre><p><strong>UITestRunner e o FlexUnitCore</strong></p><p>O UITestRunner é um componente do FlexUnit que mostra os testes numa interface gráfica. Ele ficará na nossa aplicação e mostrará os resultados dos testes.</p><p>O FlexUnitCore será o responsável por carregar as suítes de teste e por passar os dados de saída de testes para o UITestRunner. No nosso caso, nossa aplicação principal ficaria assim:</p><pre class="brush:xml">&lt;?xml version="1.0" encoding="utf-8"?&gt;
&lt;mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" creationComplete="run()" layout="absolute" xmlns:flexUnitUIRunner="http://www.adobe.com/2009/flexUnitUIRunner"&gt;
    &lt;mx:Script&gt;
    &lt;![CDATA[
       import tests.MyTestSuite;
       import org.flexunit.listeners.UIListener;
       import org.flexunit.runner.FlexUnitCore;

       public var core:FlexUnitCore;
       public function run():void
       {
           core = new FlexUnitCore();
           core.addListener(new UIListener(uiRunner));
           core.run(MyTestSuite);
      }
    ]]&gt;
   &lt;/mx:Script&gt;
   &lt;flexUnitUIRunner:TestRunnerBase id="uiRunner"  width="100%" height="100%"/&gt;
&lt;/mx:Application&gt;</pre><p><strong>O código de produção</strong></p><p>Ufa! Depois de escrever a classe de teste, a suíte de teste e o runner, podemos nos focar em fazer nosso código de produção <img src='http://herberthamaral.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> . Dêem uma olhada em como ficaria o dito:</p><pre class="brush:java">package production
{
	public class BasicClass
	{
		public function BasicClass(){}

		public function areStringsEqual(string1:String,string2:String):Boolean
		{
			return (string1==string2);
		}

		public function somar(valor1:int,valor2:int):int
		{
			return valor1+valor2;
		}

	}
}</pre><p><strong>E Voilà!</strong></p><p>Depois de tudo pronto, a cara da criança ficaria mais ou menos assim:</p><p><a href="http://herberthamaral.com/wp-content/uploads/2010/01/ui_runner.png"><img class="aligncenter size-medium wp-image-190" title="ui_runner" src="http://herberthamaral.com/wp-content/uploads/2010/01/ui_runner-300x177.png" alt="" width="300" height="177" /></a></p><p>Legal, não? E ainda dá pra fazer com que o FlexUnit4 exporte o resultado dos testes para um arquivo XML, permitindo que seus testes no Flex sejam importados pelo seu sistema de Integração Contínua, mas isso é assunto para outro post <img src='http://herberthamaral.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /></p><p>Você pode baixar o código fonte <a href="http://herberthamaral.com/wp-content/tutoriais/flexunit4/UsandoFlexUnit4.zip" target="_blank">aqui</a> e ver os exemplos rodando online <a href="http://herberthamaral.com/wp-content/tutoriais/flexunit4/" target="_blank">aqui</a>.</p><p>Good testing!</p><p>Sem posts relacionados.</p>]]></content:encoded> <wfw:commentRss>http://herberthamaral.com/2010/01/testes-unitarios-no-flex-usando-o-flexunit-4/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Como voce testa seu JavaScript?</title><link>http://herberthamaral.com/2010/01/como-voce-testa-seu-javascript/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=como-voce-testa-seu-javascript</link> <comments>http://herberthamaral.com/2010/01/como-voce-testa-seu-javascript/#comments</comments> <pubDate>Mon, 25 Jan 2010 01:57:02 +0000</pubDate> <dc:creator>Herberth Amaral</dc:creator> <category><![CDATA[JavaScript]]></category> <category><![CDATA[agile]]></category> <category><![CDATA[tdd]]></category> <category><![CDATA[integração contínua]]></category><guid isPermaLink="false">http://herberthamaral.com/?p=168</guid> <description><![CDATA[Testes unitários é um assunto muito comum hoje em dia entre desenvolvedores. Mas somente assunto, pois apenas 2% dos desenvolvedores escrevem testes. Depois de ler o post do Giovanni Bassi, eu queria saber: quanto desses 2% que escrevem testes para suas aplicações desenvolvem E escrevem testes em JavaScript? É, acho que entrei num ponto crítico [...]]]></description> <content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;"> <a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fherberthamaral.com%2F2010%2F01%2Fcomo-voce-testa-seu-javascript%2F"> <img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fherberthamaral.com%2F2010%2F01%2Fcomo-voce-testa-seu-javascript%2F&amp;source=HerberthAmaral&amp;style=normal" height="61" width="50" /> </a></div><p><a href="http://herberthamaral.com/wp-content/uploads/2010/01/qunit.png"></a>Testes unitários é um assunto muito comum hoje em dia entre desenvolvedores. Mas somente assunto, pois <a href="http://unplugged.giggio.net/unplugged/post/TDD-nao-existe.aspx" target="_blank">apenas 2% dos desenvolvedores escrevem testes</a>. Depois de ler o post do Giovanni Bassi, eu queria saber: quanto desses 2% que escrevem testes para suas aplicações desenvolvem <strong>E </strong>escrevem testes em JavaScript?</p><p>É, acho que entrei num ponto crítico aqui. Nas minhas pesquisas sobre <a href="http://en.wikipedia.org/wiki/Test-driven_development" target="_blank">TDD</a> , eu vi muita documentação para Java, .NET, Python, Ruby, PHP, Flex e Silverlight, mas é raro ver alguem falar de JavaScript. Será se são os devs que acham que JavaScript é coisa de menino ou é realmente difícil de testar apps em JS?</p><p><strong>A dificuldade</strong></p><p>Não há um único ambiente de testes para JavaScript. Há divergência entre os interpretadores que estão presentes em cada browser, o que nos obriga a testar em todos eles (ou pelo menos nos mais populares). IE, Firefox, Safari e Google Chrome são os mais comuns. Isso sem contar os browsers para Smartphones.</p><p>Imagine um desenvolvedor que esteja acostumado com o JUnit, NUnit, PHPUnit ou outros xUnit da vida, onde é necessário o mínimo de esforço para fazer testes. Agora imagine esse mesmo desenvolvedor abrindo 3 browsers diferentes e apertando F5 a cada vez que ele escreve um teste. Não tiro a razão de não testar JavaScript&#8230;. é simplesmente chato&#8230;</p><p>Há bibliotecas de teste que ajudam no desenvolvimento dos testes, como é o caso do js-test-driver, JSPec e JSUnit, por exemplo. Essas ferramentas têm recursos para fazer os testes rodarem em vários browsers através da linha de comando, mas todas elas possuem inconvenientes graves. O js-test-driver não suporta HTML <a href="http://en.wikipedia.org/wiki/Test_fixture" target="_blank">fixtures</a>, ou seja, se você quer testar alguma função em JavaScript que envolva manipulação do DOM, você terá que escrever o código HTML dentro do código JS. O JSUnit exige que você carregue cada caso de teste em JS dentro de um HTML. Além de ter de ficar escrevendo HTML toda hora na mão, ele não possui uma boa ferramenta de testes pela linha de comando. O JSPec parece funcionar muito bem. É o meu sonho de consumo atualmente: suporta fixtures, boa separação HTML/JS, Ajax <a href="http://en.wikipedia.org/wiki/Mock_object">Mocking</a>, suporte à ferramentas de integração contínua e tem um conjunto de Shell Scripts que funcionam muito bem em um Unix.<strong> Somente em Unix.</strong></p><p>A coisa é tão crítica que essa semana eu estava reparando isso na página do <a href="http://docs.jquery.com/QUnit" target="_blank">QUnit</a>:</p><p style="text-align: center;"><a href="http://herberthamaral.com/wp-content/uploads/2010/01/qunit.png"><img class="aligncenter" title="qunit" src="http://herberthamaral.com/wp-content/uploads/2010/01/qunit.png" alt="" width="614" height="509" /></a></p><p style="text-align: left;">Quantos plugins que o jQuery tem? Vários, correto? Alguem pode explicar o porquê de <strong>somente </strong>o plugin de validação do jQuery ter testes decentes? Acho que isso ajuda a mostrar o quanto é difícil de testar JavaScript.</p><p style="text-align: left;"><strong>A solução e o futuro</strong></p><p style="text-align: left;">Bem, no atual estado da arte das ferramentas de testes unitários de JavaScript, nós temos que nos sujeitar à uns procedimentos um tanto quanto chatos se quisermos testar nossas aplicações. Felizmente, há projetos muito ativos e muito bons que eu pude ver (js-test-driver e JSPec, principalmente) que estão avançando. Eu espero que o js-test-driver dê suporte a loading de HTML fixtures assim como o JSPec suporte plataformas Microsoft (sim, eu ainda desenvolvo em Windows) em um futuro próximo (assim como eu espero que eu cumpra a promessa de ajudar nesses projetos).</p><p style="text-align: left;">Você que está lendo esse texto já teve o mesmo tipo de experiência? O que achou? Conseguiu solucionar alguns dos problemas que eu citei aqui? Então saia do modo read-only e comente <img src='http://herberthamaral.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /></p><p><h4>Posts relacionados:</h4><ol><li><a href='http://herberthamaral.com/2010/03/o-que-fazer-quando-seu-codigo-javascript-se-torna-um-monstro/' rel='bookmark' title='Permanent Link: O que fazer quando seu codigo JavaScript se torna um monstro'>O que fazer quando seu codigo JavaScript se torna um monstro</a></li></ol></p>]]></content:encoded> <wfw:commentRss>http://herberthamaral.com/2010/01/como-voce-testa-seu-javascript/feed/</wfw:commentRss> <slash:comments>1</slash:comments> </item> <item><title>&#8220;A gente nao quer so codigo&#8230; a gente quer codigo, controle de versao e bug track&#8221;</title><link>http://herberthamaral.com/2009/12/a-gente-nao-quer-so-codigo-a-gente-quer-codigo-controle-de-versao-e-bug-track/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=a-gente-nao-quer-so-codigo-a-gente-quer-codigo-controle-de-versao-e-bug-track</link> <comments>http://herberthamaral.com/2009/12/a-gente-nao-quer-so-codigo-a-gente-quer-codigo-controle-de-versao-e-bug-track/#comments</comments> <pubDate>Thu, 10 Dec 2009 09:18:42 +0000</pubDate> <dc:creator>Herberth Amaral</dc:creator> <category><![CDATA[Misc]]></category> <category><![CDATA[agile]]></category> <category><![CDATA[controle de versão]]></category> <category><![CDATA[pdca]]></category> <category><![CDATA[scrum]]></category> <category><![CDATA[tdd]]></category> <category><![CDATA[unimontes]]></category> <category><![CDATA[xp]]></category><guid isPermaLink="false">http://herberthamaral.com/?p=46</guid> <description><![CDATA[Tá certo. A paródia da música dos Titãs não ficou boa. Mas acho que já deu pra sacar do que este post trata. Enfrentar as matérias de programação na faculdade para quem já trabalha com desenvolvimento deve ser um saco para muita gente. Os professores geralmente não trabalham na área, não sacam nada além da linguagem e [...]]]></description> <content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;"> <a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fherberthamaral.com%2F2009%2F12%2Fa-gente-nao-quer-so-codigo-a-gente-quer-codigo-controle-de-versao-e-bug-track%2F"> <img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fherberthamaral.com%2F2009%2F12%2Fa-gente-nao-quer-so-codigo-a-gente-quer-codigo-controle-de-versao-e-bug-track%2F&amp;source=HerberthAmaral&amp;style=normal" height="61" width="50" /> </a></div><p>Tá certo. A paródia da música dos Titãs não ficou boa. Mas acho que já deu pra sacar do que este post trata.</p><p>Enfrentar as matérias de programação na faculdade para quem já trabalha com desenvolvimento deve ser um saco para muita gente. Os professores geralmente não trabalham na área, não sacam nada além da linguagem e ainda tem coragem de nos fazer de trouxa, explicando como é a sintaxe da linguagem, como fazer algumas coisas básicas (leia-se CRUD) e acham que está tudo ok. Não está. Óbvio que não. Então, eu tenho algumas coisas a dizer para tais professores (e para os alunos também).</p><h3>1 &#8211; Ensinar algumas coisas sobre a sintaxe e mostrar um CRUD <em>não </em>é o suficiente.</h3><p>Precisamos mais além disso para desenvolver um trabalho final decente. Nós, alunos, precisamos aprender a nos virar, mas precisamos saber com <strong>o que</strong> devemos nos virar. Coisas básicas como indentação de código deveria ser cobrada. <em><a href="http://en.wikipedia.org/wiki/Separation_of_concerns" target="_blank">Separation of Concerns</a></em> deveria ser incentivado e cobrado desde o início, por exemplo.</p><p>Não serei injusto. Algumas coisas como &#8220;comente seu código para documenta-lo&#8221; nos é ensinada. Isso é importante para quem está começando, pois saber se orientar dentro do próprio código é uma boa. Mas é algo insuficiente. Eles não ensinam como código pode ser autodocumentado, como bons nomes de variáveis podem ajudar nisso, como codificar &#8220;de cima para baixo&#8221; e outras coisas relacionadas a codificação.</p><h3>2 &#8211; Nos passar trabalhos em grupo não necessariamente nos ensina a trabalhar como uma equipe.</h3><p>Há vários trabalhos finais para fazermos e a forma mais fácil de fazer isso é deixar um para cada um. Dá pra eliminar vários problemas de comunicação e sincronização de código assim. Acho que já deu pra perceber que não aprendemos muito sobre ferramentas para desenvolvimento em equipe&#8230;</p><p>Quem for tentar desenvolver em equipe, provavelmente o fará enviando código por email, trocando pen-drives ou enviando via compartilhamento de arquivos, se tiver na mesma rede (impressionante, mas <strong>já vi </strong>&#8220;profissionais&#8221; trabalhando assim) e notarão o trabalho que isso dá. Obviamente, dá pra notar que não tivemos uma aula sobre <a href="http://pt.wikipedia.org/wiki/Sistema_de_controle_de_vers" target="_blank">controles de versão</a>&#8230;</p><h3>3 &#8211; O trabalho não acaba com a entrega&#8230;</h3><p>Quem trabalha com desenvolvimento de software há um tempo sabe do que eu estou falando. De acordo com <a href="http://users.jyu.fi/~koskinen/smcosts.htm" target="_blank">esse paper</a>, mais de 90% dos custos de um software estão na sua manutenção. Vendo por esse lado, não estamos fazendo nem 10% do trabalho que deveríamos fazer.</p><p>Várias práticas de programação importantes são feitas durante a manutenção. Uma delas é a adição/mudança de recursos. Se fizéssemos isso, perceberíamos que coisas como refatoração e testes unitários são importantes.</p><h3>4 &#8211; Metodologias são sempre bem vindas</h3><p>Uma das dúvidas de quem começa a desenvolver é: como devo proceder, qual metodologia adotar. Um professor tem que ser um guia para um aluno escolher um método de trabalho. <a href="http://pt.wikipedia.org/wiki/Praxis_(engenharia_de_software)" target="_blank">Praxis</a>? <a href="http://pt.wikipedia.org/wiki/Programa%C3%A7%C3%A3o_Extrema" target="_blank">XP</a>? <a href="http://pt.wikipedia.org/wiki/Scrum" target="_blank">Scrum</a>? <a href="http://pt.wikipedia.org/wiki/PDCA" target="_blank">PDCA</a>? Sair fazendo na doida não é das melhores escolhas <img src='http://herberthamaral.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /></p><p>Na matéria de Engenharia de Software, nós temos uma visão teórica de cada uma dessas metodologias. Uma matéria de programação com um projeto pra entregar poderia ser um cenário perfeito para coloca-las em prática.</p><h3>5 &#8211; Conclusão</h3><p>Matérias como essa são muito desperdiçadas na nossa universidade. E eu imagino que seja em outras também. Se você é professor, comece a pensar nisso e pense em como você pode ajudar a mudar o quadro aqui exposto. Se você é aluno, cobre isso do seu professor. Ou pelo menos tenha a boa vontade de estudar sozinho <img src='http://herberthamaral.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /></p><p>Sem posts relacionados.</p>]]></content:encoded> <wfw:commentRss>http://herberthamaral.com/2009/12/a-gente-nao-quer-so-codigo-a-gente-quer-codigo-controle-de-versao-e-bug-track/feed/</wfw:commentRss> <slash:comments>11</slash:comments> </item> <item><title>CodingDojo na Unimontes!</title><link>http://herberthamaral.com/2009/12/codingdojo-na-unimontes/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=codingdojo-na-unimontes</link> <comments>http://herberthamaral.com/2009/12/codingdojo-na-unimontes/#comments</comments> <pubDate>Mon, 07 Dec 2009 20:49:44 +0000</pubDate> <dc:creator>Herberth Amaral</dc:creator> <category><![CDATA[agile]]></category> <category><![CDATA[coding dojo]]></category> <category><![CDATA[tdd]]></category> <category><![CDATA[unimontes]]></category><guid isPermaLink="false">http://herberthamaral.com/?p=52</guid> <description><![CDATA[É com muito prazer que estou anunciando o nosso primeiro CodingDojo na Unimontes, sendo realizado pelo GWIB. Mais detalhes no post do evento Até lá! Posts relacionados:Streaming do Mare de Agilidade na Unimontes]]></description> <content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;"> <a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fherberthamaral.com%2F2009%2F12%2Fcodingdojo-na-unimontes%2F"> <img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fherberthamaral.com%2F2009%2F12%2Fcodingdojo-na-unimontes%2F&amp;source=HerberthAmaral&amp;style=normal" height="61" width="50" /> </a></div><p>É com muito prazer que estou anunciando o nosso primeiro CodingDojo na Unimontes, sendo realizado pelo <a href="http://gwibbers.wordpress.com" target="_blank">GWIB</a>.<br /> Mais detalhes no <a href=" http://gwibbers.wordpress.com/2009/12/07/codingdojo-na-unimontes-11122009-apareca-la/" target="_blank">post do evento</a></p><p>Até lá!</p><p><h4>Posts relacionados:</h4><ol><li><a href='http://herberthamaral.com/2010/04/streaming-do-mare-de-agilidade-na-unimontes/' rel='bookmark' title='Permanent Link: Streaming do Mare de Agilidade na Unimontes'>Streaming do Mare de Agilidade na Unimontes</a></li></ol></p>]]></content:encoded> <wfw:commentRss>http://herberthamaral.com/2009/12/codingdojo-na-unimontes/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> </channel> </rss>