<?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>Valério Farias</title>
	<atom:link href="http://valeriofarias.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://valeriofarias.com</link>
	<description>(Tecnologia + Negócios) = :)</description>
	<lastBuildDate>Tue, 29 Mar 2011 21:07:52 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Papo-de-Nerd: Aniversário com números binários</title>
		<link>http://valeriofarias.com/papo-de-nerd-aniversario-com-numeros-binarios/</link>
		<comments>http://valeriofarias.com/papo-de-nerd-aniversario-com-numeros-binarios/#comments</comments>
		<pubDate>Tue, 29 Mar 2011 21:02:32 +0000</pubDate>
		<dc:creator>Valério Farias</dc:creator>
				<category><![CDATA[Papo de Nerd]]></category>
		<category><![CDATA[aniversário]]></category>
		<category><![CDATA[binário]]></category>
		<category><![CDATA[bolo]]></category>
		<category><![CDATA[nerd]]></category>
		<category><![CDATA[números]]></category>
		<category><![CDATA[velas]]></category>

		<guid isPermaLink="false">http://valeriofarias.com/?p=386</guid>
		<description><![CDATA[Certa vez, fiquei responsável para comprar bolo, salgadinhos e velas, para a comemoração do aniversário de uma pessoa da minha família.
Encomendei o bolo e os salgadinhos, mas quando fui buscar, tive um pequeno probleminha: na loja não havia velas com formato de números. Só havia velas simples.
Colocar uma única velinha estava fora de cogitação. Então [...]]]></description>
			<content:encoded><![CDATA[<p>Certa vez, fiquei responsável para comprar bolo, salgadinhos e velas, para a comemoração do <strong>aniversário</strong> de uma pessoa da minha família.</p>
<p>Encomendei o bolo e os salgadinhos, mas quando fui buscar, tive um <strong>pequeno probleminha</strong>: na loja não havia velas com formato de números. Só havia velas simples.</p>
<p>Colocar uma única velinha estava fora de cogitação. Então pensei inicialmente em comprar a quantidade de velas equivalentes a idade da pessoa. Mas como a pessoa tinha a <strong>idade maior que 20</strong>, achei que seria um exagero de velas em cima do bolo.</p>
<p>Daí me veio a seguinte <strong>idéia nerd</strong>: Porque não utilizar um sequência de velinhas acessas e apagadas representando a idade em <strong>formato binário</strong> ao invés de decimal. Como a idade era <strong>menor que 32</strong>, logo percebi que bastavam 5 velinhas para representá-la. Ao invés de mais de 20 como na primeira idéia.</p>
<p>O bolo e a sequência de velinhas ficaram organizados como na figura abaixo: </p>
<p><a href="http://valeriofarias.com/wp-content/uploads/2011/03/bolo-binario.jpg"><img src="http://valeriofarias.com/wp-content/uploads/2011/03/bolo-binario-150x150.jpg" alt="" title="bolo-binario" width="150" height="150" class="aligncenter size-thumbnail wp-image-387" /></a></p>
<p>A vela acessa representa o número 1 (um) e a vela apagada representa o número 0 (zero). A sequência de velas portanto representa o número <strong>11001</strong> (um, um, zero, zero, um). Meio esquisito a princípio mais é isso mesmo que você leu. O cumprimento ao aniversariante fica: <strong>&#8220;Parabéns pelos seus um, um, zero, zero, um anos de idade.&#8221;</strong> <img src='http://valeriofarias.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><strong>Obs.: </strong>Antes do aniversariante soprar as velinhas eu tive que explicar um pouco sobre os números binários. A estratégia foi bem aceita. Ufa! <img src='http://valeriofarias.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Agora tentem adivinhar que idade esse número binário representa em decimal. Se tiver pressa digite no google a seguinte expressão: <a href="http://www.google.com/search?hl=en&#038;q=0b11001+in+decimal">0b11001 in decimal</a> e aperte enter, ou simplesmente clique no link anterior.</p>
<p>Grande abraço.</p>
]]></content:encoded>
			<wfw:commentRss>http://valeriofarias.com/papo-de-nerd-aniversario-com-numeros-binarios/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>O primeiro robô (tradução)</title>
		<link>http://valeriofarias.com/o-primeiro-robo/</link>
		<comments>http://valeriofarias.com/o-primeiro-robo/#comments</comments>
		<pubDate>Mon, 28 Mar 2011 23:26:42 +0000</pubDate>
		<dc:creator>Valério Farias</dc:creator>
				<category><![CDATA[história digital]]></category>
		<category><![CDATA[história]]></category>
		<category><![CDATA[humanóide]]></category>
		<category><![CDATA[inteligência artificial]]></category>
		<category><![CDATA[Isaac Asimov]]></category>
		<category><![CDATA[redes neurais]]></category>
		<category><![CDATA[robô]]></category>

		<guid isPermaLink="false">http://valeriofarias.com/?p=380</guid>
		<description><![CDATA[
O texto original foi escrito por por Dan Wohlbruck e você pode encontrar aqui.
Aconteceu em 1928 no mês de setembro
Dan Wohlbruck acrescenta à sua série: &#8220;Quando isso aconteceu?&#8221; Ensaios sobre a história do primeiro robô de aparência humana. Ele relata, de forma surpreendentemente, que &#8220;Eric foi uma substituição simples e bem sucedida para o Duque [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://valeriofarias.com/wp-content/uploads/2011/03/robo.jpg"><img src="http://valeriofarias.com/wp-content/uploads/2011/03/robo.jpg" alt="" title="robô" width="186" height="220" class="alignright size-full wp-image-381" /></a><br />
<blockquote>O texto original foi escrito por por Dan Wohlbruck e você pode encontrar <a href="http://pragprog.com/magazines/2010-09/the-first-robot">aqui</a>.</p></blockquote>
<p><strong>Aconteceu em 1928 no mês de setembro</strong></p>
<p>Dan Wohlbruck acrescenta à sua série: &#8220;Quando isso aconteceu?&#8221; Ensaios sobre a história do primeiro robô de aparência humana. Ele relata, de forma surpreendentemente, que &#8220;Eric foi uma substituição simples e bem sucedida para o Duque de York.&#8221;</p>
<p>Em 20 de setembro de 1928, Eric, o primeiro robô de aparência humana, abriu a Exposição da Sociedade de Engenheiros modeladores em Londres(Society of Model Engineers). Capitão William Richards, um jornalista e veterano da Primeira Guerra Mundial, e AH Reffell, um engenheiro, foram os inventores. Capitão Richards se inspirou para construir Eric quando o Duque de York, que foi convidado para abrir a exposição, não pôde comparecer à cerimônia. A apresentação de Eric é descrita no site cyberneticzoo.com desta maneira:</p>
<p>&#8220;Eric se levantou, inclinou a cabeça, olhou para a direita, à esquerda, e, com gestos apropriados, deu um discurso de abertura de quatro minutos.&#8221;</p>
<p>Eric foi feito de alumínio e pesava aproximadamente 63kg. Os movimentos de Eric eram produzidos por pequenos motores elétricos e seus olhos eram lâmpadas elétricas. A voz de Eric foi enviada por transmissão de rádio sem fio e emitida através de uma caixa de som na boca. Eric não conseguia pensar e ele não tinha nenhuma capacidade computacional. Eric foi uma substituição simples e bem sucedida para o Duque de York.</p>
<p>(Eric pode ser visto <a href="http://www.davidbuckley.net/DB/HistoryMakers/Eric-RUR.jpg">aqui</a>.)</p>
<p><strong>Outros Robôs Pioneiros</strong></p>
<p>Eric não foi a primeira máquina de aparência humana já projetada, no entanto. Ninguém além de Leonardo da Vinci, usou como tema: robôs. Em 1957, um pesquisador italiano, olhando através de documentos de da Vinci, descobriram um modelo de um cavaleiro mecânico. O projeto incluia diagramas engrenagens e motores para dar poder ao guerreiro. Em 2002, por um documentário da BBC, o robô de Leonardo da Vinci foi construído.</p>
<p>Na sequência do robô Eric, houve uma série de outros robôs com aparência humana, mas não muitas máquinas humanas de trabalho. Durante a Segunda Guerra Mundial, no entanto, foi iniciado um trabalho sério para fazer substituições humana. Em 1943, Warren McCulloch e Walter Pitts, produziram trabalhos pioneiros em redes neurais. Em 1946, George Devol inventou um dispositivo que controlava máquinas  utilizando registos magnéticos; e em 1948, Norbert Wiener, então no MIT, publicou o livro cujo título cunhou o termo Cibernética. Também em 1948, um inventor pouco conhecido chamado William Grey Walter construiu duas tartarugas mecânicas chamadas Elmer e Elsie, que realmente pareciam, moviam-se, e agiam como tartarugas.</p>
<p>Em 1956, em uma conferência em Dartmouth, Marvin Minsky e John McCarthy inventou o termo inteligência artificial para descrever máquinas pensantes.</p>
<p>De Elmer e Elsie, avançamos para 1961, quando o primeiro robô industrial foi trabalhar carregando carcaças e com auto-solda na linha de montagem da General Motors. O braço robótico, chamado Unimate, pesava cerca de 1 814kg e executava instruções armazenadas em um cilindro magnético. Unimate foi a criação de Devol e Joseph Engelberger, que fundou a empresa Unimation. Até o momento, Unimate é o mais bem sucedido de todos os robôs industriais.</p>
<p>Em 1973, o foco do desenvolvimento da robótica havia se mudado da Grã-Bretanha, através os EUA, para o Japão, onde a universidade Waseda demonstrou <a href="http://www.humanoid.waseda.ac.jp/booklet/kato_2.html">Wabot-1</a>. Wabot-1 foi o primeiro robô em escala antropomórfica construído no mundo. Tinha sistemas separados para o controle dos membros, visão e comunicação. O Wabot-1 falava japonês e usava ​​orelhas artificiais, olhos e uma boca artificial. O Wabot-1 andou com as pernas e segurou com as mãos que possuiam sensores táteis.</p>
<p><strong>Um inseto mecânico de 180kg</strong></p>
<p> A corrida segue  adiante. Em março de 1982, Odetics, Inc. de Anaheim, Califórnia, introduziu o ODEX I e até criou uma nova palavra para descrever a máquina: funcionoide. ODEX I caminhou com seis pernas e pesava menos de 180kg. Odetics disse que ODEX I demonstrou atributos exclusivos para &#8220;robôs móveis&#8221;. Em uma reportagem sobre o funcionoide, A revista &#8220;Robotics Age&#8221; escreveu, &#8221;  Odetics destina-se a ser o primeiro funcionoide a fazer parte de uma nova era na indústria da robótica em que uma unidade multifuncional pode literalmente caminhar pela fábrica e atuar em praticamente qualquer lugar. &#8221;</p>
<p>Para não ficar para trás, em 1986, a Honda apresentou o primeiro modelo do seu robô ASIMO. ASIMO é um pouco menor do que um adulto médio, e em 2005 ele tinha 34 graus de liberdade de circulação (três na cabeça, sete em cada braço, dois em cada mão, um no tórax, seis em cada perna).</p>
<p>Apesar de terem aparência humana, ou mesmo de realizarem ações humanas, o robô só atinge o objetivo de substituir os seres humanos nos filmes e na ficção científica. Em 1940 e 1941, Isaac Asimov começou sua série de romances e contos sobre robôs. Então, em 1950, ele publicou o livro Eu, Robô, que é uma coleção de muitos de seus contos. Foi em um desses contos que Asimov introduziu suas famosas três leis da robótica. Os livros de Asimov inspirou os personagens marcantes de Star Wars: C3P0 e R2D2.</p>
<p>No livro de Asimov: &#8220;A Fundação e a Terra&#8221;, o robô Daneel é encontrado vivo na lua. Ele já existe há 20 mil anos e admite que foi gentilmente orientar o progresso da galáxia e que respeita as Leis da Robótica.</p>
<p>O desafio da construção de máquinas para substituir os humanos ainda não acabou. Ele começou há mais de 80 anos atrás, com Eric, o robô, e foi &#8220;quando isso aconteceu&#8221;.</p>
]]></content:encoded>
			<wfw:commentRss>http://valeriofarias.com/o-primeiro-robo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Linguagem Ruby e Educação: um acordo feito no céu (tradução)</title>
		<link>http://valeriofarias.com/linguagem-ruby-e-educacao-um-acordo-feito-no-ceu-traducao/</link>
		<comments>http://valeriofarias.com/linguagem-ruby-e-educacao-um-acordo-feito-no-ceu-traducao/#comments</comments>
		<pubDate>Wed, 11 Aug 2010 11:11:33 +0000</pubDate>
		<dc:creator>Valério Farias</dc:creator>
				<category><![CDATA[Pra refletir]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[aprender]]></category>
		<category><![CDATA[computação]]></category>
		<category><![CDATA[criatividade]]></category>
		<category><![CDATA[diversão]]></category>
		<category><![CDATA[educação]]></category>
		<category><![CDATA[faculdade]]></category>
		<category><![CDATA[linguagem]]></category>
		<category><![CDATA[primeira]]></category>
		<category><![CDATA[programação]]></category>

		<guid isPermaLink="false">http://valeriofarias.com/?p=366</guid>
		<description><![CDATA[É importante não generalizar a linguagem Ruby como se fosse algo que resolverá todos os seus problemas. Ela tem propósito geral, mas será adequada em determinados contexto e outros não, como todas as outras linguagens. O propósito desse post do Kate Cunningham que eu traduzi é mostrar que as características do Ruby são muito harmônicas [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p>É importante não generalizar a linguagem Ruby como se fosse algo que resolverá todos os seus problemas. Ela tem propósito geral, mas será adequada em determinados contexto e outros não, como todas as outras linguagens. O propósito desse post do Kate Cunningham que eu traduzi é mostrar que as características do Ruby são muito harmônicas com as características necessárias em um ambiente efetivo de aprendizado. Isso não quer dizer que o aluno deva estacionar no Ruby. Ele terá o caminho facilitado para o mundo da programação com Ruby, mas isso será só o primeiro passo. Ele deverá sim, aprender outras linguagens, pois é a única forma de se aprimorar como profissional de uma área tão dinâmica. O texto original você encontra <a href="http://rubylearning.com/blog/2010/08/11/ruby-programming-and-education-a-match-made-in-heaven/">aqui</a>. Fique agora com a tradução:</p></blockquote>
<p>A linguagem Ruby tem recebido muita atenção na última década, especialmente com o advento do Ruby on Rails em 2005. Enquanto a blogosfera está utilizando Ruby a muito tempo, vamos nos perguntar como, exatamente, a linguagem Ruby é propícia para um ambiente educacional.</p>
<div id="attachment_369" class="wp-caption alignright" style="width: 254px"><a href="http://valeriofarias.com/wp-content/uploads/2010/08/ruby-logo-r.png"><img class="size-full wp-image-369" title="ruby-logo-r" src="http://valeriofarias.com/wp-content/uploads/2010/08/ruby-logo-r.png" alt="Ruby Programming Language" width="244" height="299" /></a><p class="wp-caption-text">Copyright (C) 2008 Ruby Association LLC</p></div>
<p>Claro, podemos ir para a relevância da linguagem Ruby, pois se você está recebendo treinamento em um ambiente educacional para se tornar um programador de computador, e você não sabe o Ruby, então você está ficando cada vez mais fora do circuito. No entanto, linguagens de programação vêm e vão, e educação não é sobre as tendências, é sobre as idéias que sustentam o valor no decorrer dos anos.</p>
<p>Vamos então olhar para a filosofia de linguagem Ruby e ver como é propício à aprendizagem. Por um lado, Ruby é flexível. Ele não tem a rigidez de Java ou PHP. Em um ambiente que maximiza o aprendizado, a flexibilidade é fundamental. E Ruby é tão flexível quanto possível. Yukihiro Matsumoto, o  criador da linguagem Ruby, notou o que ele estava pensando quando ele começou a trabalhar com linguagem de programação: &#8220;É engraçado, quando eu usei PHP para desenvolver ou as coisas que eu fiz em Java, eu estava sempre à procura de algo mais.&#8221;</p>
<p>Outra grande coisa sobre Ruby é seu reforço da capacidade para a criatividade. Como muitos programadores Ruby notaram, Ruby é mais alinhado com o pensamento humano. Desta forma, é muito fácil de usar. E precisamente porque é mais fácil de usar, é mais versátil quando se trata de ser criativo.</p>
<p>A apresentação de <a href="http://www.slideshare.net/vishnu/the-ruby-programming-language-or-why-are-you-wasting-brain-power">slides sobre a linguagem Ruby</a> explica como Ruby auxilia a criatividade. Afirma que os seres humanos perdem produtividade quando são forçados por &#8220;tarefas repetitivas, tarefas desnecessariamente complexas  e resolvendo problemas que não estão dentro do domínio de aplicação.&#8221; Desde que Ruby efetivamente se livra dessas tarefas repetitivas e de tarefas voltadas para máquinas, há mais espaço aberto para ser criativo. Com os alunos, especialmente, a produção criativa é a chave para a aprendizagem de forma eficaz.</p>
<p>Um aspecto do processo de aprendizagem que é absolutamente crítico para a eficácia educacional é diversão. Nós geralmente não pensamos sobre a diversão quando nós pensamos sobre a educação. Mas reflita sobre seus próprios anos escolares no passado. Se você pensar bem, você percebe que os assuntos que você aprendeu mais e reteve o conteúdo eram aqueles em que você estava se divertindo. Este divertimento, claro, resulta em parte da criatividade. Quando você está sendo produtivo, você está se divertindo.</p>
<p>Ao contrário de outras linguagens de programação, você pode fazer muita coisa com Ruby, mesmo se você está apenas nos estágios iniciais de aprendizagem. Para os estudantes, o processo de aprendizagem é frustrante e é um pouco prejudicado quando pequenos erros aparecem no caminho de chegar aos conceitos maiores. Linguagens de programação como C++ podem dificultar o aprendizado dos conceitos maiores porque pequenos erros no código sempre aparecem durante o processo. Já usando o  Ruby o aluno não passa por essas pequenas dificuldades quando está iniciando o aprendizado.</p>
<p>Naturalmente, estes são apenas indicações básicas de que Ruby é a melhor ferramenta de aprendizagem para os interessados em programação de computadores, especialmente os iniciantes. No entanto, assim como na educação como um todo, em que mudanças conceituais básicas no processo de aprendizagem levam os alunos para as melhores práticas na aprendizagem,  Ruby oferece a possibilidade de uma aprendizagem fácil, divertida, criativa, por força da simples virtude de que a linguagem foi feita para pragmaticamente funcionar dessa forma. Em análise final, Ruby foi feito para estudantes, jovens e idosos, iniciantes e mais avançados.</p>
<p>Por Kate Cunningham</p>
]]></content:encoded>
			<wfw:commentRss>http://valeriofarias.com/linguagem-ruby-e-educacao-um-acordo-feito-no-ceu-traducao/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Papo-de-Nerd: Nerd 2.0</title>
		<link>http://valeriofarias.com/papo-de-nerd-nerd-2-0/</link>
		<comments>http://valeriofarias.com/papo-de-nerd-nerd-2-0/#comments</comments>
		<pubDate>Mon, 09 Aug 2010 19:26:44 +0000</pubDate>
		<dc:creator>Valério Farias</dc:creator>
				<category><![CDATA[Papo de Nerd]]></category>
		<category><![CDATA[Ágil]]></category>
		<category><![CDATA[Agile]]></category>
		<category><![CDATA[comunidade]]></category>
		<category><![CDATA[confraternização]]></category>
		<category><![CDATA[congresso]]></category>
		<category><![CDATA[Evento]]></category>
		<category><![CDATA[gestao2.0]]></category>
		<category><![CDATA[nerd2.0]]></category>
		<category><![CDATA[papodenerd]]></category>
		<category><![CDATA[Pessoas]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[rubyonrails]]></category>
		<category><![CDATA[Tecnologia]]></category>
		<category><![CDATA[TI]]></category>
		<category><![CDATA[TI2.0]]></category>

		<guid isPermaLink="false">http://valeriofarias.com/?p=346</guid>
		<description><![CDATA[
Participei do OxenteRails 2009, Rails Summit 2009, CearáOnRails 2009 e agora OxenteRails 2010 e ficou claro que uma nova cultura nerd está se espalhando cada vez mais rápido. Essa nova cultura nerd eu chamo de Nerd 2.0.
O ponto chave é que não dá mais para ficar somente na frente do computador (nerd 1.0). Agora o [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://valeriofarias.com/wp-content/uploads/2010/08/oxenterails2010.jpg"><img class="alignright size-full wp-image-347" title="oxenterails2010" src="http://valeriofarias.com/wp-content/uploads/2010/08/oxenterails2010.jpg" alt="" width="238" height="125" /></a><br />
Participei do OxenteRails 2009, Rails Summit 2009, CearáOnRails 2009 e agora OxenteRails 2010 e ficou claro que uma <strong>nova cultura nerd</strong> está se espalhando cada vez mais rápido. Essa nova cultura nerd eu chamo de Nerd 2.0.</p>
<p>O<strong> ponto chave</strong> é que não dá mais para ficar somente na frente do computador (nerd 1.0). Agora o <strong>Nerd</strong> tem que ser <strong>sociável</strong>, tem que <strong>equilibrar</strong> seu gosto por <strong>tecnologia</strong> com seus<strong> relacionamentos interpessoais</strong>, seja com amigos, trabalho ou o que for (Nerd 2.0).</p>
<p>A tecnologia é importante sim, mas ela deve estar sempre em função das pessoas e nunca o contrário.</p>
<p>Durante o OxenteRails 2010, uma das <strong><em>booth babes</em></strong> me falou que se surpreendeu com os participantes, pois eles não se isolavam. Sempre tinha alguém para tirar alguma dúvida com elas, para pedir para colocar os postits no quadro de feedback, para chamar para jogar video game junto com eles, para tirar fotos, ou seja, estavam sempre interagindo. Ela complementou que a idéia distorcida que ela tinha do nerd anti-social mudou completamente. <img src='http://valeriofarias.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Outro depoimento foi da<strong> representante do SEBRAE</strong> que chegou no evento e imaginou: Como é que eu vou fazer para explicar os recursos que posso oferecer num local que só tem nerd? Mas o tempo foi passando e logo<br />
ela detectou que ali tinha consultores, professores, desenvolvedores, ou seja, Nerds sociáveis e produtivos.</p>
<p>A própria <strong>estrutura do evento</strong> foi organizada para facilitar <strong>interações entre indivíduos</strong>. O <strong>Ignite OxenteRais</strong> que começou na quinta-feira é um ótimo exemplo disso. O Ignite é um mini evento informal em que as pessoas palestravam durante 5 minutos, trocavam idéias e faziam amizades. Nos dias 6 e 7 de agosto, no final da programação oficial, os participantes se reuniam em algum barzinho da cidade, esse outro mini evento se chama <strong>#horaextra</strong>.</p>
<p>Alguns dos <strong>nerds 2.0</strong> que estavam no Oxente Rails tinham inclusive vocações artísticas. Nesse quesito eu cito o Cukier que recebeu o prêmio da mais bela voz, com o <a href="http://www.raphaelcosta.net/2010/08/oxente-rails-2010-forro-do-elomar/">Forró do Elomar</a> e também a <a href="http://www.youtube.com/watch?v=61w7ufM-Hhs">Banda Plataformatec </a>fazendo uma performance com vocal e guitarra em um jogo do playstation.</p>
<p>Cito agora o <a href="http://www.twitter.com/henriquebastos">Henrique Bastos</a>: Esse ambiente de confraternização permite ir além do que ampliar a rede de contatos. Permite a criação de uma <strong>rede de confiança</strong>, que é muito mais significativo para a comunidade e para cada participante.</p>
<p>Um conjunto de idéias bem significativas que representa essa nova visão você pode encontrar no <a href="http://smallactsmanifesto.org/">Manifesto Pequenas Ações (Small Acts)</a>, com o slogan: Pequenas ações fazem grandes revoluções.  Qualquer um pode se cadastrar e se associar a esse manifesto.</p>
<p>Não podia deixar de colocar aqui outro ponto: A participação feminina no evento. Apesar da grande maioria serem homens, tivemos <a href="http://twitter.com/cecifernandes">Cecilia Fernandes</a> palestrando sobre metodologias ágeis,  <a href="http://tcamilo.wordpress.com/">Tahis Camilo</a> que mostrou o dia-a-dia do seu trabalho na Hashrocket e por fim, a Gleide, que palestrou sobre <a href="http://pt.wikipedia.org/wiki/TI_verde">Ti Verde</a> na desconferência. Portanto o Nerd 2.0 não pode mais dizer que tecnologia é coisa de homem. As mulheres, apesar de estarem em pequeno número, mandaram bem!</p>
<p>E então? Tá esperando o que? <img src='http://valeriofarias.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<h2>Se você anda passando tempo demais no computador e se esquece da importância da socialização (Nerd 1.0)  fica aqui o alerta: Faça um <strong>Git Clone</strong> desse novo formato de ver o mundo da tecnologia e atualize a sua <strong>visão Nerd</strong> para a <strong>versão 2.0.</strong></h2>
<p><strong>Bônus:</strong> Se você ainda tem um pouco de dificuldade de fazer o upgrade para a versão Nerd 2.0, não entre em pânico. Essa mudança pode ser feita de forma gradual. Portanto, se essa idéia fez com que você se preocupasse, tente descontrair um pouco. Para isso, acesse <a href="http://fucas.heroku.com">Fuças &#8211; a revista de fofocas nerd criada pela comunidade do Piauí</a>. Outro site que vai te ajudar a se descontrair e ganhar confiança para o upgrade é o <a href="http://nerdson.com/blog/">site de tirinhas nerd: nerdson</a>.</p>
<p><strong>Bônus 2:</strong> Não deixem de acessar também o post criado por Alexandre Gomes:  <a href="http://blog.seatecnologia.com.br/2009/01/12/manifesto-2-0">Manifesto 2.0</a></p>
<p>Quem tiver algum depoimento a respeito desse tema pode deixar seu comentário aqui.</p>
<p>Um abraço e até o próximo Papo de Nerd!</p>
]]></content:encoded>
			<wfw:commentRss>http://valeriofarias.com/papo-de-nerd-nerd-2-0/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Aprenda BDD Jogando Dados &#8211; ebook</title>
		<link>http://valeriofarias.com/aprenda-bdd-jogando-dados-ebook/</link>
		<comments>http://valeriofarias.com/aprenda-bdd-jogando-dados-ebook/#comments</comments>
		<pubDate>Tue, 03 Aug 2010 15:46:31 +0000</pubDate>
		<dc:creator>Valério Farias</dc:creator>
				<category><![CDATA[Ruby]]></category>
		<category><![CDATA[BDD]]></category>
		<category><![CDATA[diversão]]></category>
		<category><![CDATA[Rspec]]></category>
		<category><![CDATA[Shoes]]></category>
		<category><![CDATA[TDD]]></category>

		<guid isPermaLink="false">http://valeriofarias.com/?p=339</guid>
		<description><![CDATA[Olá entusiasta do Ruby! Olá entusiasta de BDD!  Te convido a ler, baixar, modificar, clonar ou fazer o que quiser com o livro: Aprenda BDD jogando Dados!
Esse mini-livro é uma jornada linha a linha, teste por teste, utilizando a técnica do Desenvolvimento Orientado a Comportamento (Behavior Driven Development) em um projeto muito interessante: Simulação dos [...]]]></description>
			<content:encoded><![CDATA[<p>Olá entusiasta do Ruby! Olá entusiasta de BDD!  Te convido a ler, baixar, modificar, clonar ou fazer o que quiser com o livro: Aprenda BDD jogando Dados!</p>
<p>Esse mini-livro é uma jornada linha a linha, teste por teste, utilizando a técnica do Desenvolvimento Orientado a Comportamento (Behavior Driven Development) em um projeto muito interessante: Simulação dos dados do jogo War!</p>
<p>Eu escrevi esse pequeno livro para aprender BDD e RSpec, por isso eu tinha que falar sobre algo simples e de preferência que fosse divertido. Então eu pensei: Por que não jogar dados! Porque não jogar dados do jogo War!<br />
Então aqui está: Aprenda BDD jogando dados!</p>
<p>A aplicação que nós criaremos juntos usa duas classes: Dice e WarDice. No primeiro capítulo eu construo o arquivo RSpec da classe Dice e a classe Dice simultaneamente e passo a passo até todos os testes tornarem-se verdes.</p>
<p>No segundo capítulo eu continuo o desenvolvimento com a classe WarDice, aquela que fará a simulação de cada dado do jogo war!</p>
<p>Finalmente, no terceiro capítulo eu uso as classes criadas em uma divertida aplicação feita em shoes. A filosofia desse livro é aprender fazendo coisas divertidas. Em uma palavra: Experimentação.</p>
<p>Então eu espero que você aproveite esse livro simples mas também muito instrutivo. Os testes usados nesse livro não são uma solução definitiva. Eles são somente possibilidades no meio de outras. Como eu disse, eu o escrevi para aprender RSpec. Você pode enviar sugestões, clonar o projeto, modificá-lo e codificá-lo de outra forma. Quem sabe não faremos juntos a versão 2.0 desse livro <img src='http://valeriofarias.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .</p>
<p>Fique agora com o livro:</p>
<div id="__ss_4798578" style="width: 425px;"><strong style="display: block; margin: 12px 0 4px;"><a title="Aprenda bdd-jogando-dados-ebook" href="http://www.slideshare.net/valeriofarias/aprenda-bddjogandodadosebook">Aprenda bdd-jogando-dados-ebook</a></strong><object id="__sse4798578" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="355" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" /><param name="src" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=aprenda-bdd-jogando-dados-ebook-100720143458-phpapp01&amp;stripped_title=aprenda-bddjogandodadosebook" /><param name="name" value="__sse4798578" /><param name="allowfullscreen" value="true" /><embed id="__sse4798578" type="application/x-shockwave-flash" width="425" height="355" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=aprenda-bdd-jogando-dados-ebook-100720143458-phpapp01&amp;stripped_title=aprenda-bddjogandodadosebook" name="__sse4798578" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<div style="padding: 5px 0 12px;">View more <a href="http://www.slideshare.net/">presentations</a> from <a href="http://www.slideshare.net/valeriofarias">Valério  Farias</a>.</div>
</div>
<p>O código fonte completo da aplicação você pode baixar em:<br />
<a href="http://github.com/valeriofarias/shoes-war-dice">http://github.com/valeriofarias/shoes-war-dice</a></p>
<p>O texto completo do livro e o código fonte do gerador de livros você pode baixar em:<br />
<a href="http://github.com/valeriofarias/learn-bdd-playing-dice-book">http://github.com/valeriofarias/learn-bdd-playing-dice-book</a></p>
<p>se preferir pode também baixar a <strong>versão em inglês</strong> do livro:<br />
<a href="http://valeriofarias.com/learn-bdd-playing-dice-ebook/">http://valeriofarias.com/learn-bdd-playing-dice-ebook/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://valeriofarias.com/aprenda-bdd-jogando-dados-ebook/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Learn BDD Playing Dice &#8211; ebook</title>
		<link>http://valeriofarias.com/learn-bdd-playing-dice-ebook/</link>
		<comments>http://valeriofarias.com/learn-bdd-playing-dice-ebook/#comments</comments>
		<pubDate>Tue, 03 Aug 2010 15:32:10 +0000</pubDate>
		<dc:creator>Valério Farias</dc:creator>
				<category><![CDATA[Ruby]]></category>
		<category><![CDATA[BDD]]></category>
		<category><![CDATA[Dice]]></category>
		<category><![CDATA[Fun]]></category>
		<category><![CDATA[Rspec]]></category>
		<category><![CDATA[Shoes]]></category>
		<category><![CDATA[TDD]]></category>

		<guid isPermaLink="false">http://valeriofarias.com/?p=332</guid>
		<description><![CDATA[Hello Ruby enthusiast! Hello BDD enthusiast! Welcome to this journey line by line, test by test, using the Behaviour Driven Development technique in a interesting project: War Dice Simulation!
I wrote this tiny book to learn BDD and RSpec for myself. I would want to start with a little example. And if was possible with a [...]]]></description>
			<content:encoded><![CDATA[<p>Hello Ruby enthusiast! Hello BDD enthusiast! Welcome to this journey line by line, test by test, using the Behaviour Driven Development technique in a interesting project: War Dice Simulation!</p>
<p>I wrote this tiny book to learn BDD and RSpec for myself. I would want to start with a little example. And if was possible with a funny example too. Then I thought: Why not playing dice! Why not playing war dice! Then there you are: Learning BDD playing dice!</p>
<p>The app that we&#8217;ll create together uses two classes: Dice and WarDice.</p>
<p>The first chapter I start to construct the RSpec file of Dice class and the Dice class simultaneously and step by step until all of the tests become green.</p>
<p>The second chapter I go on with the WarDice class, that is a simulation of each dice of war game!</p>
<p>Finally, the third chapter I use the classes in a funny shoes application.</p>
<p>The philosophy of this book is to learn making funny things. In one word: Experimentation. Then I hope you enjoy this simple but also instructive book.</p>
<p>The tests used in this book aren&#8217;t a silver bullet. They are only a way between some others. How I told, I made to learn RSpec. You can send suggests, clone the project, modify it and codify in other ways. Who knows we&#8217;ll playing together in the 2.0 version of this book <img src='http://valeriofarias.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .</p>
<p>Now just read the book and have fun!</p>
<div id="__ss_4798538" style="width: 425px;"><strong style="display: block; margin: 12px 0 4px;"><a title="Learn bdd-playing-dice-book" href="http://www.slideshare.net/valeriofarias/learn-bddplayingdicebook">Learn bdd-playing-dice-book</a></strong><object id="__sse4798538" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="355" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" /><param name="src" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=learn-bdd-playing-dice-book-100720142952-phpapp01&amp;stripped_title=learn-bddplayingdicebook" /><param name="name" value="__sse4798538" /><param name="allowfullscreen" value="true" /><embed id="__sse4798538" type="application/x-shockwave-flash" width="425" height="355" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=learn-bdd-playing-dice-book-100720142952-phpapp01&amp;stripped_title=learn-bddplayingdicebook" name="__sse4798538" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<div style="padding: 5px 0 12px;">View more <a href="http://www.slideshare.net/">presentations</a> from <a href="http://www.slideshare.net/valeriofarias">Valério  Farias</a>.</div>
</div>
<p>The complete source code of application you can download in<br />
<a href="http://github.com/valeriofarias/shoes-war-dice/tree">http://github.com/valeriofarias/shoes-war-dice/tree</a></p>
<p>The complete ebook text and source code you can download in:<br />
<a href="http://github.com/valeriofarias/learn-bdd-playing-dice-book">http://github.com/valeriofarias/learn-bdd-playing-dice-book</a></p>
]]></content:encoded>
			<wfw:commentRss>http://valeriofarias.com/learn-bdd-playing-dice-ebook/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Acessibilidade na Web &#8211; Monografia</title>
		<link>http://valeriofarias.com/acessibilidade-na-web-monografia/</link>
		<comments>http://valeriofarias.com/acessibilidade-na-web-monografia/#comments</comments>
		<pubDate>Thu, 08 Jul 2010 03:08:05 +0000</pubDate>
		<dc:creator>Valério Farias</dc:creator>
				<category><![CDATA[Acessibilidade]]></category>
		<category><![CDATA[acessibilidade de verdade]]></category>
		<category><![CDATA[arquitetura da informação]]></category>
		<category><![CDATA[desenvolvimento web]]></category>
		<category><![CDATA[especialização]]></category>
		<category><![CDATA[monografia]]></category>
		<category><![CDATA[Padrões Web]]></category>
		<category><![CDATA[usabilidade]]></category>

		<guid isPermaLink="false">http://valeriofarias.com/?p=324</guid>
		<description><![CDATA[Meu trabalho de conclusão da especialização em 2008 teve como tema: Acessibilidade na Web. 
Eu me inspirei bastante no trabalho da equipe do Acesso Digital, que divulgou a algum tempo atrás o slogan &#8220;Acessibilidade de Verdade&#8221;, que é a soma de Acessibilidade, padrões web e usabilidade.
Na monografia eu amplio mais essa idéia criando a seguinte [...]]]></description>
			<content:encoded><![CDATA[<p>Meu trabalho de conclusão da especialização em 2008 teve como tema: <strong>Acessibilidade na Web. </strong></p>
<p>Eu me inspirei bastante no trabalho da equipe do <a href="http://www.google.com.br/url?sa=t&amp;source=web&amp;cd=1&amp;ved=0CBcQFjAA&amp;url=http%3A%2F%2Fwww.acessodigital.net%2F&amp;ei=iD81TMGONsiPuAeN553DBg&amp;usg=AFQjCNEjETmkaFOwpUjiSFLdoJ8_WDfKqA&amp;sig2=Z4hOVLZCIxJgsqrIDbmyVw">Acesso Digital</a>, que divulgou a algum tempo atrás o slogan <strong>&#8220;Acessibilidade de Verdade&#8221;</strong>, que é a soma de Acessibilidade, padrões web e usabilidade.</p>
<p>Na monografia eu amplio mais essa idéia criando a seguinte fórmula didática:</p>
<p><strong>Recursos</strong> = (Arquitetura da Informação + Padrões Web + Acessibilidade + Usabilidade + Acompanhamento de Tendências )</p>
<p><strong>Acessibilidade de Verdade</strong> = Recursos + Foco no Usuário + Bom senso</p>
<p>Cada tópico da &#8220;fórmula&#8221; é aprofundado.  Além disso,  eu complemento a monografia com um estudo de caso que mostra minha experiência na construção das várias versões do Portal UERN e também com uma entrevista e um pequeno teste de usabilidade com um usuário que acessa a interface via <a href="http://www.freedomscientific.com/products/fs/jaws-product-page.asp">JAWS</a>.</p>
<p>Entenda a palavra fórmula como um recurso didático para criar uma sensação de unidade entre áreas tão diversificadas presentes no desenvolvimento Web. Não é receita de bolo. Repito, é só um recurso didático para facilitar a compreensão.</p>
<p>O texto está sobre licensa Creative Commons, que permite você fazer o que quiser com ele, só precisa citar o autor.</p>
<p>Fique à vontade para ler, divulgar, modificar, baixar o texto.</p>
<p>Espero que goste e assim que você ler, deixe sua opinião sobre o que você achou do conteúdo abordado.</p>
<p>Um abraço e fique com o texto:</p>
<div style="width:477px" id="__ss_4705410"><strong style="display:block;margin:12px 0 4px"><a href="http://www.slideshare.net/valeriofarias/monografia-acessibilidadenawebvalerio" title="Monografia Acessibilidade na Web - Valério Farias">Monografia Acessibilidade na Web &#8211; Valério Farias</a></strong><object id="__sse4705410" width="477" height="510"><param name="movie" value="http://static.slidesharecdn.com/swf/doc_player.swf?doc=monografia-acessibilidade-na-web-valerio-100707204136-phpapp01&#038;stripped_title=monografia-acessibilidadenawebvalerio" /><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><embed name="__sse4705410" src="http://static.slidesharecdn.com/swf/doc_player.swf?doc=monografia-acessibilidade-na-web-valerio-100707204136-phpapp01&#038;stripped_title=monografia-acessibilidadenawebvalerio" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="477" height="510"></embed></object>
<div style="padding:5px 0 12px">View more <a href="http://www.slideshare.net/">documents</a> from <a href="http://www.slideshare.net/valeriofarias">Valério  Farias</a>.</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://valeriofarias.com/acessibilidade-na-web-monografia/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Programação Funcional e Looping (tradução)</title>
		<link>http://valeriofarias.com/programacao-funcional-e-looping/</link>
		<comments>http://valeriofarias.com/programacao-funcional-e-looping/#comments</comments>
		<pubDate>Wed, 07 Jul 2010 01:54:35 +0000</pubDate>
		<dc:creator>Valério Farias</dc:creator>
				<category><![CDATA[Ruby]]></category>
		<category><![CDATA[each]]></category>
		<category><![CDATA[iterações]]></category>
		<category><![CDATA[linguagem funcional]]></category>
		<category><![CDATA[loop]]></category>

		<guid isPermaLink="false">http://valeriofarias.com/?p=314</guid>
		<description><![CDATA[Quem vem linguagens como C, Java, Delphi, C# e usa a linguagem Ruby pela primeira vez, tende a programar em Ruby do mesmo jeito que programava na linguagem que já era fluente. Lendo o post abaixo você perceberá que linguagens que tem características  funcionais, como o Ruby, possibilitam formas próprias de organizar o código (Jeito [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p>Quem vem linguagens como C, Java, Delphi, C# e usa a linguagem Ruby pela primeira vez, tende a programar em Ruby do mesmo jeito que programava na linguagem que já era fluente. Lendo o post abaixo você perceberá que linguagens que tem características  funcionais, como o Ruby, possibilitam formas próprias de organizar o código (Jeito Ruby) , mais especificamente nesse texto, escrito por Jon Dahl, você verá as formas mais eficientes de fazer iterações (loops) em Ruby. A versão original você encontra <a href="http://railspikes.com/2008/7/29/functional-loops-in-ruby-each-map-inject-select-and-for">aqui</a>. Fique agora com a tradução:</p></blockquote>
<p>Se você é um programador, você provavelmente já trabalhou com um ou mais  livros que te ensinava a sintaxe de uma nova linguagem. Eu tive essa  experiência com uma meia dúzia de linguagens, como C, Javascript e Perl.<br />
Estes livros tipicamente introduzem loops no meio da discussão de  sintaxe, depois de tipos de dados e controle de fluxo, mas antes de I/O e  de recursos avançados.</p>
<p>Loops são quase sempre apresentadas de  acordo com esta fórmula:</p>
<p>Texto introdutório: &#8220;E se você quiser fazer uma operação mais de uma  vez&#8221;?<br />
Introduz o loop while, mostrando a diferença entre do while e  while do.<br />
Apresenta o laço for, o primo louco do while.</p>
<p>(Bonus)  Introduz o laço foreach se a linguagem é suficientemente de alto nível.  E é isso &#8211; você sabe como fazer um loop através de código e é hora de  seguir em frente.</p>
<p>Não tão rápido. Se você for sortudo o bastante para usar uma  linguagem que possui traços de programação funcional, você não deve usar  um laço dessa maneira.</p>
<p><strong>O ponto</strong><br />
De agora em diante, eu vou  usar Ruby para exemplos, mas este artigo não é sobre Ruby. É sobre a  transição de loops primitivos para iterar usando coleções, e sobre a  transição de funções genéricas (como each) para funções mais específicas  (como map).</p>
<p><strong>De loops para métodos que percorrem a própria lista</strong><br />
Durante os  últimos meses, estive trabalhando no Tumblon, uma aplicação Rails de porte  médio. Eu trabalhei em 15-20 aplicações Ruby nos últimos três anos,  provavelmente, totalizando 50.000 linhas de código Ruby.</p>
<p>Eu só usei um laço primitivo uma vez.</p>
<p>Esse laço primitivo era  um loop{} loop, sempre percorrer uma lista tarefas à procura do que  executar. Em outras palavras, um laço sem nenhuma condição de saída além  de ^C, ou uma falha do servidor.</p>
<p>Eu só usei um loop simples em um caso porque o conceito each  geralmente é uma opção melhor. Essa implementação Ruby será familiar  para quem já viu código Ruby antes:</p>
<pre class="brush: ruby; ">

[&quot;horse&quot;, &quot;pig&quot;, &quot;cow&quot;].each  do |animal|
puts &quot;Old MacDonald has a #{animal}&quot;
end
</pre>
<p>(Sim, eu tenho uma  criança pequena.)</p>
<p>Isto é muito mais enxuto do que as alternativas  usando for e while. Ele representa melhor o que estamos fazendo: não  estamos iterando com uma condição de saída, estamos interagindo entre os  elementos de uma matriz. Mas e se você quiser fazer algo um número fixo  de vezes? Você pode interpretar isso como percorrer a seguinte lista:  [1,2,3,4,5,6,7,8,9,10].each{}. Mas claro que Ruby dispõe de uma versão  mais simples para isso: 10.times{}.</p>
<p>Portanto, se seu loop rodar através de uma lista de algum tipo, each  é a melhor abstração para esse tipo de problema. E, na minha  experiência de construção de aplicações Ruby, a maioria dos loops  percorrem listas. Parsing XML? Iterando por uma lista. Somando números?  Iterando por uma lista. Leitura em um arquivo texto? Lendo o STDIN?  Trabalhando com linhas em um banco de dados? Iterando por uma lista.  Isso é o que o loop each faz bem.</p>
<p><strong>Além do arr.each</strong><br />
Mas each não é a palavra final. É um passo acima  das primitivas for ou while quando trabalha com o conjunto de valores,  mas muitos loops each devem ser substituídos por outros métodos de  array, como map, inject e select.</p>
<p>Quando each é útil? Simples: quando você quiser criar efeitos  externos ao array, como salvar no banco de dados, imprimir um resultado  na tela, ou enviar uma chamada de serviço web. Nestes casos, você não  está preocupado com o valor de retorno; você deseja alterar o estado na  tela, o disco, o banco de dados, ou outra coisa. Dê uma olhada neste  código.</p>
<pre class="brush: ruby; ">

User.find(:all).each do |user|
Notification.deliver_email_newsletter(user)
end
</pre>
<p>Você não necessita que o código acima retorne valor, você só precisa que o e-mail seja entregue.</p>
<p>Mas não use each se você quer extrair algum  valor novo de um array. Em vez disso, dê uma olhada em outros três  métodos poderosos: map, inject e select.</p>
<p>Para entender vamos analisar o código abaixo que itera por um array e  cria um novo array com elementos que correspondem a determinada  condição, usando each.</p>
<pre class="brush: ruby; ">

active_users = []
users.each do |user|
active_users &lt;&lt; user if user.active?
end
active_users
</pre>
<p>A primeira e última linhas são feias. Por  que você tem que inicializar e retornar active_users? Resposta: porque  este é um abuso (má utilização) do método each. Nesse caso é muito  melhor você usar select (ou seu equivalente, find_all):</p>
<pre class="brush: ruby; ">

users.select do |user|
user.active?
end
</pre>
<p>Usando  select o código fica menor, mais fácil de entender e menos propenso a  erros. E mais importante, ele claramente encapsula um uso comum de each  (e looping em geral).</p>
<p>Duas outras funções-chave: map e inject (ou reduce) &#8211; complementam  select e seguem um padrão semelhante. E não é de surpreender que eles  formam a base do paradigma mapreduce para processamento distribuído. Eu  escrevi mais sobre map e reduce em outro artigo, e aqui é um atalho para  saber quando usar essas funções:</p>
<table>
<tbody>
<tr>
<td><strong>Valor de retorno</strong></td>
<td><strong>Função</strong></td>
</tr>
<tr>
<td>Nova matriz com o mesmo número de valores</td>
<td>map</td>
</tr>
<tr>
<td>Nova matriz composta de uma parte da matriz velha</td>
<td>select</td>
</tr>
<tr>
<td>Valor único (embora este valor possa ser um array)</td>
<td>inject</td>
</tr>
<tr>
<td>Nenhum</td>
<td>each</td>
</tr>
</tbody>
</table>
<p><strong>Resumo</strong><br />
Use each para mudar o estado. Caso contrário use métodos  funcionais de matriz que retorna um valor. Dessa forma seu código ficará  mais limpo e menos propenso a falhas.</p>
<p><strong>Aprendendo a refatorar</strong></p>
<ol>
<li> Inicializar  um valor vazio, ou matriz, ou o que quiser (new_arr = [])</li>
<li> arr.each, alterando o valor inicializado</li>
<li> Devolver o valor (return  new_arr)</li>
</ol>
<p>Sempre que você detectar esse padrão, você sabe que existe um laço each que precisa ser substituído.</p>
]]></content:encoded>
			<wfw:commentRss>http://valeriofarias.com/programacao-funcional-e-looping/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bom ou ruim? Quem decide é o cliente!</title>
		<link>http://valeriofarias.com/bom-ou-ruim-quem-decide-e-o-cliente/</link>
		<comments>http://valeriofarias.com/bom-ou-ruim-quem-decide-e-o-cliente/#comments</comments>
		<pubDate>Wed, 09 Jun 2010 19:45:21 +0000</pubDate>
		<dc:creator>Valério Farias</dc:creator>
				<category><![CDATA[empreendedorismo]]></category>
		<category><![CDATA[cliente]]></category>
		<category><![CDATA[cootidiano]]></category>
		<category><![CDATA[decisão]]></category>
		<category><![CDATA[loja]]></category>
		<category><![CDATA[vendas]]></category>

		<guid isPermaLink="false">http://valeriofarias.com/?p=309</guid>
		<description><![CDATA[O seguinte caso ocorreu quando tentei comprar 3 garrafões d&#8217;água mineral:
Visitei a  primeira loja mas não consegui efetuar a compra, porque ela só fazia entrega de 8h às 12h e de 14h às 18h, ou seja, eu precisaria faltar o trabalho para poder receber esses garrafões d&#8217;água, ou então, esperar até o fim de semana [...]]]></description>
			<content:encoded><![CDATA[<p>O seguinte caso ocorreu quando tentei comprar 3 garrafões d&#8217;água mineral:</p>
<p>Visitei a  primeira loja mas não consegui efetuar a compra, porque ela só fazia entrega de 8h às 12h e de 14h às 18h, ou seja, eu precisaria faltar o trabalho para poder receber esses garrafões d&#8217;água, ou então, esperar até o fim de semana (mais 4 dias sem água).</p>
<p>Devido esse problema de incompatibilidade de horários com o primeiro vendedor, fui em busca de um segundo vendedor.</p>
<p>Cheguei no local e fiz a encomenda dos três garrafões. A marca da água mineral era nova no mercado local. A vendedora falou que a água era muito boa, de ótima qualidade. Daí começou a discussão:</p>
<blockquote><p><strong>Valério diz:</strong><br />
Minha senhora, não me leve a mal, mas quem decide se a água é boa ou ruim sou eu.</p>
<p><strong>vendedora diz:</strong><br />
olha, mas eu tenho que dizer que é boa, pois estou te vendendo.</p>
<p><strong>Valério diz:</strong><br />
entendo seu lado, mas insisto que independente do que você disser quem vai decidir se é boa ou não sou eu, depois que provar a água.</p>
<p><strong>vendedora diz: </strong><br />
Olhe o seguinte exemplo: o meu filho tem esse carro que faz entrega. Se ele for vender o carro, você acha que ele iria dizer que o carro é ruim? Claro que ele tem que dizer que o carro é bom.</p>
<p><strong>Valério diz:</strong><br />
minha senhora, ele poderia dizer o que ele quiser mas eu só iria tomar a decisão de comprar depois que testasse o carro e constatasse que ele realmente estava em bom estado.</p>
<p><strong>vendedora diz: </strong><br />
você trabalha em que?</p>
<p><strong>Valério diz: </strong><br />
trabalho na área de informática, criando programas de computador.</p>
<p><strong>vendedora diz: </strong><br />
quando você vai vender seu produto, você não diz que ele é bom não?</p>
<p><strong>Valério diz: </strong><br />
Quando vou vender meu produto eu dou minhas referências, mostro os clientes que já estão usando, caso seja um programa já pronto. Caso seja um software novo eu crio protótipos e pergunto ao cliente se é isso que ele quer, ou seja, se está bom. Se ele me responder que falta algo eu complemento para obter finalmente a resposta: está bom! Essa resposta tem que vir dele, não de mim.</p></blockquote>
<p>A conversa terminou por aí. Não sei se ela compreendeu o que eu estava falando, mas mesmo não concordando com os argumentos dela não desistir da compra, já que água é necessidade básica <img src='http://valeriofarias.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> . Se o objetivo dela era me persuadir, funcionaria muito melhor os seguintes argumentos:</p>
<ul>
<li>essa é uma água nova no mercado local, mas ela é uma das mais vendidas na capital.</li>
<li>a fonte dessa água pelas pesquisas se aproxima bastante em qualidade da água X que domina o mercado local.</li>
<li>Ou mesmo algo mais simples como: Olha, eu gostei bastante dela e várias pessoas que conheço gostaram, mas gostaria que você testasse e me confirmasse se ela é de sua preferência.</li>
</ul>
<p>Acho que o titulo desse post ficou bem claro agora. Se quisermos criar relações de confiança e respeito com nossos clientes (fidelizar). É preciso fornecer meios para que o cliente tome a decisão final, orientando, contando exemplos, fornecendo referências de outras pessoas que usam o produto e deixar sempre o cliente livre para decidir se quer ou não, se gosta ou não.</p>
<p>Um abraço e até o proximo post.</p>
]]></content:encoded>
			<wfw:commentRss>http://valeriofarias.com/bom-ou-ruim-quem-decide-e-o-cliente/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Atualizando o Editor TinyMCE</title>
		<link>http://valeriofarias.com/atualizando-o-editor-tinymce/</link>
		<comments>http://valeriofarias.com/atualizando-o-editor-tinymce/#comments</comments>
		<pubDate>Thu, 13 May 2010 02:10:12 +0000</pubDate>
		<dc:creator>Valério Farias</dc:creator>
				<category><![CDATA[Padrões Web]]></category>
		<category><![CDATA[Projetos]]></category>
		<category><![CDATA[desenvolvimento]]></category>
		<category><![CDATA[editor]]></category>
		<category><![CDATA[editor HTML]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[WYSIWYG]]></category>

		<guid isPermaLink="false">http://valeriofarias.com/?p=300</guid>
		<description><![CDATA[O Tiny_mce é o editor HTML do tipo WYSIWYG que eu utilizo nos meus aplicativos. O papel dele é substituir os campos do tipo textarea por um editor com diversas funcionalidades. Você pode ter uma noção das funcionalidades pelo tamanho da barra abaixo:

São 94 botões no total. Em um dos meus aplicativos eu cheguei a [...]]]></description>
			<content:encoded><![CDATA[<p>O <a href="http://tinymce.moxiecode.com/index.php">Tiny_mce</a> é o editor HTML do tipo <a href="http://pt.wikipedia.org/wiki/WYSIWYG">WYSIWYG</a> que eu utilizo nos meus aplicativos. O papel dele é substituir os campos do tipo textarea por um editor com diversas funcionalidades. Você pode ter uma noção das funcionalidades pelo tamanho da barra abaixo:</p>
<p><img class="alignnone" title="barra do tini_mce editor " src="http://valeriofarias.com/wp-content/uploads/2010/05/botoes_tiny_mce_editor.jpg" alt="" width="861" height="137" /></p>
<p>São 94 botões no total. Em um dos <strong>meus aplicativos</strong> eu cheguei a usar <strong>41</strong> desse <strong>botões</strong>.  Mas aproveitando a atualização eu <strong>resolvi dar uma enxugada na quantidade de botões</strong>, pois pode-se facilmente perceber que a maioria quase nunca é utilizado. Depois de uma breve análisa das funcionalidades refiz a configuração da barra para o formato a seguir:</p>
<p><img class="alignnone" title="Barra resumida do tiny_mce" src="http://valeriofarias.com/wp-content/uploads/2010/05/barra_resumida_tiny_mce_editor.jpg" alt="" width="721" height="42" /></p>
<ul>
<li>Não permitir sublinhado para não deixar os usuário cairem em mal costume de sublinhar o texto além do necessário.</li>
<li>Fiz questão de deixar de fora as barras de alinhamento, pois o padrão de alinhamento que utilizo nos meus aplicativos é à esquerda. </li>
<li>A seção de list box com formatação eu preferi não utilizar já que os tamanhos e cores são padronizados.  É possível que eu habilite no futuro o item styles, mas para isso os usuários tem que compreender que ele estará aplicando uma formatação predefinida.</li>
<li>a seção copiar, colar achei desnecessária, pois geralmente os usuários usam o ctrl+c e ctrl+v mesmo. Deixo claro para eles que copiem do word para o bloco de notas para eliminar o &#8220;lixo&#8221; (caracteres de formatação), depois é só copiar o conteúdo do bloco de notas, sem nenhuma formatação e colar no editor.</li>
<li>A seção de links e imagens não tenho o que comentar pois é imprescindível. </li>
<li>Achei interessante deixar como complemento os botões de subscrito e sobrescrito para eventuais necessidades, bem como o de inserir símbolos.</li>
<li>Na penútima seção eu deixo a régua para divisão de seções, a tabela que é muito útil quando usada de forma apropriada, um botão que remove a formatação eu acho bastante interessante para evitar que o usuário comum tenha que acessar o código HTML fazer a mudança e finalmente o editor de HTML que é imprescindível já que tem coisas que só podem ser &#8220;resolvidas na unha mesmo&#8221;.</li>
<li>Finalizo a barra no canto direito com o botão de preview para ter uma noção de como o texto ficará. </li>
</ul>
<p>O resultado é uma barra super enxuta e o script de configuração você pode ver abaixo:</p>
<pre class="brush: javascript; ">

tinyMCE.init({
mode : &quot;textareas&quot;,
theme : &quot;advanced&quot;,
plugins : &quot;table,save,layer,advhr,inlinepopups,advimage,advlink,emotions,iespell,insertdatetime,preview,zoom,flash,searchreplace,print,paste,directionality,fullscreen,noneditable,contextmenu,wordcount&quot;,
theme_advanced_buttons1 : &quot;bold,italic, strikethrough,|,bullist,numlist,|,undo,redo,|,link,unlink,anchor,image,|,sub,sup,charmap,|,hr,table,removeformat,code,|,preview&quot;,
theme_advanced_buttons2 : &quot;&quot;,
theme_advanced_buttons3 : &quot;&quot;,
theme_advanced_buttons4 : &quot;&quot;,
theme_advanced_toolbar_location : &quot;top&quot;,
theme_advanced_toolbar_align : &quot;left&quot;,
theme_advanced_statusbar_location : &quot;bottom&quot;,
theme_advanced_resizing : true
});
</pre>
<p>Gostaria de citar 2 plugins em especial que adiciono no script:</p>
<ol>
<li>wordcount &#8211; contador de palavras. Tem um sistema de artigos ciêntíficos que gerencio que vai utilizar esse recurso para facilitar a vida do usuário na hora de saber se o texto está dentro do tamanho limite. </li>
<li>inlinepopups &#8211; já não aguentava mais a versão antiga abrir uma nova janela popup para cada inclusão de imagem ou link. Esse plugin aumenta bastante a usabilidade</li>
</ol>
<p>Agora queria saber a sua opinião. Que tipo de editor você usa e porque você escolheu? Quem sabe eu não mude de editor depois do seu argumento!</p>
]]></content:encoded>
			<wfw:commentRss>http://valeriofarias.com/atualizando-o-editor-tinymce/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

