
<?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>1up4Developers</title>
	<atom:link href="http://1up4dev.org/feed/" rel="self" type="application/rss+xml" />
	<link>http://1up4dev.org</link>
	<description>Nadando contra o Waterfall. tail -f /mind/realworld &#62;&#62; /blog</description>
	<lastBuildDate>Fri, 23 Oct 2009 13:21:22 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=abc</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Rails Summit 2009</title>
		<link>http://1up4dev.org/2009/10/rails-summit-2009/</link>
		<comments>http://1up4dev.org/2009/10/rails-summit-2009/#comments</comments>
		<pubDate>Fri, 23 Oct 2009 13:21:22 +0000</pubDate>
		<dc:creator>Rodrigo Panachi</dc:creator>
				<category><![CDATA[eventos]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[railssummit]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[ruby on rails]]></category>

		<guid isPermaLink="false">http://1up4dev.org/?p=558</guid>
		<description><![CDATA[Estamos de volta depois de algumas semanas de correria e muito trabalho, o que nos impediu de postar sobre vários assuntos atuais e experiências recentes. Também migramos de empresa. Agora o Roger e eu estamos trabalhando em uma empresa maior, focada em conteúdo digital, desenvolvendo aplicações de grande porte com Ruby e Rails  
O [...]]]></description>
			<content:encoded><![CDATA[<p>Estamos de volta depois de algumas semanas de correria e muito trabalho, o que nos impediu de postar sobre vários assuntos atuais e experiências recentes. Também migramos de empresa. Agora o <a href="http://1up4dev.org/author/rogerbarreto/">Roger</a> e eu estamos trabalhando em uma empresa maior, focada em conteúdo digital, desenvolvendo aplicações de grande porte com Ruby e Rails <img src='http://1up4dev.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<h1>O evento</h1>
<p>Se você não soube do <a href="http://www.railssummit.com.br/">Rails Summit 2009</a> ou não sabe nem o que é Rails recomendo que acesse <a href="http://pbskids.org/teletubbies/">este site</a>. Deixando o sarcasmo de lado, a edição 2009 do Rails Summit foi muito boa. As palestras foram excelentes (com algumas poucas exceções). Os coffe-breaks e as <a href="http://github.com/railssummit/morena_opensource/tree/master/RailsSummit2009/">locagirls</a> também!</p>
<p><img class="alignnone size-full wp-image-567" title="Rails Summit 2009 Locaweb" src="http://1up4dev.org/wp-content/uploads/2009/10/4013425175_68b7b78b6f_original.jpg" alt="Rails Summit 2009 Locaweb" width="500" height="333" /></p>
<p>Quem não conseguiu ir este ano pode conferir o que aconteceu e assistir a algumas palestras nos seguintes links:</p>
<p><a href="http://github.com/leonardoborges/railssummit09">http://akitaonrails.com/2009/10/17/rails-summit-2009-retrospectiva</a></p>
<p><a href="http://andrefaria.com/2009/10/15/rails-summit-2009-chad-fowler/">http://andrefaria.com/2009/10/15/rails-summit-2009-chad-fowler/</a></p>
<p><a href="http://andrefaria.com/2009/10/19/rails-summit-gregg-pollack/">http://andrefaria.com/2009/10/19/rails-summit-gregg-pollack/</a></p>
<p><a href="http://marciotrindade.com/2009/10/13/rails-summit-2009-parte-1">http://marciotrindade.com/2009/10/13/rails-summit-2009-parte-1</a></p>
<p><a href="http://marciotrindade.com/2009/10/14/rails-summit-2009-parte-2">http://marciotrindade.com/2009/10/14/rails-summit-2009-parte-2</a></p>
<p><a href="http://marciotrindade.com/2009/10/16/rails-summit-2009-parte-3">http://marciotrindade.com/2009/10/16/rails-summit-2009-parte-3</a></p>
<h1>Rails não escala</h1>
<p>Das palestras técnicas, focadas em Ruby e Rails, destaco a do <a href="http://blog.envylabs.com">Gregg Pollac</a>: On The Edge of Rails Performance, que falou sobre algumas <a href="http://andrefaria.com/2009/10/19/rails-summit-gregg-pollack/">ferramentas e plugins</a> para ajudar a melhorar a performance de aplicações Rails.</p>
<p>O estreiante <a href="http://m.onkey.org/2009/10/18/railssummit-slides">Pratik Naik</a> também deu algumas dicas muito boas para melhoar a performance e falou um bouco sobre suas experiências com Rails.</p>
<p>Para finalizar, o <a href="http://brunomiranda.com/">Bruno Miranda</a> fechou falando sobre sua experiência com o desenvolvimento do <a href="http://br.msn.cyloop.com/">Cyloop</a>, uma rede social de música, mostrando os problemas enfrentados com escalabilidade e as estratégias utilizadas para resolvê-los.</p>
<p>E claro que não podia deixar de falar da excelente palestra do <a href="http://www.slideshare.net/fabiokung/dsls-internas-e-ruby">Fábio Kung</a> sobre metaprogramação com Ruby, apresentando um hands-on, ou seja, &lt;faustao&gt;quem sabe faz ao vivo&lt;/faustao&gt;, para criar uma DSL em Ruby e outras técnicas de magia negra como <a href="http://coderrr.wordpress.com/2008/11/22/super-simple-callbacks-in-ruby/">Callbacks</a>, que pretendo abordar com mais detalhes aqui no blog.</p>
<p>Resumindo, projetar aplicações Rails escaláveis não é uma tarefa trivial e deve ser pensada com muito cuidado. Pretendo explorar mais este assunto nos próximos posts do blog.</p>
<h1>Agilidade a seu favor</h1>
<p>Apesar de ser um evento sobre Rails, um tema predominante foi agile. A <a href="http://andrefaria.com/2009/10/15/rails-summit-2009-chad-fowler/">largada</a> foi dada pelo <a href="http://chadfowler.com/">Chad Fowler</a> que falou sobre a insurgência Ruby on Rails, incentivando o movimento ágil a &#8220;quebrar as regras&#8221;, <a href="http://chadfowler.com/2006/12/27/the-big-rewrite">parar de fazer as coisas que sabemos que estão erradas</a>! Também ressaltou que é preciso ter coragem e atitude para rejeitar os moldes corporativos e lutar contra os <a href="http://akitaonrails.com/2009/03/30/off-topic-net-negative-producing-programmer">trolls</a>, os <a href="http://1up4dev.org/2008/11/os-guardioes-da-cascata/">guardiões da cascata</a>.</p>
<p>O <a href="http://akitaonrails.com/">Akita</a> realmente surpreendeu com sua <a href="http://vimeo.com/7099091">palestra</a> &#8220;Agile, beyond chaos&#8221;. Explicou os princípios do <a href="http://agilemanifesto.org/">manifesto ágil</a> e comprovou cientificamente o &#8220;porque&#8221; agile funciona!</p>
<p>A palestra sobre empreendedorismo do <a href="http://improveit.com.br/empresa/vinicius">Vinícius Teles</a> foi uma verdadeira aula, contando um pouco da sua história, as dificuldades e obstáculos superados até conseguir transformar o <a href="http://beonthe.net/">Be on the Net</a> em realidade. Resumindo: ganhe dinheiro fazendo o que você gosta e ajudando as outras pessoas a ganhar dinheiro!</p>
<p>Finalizando com chave de ouro, o <a href="http://obiefernandez.com/">Obie Fernandez</a> falou sobre a &#8220;arte&#8221; do desenvolvimento de aplicações. Assim como um artista que precisa praticar muito para atingir a excelência, um programador precisa praticar e codificar muito&#8230; &#8220;O que você está esperando? Fuck the enterprise!&#8221;</p>
<p>Resumindo, falou-se muito sobre agilidade usando ruby e rails como uma ferramenta pragmática. As empresas de software sérias já estão usando Ruby. É a <a href="http://1up4dev.org/2009/08/ruby-quando-a-linguagem-de-programacao-faz-diferenca/">linguagem ideal para o modelo ágil</a>.</p>
<h2>Comentários do Roger</h2>
<p>Tomei a liberdade de adicionar uma nota neste post do <a href="http://1up4dev.org/author/rodrigopanachi/">Panachi</a>, pois como participante do <a href="http://1up4dev.org/2008/10/rails-summit-eu-fui/">Rails Summit 2008</a>, resumidamente notei três coisas do evento:</p>
<ul>
<li>A infra estrutura do evento estava muito melhor, mais espaço, mais organização e sem o calor infernal do ano passado. Parabéns para o Akita e o pessoal da Locaweb pelo ótimo trabalho e evento mais uma vez!</li>
<li>Tivemos ótimas palestras técnicas sobre como melhorar a performance de aplicações Ruby!</li>
<li>Em 2008 a grande mensagem foi &#8220;Participe!&#8221;. Ficou bem claro a importância de participar de projetos e contribuir. Este ano, a grande mensagem foi &#8220;<em>Fuck the Enterprise!</em>&#8220;. <img src='http://1up4dev.org/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://1up4dev.org/2009/10/rails-summit-2009/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Ruby: quando a linguagem de programação faz diferença!</title>
		<link>http://1up4dev.org/2009/08/ruby-quando-a-linguagem-de-programacao-faz-diferenca/</link>
		<comments>http://1up4dev.org/2009/08/ruby-quando-a-linguagem-de-programacao-faz-diferenca/#comments</comments>
		<pubDate>Tue, 18 Aug 2009 11:25:58 +0000</pubDate>
		<dc:creator>Rodrigo Panachi</dc:creator>
				<category><![CDATA[rails]]></category>
		<category><![CDATA[real world]]></category>
		<category><![CDATA[agilidade]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[ruby on rails]]></category>

		<guid isPermaLink="false">http://1up4dev.org/?p=545</guid>
		<description><![CDATA[Pretendo neste post falar um pouco da minha evolução na programação e como Ruby e Rails agregaram mais conhecimento e me tornaram um melhor desenvolvedor.
A gente se forma na faculdade e de repente estamos trabalhando como programador em alguma empresa de software. A primeira coisa que você vai concluir é que nada a maioria das [...]]]></description>
			<content:encoded><![CDATA[<p>Pretendo neste post falar um pouco da minha evolução na programação e como Ruby e Rails agregaram mais conhecimento e me tornaram um melhor desenvolvedor.</p>
<p>A gente se forma na <a href="http://gc.blog.br/2009/05/18/o-que-eu-acho-sobre-faculdades-de-informatica/" target="_blank">faculdade</a> e de repente estamos trabalhando como programador em alguma empresa de <a href="http://1up4dev.org/2008/10/software-e-sobre-investimento/" target="_blank">software</a>. A primeira coisa que você vai concluir é que <span style="text-decoration: line-through;">nada</span> a maioria das coisas que foram ensinadas na <a href="http://akitaonrails.com/2009/04/17/off-topic-devo-fazer-faculdade" target="_blank">faculdade</a> não se aplicam na vida real. Triste realidade&#8230;</p>
<p>Mas como um bom programador (que você é) logo começará a se questionar e se interessar por novos assuntos, aprender novos conceitos e técnicas de programação, pois você não se sentirá <a href="http://1up4dev.org/2008/06/a-importancia-de-estudar-constantemente/" target="_blank">confortável</a> fazendo as mesmas tarefas repetitivas ou que não sejam otimizadas.</p>
<h2>Orientação a objetos</h2>
<p>Nada de cachorrinhos ou pessoas com ações como andar, comer, etc. No mundo real, seus problemas são faturas, notas fiscais, relatórios, importadores de arquivos, planilhas&#8230; e por aí vai. Seu primeiro desafio será de entender a orientação a objetos de verdade. Mas não se preocupe se isto demorar um pouco pois logo a &#8220;lâmpada&#8221; acenderá e tudo ficará <a href="http://domaindrivendesign.org/" target="_blank">claro como o dia</a>.</p>
<h2>Linguagem e frameworks</h2>
<p>Agora você consegue modelar os objetos da sua aplicação mas se depara com assuntos técnicos que podem ser solucionados prontamente utilizando-se <a href="http://guilher.me/inovacao/frameworks-ageis-para-projetos-de-web20/" target="_blank">frameworks</a> e alguns recursos avançados da linguagem em questão. Logo você estará visitando os sites da documentação do Struts, do Hibernate, do Ant&#8230; e descobrirá que o nome <a href="http://www.apache.org/" target="_blank">Apache</a>, além de tribo indígena, é muito mais do que um servidor Web. Após muitas provas de conceito e algumas noites sem dormir, você será um programador muito produtivo e confiante.</p>
<h2>Análise e documentação</h2>
<p>Parabéns! Aqui você já pode ser considerado um desenvolvedor. Logo seu destaque na equipe será recompensado com mais trabalho <span style="text-decoration: line-through;">de corno</span> desafiador. Nesta fase sua empresa se parece com uma <a href="http://1up4dev.org/2009/04/agilidade-e-a-buzzword-do-momento/" target="_blank">padaria</a>: &#8220;Me vê meio quilo do relatório X&#8221;, &#8220;Faz dois webservices pra viagem!&#8221;, &#8220;Aí, saindo uma fornada de casos de uso&#8230;&#8221;, etc. Logo <a href="http://1up4dev.org/2008/11/os-guardioes-da-cascata/" target="_blank">alguém</a> tem a brilhante <a href="http://1up4dev.org/2008/11/arquiteto-cascateiro/" target="_blank">idéia</a> de &#8220;documentar&#8221; tudo desde uma simples alteração no CSS do sistema até complexos e numerosos <a href="http://blog.fragmental.com.br/2008/07/25/uh-eme-ele/" target="_blank">diagramas</a> e notações daquele novo sistema para integração. No começo a novidade até parece ser uma boa idéia, mas logo você vai <a href="http://1up4dev.org/2009/07/cuidado-com-casos-de-uso/" target="_blank">descobrir</a> que o que realmente importa é <a href="http://1up4dev.org/2008/11/foco-no-problema/" target="_blank">ouvir os problemas dos clientes</a>.</p>
<h2>Testes</h2>
<p>Se você não teve a sorte de ser orientado desde o começo da sua carreira sobre desenvolvimento guiado por testes, você aprende a importância de testes da melhor maneira possível: <a href="http://www.nomedojogo.com/2009/04/06/so-os-imaturos-nao-testam/" target="_blank">tomando na cabeça</a>! Os problemas começam a ficar mais claros. Você fica mais focado na tarefa que está desempenhando e felizmente também cresce profissionalmente com este aprendizado. Você se pergunta como conseguia desenvolver sem testes e por que a linguagem que você <a href="http://gc.blog.br/2008/10/19/java-e-ruim/" target="_blank">utiliza</a> não tem um suporte mais &#8220;nativo&#8221; a testes.</p>
<h2>Metodologia</h2>
<p>No decorrer da sua experiência você tentará desempenhar suas atividades de <a href="http://1up4dev.org/2008/10/a-perpetuacao-da-especie/" target="_blank">várias maneiras</a>. Quando você faz de tudo um pouco acha que o melhor seria fazer apenas uma tarefa específica mas depois descobre que estava enganado. Neste ponto você provavelmente já experimentou pelo menos duas metodologias de desenvolvimento e saberá identificar as vantagens e <a href="http://1up4dev.org/2008/06/guerrilha-agile-parte-1/" target="_blank">desvantagens</a> em cada uma.</p>
<h2>Agilidade</h2>
<p>Felizmente sua <a href="http://1up4dev.org/2009/01/tpw-dicas-para-a-qualidade-do-software/" target="_blank">experiência</a> o guia para um caminho mais <a href="http://1up4dev.org/2008/12/agilidade-cascateira/" target="_blank">ágil</a>. Após aprender e aplicar os mandamentos do <a href="http://agilemanifesto.org/" target="_blank">manifesto ágil</a> e aprimorar seus conceitos e habilidades técnicas, desenvolver aplicações torna-se uma tarefa &#8220;natural&#8221; que você desempenha com fluência independente da linguagem ou tecnologia utilizada. Suas maiores conquistas se resumem em conseguir contornar um problema tecnológico ou limitação da linguagem, negociar o escopo do projeto com o cliente, implementar a maior cobertura de testes possíveis, <a href="http://1up4dev.org/2009/02/tpw-testando-sistemas-legados-automatizando-build/" target="_blank">automatizar</a> processos durante o desenvolvimento, etc.</p>
<p>Neste ponto você começa a se questionar: o que devo fazer agora para <a href="http://akitaonrails.com/2009/07/23/tradu--o-o-que-faz-um-bom-programador" target="_blank">evoluir</a> profissionalmente?</p>
<h2>Ruby!</h2>
<p>Eis que você conhece Ruby e Rails. A linguagem parece estranha a primeira vista mas após algum tempo dedicado e muito estudo você descobre que é uma ferramenta muito poderosa e produtiva, onde você pode &#8220;fluir&#8221; com seu desenvolvimento. Você pensa no que quer fazer e faz! Escreve sua &#8220;feature&#8221;, implementa e roda! Simples e <a href="http://1up4dev.org/2009/04/business-bingo-generator/" target="_blank">divertido</a>!</p>
<p>Ruby e Rails vieram suprir uma necessidade e/ou carência dos desenvolvedores por <a href="http://www.nomedojogo.com/2009/05/06/como-ruby-on-rails-pode-o-tornar-um-programador-pior/" target="_blank">simplicidade</a>. Até seu surgimento, desenvolver aplicações nas linguagens populares do mercado era uma tarefa complicada e trabalhosa. Ruby é uma linguagem poderosa. Rails é simples e muito produtivo. Combinação perfeita!</p>
<p>O que você tá <a href="http://pt.wikipedia.org/wiki/Procrastinar" target="_blank">esperando</a>? <a href="http://why.nomedojogo.com/" target="_blank">Comece</a> agora <a href="http://akitaonrails.com/" target="_blank">mesmo</a> a <a href="http://www.rubyinside.com.br/" target="_blank">estudar</a> <a href="http://www.ruby-lang.org/" target="_blank">Ruby</a> e <a href="http://www.rubyonrails.pro.br/" target="_blank">Rails</a> e seja feliz!</p>
<p>UPDATE: para não causar confusão, alterei o título. Lembre-se: Ruby é linguagem e Rails é framework!</p>
]]></content:encoded>
			<wfw:commentRss>http://1up4dev.org/2009/08/ruby-quando-a-linguagem-de-programacao-faz-diferenca/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Cuidado com Casos de Uso</title>
		<link>http://1up4dev.org/2009/07/cuidado-com-casos-de-uso/</link>
		<comments>http://1up4dev.org/2009/07/cuidado-com-casos-de-uso/#comments</comments>
		<pubDate>Tue, 21 Jul 2009 09:45:58 +0000</pubDate>
		<dc:creator>Roger Leite</dc:creator>
				<category><![CDATA[real world]]></category>

		<guid isPermaLink="false">http://1up4dev.org/?p=516</guid>
		<description><![CDATA[Na Engenharia de Software, um caso de uso (ou use case) é um tipo de classificador representando uma unidade funcional coerente provida pelo sistema, subsistema, ou classe manifestada por seqüências de mensagens intercambiáveis entre os sistemas e um ou mais atores. Pode ser representado por uma elipse contendo, internamente, o nome do caso de uso. [...]]]></description>
			<content:encoded><![CDATA[<p>Na Engenharia de Software, um caso de uso (ou <em>use case</em>) é um tipo de classificador representando uma unidade funcional coerente provida pelo sistema, subsistema, ou classe manifestada por seqüências de mensagens intercambiáveis entre os sistemas e um ou mais atores. Pode ser representado por uma elipse contendo, internamente, o nome do caso de uso. (fonte: <a href="http://pt.wikipedia.org/wiki/Caso_de_uso">Wikipédia</a>)</p>
<p>A própria explicação do Caso de Uso demonstra o que costumam ser na prática, ou seja, um monte de <em>buzzwords</em> para enganar o usuário e levar a sua assinatura. Este por sinal, só é citado no segundo parágrafo&#8230;</p>
<h2>É uma cilada Bino!!!</h2>
<div id="attachment_525" class="wp-caption aligncenter" style="width: 370px"><a href="http://pt.wikipedia.org/wiki/Carga_Pesada"><img class="size-full wp-image-525" title="Caso de Uso!?! Pode ser uma cilada Bino!" src="http://1up4dev.org/wp-content/uploads/2009/07/cilada_bino.jpg" alt="" width="360" height="120" /></a><p class="wp-caption-text">Caso de Uso!?! Pode ser uma cilada Bino!</p></div>
<p>Pontos negativos que podem tornar numa cilada:</p>
<ul>
<li>Não tem público definido. Casos de Uso são feitos para os analistas, desenvolvedores, testadores e as vezes para o usuário.</li>
<li>Casos de Uso não compilam. O usuário quer um sistema e não papéis para assinar.</li>
<li>Não traz o famoso ROI, traduzindo, retorno de investimento. Já vi muitos projetos de &#8220;anos em análise&#8221;, e no final, tinham uma bíblia inútil junto com um grande rombo nas contas.</li>
<li>Difícil de manter atualizado. É natural que as coisas mudem, e a cada mudança ter que atualizar quilos de documentos, não é prático e muito caro.</li>
<li>Pelo fato de terem um público abrangente, é consumido muito tempo com detalhes inúteis, como diagramas de &#8220;tudo&#8221;, que não ajudam em nada no desenvolvimento. Mais um item que consome tempo, recurso e muito dinheiro.</li>
</ul>
<p>A lista pode continuar fácil, mas devemos ir para a parte que interessa:</p>
<h2>Como corresponder a expectativa do usuário?</h2>
<p>Vou colocar o que está dando certo para mim. Caso encontrem alguma semelhança com o capítulo 7 do <a href="http://www.pragprog.com/titles/tpp/the-pragmatic-programmer">Pragmatic Programmer</a>, não estranhem, foi de lá mesmo que eu me &#8220;inspirei&#8221;.</p>
<p>Nada melhor do que a dica 51 (uma boa idéia!) para começar:</p>
<p style="padding-left: 30px;"><em>Don&#8217;t gather requirements &#8212; Dig for them</em></p>
<p>Numa tradução livre e tosca, colocaria assim:</p>
<p style="padding-left: 30px;">Não reuna requisitos, cave-os!</p>
<ul>
<li>Este negócio de &#8220;cavar&#8221;, é algo como: descobrir por que o usuário faz, e não somente como. Descobrindo o por que, você consegue sugerir maneiras diferentes de como fazer. Isso nos leva a próxima dica.</li>
<li>Lembre-se que, requisitos não são arquitetura, nem design, muito menos interface do usuário. Requisitos são necessidades!</li>
<li>Não seja escravo de nenhuma anotação. Use o melhor método que se comunica com o seu público. No meu caso, papel e caneta, com rascunhos da futura tela, já está funcionando e bem.</li>
<li>Não ter medo de sugerir novas idéias. Acredito que se dependesse da maioria dos usuários, todos os sistemas teriam cara de Excel! <img src='http://1up4dev.org/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' />  Com o porque em mente, fica mais fácil sugerir funcionalidades como filtros, layout etc.</li>
<li><em>Some things are better done, than described.</em> -&gt; Algumas coisas são melhores feitas do que descritas. Pra mim, esta dica tem funcionado com reformulação de telas, algum &#8220;filtro maluco&#8221; etc.</li>
</ul>
<p>Sei que este post é muito &#8220;abstrato&#8221;, rápido e sem referência nenhuma, mas a idéia em si é causar uma reflexão em ti, sobre o modo que tu trabalha. Hoje, ele é prático? o cliente está satisfeito com resultado? o cliente está satisfeito com a velocidade, desde a análise a concepção? está havendo desperdício de verba?</p>
<p>Estas perguntas são interessantes, e sempre devem ser feitas. Por mais que o software seja problemático, se conseguirmos corresponder a expectativa do usuário, teremos mais um cliente satisfeito na carteira.</p>
<p>O tema Caso de Uso, é polêmico, e não quero causar <em>flame</em>. Pra cada ambiente, equipe, produto/projeto existe uma maneira diferente de trabalhar. O que espero evitar, são aqueles papéis inúteis, com: &#8220;se a ação teve sucesso, deve mostrar ok&#8221; &#8230; bah!</p>
<p>Por sinal, um dos <a href="http://rafael.adm.br/p/os-top-cinco-erros-nao-tecnicos-cometidos-por-desenvolvedores/">cinco grandes erros não técnicos, cometidos por programadores</a> (<a href="http://www.makinggoodsoftware.com/2009/07/07/5-top-non-technical-mistakes-made-by-programmers/">original aqui</a>) é: Esquecer do usuário. Lembre disto! <img src='http://1up4dev.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://1up4dev.org/2009/07/cuidado-com-casos-de-uso/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Paginação no Rails com will_paginate e Ajax de modo fácil</title>
		<link>http://1up4dev.org/2009/07/paginacao-no-rails-com-will_paginate-e-ajax-de-modo-facil/</link>
		<comments>http://1up4dev.org/2009/07/paginacao-no-rails-com-will_paginate-e-ajax-de-modo-facil/#comments</comments>
		<pubDate>Mon, 13 Jul 2009 03:30:48 +0000</pubDate>
		<dc:creator>Rodrigo Panachi</dc:creator>
				<category><![CDATA[quick tips]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[gem]]></category>
		<category><![CDATA[ruby on rails]]></category>

		<guid isPermaLink="false">http://1up4dev.org/?p=503</guid>
		<description><![CDATA[Paginação é um recurso simples e indispensável em qualquer aplicação séria. Em se tratando de Rails, a solução mais popular é a gem WillPaginate que basicamente adiciona o método &#8220;paginate_&#8221; aos models do ActiveRecord e fornece um helper para renderização dos links da paginação nas views.
Instalando a gem:
sudo gem install will_paginate
Para utilizar na aplicação, adicione [...]]]></description>
			<content:encoded><![CDATA[<p>Paginação é um recurso simples e indispensável em qualquer aplicação séria. Em se tratando de Rails, a solução mais popular é a gem <a href="http://github.com/mislav/will_paginate/tree/master" target="_blank">WillPaginate</a> que basicamente adiciona o método &#8220;paginate_&#8221; aos models do ActiveRecord e fornece um helper para renderização dos links da paginação nas views.</p>
<p>Instalando a gem:</p>
<pre>sudo gem install will_paginate</pre>
<p>Para utilizar na aplicação, adicione no final do <code>config/environment.rb</code>:</p>
<pre>require 'will_paginate'</pre>
<p>Altere o controller para utilizar paginação:</p>
<pre>def index
  @posts = Post.paginate :all, :page =&gt; params[:page], :per_page =&gt; 10
end</pre>
<p>E adicione os links da paginação na view:</p>
<pre>&lt;%= will_paginate @posts %&gt;</pre>
<p>Pronto! Ao clicar nos links da paginação o parâmetro &#8220;page&#8221; será incluído automaticamente na requisição.</p>
<p><a href="http://1up4dev.org/wp-content/uploads/2009/07/posts.png"><img class="alignnone size-medium wp-image-509" title="posts" src="http://1up4dev.org/wp-content/uploads/2009/07/posts-300x253.png" alt="" width="300" height="253" /></a></p>
<h2>Legal, mas cadê o &#8220;ajax&#8221;?</h2>
<p>Por padrão o WillPaginate não se preocupa com isso. O próprio desenvolvedor <a href="http://wiki.github.com/mislav/will_paginate/ajax-pagination" target="_blank">recomenda usar javascript</a> para interceptar o &#8220;click&#8221; dos links e renderizar o resultado na mesma página.</p>
<p>Outra alternativa seria estender a classe responsável por renderizar os links da paginação para utilizar requisições com ajax.</p>
<p>Inclua em <code>app/helpers</code> o arquivo <code>ajax_will_paginate.rb</code> com o código:</p>
<pre>class AjaxWillPaginate &lt; WillPaginate::LinkRenderer
  def prepare(collection, options, template)
    @update = options[:update]
    super
  end
  protected
  def page_link(page, text, attributes = {})
    @template.link_to_remote(text, {
      :url     =&gt; url_for(page),
      :method  =&gt; :get,
      :update =&gt; @update
    })
  end
end</pre>
<p>Então adicione no final do arquivo <code>config/environment.rb</code>:</p>
<pre>  WillPaginate::ViewHelpers.pagination_options[:renderer] = 'AjaxWillPaginate'</pre>
<p>E altere a chamada do helper na view para:</p>
<pre>&lt;%= will_paginate @posts, :update =&gt; 'div_principal' %&gt;</pre>
<p>Informe na opção <code>:update</code> o Id de um objeto html que contenha todo o conteúdo da paginação que será substituído nas requisições seguintes.</p>
<p>É importante lembrar que esta solução altera o comportamento de todos os helpers de paginação da aplicação, por isso deve ser utilizada com cautela. <a href="http://www.botvector.net/2008/08/willpaginate-on-ajax.html" target="_blank">Outras</a> <a href="http://weblog.redlinesoftware.com/2008/1/30/willpaginate-and-remote-links" target="_blank">soluções</a> parecidas podem ser encontradas <a href="http://www.google.com.br/search?q=ajax+will+paginate" target="_blank">aqui</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://1up4dev.org/2009/07/paginacao-no-rails-com-will_paginate-e-ajax-de-modo-facil/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Agendando tarefas em aplicações Rails com rufus-scheduler</title>
		<link>http://1up4dev.org/2009/05/agendando-tarefas-em-aplicacoes-rails-com-rufus-scheduler/</link>
		<comments>http://1up4dev.org/2009/05/agendando-tarefas-em-aplicacoes-rails-com-rufus-scheduler/#comments</comments>
		<pubDate>Sun, 31 May 2009 18:33:06 +0000</pubDate>
		<dc:creator>Rodrigo Panachi</dc:creator>
				<category><![CDATA[quick tips]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[gem]]></category>
		<category><![CDATA[ruby on rails]]></category>

		<guid isPermaLink="false">http://1up4dev.org/?p=501</guid>
		<description><![CDATA[Rufus é um conjunto de gems utilizado para Workflow e BPM. O rufus-scheduler é a gem responsável pelo agendamento e execução de tarefas (jobs). Se você programa em Java e conhece o Quartz não vai ter dificuldade em utilizá-la.
Instalação:
sudo gem install rufus-scheduler
Utilização:
require 'rubygems'
require 'rufus/scheduler'

scheduler = Rufus::Scheduler.start_new

scheduler.every '5m' do
  puts 'Executando a cada 5 minutos'
end

scheduler.schedule [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://rufus.rubyforge.org/" target="_blank">Rufus</a> é um conjunto de gems utilizado para <a href="http://pt.wikipedia.org/wiki/Fluxo_de_Trabalho" target="_blank">Workflow</a> e <a href="http://pt.wikipedia.org/wiki/Business_Process_Management" target="_blank">BPM</a>. O <a href="http://rufus.rubyforge.org/rufus-scheduler/" target="_blank">rufus-scheduler</a> é a gem responsável pelo agendamento e execução de tarefas (jobs). Se você programa em Java e conhece o <a href="http://www.opensymphony.com/quartz/wikidocs/QuickStart.html" target="_blank">Quartz</a> não vai ter dificuldade em utilizá-la.</p>
<p>Instalação:</p>
<pre>sudo gem install rufus-scheduler</pre>
<p>Utilização:</p>
<pre>require 'rubygems'
require 'rufus/scheduler'

scheduler = Rufus::Scheduler.start_new

scheduler.every '5m' do
  puts 'Executando a cada 5 minutos'
end

scheduler.schedule '0 18 * * *' do
  puts 'Executando todos os dias as 18h'
end</pre>
<p>Simples assim! Consulte a <a href="http://rufus.rubyforge.org/rufus-scheduler/" target="_blank">documentação</a> oficial ou <a href="http://github.com/jmettraux/rufus-scheduler/tree/master" target="_blank">contribua com o código</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://1up4dev.org/2009/05/agendando-tarefas-em-aplicacoes-rails-com-rufus-scheduler/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Gerando cheat sheet para os snippets do gedit</title>
		<link>http://1up4dev.org/2009/05/gerando-cheat-sheet-para-os-snippets-do-gedit/</link>
		<comments>http://1up4dev.org/2009/05/gerando-cheat-sheet-para-os-snippets-do-gedit/#comments</comments>
		<pubDate>Tue, 05 May 2009 08:00:37 +0000</pubDate>
		<dc:creator>Roger Leite</dc:creator>
				<category><![CDATA[projetos]]></category>
		<category><![CDATA[gem]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://1up4dev.org/?p=482</guid>
		<description><![CDATA[Acredito que a maioria de vocês conhecem e/ou já usaram as famosas cheat sheets (tradução para &#8220;cola&#8221;?) para algo. Costumo usá-las quando quero fixar algum conceito novo ou simplesmente para consultas rápidas. Com o pai Google, é possível encontrar os mais diversos tipos: HTML, Ruby, Ruby on Rails, Shell Script&#8230; etc.
Atualmente venho praticando Ruby, sendo [...]]]></description>
			<content:encoded><![CDATA[<p>Acredito que a maioria de vocês conhecem e/ou já usaram as famosas <em>cheat sheets</em> (tradução para &#8220;cola&#8221;?) para algo. Costumo usá-las quando quero fixar algum conceito novo ou simplesmente para consultas rápidas. Com o pai Google, é possível encontrar os mais diversos tipos: <a title="Pesquisa no Google para cheat sheet HTML" href="http://www.google.com.br/search?q=cheat+sheet+HTML&amp;ie=utf-8&amp;oe=utf-8&amp;aq=t&amp;rls=com.ubuntu:en-US:unofficial&amp;client=firefox-a">HTML</a>, <a title="Pesquisa no Google para cheat sheet Ruby" href="http://www.google.com.br/search?hl=pt-BR&amp;client=firefox-a&amp;rls=com.ubuntu%3Aen-US%3Aunofficial&amp;hs=Ejh&amp;q=cheat+sheet+Ruby&amp;btnG=Pesquisar&amp;meta=">Ruby</a>, <a title="Pesquisa no Google para cheat sheet Ruby on Rails" href="http://www.google.com.br/search?hl=pt-BR&amp;client=firefox-a&amp;rls=com.ubuntu%3Aen-US%3Aunofficial&amp;hs=WQ2&amp;q=cheat+sheet+Ruby+on+Rails&amp;btnG=Pesquisar&amp;meta=">Ruby on Rails</a>, <a title="Pesquisa no Google para cheat sheet Shell Script" href="http://www.google.com.br/search?hl=pt-BR&amp;client=firefox-a&amp;rls=com.ubuntu%3Aen-US%3Aunofficial&amp;hs=h7M&amp;q=cheat+sheet+Shell+Script&amp;btnG=Pesquisar&amp;meta=">Shell Script</a>&#8230; etc.</p>
<p>Atualmente venho praticando Ruby, sendo o gedit &#8211; &#8220;tunado&#8221; com vários plugins &#8211; o meu maior aliado. Um dos plugins que mais me ajuda é o <a title="Link para o home do Snippets" href="http://live.gnome.org/Gedit/Plugins/Snippets">Snippets</a> e neste <a title="Post sobre o gedit snippets" href="http://cassiomarques.wordpress.com/2008/09/16/gedit-snippets/">post do Cássio Marques</a>, você encontra uma breve descrição do que é, e um link para snippets de exemplo.</p>
<p>Tudo isso foi só pra contar o que me levou a criar a gem gedit-snippets-tool. Com ela é possível criar <em>cheat sheets</em> dos seus snippets. Supondo que você tenha ruby e rubygem instalados, seu modo de uso é muito simples. Para instalar a gem execute:</p>
<pre><code>sudo gem install rogerleite-gedit-snippets-tool -s http://gems.github.com</code></pre>
<p>Após a instalação, para gerar um <em>cheat sheet</em> com todos os seus snippets, execute:</p>
<pre><code>gedit-snippets-tool -cs &gt; ~/mycheatsheet.xhtml</code></pre>
<p>Caso tenha muitos snippets, e deseja criar um cheat sheet somente com Ruby e Ruby on Rails por exemplo, execute:</p>
<pre><code>gedit-snippets-tool -cs ruby* &gt; ~/mycheatsheet.xhtml</code></pre>
<div id="attachment_484" class="wp-caption aligncenter" style="width: 301px"><a href="http://1up4dev.org/wp-content/uploads/2009/04/cheatsheet-example.png"><img class="size-medium wp-image-484" title="cheatsheet example" src="http://1up4dev.org/wp-content/uploads/2009/04/cheatsheet-example-291x300.png" alt="Meu cheat sheet de exemplo" width="291" height="300" /></a><p class="wp-caption-text">Meu cheat sheet de exemplo</p></div>
<p>Levando em conta que a gem foi feita em três dias e focamos somente o necessário para lançarmos uma versão 0.x &#8220;em produção&#8221;, vamos as limitações:</p>
<ul>
<li>O gedit-snippets-tool lê os snippets (arquivos XML) que estão na pasta &#8220;home&#8221;. Constatei que o gedit &#8220;limpo&#8221; logo após habilitar o plugin Snippets, guarda os snippets na pasta &#8220;/usr/share/gedit-2/plugins/snippets/&#8221;. Bom, se for este o seu caso, peço a gentileza de copiá-los para a &#8220;home&#8221; em &#8220;{home-folder}/.gnome2/gedit/snippets/&#8221;.</li>
<li>O template usado para gerar a página xhtml está bem &#8220;rústico&#8221;. O lado bom disso é que está bem fácil de alterá-lo. Vejam o código do template (via gist, leitores de RSS, sorry):</li>
</ul>
<p><script src="http://gist.github.com/106439.js"></script></p>
<p>Quem tiver sugestões (<strong>inclusive</strong> de template), podem forkar o projeto ou se quiser, deixe um comentário que eu entro em contato.</p>
<h3>Sobre o Desenvolvimento</h3>
<p>Assim que tive a idéia, análisei o que seria necessário, e resumindo:</p>
<ul>
<li>Ler os XMLs dos snippets;</li>
<li>Uma engine para gerar páginas através de &#8220;templates&#8221;;</li>
<li>Fazer uma gem executável&#8230; pois assim é mais fácil e rápido para quem quiser usá-la;</li>
</ul>
<p>A parte do XML é fácil, pois até já fiz coisa parecida <a title="Link de como usei o REXML do Ruby" href="http://1up4dev.org/2008/08/tpw-colocando-dicas-em-pratica/">antes</a>. A parte da engine para templates, o pai Google me guiou a uma ótima, chamada <a href="http://www.kuwata-lab.com/erubis/">Erubis</a>, que é uma gem e torna as coisas muito mais fáceis.</p>
<p>Para criar o esqueleto da gem, usei o <a href="http://github.com/dcrec1/gemhub">gemhub</a> do <a href="http://www.mouseoverstudio.com/blog/2008/10/27/criando-gems-com-gemhub-nunca-foi-tao-simples/">Diego Carrion</a>, que facilitou muito o meu trabalho, sem contar a ajuda que me deu na hora de publicar o gemspec no github&#8230; valeu truta! Bom, o resto foram três noites programando e aprendendo a fazer a minha primeira gem. Quem quiser participar estão todos convidados a &#8220;forka-lo&#8221; no <a title="gedit-snippets-tool home" href="http://github.com/rogerleite/gedit-snippets-tool">github</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://1up4dev.org/2009/05/gerando-cheat-sheet-para-os-snippets-do-gedit/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>jQuery DataTables, GitHub API e links da semana</title>
		<link>http://1up4dev.org/2009/05/jquery-datatables-github-apilinks-semana/</link>
		<comments>http://1up4dev.org/2009/05/jquery-datatables-github-apilinks-semana/#comments</comments>
		<pubDate>Mon, 04 May 2009 04:00:27 +0000</pubDate>
		<dc:creator>Equipe 1up4dev</dc:creator>
				<category><![CDATA[novidades da semana]]></category>
		<category><![CDATA[quick tips]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[github]]></category>
		<category><![CDATA[jquey]]></category>
		<category><![CDATA[rails]]></category>

		<guid isPermaLink="false">http://1up4dev.org/?p=477</guid>
		<description><![CDATA[jQuery DataTables
Nós somos fãs de jQuery pela sua simplicidade e poder de extensão através de plugins. Falando nisso, este plugin torna qualquer tabela &#60;table/&#62; em um &#8220;grid&#8221; ordenável, pesquisavel e paginável automagicamente.

Para usar, basta incluir o plugin na página após o jQuery e executar o script:
$(document).ready(function() {
    $("id-tabela").dataTable();
}
No site oficial é possível [...]]]></description>
			<content:encoded><![CDATA[<h2><a href="http://www.datatables.net/" target="_blank">jQuery DataTables</a></h2>
<p>Nós somos fãs de jQuery pela sua simplicidade e poder de extensão através de plugins. Falando nisso, este plugin torna qualquer tabela &lt;table/&gt; em um &#8220;grid&#8221; ordenável, pesquisavel e paginável <em>automagicamente</em>.</p>
<p><a href="http://1up4dev.org/wp-content/uploads/2009/05/datatables.png"><img class="aligncenter size-medium wp-image-490" title="datatables" src="http://1up4dev.org/wp-content/uploads/2009/05/datatables-300x86.png" alt="" width="300" height="86" /></a></p>
<p>Para usar, basta incluir o plugin na página após o jQuery e executar o script:</p>
<pre>$(document).ready(function() {
    $("id-tabela").dataTable();
}</pre>
<p>No <a href="http://www.datatables.net/" target="_blank">site oficial</a> é possível consultar a documentação, exemplos e a <a href="http://www.datatables.net/plug-ins#language" target="_blank">tradução</a> para pt-br.</p>
<h2><a title="github api take two" href="http://github.com/blog/413-github-api-take-two">GitHub API, version 2</a></h2>
<p>Os caras do GitHub não são fracos não&#8230; já faz um tempinho, mas antes tarde do que nunca, anunciaram em seu <a title="GitHub Blog" href="http://github.com/blog">blog</a> a versão 2 do GitHub API. Ela provê acesso à &#8220;Repository, User, Commit, Object and Network&#8221; e futuramente ao Gist também. Como é a primeira release e ainda estão trabalhando nela, o próprio pessoal do Github pede ajuda a &#8220;desbravadores&#8221; e que abram tickets, caso encontrem algo. Documentação você encontra em  <a title="GitHub API Documentation" href="http://develop.github.com">develop.github.com</a>.</p>
<h2>Links da semana</h2>
<p><a href="http://www.desenvolvimentoparaweb.com/usabilidade/8-caracteristicas-de-user-interfaces-ui-de-sucesso/" target="_blank">8 características de User Interfaces (UI) de sucesso</a></p>
<p><a href="http://github.com/ryanb/nifty-generators/tree/master" target="_blank">Nifty Generators para Ruby on Rails</a></p>
<p><a href="http://olabini.com/blog/2009/04/jruby-on-rails-on-google-app-engine/" target="_blank">JRuby on Rails no Google App Engine</a></p>
<p><a href="http://www.ajaxianos.com.br/2008/10/grid-com-ordenacao-e-paginacao-animados/" target="_blank">Grid com ordenação e paginação animados</a></p>
]]></content:encoded>
			<wfw:commentRss>http://1up4dev.org/2009/05/jquery-datatables-github-apilinks-semana/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Guia de Ruby do Why e Autospec-notification</title>
		<link>http://1up4dev.org/2009/04/guia-de-ruby-do-why-autospec-autotest-notification/</link>
		<comments>http://1up4dev.org/2009/04/guia-de-ruby-do-why-autospec-autotest-notification/#comments</comments>
		<pubDate>Mon, 27 Apr 2009 04:00:03 +0000</pubDate>
		<dc:creator>Equipe 1up4dev</dc:creator>
				<category><![CDATA[novidades da semana]]></category>
		<category><![CDATA[quick tips]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[rspec]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[ruby on rails]]></category>
		<category><![CDATA[testes unitários]]></category>

		<guid isPermaLink="false">http://1up4dev.org/?p=422</guid>
		<description><![CDATA[O comovente guia de Ruby do Why
Este livro é sensacional e demonstra exatamente o espírito do Ruby: papo de programador.

O livro é bem divertido. As tirinhas das raposas são ótimas. Várias pessoas contribuíram com a tradução para pt-br que está disponível no Github.
Leitura obrigatória. Chunky bacon!
Autospec-notification
O Autospec é um script gerado pelo RSpec que utiliza [...]]]></description>
			<content:encoded><![CDATA[<h2>O comovente guia de Ruby do Why</h2>
<p>Este <a href="http://poignantguide.net/ruby/" target="_blank">livro</a> é sensacional e demonstra exatamente o espírito do Ruby: papo de programador.</p>
<p><a href="http://1up4dev.org/wp-content/uploads/2009/04/thefoxes-3.png"><img class="aligncenter size-full wp-image-463" title="thefoxes-3" src="http://1up4dev.org/wp-content/uploads/2009/04/thefoxes-3.png" alt="" width="500" height="145" /></a></p>
<p>O livro é bem divertido. As tirinhas das raposas são ótimas. Várias <a href="http://www.nomedojogo.com/2008/10/28/why%E2%80%99s-poignant-guide-to-ruby-em-portugues/" target="_blank">pessoas</a> <a href="http://akitaonrails.com/2008/5/14/vamos-traduzir-o-why-s-poignant-guide-to-ruby" target="_blank">contribuíram</a> com a tradução para pt-br que está disponível no <a href="http://github.com/carlosbrando/poignant-br/tree/master" target="_blank">Github</a>.</p>
<p><a href="http://why.nomedojogo.com/" target="_blank">Leitura obrigatória</a>. Chunky bacon!</p>
<h2>Autospec-notification</h2>
<p>O <a href="http://www.nateclark.com/articles/2008/09/17/_autotest_-is-now-_autospec_-how-to-set-up-autospec-for-rspec-and-rails-with-zentest" target="_blank">Autospec</a> é um script gerado pelo <a href="http://rspec.info/" target="_blank">RSpec</a> que utiliza o Autotest para rodar os testes automaticamente a cada alteração no código.</p>
<p>Unindo o útil ao agradável, foi criado o <a href="http://www.mouseoverstudio.com/blog/2008/10/10/autospec-autotest-notification-autospec-notification-e-novidades/" target="_blank">Autospec-notification</a>, que exibe as notificações do autospec no desktop.</p>
<p><a href="http://1up4dev.org/wp-content/uploads/2009/04/sucesso.png"><img class="aligncenter size-full wp-image-465" title="sucesso" src="http://1up4dev.org/wp-content/uploads/2009/04/sucesso.png" alt="" width="500" height="173" /></a></p>
<p>Para instalar, comece pela gem ZenTest:</p>
<pre style="padding-left: 30px;">sudo gem install ZenTest</pre>
<p>No linux, instale o Libnotify:</p>
<pre style="padding-left: 30px;">sudo apt-get install libnotify-bin</pre>
<p>Agora instale a gem do autotest-notification:</p>
<pre style="padding-left: 30px;">sudo gem install carlosbrando-autotest-notification --source=http://gems.github.com</pre>
<p>Ative o autotest-notification e rode o autospec no seu projeto:</p>
<pre style="padding-left: 30px;">an-install</pre>
<pre style="padding-left: 30px;">script/autospec</pre>
<p>O código está no <a href="http://github.com/carlosbrando/autotest-notification/tree/master" target="_blank">Github</a>. Escreva seus testes e divirta-se!</p>
]]></content:encoded>
			<wfw:commentRss>http://1up4dev.org/2009/04/guia-de-ruby-do-why-autospec-autotest-notification/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Agilidade é a buzzword do momento</title>
		<link>http://1up4dev.org/2009/04/agilidade-e-a-buzzword-do-momento/</link>
		<comments>http://1up4dev.org/2009/04/agilidade-e-a-buzzword-do-momento/#comments</comments>
		<pubDate>Wed, 22 Apr 2009 14:46:42 +0000</pubDate>
		<dc:creator>Rodrigo Panachi</dc:creator>
				<category><![CDATA[processos]]></category>
		<category><![CDATA[questionamento]]></category>
		<category><![CDATA[real world]]></category>
		<category><![CDATA[waterfall]]></category>
		<category><![CDATA[agilidade]]></category>
		<category><![CDATA[pragmatic waterfall]]></category>
		<category><![CDATA[scrum]]></category>

		<guid isPermaLink="false">http://1up4dev.org/?p=427</guid>
		<description><![CDATA[Nos últimos anos o mercado de TI cresceu exponencialmente. Surgiram desde pequenas empresas especializadas em construir websites até monstruosas fábricas de software com seus contratos milionários. Algumas com orçamento limitado outras com dinheiro jorrando pelos canos. Umas com problemas por falta de organização outras com problemas burocráticos. Bons profissionais vs. equipes de sobrinhos, habilidade técnica [...]]]></description>
			<content:encoded><![CDATA[<p>Nos últimos anos o mercado de TI cresceu exponencialmente. Surgiram desde pequenas empresas especializadas em construir websites até monstruosas fábricas de software com seus contratos milionários. Algumas com orçamento limitado outras com dinheiro jorrando pelos canos. Umas com problemas por falta de organização outras com problemas burocráticos. Bons profissionais vs. equipes de sobrinhos, habilidade técnica contra enxurradas de documentos&#8230; muito fracasso, pouco sucesso.</p>
<h2>A meta é coletar as moedas até conseguirmos uma estrela</h2>
<p>Surgiram muitas empresas especializadas em desenvolver software ou que têm um software como produto principal. Normalmente, essas empresas se preocupam apenas em satisfazer os investidores e se esquecem dos clientes. Focam em vender e deixam a qualidade de lado. Prezam pela imagem e ignoram os problemas.</p>
<p>É uma triste realidade que essas empresas tenham mais <a href="http://www.youtube.com/watch?v=R47Xe8kVrv0" target="_blank">executivos</a> do que programadores. Como diz o <a href="http://www.luli.com.br/" target="_blank">Luli Radfahrer</a>, <em>executivos são aqueles seres que se vestem com um pensamento fracassado, usam uma linguagem própria sendo uma mistura de termos que só eles entendem e 20% de palavras em inglês</em>&#8230; não vivem os problemas reais da empresa. É como se estivessem em outro mundo: Mario World!</p>
<div id="attachment_439" class="wp-caption aligncenter" style="width: 310px"><a href="http://1up4dev.org/wp-content/uploads/2009/04/marioland-clean.jpg"><img class="size-medium wp-image-439" title="Mario World" src="http://1up4dev.org/wp-content/uploads/2009/04/marioland-clean-300x188.jpg" alt="" width="300" height="188" /></a><p class="wp-caption-text">O mundo dos executivos: nuvens sorrindo</p></div>
<p>A maioria das empresas que têm problemas com desenvolvimento de software ainda estão vivendo na década de 90. Internet ainda é uma palavra assustadora. Programador é apenas um funcionário que sabe o que significam siglas de informática e sabem mexer no computador. Mudança ainda é encarada como algo arriscado, que deve ser planejado, estudado e aprovado pelo presidente, diretoria e gestores. A palavra da vez é <strong>processo</strong> e seu fiel companheiro é <strong>prazo</strong>. A burocracia é uma amiga que garante que as coisas não fujam de controle. Nesse cenário não há como fugir do waterfall.</p>
<p>O maior problema do waterfall são os papéis: cada um com sua &#8220;especialidade&#8221;. Alguém determina que um <span style="text-decoration: line-through;">infeliz</span> funcionário vai ser responsável por &#8220;levantar requisitos&#8221;. Faz um cursinho de UML e começa a escrever uma quantidade sem fim de Casos de Uso sem ter noção alguma do que seu trabalho afeta no processo. Então a &#8220;equipe&#8221; começa a ter muito &#8220;retrabalho&#8221;, uma vez que os clientes não estão satisfeitos com o que está sendo entregue. Logo percebem que devem fazer o &#8220;levantamento&#8221; mais detalhado e passam a engessar ainda mais o processo com reuniões, assinaturas, etc. Conclusão: tempo e dinheiro desperdiçados e nenhum resultado satisfatório.</p>
<div id="attachment_441" class="wp-caption aligncenter" style="width: 310px"><a href="http://1up4dev.org/wp-content/uploads/2009/04/lost_hatch_locke.jpg"><img class="size-medium wp-image-441" title="Lost" src="http://1up4dev.org/wp-content/uploads/2009/04/lost_hatch_locke-300x199.jpg" alt="Seu trabalho é digitar xxx a cada 108 segundos" width="300" height="199" /></a><p class="wp-caption-text">Meu trabalho é digitar 4 8 15 16 23 42 a cada 108 segundos</p></div>
<p>Falta de foco? Profissionais não qualificados? Processo falho? Não apenas isso: não há comunicação, não há troca de experiências. O waterfall favorece o aparecimento da síndrome do funcionário público: &#8220;eu sou gerente: eu <a href="http://www.youtube.com/watch?v=R47Xe8kVrv0" target="_blank">córdeno</a>, não preciso saber programar&#8221;. As decisões geralmente são tomadas por uma única pessoa. Os projetos seguem o modelo de construção civil. Os profissionais se acomodam pois não veem perspectiva, não conhecem o processo completo, não são ouvidos e por isso não são valorizados.</p>
<p>O foco destas empresas está longe de ser tecnologia. Se concentram em suas <a href="http://migre.me/rwD" target="_blank">buzzwords</a>, processos e reuniões e se esquecem do produto, ou seja, o software. Focam mais na solução do que no problema. Fazendo uma analogia, essas empresas são como um barco furado, onde está entrando água mas há pessoas com baldes para retirá-la e mantê-lo flutuando. Se a agua subir muito, contratam mais pessoas para operar os baldes. Enquanto isso, os executivos ficam acenando como se nada tivesse acontecendo. Quando perguntam se há algum problema, nenhum <span style="text-decoration: line-through;">fdp</span> infeliz tem coragem para falar que o problema é o furo no barco!</p>
<p>As empresas que focam em tecnologia e nos profissionais, tipo o <a href="http://lmgtfy.com/?q=empresas+que+investem+em+tecnologia" target="_blank">Google</a> ou a <a href="http://37signals.com/" target="_blank">37signals</a>, estão se dando bem e mostrando que agilidade não é apenas mais um processo&#8230; é algo real e que funciona!</p>
<h2>Agilidade é sair fazendo as coisas de qualquer jeito</h2>
<p>Diante do cenário caótico das empresas, um grupo de profissionais organizou um movimento a fim de unificar as práticas bem sucedidas e tornar o processo de desenvolvimento mais produtivo e pragmático: <a href="http://agilemanifesto.org/" target="_blank">o manifesto ágil</a>. Quem freqüenta esse blog sabe que nós somos fãs e seguidores das práticas ágeis, não porque somos fanáticos e acreditamos somente em uma verdade absoluta, mas por que já sofremos muito com projetos e empresas fracassadas, vivenciamos os problemas que compartilhamos neste blog, passamos noites em claro corrigindo código escrito por maus profissionais, acumulamos horas em reuniões suficiente para tirarmos brevê, tivemos que negociar com cliente, com o chefe, fazer entrevista, contratar, gerenciar, analisar, programar, testar&#8230; nós sofremos os problemas do waterfall na pele!</p>
<p>O termo agilidade é bem popular atualmente: &#8220;precisamos <strong>agilizar</strong> nosso processo de desenvolvimento&#8221;. Como divulgação do manifesto ágil é algo muito positivo, pois mais pessoas podem conhecer e utilizar as práticas ágeis. Mas, como toda fama tem seu lado negativo, não seria diferente neste caso. Muitos profissionais &#8220;gafanhoto&#8221; estão utilizando esse termo como alavancagem profissional. Já tem gerente falando que RUP é ágil, arquiteto defensor de modelagem UML ágil, diagrama ER ágil, modelo de dados ágil, caso de uso ágil, cronograma ágil, etc. Ou seja, estão distorcendo totalmente o propósito e a filosofia da agilidade.</p>
<p>Como disse o <a href="http://gc.blog.br/2008/11/22/agile-indo-para-o-buraco/" target="_blank">Chapiewski</a>, os programadores estão querendo ir direto para a sobremesa e esquecendo de comer seus vegetais. Agile é muito mais do que desenvolver iterativamente, fazer stand-up meetings e planejamentos ágeis. Não dá para ignorar todas as práticas de engenharia de software que realmente fazem com que a produção e mudanças em softwares sejam ágeis, sem contar todos os princípios e práticas que fazem uma diferença enorme.</p>
<p>O mercado que não é bobo já percebeu esse movimento migratório e lançou seus cursos de &#8220;Gerenciamento de projetos ágeis com MSProject&#8221;, &#8220;Desenvolvendo aplicações web com agilidade&#8221;, &#8220;Aprenda a programar com JUnit e TDD&#8221;. Não demorou muito para que uma massa de desenvolvedores colocasse o termo ágil em seus currículos. Pretensiosos demais em achar que um cursinho qualquer pode ensinar todo conceito e técnicas ágeis catalogadas por profissionais com décadas de experiência em desenvolvimento de software.</p>
<p>&#8220;Estou aprendendo Ruby on Rails por que o mercado está <a href="http://gc.blog.br/2009/02/15/plano-de-cargos-e-salarios/" target="_blank">pagando bem</a>&#8220;. do dia para a noite surgiram milhares de especialistas ágeis. O cara que programava em .NET ou Java no modelo tradicional (digitador de código), faz um cursinho rápido e de repente começa a desenvolver aplicações numa tecnologia que exige uma enorme bagagem conceitual. Faz tudo errado, pois não <strong>sabe</strong> realmente o que está fazendo, o projeto fracassa e ainda deixa a tecnologia com má fama. Isso aconteceu com PHP, ASP e está acontecendo com <a href="http://www.mouseoverstudio.com/blog/2009/04/08/nao-deixa-o-mar-te-engolir/" target="_blank">Rails.</a></p>
<p>Programar é difícil, não é um trabalho para qualquer aventureiro. É preciso <a href="http://akitaonrails.com/2009/04/17/off-topic-devo-fazer-faculdade" target="_blank">estudar</a> muito, se dedicar e principalmente, gostar! Não basta apenas estudar para conseguir uma <a href="http://www.nomedojogo.com/2009/02/17/um-modelo-de-maturidade-para-projetos-rails-e-pratico/" target="_blank">certificação</a> pois não garante nada. Deve-se viver a programação, participar de fóruns, contribuir com projetos open-source, discutir idéias, ser auto-crítico, ler muito, praticar, apreciar as boas práticas e abolir o que não presta&#8230;</p>
<div id="attachment_443" class="wp-caption aligncenter" style="width: 235px"><a href="http://1up4dev.org/wp-content/uploads/2009/04/controle-wii-remote.jpg"><img class="size-medium wp-image-443" title="controle-wii-remote" src="http://1up4dev.org/wp-content/uploads/2009/04/controle-wii-remote-225x300.jpg" alt="Agilidade é propor soluções simples para os problemas" width="225" height="300" /></a><p class="wp-caption-text">Agilidade é propor soluções simples para os problemas</p></div>
<p>Agilidade não é anarquia, não significa &#8220;sair fazendo as coisas de qualquer jeito&#8221;, dizer &#8220;não&#8221; para documentação, etc. É uma mudança de atitude, uma nova maneira de enfrentar os problemas e propor soluções <a href="http://blog.aspercom.com.br/2008/07/21/hierarquias-sao-inteligentes-nas-pontas/" target="_blank">simples e práticas</a>, é ter foco, é saber fazer mais com menos, é automatizar tarefas, é estar comprometido&#8230; agilidade é atitude.</p>
<h2>Contratamos uma consultoria para implantar Scrum</h2>
<p>Scrum é a <em>metodologia</em> da moda. Assim que começou a se popularizar entre a comunidade de desenvolvedores, não demorou muito para o que vários sites e blogs se dedicassem exclusivamente na sua divulgação, apresentando benefícios, artigos, guias, exemplos, certificados para imprimir e pendurar em uma moldura na parede, etc. Logo surgiram as consultorias especializadas em <span style="text-decoration: line-through;">adestramento</span> treinamento e implantação de Scrum nas empresas. Um pouco de política aqui e influência ali até que a INFO Magazine publicasse uma matéria dizendo sua empresa <strong>deveria</strong> usar Scrum como solução para todos os problemas.</p>
<p>Mais uma vez, a falta de foco e maturidade das empresas distorcem tudo. Muitas empresas &#8220;compraram&#8221; o Scrum como a solução pronta. Bastar treinar os funcionários, comprar blocos de post-it e tudo passa a funcionar bem e gerar lucro. Pagam um curso de &#8220;gerenciamento de projetos com Scrum&#8221; para os gerentes. Depois apostam todos as fichas em um projeto &#8220;piloto&#8221;. Fazem tudo que manda o manual: reuniões diárias, planing-pocker, quadro com post-its, etc. E o projeto&#8230; fracassa!</p>
<div id="attachment_454" class="wp-caption aligncenter" style="width: 210px"><a href="http://1up4dev.org/wp-content/uploads/2009/04/burning_money.jpg"><img class="size-medium wp-image-454" title="burning_money" src="http://1up4dev.org/wp-content/uploads/2009/04/burning_money.jpg" alt="Queimando dinheiro" width="200" height="150" /></a><p class="wp-caption-text">Queimando dinheiro</p></div>
<p>Então quer dizer que Scrum não funciona? Foi dinheiro desperdiçado? Tanto esforço para nada? Neste caso, devo dizer que sim! Se esqueceram do processo anterior falho, funcionários pouco qualificados e dos líderes sem foco. Escolheram aqueles funcionários mais &#8220;experientes&#8221; para serem o Scrum Master. Sim, aqueles mesmos que só sabiam escrever casos de uso e diagramas UML. Se esqueceram dos valores, dos princípios, <a href="http://rogerioalcantara.blogspot.com/2009/04/ah-entao-vc-usa-scrum.html" target="_blank">da atitude</a>, do relacionamento com o cliente. O pensamento não mudou, o foco ainda era no processo. Depois de tanto esforço, só deram outro nome o waterfall. Não demorou muito e surgiram os papéis, artefatos, documentos&#8230; ou seja, a empresa continua cometendo os mesmos erros!</p>
<p>Não importa a tecnologia ou processo se não souber usá-lo corretamente! E definitivamente Scrum não pode ser encarado como mais um processo bonitinho, com seus papéis, artefatos, bla bla bla. Um processo de software que funciona é aquele onde a equipe está realmente comprometida e tem experiência acumulada para enfrentar e resolver problemas ao longo do desenvolvimento da aplicação. O processo, ou metodologia, será meramente um nome para as práticas que a equipe conhece e utiliza naturalmente.</p>
<h2>Resumo</h2>
<p>Não há ferramenta, metodologia ou processo que substitua a atitude e experiência de um verdadeiro desenvolvedor ágil. Estude, pratique, esteja comprometido, estude denovo, questione-se, estude novamente. <a href="http://smartic.us/2008/09/09/10-things-you-could-be-doing-to-your-code-right-now/" target="_blank">Revise seu código</a>, estude mais um pouco, e principalmente, tenha atitude! <strong>Agilidade não é metodologia, é atitude!</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://1up4dev.org/2009/04/agilidade-e-a-buzzword-do-momento/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Remarkable, jqGrid no Rails, Heroku e Github issues</title>
		<link>http://1up4dev.org/2009/04/remarkable-jqgrid-no-rails-heroku-e-github-issues/</link>
		<comments>http://1up4dev.org/2009/04/remarkable-jqgrid-no-rails-heroku-e-github-issues/#comments</comments>
		<pubDate>Mon, 20 Apr 2009 04:00:42 +0000</pubDate>
		<dc:creator>Equipe 1up4dev</dc:creator>
				<category><![CDATA[novidades da semana]]></category>
		<category><![CDATA[real world]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[jquey]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[ruby on rails]]></category>

		<guid isPermaLink="false">http://1up4dev.org/?p=412</guid>
		<description><![CDATA[Este é o primeiro post que publicaremos semanalmente reunindo novidades sobre desenvolvimento, artigos, notícias e temas variados sobre Rails.
Remarkable 3.0
Foi lançada a nova versão do Remarkable, um framework para testes com RSpec. Dentre as novidades, estão:

I18n, possibilitando gerar o output das specs no seu idioma favorito fluente
Pending Macros, facilitando o agrupamento das specs pendentes
Macro stubs [...]]]></description>
			<content:encoded><![CDATA[<p>Este é o primeiro post que publicaremos semanalmente reunindo novidades sobre desenvolvimento, artigos, notícias e temas variados sobre Rails.</p>
<h2><a href="http://www.nomedojogo.com/2009/04/14/remarkable-30-is-out-and-its-well-remarkable/" target="_blank">Remarkable 3.0</a></h2>
<p>Foi lançada a nova versão do Remarkable, um framework para testes com RSpec. Dentre as novidades, estão:</p>
<ul>
<li>I18n, possibilitando gerar o output das specs no seu idioma <span style="text-decoration: line-through;">favorito</span> fluente</li>
<li>Pending Macros, facilitando o agrupamento das specs pendentes</li>
<li>Macro stubs e mais opções de Matchers, simplificando testes com mocks</li>
</ul>
<p>Para instalar basta um <code>sudo gem install remarkable_rails</code></p>
<p>Saiba mais no site do <a href="http://www.nomedojogo.com/2009/04/14/remarkable-30-is-out-and-its-well-remarkable/" target="_blank">Carlos Brando</a>, lendo a <a href="http://remarkable.rubyforge.org/rails/" target="_blank">documentação</a> ou espiando o código no <a href="http://github.com/carlosbrando/remarkable/tree/master" target="_blank">Github</a>.</p>
<h2><a href="http://www.2dconcept.com/jquery-grid-rails-plugin" target="_blank">jqGrid no Rails</a></h2>
<p><a href="http://jquery.com/" target="_blank">jQuery</a> é um dos frameworks Javascript mais populares do mercado. O que <a href="http://www.2dconcept.com/articles/8-jquery-grid-rails-plugin" target="_blank">esse cara</a> fez foi juntar o <a href="http://www.trirand.com/jqgrid35/jqgrid.html" target="_blank">jqGrid</a>, que é um plugin muito bom para trabalhar com grids, num plugin para Rails, facilitando sua utilização.</p>
<p>Veja <a href="http://www.2dconcept.com/jquery-grid-rails-plugin" target="_blank">aqui</a> um guia de utilização do plugin, a <a href="http://github.com/ahe/jqgrid_demo_app/tree/master" target="_blank">aplicação de exemplo</a> ou confira o código no <a href="http://github.com/ahe/2dc_jqgrid/tree/master" target="_blank">Github</a>.</p>
<h2><a title="Heroku" href="http://heroku.com/" target="_blank">Heroku</a></h2>
<p>Apesar da simplicidade do <a title="Business Bingo Generator" href="http://1up4dev.org/2009/04/business-bingo-generator/" target="_blank">Business Bingo Generator</a>, houve muitas &#8220;manhas&#8221; aprendidas no seu desenvolvimento. O Heroku foi uma delas, onde pudemos publicar rapidamente a aplicação. Se você quer hospedar um projeto simples feito em Rails, nós o recomendamos. O seu uso é muito simples e a incrível idéia de usar o git como interface para deploy é realmente sensacional. Basta instalar o client do Heroku, dar um &#8220;git push&#8221; e pronto: a aplicação está no ar!</p>
<h2><a title="Github Issue Tracker" href="http://github.com/blog/411-github-issue-tracker" target="_blank">Github Issue Tracker</a></h2>
<p>Nova funcionalidade no GitHub para facilitar nossas vidas, permitindo informar os &#8220;bugs&#8221; nos projetos. No link acima, contém o vídeo &#8220;I<em>ntroduction to GitHub Issues</em>&#8221; para mais detalhes.</p>
<p>Caso já use um Issue Tracker para o seu projeto no github, você pode desabilitá-lo na seção  do <em>Features </em>na aba<em> Admin</em>.</p>
]]></content:encoded>
			<wfw:commentRss>http://1up4dev.org/2009/04/remarkable-jqgrid-no-rails-heroku-e-github-issues/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
