<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="wordpress/2.3.1" -->
<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/"
	>

<channel>
	<title>Riopro Blog &#187; otavio</title>
	<link>http://blog.riopro.com.br</link>
	<description>Tecnologia e Gestão</description>
	<pubDate>Thu, 21 Oct 2010 00:07:15 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.3.1</generator>
	<language>en</language>
			<item>
		<title>Ubuntu 10.10 sem aptitude</title>
		<link>http://blog.riopro.com.br/2010/10/20/ubuntu-1010-sem-aptitude/</link>
		<comments>http://blog.riopro.com.br/2010/10/20/ubuntu-1010-sem-aptitude/#comments</comments>
		<pubDate>Thu, 21 Oct 2010 00:07:15 +0000</pubDate>
		<dc:creator>otavio</dc:creator>
		
		<category><![CDATA[Sistema Operacional]]></category>

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

		<guid isPermaLink="false">http://blog.riopro.com.br/2010/10/20/ubuntu-1010-sem-aptitude/</guid>
		<description><![CDATA[Estreiando o meu Ubuntu 10.10 veio o choque de perceber que o aptitude não está mais presente entre nos. Quer dizer, ao menos por padrão. Agora é necessário instalar usando:
$ sudo apt-get aptitude
Segundo o Br-Linux (sempre ele), isso foi feito apenas com o intuito de liberar 10-13 Mb para o CD.
]]></description>
			<content:encoded><![CDATA[<p>Estreiando o meu Ubuntu 10.10 veio o choque de perceber que o aptitude não está mais presente entre nos. Quer dizer, ao menos por padrão. Agora é necessário instalar usando:</p>
<p><code>$ sudo apt-get aptitude</code></p>
<p>Segundo o <a href="http://br-linux.org/2010/aptitude-fora-do-ubuntu-10-10/">Br-Linux</a> (sempre ele), isso foi feito apenas com o intuito de liberar 10-13 Mb para o CD.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.riopro.com.br/2010/10/20/ubuntu-1010-sem-aptitude/feed/</wfw:commentRss>
		</item>
		<item>
		<title>DejaVue, guardando as alterações dos dados do seu modelo usando o MongoDB</title>
		<link>http://blog.riopro.com.br/2010/09/21/dejavue-guardando-as-alteracoes-dos-dados-do-seu-modelo-usando-o-mongodb/</link>
		<comments>http://blog.riopro.com.br/2010/09/21/dejavue-guardando-as-alteracoes-dos-dados-do-seu-modelo-usando-o-mongodb/#comments</comments>
		<pubDate>Tue, 21 Sep 2010 18:43:55 +0000</pubDate>
		<dc:creator>otavio</dc:creator>
		
		<category><![CDATA[DejaVue]]></category>

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

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

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

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

		<category><![CDATA[Software Livre]]></category>

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

		<guid isPermaLink="false">http://blog.riopro.com.br/2010/09/21/dejavue-guardando-as-alteracoes-dos-dados-do-seu-modelo-usando-o-mongodb/</guid>
		<description><![CDATA[A Riopro está lançando uma nova Gem chamada DejaVue. Essa Gem permite o versionamento dos dados de seus modelos de forma simples. Fortemente baseada no PaperTrail, ela se possui três diferenças principais:

O armazenamento das versões se dá no MongoDB (banco de dados não sql).
Ela permite também armazenar objetos relacionados ao modelo (contanto que o relacionamento [...]]]></description>
			<content:encoded><![CDATA[<p>A <a href="http://riopro.com.br" target="_blank">Riopro</a> está lançando uma nova <a href="http://rubygems.org/">Gem</a> chamada <a href="http://github.com/riopro/deja_vue">DejaVue</a>. Essa Gem permite o versionamento dos dados de seus modelos de forma simples. Fortemente baseada no <a href="http://github.com/airblade/paper_trail/" target="_blank">PaperTrail</a>, ela se possui três diferenças principais:</p>
<ul>
<li>O armazenamento das versões se dá no <a href="http://www.mongodb.org/" target="_blank">MongoDB</a> (banco de dados não sql).</li>
<li>Ela permite também armazenar objetos relacionados ao modelo (contanto que o relacionamento seja um para um), de forma que o objeto possa ser visto exatamente como ele era quando foi alterado. Por exemplo, ao alterar um Post do seu Blog (um modelo BlogPost) o DejaVue pode guardar no histórico como estava o objeto do Usuário (um modelo User relacionado) que criou o Post naquele momento. Isso permite recuperar a versão do Post, mesmo que o Usuário seja apagado futuramente.</li>
<li>Além disso, o DejaVue permite guardar no histórico atributos acessíveis mas que não são persistidos junto com o objeto.</li>
</ul>
<p> <a href="http://blog.riopro.com.br/2010/09/21/dejavue-guardando-as-alteracoes-dos-dados-do-seu-modelo-usando-o-mongodb/#more-146" class="more-link">(more&#8230;)</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.riopro.com.br/2010/09/21/dejavue-guardando-as-alteracoes-dos-dados-do-seu-modelo-usando-o-mongodb/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Adicionando assinatura de repositórios de terceiros ao seu Ubuntu</title>
		<link>http://blog.riopro.com.br/2010/09/17/adicionando-assinatura-de-repositorios-de-terceiros-ao-seu-ubuntu/</link>
		<comments>http://blog.riopro.com.br/2010/09/17/adicionando-assinatura-de-repositorios-de-terceiros-ao-seu-ubuntu/#comments</comments>
		<pubDate>Fri, 17 Sep 2010 19:55:59 +0000</pubDate>
		<dc:creator>otavio</dc:creator>
		
		<category><![CDATA[Dicas]]></category>

		<category><![CDATA[Sistema Operacional]]></category>

		<category><![CDATA[Software Livre]]></category>

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

		<guid isPermaLink="false">http://blog.riopro.com.br/2010/09/17/adicionando-assinatura-de-repositorios-de-terceiros-ao-seu-ubuntu/</guid>
		<description><![CDATA[Quando você inclui novos repositórios ao apt.sources do seu Ubuntu (ou Debian), é normal que as assinaturas dos pacotes não possam ser conferidas por inexistência de chaves GPG no seu computador. Isso gera warnings chatos, como o abaixo:

W: Erro GPG: http://linux.dropbox.com lucid Release:
As assinaturas a seguir não puderam ser verificadas
devido à chave pública não estar [...]]]></description>
			<content:encoded><![CDATA[<p>Quando você inclui novos repositórios ao apt.sources do seu Ubuntu (ou Debian), é normal que as assinaturas dos pacotes não possam ser conferidas por inexistência de chaves GPG no seu computador. Isso gera warnings chatos, como o abaixo:</p>
<pre>
W: Erro GPG: http://linux.dropbox.com lucid Release:
As assinaturas a seguir não puderam ser verificadas
devido à chave pública não estar disponível:
NO_PUBKEY FC918B335044912E</pre>
<p>Para deixar de receber esses warnings, só tem um jeito: cadastrar as chaves GPG no seu computador. Para isso, a primeira coisa é baixar a chave GPG para de um domínio que armazene chaves públicas. Para isso, usamos o comando GPG:<br />
 <a href="http://blog.riopro.com.br/2010/09/17/adicionando-assinatura-de-repositorios-de-terceiros-ao-seu-ubuntu/#more-145" class="more-link">(more&#8230;)</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.riopro.com.br/2010/09/17/adicionando-assinatura-de-repositorios-de-terceiros-ao-seu-ubuntu/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Acabaram as desculpas para não usar css sprite na sua aplicação!</title>
		<link>http://blog.riopro.com.br/2010/04/22/acabaram-as-desculpas-para-nao-usar-css-sprite-na-sua-aplicacao/</link>
		<comments>http://blog.riopro.com.br/2010/04/22/acabaram-as-desculpas-para-nao-usar-css-sprite-na-sua-aplicacao/#comments</comments>
		<pubDate>Thu, 22 Apr 2010 15:21:21 +0000</pubDate>
		<dc:creator>otavio</dc:creator>
		
		<category><![CDATA[Git]]></category>

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

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

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

		<guid isPermaLink="false">http://blog.riopro.com.br/2010/04/22/acabaram-as-desculpas-para-nao-usar-css-sprite-na-sua-aplicacao/</guid>
		<description><![CDATA[Ouvindo hoje o podcast do Ruby 5 de 6 de abril, vi (ou melhor, ouvi) que a gem css_sprite foi totalmente reescrita, pelo seu autor original, Richard Huang. E ele tornou o css_sprite no HAML do css sprite! Pulando para o final para depois voltarmos. O que o css_sprite faz é:

jogue as imagens que você deseja juntar dentro de um diretório [...]]]></description>
			<content:encoded><![CDATA[<p>Ouvindo hoje o podcast do <a href="http://ruby5.envylabs.com/">Ruby 5</a> de 6 de abril, vi (ou melhor, ouvi) que a gem <a href="http://github.com/flyerhzm/css_sprite">css_sprite</a> foi totalmente reescrita, pelo seu autor original, Richard Huang. E ele tornou o css_sprite no <a href="http://haml-lang.com/">HAML</a> do css sprite! Pulando para o final para depois voltarmos. O que o css_sprite faz é:
<ol>
<li>jogue as imagens que você deseja juntar dentro de um diretório terminado com css_sprite na sua aplicação</li>
<li>Rode <span style="font-family: Consolas, Monaco, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace; line-height: 14px; font-size: 13px" class="Apple-style-span">rake css_sprite:build</span></li>
<li>Pronto, uma imagem e um arquivo css serão criados, com uma classe css para cada nome de imagem que você colocou no diretório</li>
</ol>
<p> <a href="http://blog.riopro.com.br/2010/04/22/acabaram-as-desculpas-para-nao-usar-css-sprite-na-sua-aplicacao/#more-144" class="more-link">(more&#8230;)</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.riopro.com.br/2010/04/22/acabaram-as-desculpas-para-nao-usar-css-sprite-na-sua-aplicacao/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Webrat: usando o have_tag, with_tag e o have_selector</title>
		<link>http://blog.riopro.com.br/2010/03/26/webrat-usando-o-have_tag-with_tag-e-o-have_selector/</link>
		<comments>http://blog.riopro.com.br/2010/03/26/webrat-usando-o-have_tag-with_tag-e-o-have_selector/#comments</comments>
		<pubDate>Fri, 26 Mar 2010 16:30:46 +0000</pubDate>
		<dc:creator>otavio</dc:creator>
		
		<category><![CDATA[Programação]]></category>

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

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

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

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

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

		<guid isPermaLink="false">http://blog.riopro.com.br/2010/03/26/webrat-usando-o-have_tag-with_tag-e-o-have_selector/</guid>
		<description><![CDATA[Recentemente me deparei com um dos piores cenários quando estamos testando: o falso positivo. Aconteceu usando os testes para uma visão (view) com o RSpec e o Webrat. Vamos dar um exemplo para depois explicar o motivo:
Digamos que eu estou a exibição da tela de um usuário quando estou logado como administrador. Quero testar se [...]]]></description>
			<content:encoded><![CDATA[<p>Recentemente me deparei com um dos piores cenários quando estamos testando: o <a href="http://en.wikipedia.org/wiki/False_positive_paradox">falso positivo</a>. Aconteceu usando os testes para uma visão (view) com o RSpec e o Webrat. Vamos dar um exemplo para depois explicar o motivo:</p>
<p>Digamos que eu estou a exibição da tela de um usuário quando estou logado como administrador. Quero testar se ao visitar a página, vejo o <em>link</em> de administração. Veja um exemplo da página: <a href="http://blog.riopro.com.br/2010/03/26/webrat-usando-o-have_tag-with_tag-e-o-have_selector/#more-143" class="more-link">(more&#8230;)</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.riopro.com.br/2010/03/26/webrat-usando-o-have_tag-with_tag-e-o-have_selector/feed/</wfw:commentRss>
		</item>
		<item>
		<title>authlogic e subdomain_fu: configurando corretamente o escopo</title>
		<link>http://blog.riopro.com.br/2010/02/03/authlogic-e-subdomain_fu-configurando-corretamente-o-escopo/</link>
		<comments>http://blog.riopro.com.br/2010/02/03/authlogic-e-subdomain_fu-configurando-corretamente-o-escopo/#comments</comments>
		<pubDate>Wed, 03 Feb 2010 19:53:55 +0000</pubDate>
		<dc:creator>otavio</dc:creator>
		
		<category><![CDATA[Rails]]></category>

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

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

		<category><![CDATA[Software Livre]]></category>

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

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

		<guid isPermaLink="false">http://blog.riopro.com.br/2010/02/03/authlogic-e-subdomain_fu-configurando-corretamente-o-escopo/</guid>
		<description><![CDATA[Esse é o pior tipo de erro que acontece: o que não está previsto nos seus testes. Recentemente passamos a usar o authlogic para validar a autenticação de usuários a alguns de nossos sistemas. A validação é muito boa e ainda facilita a criação de testes.
Porém, ao usar um subdomain-fu um erro estranho de validação [...]]]></description>
			<content:encoded><![CDATA[<p>Esse é o pior tipo de erro que acontece: o que não está previsto nos seus testes. Recentemente passamos a usar o <a href="http://github.com/binarylogic/authlogic">authlogic</a> para validar a autenticação de usuários a alguns de nossos sistemas. A validação é muito boa e ainda facilita a criação de testes.</p>
<p>Porém, ao usar um <a href="http://github.com/mbleigh/subdomain-fu/">subdomain-fu</a> um erro estranho de validação de unicidade ocorria. Apesar de termos criado corretamente a validação de unicidade (validates_uniqueness_of), com o escopo correto de account_id (ou seja, apenas validando duplicidades existentes em uma mesma conta, começamos a ter falhas no ambiente de staging.</p>
<p>Sim, os testes previstos para verificar se a validação estava sendo criada com o escopo de account_id tinha sido criada corretamente usando o <a href="http://github.com/carlosbrando/remarkable/">Remarkable</a>. E isso tornava o erro em produção mais estranho ainda.</p>
<p>Após começar a tirar coisa por coisa, pensei que o <em>culpado</em> deveria ser o authlogic. Afinal, se o <a href="http://ar.rubyonrails.org/classes/ActiveRecord/Validations/ClassMethods.html">validates_uniqueness_of </a>passasse a falhar a gente já teria ouvido uma chiadeira danada nos fóruns.</p>
<p>Indo direto para a conclusão, o que precisamos é passar um <em><strong>validations_scope</strong></em> como  parâmetro para a inicialização do <strong>acts_as_authentic</strong><em>. O código fica como abaixo:</p>
<pre>
# authlogic

acts_as_authentic {|config| config.validations_scope = :account_id }</pre>
<p>É óbvio que você não precisa usar o subdomain-fu para esse problema ocorrer. Qualquer escopo que você precisar passar como parâmetro para verificar a unicidade do usuário é suficiente para precisar desse bloco de configuração.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.riopro.com.br/2010/02/03/authlogic-e-subdomain_fu-configurando-corretamente-o-escopo/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Testes de integração usando webrat, rspec, authlogic e subdomain_fu</title>
		<link>http://blog.riopro.com.br/2010/01/01/testes-de-integracao-usando-webrat-rspec-authlogic-e-subdomain_fu/</link>
		<comments>http://blog.riopro.com.br/2010/01/01/testes-de-integracao-usando-webrat-rspec-authlogic-e-subdomain_fu/#comments</comments>
		<pubDate>Fri, 01 Jan 2010 19:02:50 +0000</pubDate>
		<dc:creator>otavio</dc:creator>
		
		<category><![CDATA[Rspec]]></category>

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

		<category><![CDATA[Software Livre]]></category>

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

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

		<guid isPermaLink="false">http://blog.riopro.com.br/2010/01/01/testes-de-integracao-usando-webrat-rspec-authlogic-e-subdomain_fu/</guid>
		<description><![CDATA[Post de Reveillon, já que foi começado em 2009 e terminado em 2010. Bom ano a todos.
Esse post vai falar especificamente sobre como usar o Webrat + Rspec para aplicações usando o Authlogic e o subdomain_fu  para testes de integração. Por isso, não vamos mostrar todos os matchers existentes no Webrat. Apenas mostrar como fazemos [...]]]></description>
			<content:encoded><![CDATA[<p>Post de <em>Reveillon</em>, já que foi começado em 2009 e terminado em 2010. Bom ano a todos.</p>
<p>Esse post vai falar especificamente sobre como usar o Webrat + Rspec para aplicações usando o Authlogic e o subdomain_fu  para testes de integração. Por isso, não vamos mostrar todos os matchers existentes no Webrat. Apenas mostrar como fazemos para os testes rodarem.</p>
<p>Testes de integração sempre foram um <a href="http://pt.wikipedia.org/wiki/Aquiles">Calcanhar de Aquiles</a> para mim. Em parte porque as soluções existentes eram trabalhosas e em parte porque demoravam muito para rodar. Por exemplo, gosto muito do <a href="http://github.com/aslakhellesoy/cucumber">Cucumber</a>, e acredito que suas descrições são muito boas para <a href="http://behaviour-driven.org/">BDD</a>. O problema do Cucumber é que ele, tal qual todas as formas de testes, é usado por humanos. E os testes que mostram que as <em>features</em> funcionam são tão fáceis de serem mal escritos ou escritos erradamente quanto qualquer outro teste. Com a diferença que ele acaba por acobertar mais facilmente os problemas existentes nesses testes. Por isso tenho restrições em implementá-lo.</p>
<p>Gosto muito do <a href="http://seleniumhq.org/">Selenium</a> também, e acredito que em determinados momentos, o custo de performance (tempo para rodar os testes) pode ser justificado pelo fato dele realmente usar browsers para realizar os testes.  É muito provável que passemos a usar o Selenium em algum momento futuro aqui na <a href="http://www.riopro.com.br" target="_blank">Riopro</a>.</p>
<p>Mas, por enquanto, preferimos adotar somente o excelente <a href="http://github.com/brynary/webrat">Webrat</a> (sim, porque o Webrat pode ser fácilmente integrado ao Selenium e ao Cucumber). O que o Webrat faz é, em linhas gerais, executar uma chamada http real (usando o método <strong>visit</strong>) e tratar o output gerado com o <a href="http://wiki.github.com/tenderlove/nokogiri">Nokogiri</a> (O Nokogiri é um parser no estilo Hpricot, rápido e com uma ótima navegação do DOM). Além disso, o Webrat provê <strong>matchers</strong> muito úteis. <a href="http://blog.riopro.com.br/2010/01/01/testes-de-integracao-usando-webrat-rspec-authlogic-e-subdomain_fu/#more-139" class="more-link">(more&#8230;)</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.riopro.com.br/2010/01/01/testes-de-integracao-usando-webrat-rspec-authlogic-e-subdomain_fu/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Recuperando fotos de um cartão Sony usando o recoverjpeg no Linux</title>
		<link>http://blog.riopro.com.br/2009/12/23/recuperando-fotos-de-um-cartao-sony-usando-o-recoverjpeg-no-linux/</link>
		<comments>http://blog.riopro.com.br/2009/12/23/recuperando-fotos-de-um-cartao-sony-usando-o-recoverjpeg-no-linux/#comments</comments>
		<pubDate>Wed, 23 Dec 2009 16:38:21 +0000</pubDate>
		<dc:creator>otavio</dc:creator>
		
		<category><![CDATA[Linux]]></category>

		<category><![CDATA[Software Livre]]></category>

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

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

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

		<category><![CDATA[memory stick]]></category>

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

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

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

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

		<guid isPermaLink="false">http://blog.riopro.com.br/2009/12/23/recuperando-fotos-de-um-cartao-sony-usando-o-recoverjpeg-no-linux/</guid>
		<description><![CDATA[Recoverjpeg. Esse é o nome mágico que salvou meu dia.
3 comandos e recuperei todas as fotos de um cartão de fotos Sony que havia sido corrompido quando estava gerando thumbnails no computador.
Obs: Esse post foi escrito originalmente no meu site pessoal.
]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.rfc1149.net/devel/recoverjpeg">Recoverjpeg</a>. Esse é o nome mágico que salvou meu dia.</p>
<p>3 comandos e recuperei todas as fotos de um cartão de fotos Sony que havia sido corrompido quando estava gerando thumbnails no computador.</p>
<p>Obs: Esse post foi <a href="http://imightbewrong.com.br/posts/21-Recuperando-fotos-de-um-cart%C3%A3o-Sony-usando-o-recoverjpeg-no-Linux">escrito originalmente</a> no meu <a href="http://imbw.com.br">site pessoal</a>.</p>
<p> <a href="http://blog.riopro.com.br/2009/12/23/recuperando-fotos-de-um-cartao-sony-usando-o-recoverjpeg-no-linux/#more-140" class="more-link">(more&#8230;)</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.riopro.com.br/2009/12/23/recuperando-fotos-de-um-cartao-sony-usando-o-recoverjpeg-no-linux/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Converter várias imagens em 1 único arquivo pdf</title>
		<link>http://blog.riopro.com.br/2009/12/17/converter-varias-imagens-em-1-unico-arquivo-pdf/</link>
		<comments>http://blog.riopro.com.br/2009/12/17/converter-varias-imagens-em-1-unico-arquivo-pdf/#comments</comments>
		<pubDate>Thu, 17 Dec 2009 12:56:48 +0000</pubDate>
		<dc:creator>otavio</dc:creator>
		
		<category><![CDATA[Software Livre]]></category>

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

		<guid isPermaLink="false">http://blog.riopro.com.br/2009/12/17/converter-varias-imagens-em-1-unico-arquivo-pdf/</guid>
		<description><![CDATA[Ontem precisei converter 14 imagens em um único pdf. As imagens eram do balanço de 2008 da Riopro que haviam sido scanneadas folha a folha. Ou seja, recebi um brilhante arquivo zip com 14 imagens jpeg (ou jpg se preferir) para repassar a um cliente.
Nem preciso dizer que esse tipo de situação, que ocorre frequentemente [...]]]></description>
			<content:encoded><![CDATA[<p>Ontem precisei converter 14 imagens em um único pdf. As imagens eram do balanço de 2008 da Riopro que haviam sido scanneadas folha a folha. Ou seja, recebi um brilhante arquivo zip com 14 imagens jpeg (ou jpg se preferir) para repassar a um cliente.</p>
<p>Nem preciso dizer que esse tipo de situação, que ocorre frequentemente em qualquer empresa, é inaceitável. Imagina o cliente abrindo imagem a imagem para ver o seu balanço. E se ele quiser imprimir? Era hora então de usar esse <em>mundo</em> incrível chamado <a href="http://pt.wikipedia.org/wiki/GNU_General_Public_License" target="_blank">GNU</a> / <a href="http://pt.wikipedia.org/wiki/Linux">Linux</a> / <a href="http://pt.wikipedia.org/wiki/Software_livre" target="_blank">Software Livre</a>.</p>
<p>3 minutos e estava tudo pronto. Usando o <strong>convert</strong>  do <strong>ImageMagick</strong> para converter as imagens para pdf e depois usando o <strong>pdftk</strong> para juntar tudo em 1 único arquivo e a <em>receita de bolo</em> estava pronta. <a href="http://blog.riopro.com.br/2009/12/17/converter-varias-imagens-em-1-unico-arquivo-pdf/#more-136" class="more-link">(more&#8230;)</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.riopro.com.br/2009/12/17/converter-varias-imagens-em-1-unico-arquivo-pdf/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Ubuntu 9.10, sun jdk e Eclipse: bug ao clicar com o mouse</title>
		<link>http://blog.riopro.com.br/2009/12/09/ubuntu-910-sun-jdk-e-eclipse-bug-ao-clicar-com-o-mouse/</link>
		<comments>http://blog.riopro.com.br/2009/12/09/ubuntu-910-sun-jdk-e-eclipse-bug-ao-clicar-com-o-mouse/#comments</comments>
		<pubDate>Wed, 09 Dec 2009 19:22:06 +0000</pubDate>
		<dc:creator>otavio</dc:creator>
		
		<category><![CDATA[Java]]></category>

		<category><![CDATA[Software Livre]]></category>

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

		<guid isPermaLink="false">http://blog.riopro.com.br/2009/12/09/ubuntu-910-sun-jdk-e-eclipse-bug-ao-clicar-com-o-mouse/</guid>
		<description><![CDATA[Quem estiver usando a combinação Eclipse com o Ubuntu 9.10 (Karmic Koala) e a sun-java6-jdk deve estar passando pelo que passei. Tente fazer uma busca. Você vai reparar que se tentar clicar com o mouse, o botão é selecionado mas a busca não é realizada. Não, o Eclipse não &#8220;parou de funcionar&#8221;. O que ocorre [...]]]></description>
			<content:encoded><![CDATA[<p>Quem estiver usando a combinação Eclipse com o Ubuntu 9.10 (Karmic Koala) e a sun-java6-jdk deve estar passando pelo que passei. Tente fazer uma busca. Você vai reparar que se tentar clicar com o mouse, o botão é selecionado mas a busca não é realizada. Não, o Eclipse não &#8220;parou de funcionar&#8221;. O que ocorre é que ele não está interceptando o comando de click do mouse e associando ao botão. Ou seja, ele não está avisando ao java: &#8220;olha, cliquei o botão de buscar, faz a busca aí&#8221;.</p>
<p>Problema explicado, vamos a uma solução rápida. Criei um arquivo no mesmo diretório aonde fica o binário do Eclipse e chamei o arquivo de <strong>eclipse_startup_ubuntu_9.10.sh</strong>. Em seguida, coloque no arquivo:</p>
<pre>#!/bin/bash

export GDK_NATIVE_WINDOWS=1

cd $(dirname $0)/

./eclipse</pre>
<p>Depois, disse que <strong>eclipse_startup_ubuntu_9.10.sh </strong> é um arquivo executável. Você pode fazer isso clicando com o botão direito nas propriedades do arquivo, ou ir no terminal (sempre uma mão na roda) e digitar:</p>
<pre>
$ chmod a+x ./eclipse_startup_ubuntu_9.10.sh</pre>
<p>Estou supondo que seu terminal está na pasta do Eclipse. Pronto. Agora, ao invés de apontar meu lançador para o binário do Eclipse, aponto ele para esse <strong>eclipse_startup_ubuntu_9.10.sh</strong>.</p>
<p>Agora, explicando um pouco mais. O que o script faz é exportar a variável <strong>GDK_NATIVE_WINDOWS</strong>, dizendo que sim, o Java deve usar o gerenciador nativo de janelas do GDK. Em seguida ele diz que o diretório atual é o diretório aonde o script está localizado e manda abrir o Eclipse.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.riopro.com.br/2009/12/09/ubuntu-910-sun-jdk-e-eclipse-bug-ao-clicar-com-o-mouse/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>

<!-- Dynamic Page Served (once) in 0.449 seconds -->

