<?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>Diego Plentz</title>
	<atom:link href="http://plentz.org/feed/" rel="self" type="application/rss+xml" />
	<link>http://plentz.org</link>
	<description>plentiful thoughts from my empty head</description>
	<lastBuildDate>Wed, 07 Dec 2011 16:14:21 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Installing PostgreSQL 9.1 on Ubuntu</title>
		<link>http://plentz.org/2011/12/06/installing-postgresql-9-1-on-ubuntu/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=installing-postgresql-9-1-on-ubuntu</link>
		<comments>http://plentz.org/2011/12/06/installing-postgresql-9-1-on-ubuntu/#comments</comments>
		<pubDate>Wed, 07 Dec 2011 02:00:01 +0000</pubDate>
		<dc:creator>Diego Plentz</dc:creator>
				<category><![CDATA[devops]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[postgre]]></category>
		<category><![CDATA[postgresql]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://plentz.org/?p=362</guid>
		<description><![CDATA[Since PostgreSQL 9.1 isn&#8217;t in any official repository, you will need to add a external repo. Just follow these instructions: sudo apt-get install python-software-properties sudo add-apt-repository ppa:pitti/postgresql sudo apt-get update sudo apt-get install postgresql-9.1 libpq-dev And you&#8217;re ready to rock. If you want to test it, just do this: sudo su - postgres psql -d [...]]]></description>
			<content:encoded><![CDATA[<p>Since PostgreSQL 9.1 isn&#8217;t in any official repository, you will need to add a external repo. Just follow these instructions: </p>
<p><code>sudo apt-get install python-software-properties<br />
sudo add-apt-repository ppa:pitti/postgresql<br />
sudo apt-get update<br />
sudo apt-get install postgresql-9.1 libpq-dev</code></p>
<p>And you&#8217;re ready to rock. If you want to test it, just do this:<br />
<code>sudo su - postgres<br />
psql -d postgres -U postgres</code></p>
<p>Configurations goes here: /etc/postgresql/9.1/main<br />
Data goes here: /var/lib/postgresql/9.1/main</p>
<p>Or, if you already have an older version of PostgreSQL running, <a href="http://pt.partypoker.com/">just</a> do this instead:</p>
<p><code>sudo apt-get install python-software-properties<br />
sudo add-apt-repository ppa:pitti/postgresql<br />
sudo apt-get update<br />
sudo apt-get upgrade</code></p>
<p>If you need to access it remotely, do it right: First, set a password for postgres user using this:<br />
<code>passwd postgres</code></p>
<p>Then change postgres database user:<br />
<code>su - postgres<br />
psql -d postgres -c "ALTER USER postgres WITH PASSWORD 'my_shiny_password';"</code></p>
<p>And then setup a SSH Tunnel to the server. <a href="http://linode.com">Linode</a> guys have a good tutorial on how to do this: <a href="http://library.linode.com/databases/postgresql/pgadmin-macos-x">Securely Manage Remote PostgreSQL Servers with pgAdmin</a>.</p>
<div class="acc_license"><a href="http://creativecommons.org/licenses/by-nc-nd/3.0/"><img src="http://i.creativecommons.org/l/by-nc-nd/3.0/88x31.png" alt="by-nc-nd" /></a></div><!--<rdf:RDF xmlns="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"><Work rdf:about=""><license rdf:resource="http://creativecommons.org/licenses/by-nc-nd/3.0/" /></Work><License rdf:about="http://creativecommons.org/licenses/by-nc-nd/3.0/"><requires rdf:resource="http://creativecommons.org/ns#Attribution" /><permits rdf:resource="http://creativecommons.org/ns#Reproduction" /><permits rdf:resource="http://creativecommons.org/ns#Distribution" /><prohibits rdf:resource="http://creativecommons.org/ns#CommercialUse" /><requires rdf:resource="http://creativecommons.org/ns#Notice" /></License></rdf:RDF>--><img src="http://plentz.org/wordpress/?ak_action=api_record_view&id=362&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://plentz.org/2011/12/06/installing-postgresql-9-1-on-ubuntu/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Installing Qt in Lion</title>
		<link>http://plentz.org/2011/07/27/installing-qt-in-lion/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=installing-qt-in-lion</link>
		<comments>http://plentz.org/2011/07/27/installing-qt-in-lion/#comments</comments>
		<pubDate>Wed, 27 Jul 2011 17:32:01 +0000</pubDate>
		<dc:creator>Diego Plentz</dc:creator>
				<category><![CDATA[coding]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://plentz.org/?p=360</guid>
		<description><![CDATA[You could easily install QT under MacOS X 10.7(Lion) using homebrew(which already has a fix for 4.7 incompatibility). To install homebrew, run: /usr/bin/ruby -e "$(curl -fsSL https://raw.github.com/gist/323731)" Then install qt from source, using: brew install qt --build-from-source It should work. Related: Qt 4.8 beta and Mac OSX Lion, Phonon error changing README to alert users [...]]]></description>
			<content:encoded><![CDATA[<p>You could easily install <a href="http://qt.nokia.com/">QT</a> under MacOS X 10.7(Lion) using <a href="http://mxcl.github.com/homebrew/" title="homebrew">homebrew</a>(which already has a fix for 4.7 incompatibility). To install homebrew, run:</p>
<p><code>/usr/bin/ruby -e "$(curl -fsSL https://raw.github.com/gist/323731)"</code></p>
<p>Then install qt from source, using:</p>
<p><code>brew install qt --build-from-source</code></p>
<p>It should work.</p>
<p>Related:</p>
<ul>
<li><a href="http://stackoverflow.com/questions/6794005/qt-4-8-beta-and-mac-osx-lion-phonon-error">Qt 4.8 beta and Mac OSX Lion, Phonon error</a></li>
<li><a href="https://github.com/thoughtbot/capybara-webkit/pull/117">changing README to alert users about OS X 10.7 binary incompatibility</a></li>
</ul>
<div class="acc_license"><a href="http://creativecommons.org/licenses/by-nc-nd/3.0/"><img src="http://i.creativecommons.org/l/by-nc-nd/3.0/88x31.png" alt="by-nc-nd" /></a></div><!--<rdf:RDF xmlns="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"><Work rdf:about=""><license rdf:resource="http://creativecommons.org/licenses/by-nc-nd/3.0/" /></Work><License rdf:about="http://creativecommons.org/licenses/by-nc-nd/3.0/"><requires rdf:resource="http://creativecommons.org/ns#Attribution" /><permits rdf:resource="http://creativecommons.org/ns#Reproduction" /><permits rdf:resource="http://creativecommons.org/ns#Distribution" /><prohibits rdf:resource="http://creativecommons.org/ns#CommercialUse" /><requires rdf:resource="http://creativecommons.org/ns#Notice" /></License></rdf:RDF>--><img src="http://plentz.org/wordpress/?ak_action=api_record_view&id=360&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://plentz.org/2011/07/27/installing-qt-in-lion/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Porque usar Ruby on Rails?</title>
		<link>http://plentz.org/2011/04/19/ruby-on-rails/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=ruby-on-rails</link>
		<comments>http://plentz.org/2011/04/19/ruby-on-rails/#comments</comments>
		<pubDate>Tue, 19 Apr 2011 09:38:53 +0000</pubDate>
		<dc:creator>Diego Plentz</dc:creator>
				<category><![CDATA[java]]></category>
		<category><![CDATA[review]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[work]]></category>

		<guid isPermaLink="false">http://plentz.org/2005/11/20/ruby-on-rails/</guid>
		<description><![CDATA[ps: esse é um post meu de 2005 que atualizei pra refletir a realidade do framework. Rails é uma alternativa às soluções padronizadas qualificadas como &#8220;empresariais&#8221;, que implicam enormes cargas de trabalho sob o custo da compatibilidade com o vicioso ciclo burocrático de consultoria e treinamento que afeta as grandes empresas. Rails tem como proposta [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://rubyonrails.com/"><img src="http://rubyonrails.org/images/rails.png" style="float: right; margin-left: 10px; margin-bottom: 10px;" /></a></p>
<p>ps: esse é um post meu de 2005 que atualizei pra refletir a realidade do framework.</p>
<p><a href="http://rubyonrails.com/">Rails</a> é uma alternativa às soluções padronizadas qualificadas como &#8220;empresariais&#8221;, que implicam enormes cargas de trabalho sob o custo da compatibilidade com o vicioso ciclo burocrático de consultoria e treinamento que afeta as grandes empresas. <a href="http://rubyonrails.com.br">Rails</a> tem como proposta remover várias camadas de complexidade, salientando a capacidade individual do desenvolvedor em detrimento dos requerimentos burocráticos de equipe. Isso não deve passar a impressão, entretanto, de que Rails não é adequado para o trabalho em equipe. Rails adere ao padrão MVC de forma pragmática o bastante para promover uma separação clara de papéis, e ainda facilita o emprego de técnicas de Agile e Test-Driven Development.</p>
<p>O objetivo deste texto não é comparar Ruby/Rails com outros frameworks/linguagens, mas sim mostrar as principais vantagens que um desenvolvedor pode ter utilizando este framework. Seguem os pontos:</p>
<p><strong>Produtividade</strong> &#8211;  como o desenvolvedor consegue resolver seu problema de uma forma mais simples, clara e concisa o desenvolvimento se torna mais agradável e rápido.</p>
<p><strong>Simplicidade</strong> &#8211; esta é uma característica forte em Ruby, pois a solução de um problema, normalmente, é atingida de uma forma extremamente simples e clara, o que facilita o entendimento do código por outros programadores que precisarem fazer manutenção no código.</p>
<p><strong>Convention over configuration</strong> &#8211; o Rails se baseia no princípio convenção sobre configuração. Ao invés de criar dezenas de arquivos para configuração, basta utilizar algumas convenções pré-definidas e, caso necessário, customizar somente o que for necessário. A configuração é feita através de arquivos YML, um formato simples de declarar configurações. Isso se traduz diretamente para economia de tempo no desenvolvimento.</p>
<p><strong>Code generation</strong> &#8211; você não precisa criar sempre toda a estrutura de código à partir do zero, o que permite um tempo de startup e time-to-market menor do projeto. A principal vantagem do Rails quando comparada à outras tecnologias é que o código gerado é limpo e conciso, facilitando manutenções futuras. Outros frameworks até possuem geradores de código, mas uma vez gerado, são extremamente complexos e difíceis de receberem manutenção.</p>
<p><strong><acronym title="Don't Repeat Yourself">DRY</acronym> principle</strong> &#8211; <strong>D</strong>on&#8217;t <strong>R</strong>epeat <strong>Y</strong>ourself é um conceito &#8216;criado&#8217; por Dave Thomas (autor do livro <a href="http://www.amazon.com/gp/product/020161622X/103-9776861-2339043?v=glance&#038;n=283155&#038;s=books&#038;v=glance&#038;tagActionCode=billvennersA">The Pragmatic Programmer</a>) que <a href="http://c2.com/cgi/wiki?DontRepeatYourself">parafraseando</a> significa:</p>
<blockquote><p>Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.</p></blockquote>
<p>Como sempre foi dada muita importância pra isso, o framework como um todo foi moldado para evitar a duplicação de código.</p>
<p><strong>Maturidade</strong> &#8211; a linguagem Ruby é bastante madura, foi criada pelo japonês Yukihiro “Matz” Matsumoto em 1993 e teve seu primeiro relase público em 1995(mesmo ano que o Java, por exemplo). Além disso, o framework Rails possui um bom tempo de vida, tendo seu primeiro release público em 2003.</p>
<p><strong>Performance</strong> &#8211; o framework possui uma série de ferramentas e configurações que permitem excelentes ganhos de performance da aplicação e de uma forma simples, sem necessidade de um trabalho braçal por parte do desenvolvedor.</p>
<p><strong>Segurança</strong> &#8211; o framework foi feito com uma grande preocupação nesse requisito, oferecendo ferramentas para tratamento das principais questões de segurança que um site precisa, como XSS e SQL-Injection, facilitando a vida do desenvolvedor e garantindo uma maior integridade da aplicação.</p>
<p><strong>Suporte à vários databases</strong> &#8211; Rails vem com suporte à diversos databases, entre eles os principais bancos de dados do mercado: PostgreSQL, MySQL, Oracle, SQL Server.</p>
<p><strong>IDE&#8217;s</strong> &#8211; já possui uma boa gama de ferramentas, como <a href="http://www.jetbrains.com/ruby/">RubyMine</a>, <a href="http://macromates.com/">TextMate</a>,  <a href="http://www.activestate.com/komodo-ide">Komodo</a>, <a href="http://aptana.com/products/">Aptana</a> e <a href="http://www.sublimetext.com/">Sublime Text</a>.</p>
<p><strong>Suporte nativo para Ajax</strong> &#8211; Ruby on Rails vem por padrão com o framework javascript <a href="http://jquery.com/">jQuery</a>, que permite a fácil adição de <a href="http://jqueryui.com/demos/">avançados recursos de interface</a>, tornando mais fácil a criação de interfaces ricas e com melhor usabilidade.</p>
<p><strong>Foco em testes</strong> &#8211; Ruby on Rails já vem com a ferramenta Test::Unit para automação dos testes da sua aplicação, além de possuir outras ótimas ferramentas como o <a href="http://relishapp.com/rspec">RSpec</a>.</p>
<p><strong>Curva de aprendizado</strong> &#8211; aprender como funciona uma aplicação criada com Rails <a href="http://weblog.rubyonrails.org/2005/10/28/comparing-technology-stacks-of-books">é mais simples que na maioria das outras tecnologias</a> atuais, como Java, PHP, C#/.Net, como também para quem está querendo começar a desenvolver.</p>
<p><strong>Cross-plataform</strong> &#8211;  existe um bom suporte aos principais sistemas operationais do mercado, como Windows, Linux e MacOSX.</p>
<p><strong>OpenSource</strong> &#8211; possui seu código completamente aberto, assim como a absoluta maioria dos plugins e bibliotecas disponíveis para ele. A comunidade é muito ativa e existem literalmente <a href="https://github.com/rails/rails/contributors">centenas de desenvolvedores</a> que contribuem com código para melhorar o framework.</p>
<p><strong>Feedback instantâneo</strong> &#8211; o ciclo de desenvolvimento é instantâneo, uma vez que não requer que o desenvolvedor fique reiniciando seu servidor de aplicação à cada mudança que faz (salvo algumas poucas configurações do framework).</p>
<p>Acredito que os itens acima já tenham sido suficientes para despertar a curiosidade para testá-lo. Se você estiver interessado em fazer alguém testar Ruby on Rails mas não quer ter muito trabalho, recomendo mostrar o vídeo <a href="http://media.rubyonrails.org/video/rails_take2_with_sound.mov">Impressing with Rails 0.13</a>, criado originalmente para ser usado no <a href="http://fisl.org.br">FISL 6.0</a>,  onde <a href="http://www.loudthinking.com">David Heinemeier Hansson</a> mostra como criar um blog em 15 minutos ou o vídeo <a href="http://rubyonrails.org/screencasts/rails3">Introducing Rails 3</a>, do <a href="http://blog.envylabs.com/">Gregg Pollack</a>.</p>
<p>Mas se você ainda não se convenceu que Ruby on Rails pode ser uma boa opção para seu projeto, abaixo seguem alguns links que reforçam o que eu falei:</p>
<p><a href="http://www.eweek.com/article2/0,1895,1880280,00.asp">Ruby on Rails: Making Programmers Happy</a><br />
Entrevista com <a href="http://www.loudthinking.com/">David Heinemeier Hansson</a> no site eWeek.</p>
<p><a href="http://blogs.zdnet.com/BTL/?p=2094">Making programmers more productive</a><br />
<a href="http://www.windley.com">Phil Windley</a> escreve sobre suas impressões sobre Rails.</p>
<p><a href="http://www.hackdiary.com/archives/000071.html">The BBC&#8217;s programme catalogue (on Rails)</a><br />
BBC está usando Rails para o seu catálogo com alguns milhões de shows.</p>
<blockquote><p>&#8230;BBC have allowed me to rapidly prototype and deploy this 7,000,000-row database-backed site in everyone&#8217;s new favourite web framework&#8230;</p></blockquote>
<p><a href="http://www-128.ibm.com/developerworks/linux/library/wa-rubyonrails/?ca=dgr-lnxw01RubyAndJ2EE">Ruby on Rails and J2EE: Is there room for both?</a><br />
Aaron Rustad faz uma comparação entre as principais features da arquitetura do Rails com os tradicionais frameworks J2EE</p>
<p><a href="http://jlaine.net/blog/83/interview-with-david-heinemeier-hansson">Interview with DHH</a><br />
Entrevista com <a href="http://www.loudthinking.com/">David Heinemeier Hansson</a>, criador do Rails.</p>
<p><a href="http://johnwlong.com/slides/gettothepoint/index.html">Get to the point!Development with Ruby and Rails</a><br />
Apresentação mostrando as principais features da linguagem (Ruby em si, não especificamente do framework Rails). Muito bom pra mostrar para seu chefe(desde que ele seja/tenha sido um progrmador).</p>
<p><a href="http://news.com.com/Ruby+on+Rails+chases+simplicity+in+programming/2100-1007_3-5920169.html?tag=nefd.lede">Ruby on Rails chases simplicity in programming</a><br />
Entrevista com <a href="http://www.loudthinking.com/">David Heinemeier Hansson</a>, criador do Rails (saiu também no <a href="http://news.zdnet.com/2100-3513_22-5920169.html?tag=nl.e589">ZDnet</a>).</p>
<p><a href="https://www.sdn.sap.com/irj/sdn/weblogs?blog=/pub/wlg/2111">SAP on Rails, and not on the skids</a><br />
Com apenas algumas linhas de código, <a href="https://weblogs.sdn.sap.com/pub/u/8630">Piers Harding</a> mostra como fazer integração com SAP, mostrando um pouco da flexibilidade do framework.</p>
<p><a href="http://rewrite.rickbradley.com/pages/moving_to_rails">Evaluation: moving from Java to Ruby on Rails for the CenterNet rewrite</a><br />
Case study muito interessante da migração do CenterNet(um grande aplicação da área de sáude) de Java para Ruby on Rails. E por ter sido feito em 6 vezes menos tempo (8 dias contra 6 semanas do Java) com uma redução de 20:1 para código, eu diria que sim, é uma redução <strong>bem</strong> relevante. Antes que alguns trolls apareçam criticando, sim, migrar uma aplicação é mais rápido do que desenvolver ela do zero, mas convenhamos, 20:1 é um número incontestável.</p>
<p><a href="http://www.onjava.com/lpt/a/6334">Ruby the Rival</a><br />
Entrevista com alguns desenvolvedores experientes, mostrando sua visão da linguagem Ruby.</p>
<p><a href="http://wiki.rubyonrails.org/rails/pages/RealWorldUsage">Ruby on Rail &#8211; Real World Usage</a><br />
Uma lista com algumas empresas que já estão usando Rails em aplicações reais.</p>
<p><a href="http://www.eweek.com/article2/0,1895,1880199,00.asp">Ruby on Rails Dev Framework on Track for Growth</a></p>
<p><a href="http://www-128.ibm.com/developerworks/linux/library/l-rubyrails/">Fast-track your Web apps with Ruby on Rails</a><br />
David Mertz demonstra através de uma mini-aplicação algumas vantagens do framework.</p>
<p>E isso pode ser o fim dos outros frameworks, seja Java, .Net, PHP, para desenvolvimento mainstream? Dificilmente. Que todo mundo abandonará Java e migrar para Rails? Com certeza, não.</p>
<div class="acc_license"><a href="http://creativecommons.org/licenses/by-nc-nd/3.0/"><img src="http://i.creativecommons.org/l/by-nc-nd/3.0/88x31.png" alt="by-nc-nd" /></a></div><!--<rdf:RDF xmlns="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"><Work rdf:about=""><license rdf:resource="http://creativecommons.org/licenses/by-nc-nd/3.0/" /></Work><License rdf:about="http://creativecommons.org/licenses/by-nc-nd/3.0/"><requires rdf:resource="http://creativecommons.org/ns#Attribution" /><permits rdf:resource="http://creativecommons.org/ns#Reproduction" /><permits rdf:resource="http://creativecommons.org/ns#Distribution" /><prohibits rdf:resource="http://creativecommons.org/ns#CommercialUse" /><requires rdf:resource="http://creativecommons.org/ns#Notice" /></License></rdf:RDF>--><img src="http://plentz.org/wordpress/?ak_action=api_record_view&id=123&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://plentz.org/2011/04/19/ruby-on-rails/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
<enclosure url="http://media.rubyonrails.org/video/rails_take2_with_sound.mov" length="54364199" type="video/quicktime" />
		</item>
		<item>
		<title>So, why Adium lacks community support?</title>
		<link>http://plentz.org/2011/02/26/so-why-adium-lacks-community-support/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=so-why-adium-lacks-community-support</link>
		<comments>http://plentz.org/2011/02/26/so-why-adium-lacks-community-support/#comments</comments>
		<pubDate>Sun, 27 Feb 2011 02:21:29 +0000</pubDate>
		<dc:creator>Diego Plentz</dc:creator>
				<category><![CDATA[coding]]></category>
		<category><![CDATA[geek]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://plentz.org/?p=333</guid>
		<description><![CDATA[These days, when you want to contribute to some open source project, what you do? My workflow is pretty much like this(using Adium as an example): - browser address bar: https://github.com/adium > 404 not found Damn! Well, let&#8217;s look further. http://adium.im/ Hum, there&#8217;s a development link. *click*. http://trac.adium.im/ Lot&#8217;s of info. Hum, maybe this link [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.flickr.com/photos/sahrizvi/432757556/" title="messed up"><img src="http://farm1.static.flickr.com/153/432757556_f49f62f707_m.jpg" alt="after the catch" class="pc_img" style="border: 2px solid rgb(0, 0, 0);float: right; margin-left: 10px; margin-bottom: 10px;"/></a><br />
These days, when you want to contribute to some open source project, what you do? My workflow is pretty much like this(using <a href="http://adium.im/">Adium</a> as an example):</p>
<p>- browser address bar: <a href="https://github.com/adium">https://github.com/adium</a></p>
<p><code>> 404 not found</code></p>
<p>Damn! Well, let&#8217;s look further.</p>
<ul>
<li><a href="http://adium.im/">http://adium.im/</a> Hum, there&#8217;s a development link. *click*.</li>
<li><a href="http://trac.adium.im/">http://trac.adium.im/</a> Lot&#8217;s of info. Hum, maybe this link in &#8220;Contribute&#8221; session. *click*</li>
<li><a href="http://trac.adium.im/wiki/Development">http://trac.adium.im/wiki/Development</a> Hum, lots of links. &#8220;Getting Adium source&#8221;. Well, this is what I want. *click*</li>
<li><a href="http://trac.adium.im/wiki/GettingAdiumSource">http://trac.adium.im/wiki/GettingAdiumSource</a> More links, text, etc. Maybe this one &#8220;Getting the Newest Adium Source&#8221; *click*</li>
<li><a href="http://trac.adium.im/wiki/GettingNewestAdiumSource">http://trac.adium.im/wiki/GettingNewestAdiumSource</a> Hum, I&#8217;m getting closer. Wait, what? mercurial? Really? Damn, I already forgot the bug I have found.</li>
</ul>
<p>Disclaimer: I&#8217;m a huge fan of Adium and it&#8217;s the IM of choice for me over 4 years, but guys, <a href="http://adium.im/blog/2009/08/pidgin-2-6-0-and-adium-vv/">you&#8217;re doing it wrong</a> when comes to helping devs to help you.</p>
<div class="acc_license"><a href="http://creativecommons.org/licenses/by-nc-nd/3.0/"><img src="http://i.creativecommons.org/l/by-nc-nd/3.0/88x31.png" alt="by-nc-nd" /></a></div><!--<rdf:RDF xmlns="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"><Work rdf:about=""><license rdf:resource="http://creativecommons.org/licenses/by-nc-nd/3.0/" /></Work><License rdf:about="http://creativecommons.org/licenses/by-nc-nd/3.0/"><requires rdf:resource="http://creativecommons.org/ns#Attribution" /><permits rdf:resource="http://creativecommons.org/ns#Reproduction" /><permits rdf:resource="http://creativecommons.org/ns#Distribution" /><prohibits rdf:resource="http://creativecommons.org/ns#CommercialUse" /><requires rdf:resource="http://creativecommons.org/ns#Notice" /></License></rdf:RDF>--><img src="http://plentz.org/wordpress/?ak_action=api_record_view&id=333&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://plentz.org/2011/02/26/so-why-adium-lacks-community-support/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>6 coisas que vocês não sabem?</title>
		<link>http://plentz.org/2010/07/03/6-coisas-que-voces-nao-sabem/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=6-coisas-que-voces-nao-sabem</link>
		<comments>http://plentz.org/2010/07/03/6-coisas-que-voces-nao-sabem/#comments</comments>
		<pubDate>Sat, 03 Jul 2010 06:12:21 +0000</pubDate>
		<dc:creator>Diego Plentz</dc:creator>
				<category><![CDATA[me]]></category>

		<guid isPermaLink="false">http://plentz.org/?p=323</guid>
		<description><![CDATA[Bom, já vi essa corrente em alguns blogs porai, mas agora que a Luiza indicou, resolvi gastar um tempo e publicar algo. Enfim, ai vai: eu tenho &#8220;alergia ao sol&#8221;. na verdade, não é alergia, mas espirro sempre que estou em um lugar escuro e vou para outro com uma claridade relativamente maior. o nome [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.flickr.com/photos/plentz/4190698750/in/set-72157623012924994/" title="Didi"><img src="http://farm3.static.flickr.com/2701/4190698750_9921d1eb50_m.jpg" width="184" height="240" alt="Didi" border="0" style="border: 2px solid rgb(0, 0, 0); float: right; margin-left: 10px; margin-bottom: 10px;"/></a></p>
<p>Bom, já vi essa corrente em alguns blogs porai, mas agora que a <a href="http://lucytrespontinhos.blogspot.com/2010/06/pausa-no-meio-do-caos.html">Luiza</a> indicou, resolvi gastar um tempo e publicar algo. Enfim, ai vai:</p>
<ul>
<li>eu tenho &#8220;alergia ao sol&#8221;. na verdade, não é alergia, mas espirro sempre que estou em um lugar escuro e vou para outro com uma claridade relativamente maior. o nome correto disso é espirro de reflexo fótico. muita gente(dizem que chega à 1/3 da população) possui isso e não se dá conta, mas resumidamente, seria como se tivessemos &#8220;fios cruzados&#8221; no cérebro.<br />
<blockquote><p>Um espirro é geralmente desencadeado pela irritação do nariz, identificada pelo nervo trigeminal, um nervo cranial responsável pelas sensações e controle motor da face. Ele está bem próximo do nervo óptico que, por sua vez, “percebe”, por exemplo, quando um feixe repentino de luz entra na retina. De acordo com a teoria, assim que o nervo óptico dá o sinal para o cérebro constringir as pupilas, parte do sinal elétrico é identificado pelo nervo trigeminal e confundido pelo cérebro como aviso de nariz irritado. E assim acontece o espirro.</p></blockquote>
<p>Mais sobre o assunto:</p>
<ul>
<li><a href="http://www2.uol.com.br/sciam/noticias/olhar_para_o_sol_pode_fazer_espirrar_sim_imprimir.html">Olhar para o sol pode fazer espirrar, sim</a></li>
<li><a href="http://en.wikipedia.org/wiki/Photic_sneeze_reflex">Photic sneeze reflex</a></li>
</ul>
</li>
<li>minha mãe me levou ao psicólogo na 5a série. Por estudar demais. Sério. Até a <a href="http://www.flickr.com/photos/plentz/4190698750/in/set-72157623012924994/">5a série</a>, eu acordava todo dia(mesmo quando não tinha prova) por volta das 6 da manhã para estudar até umas 7, horário que tinha que começar a me arrumar pra ir pro colégio. depois de sair da 3a consulta, falei pra minha mãe(lembro como se fosse hoje&#8230;) &#8220;mãe, eu paro de estudar, mas não me tras mais nessa tia, ela é muito chata&#8221;.</li>
<li>eu comecei a estudar inglês por causa de um jogo. na 6a série, ganhei uma rifa da igreja (rá!) e ao invés de pegar o prêmio, pedi o dinheiro, fui numa dessas lojas de informática e comprei o que parecia mais legal. <a href="http://en.wikipedia.org/wiki/Diablo_(video_game)">Diablo</a> (rá!). Pra quem não conhece, é um RPG, e simplesmente não rola jogar sem saber um mínimo de inglês. Como eu não sabia absolutamente nada de inglês(não que tenha mudado muito até hoje&#8230;), comecei a traduzir palavra à palavra usando um dicionário (lá por 1996 não existia Google Translate ainda). ps: viciei tanto no jogo que zerei ele 37 vezes(incluindo o <a href="http://en.wikipedia.org/wiki/Diablo:_Hellfire">Diablo:Hellfire</a>) e a continuação, <a href="http://en.wikipedia.org/wiki/Diablo_II">Diablo II</a>, mais umas 2x.</li>
<li>quando eu era bem pequeno, sempre ganhei brinquedos dos meus pais, família, etc, nada absurdo, mas tinha alguns. Mas o que eu mais gostava de brincar era uma tampa de lata de Nescau. sim, essas de metal mesmo. o que fazia com ela? simples, sentava perto da porta onde entrava o sol, e ficava fazendo reflexo nas paredes.</li>
<li>acho que uma das coisas que mais contribuiu pra eu gostar de ler foi que meu pai nunca me negou uma única revista. até a 5a série, eu voltava de casa depois da escola com meu pai e ia ao super mercado fazer as compras, etc. hoje em dia não é mais comum, mas naquela época(to velho&#8230;) sempre tinha algumas revistas sobre videogames do lado do caixa, e sempre que eu via uma que me interessava, pedia pro meu pai. podia não ser a melhor cultura do mundo, mas acredito que contribuiu muito pra minha formação.</li>
<li>eu já roubei ferrero rocher. bom, antes eu comentei que ia ao supermercado com meu pai fazer as compras. pois em uma dessas, descobri que haviam lançado uma série que vinha em umas caixinhas de um papelãozinho bem vagabundo(até tentei achar foto, mas não achei, faz séculos já&#8230;) e que era super fácil de abrir. eu, chocólatra desde muleque, ia toda vez no setor de doces, pegava um bombom(sempre da mesma caixa, que eu deixava estrategicamente posicionada), colocava no bolso e ia no banheiro do super mercado saborear o doce. sem dúvida dei prejuízo de umas 3 caixas pro super mercado.</li>
</ul>
<p>ps: sim, sou eu na foto, mais ou menos na época das artes que contei por último. eu sei, eu sei.</p>
<div class="acc_license"><a href="http://creativecommons.org/licenses/by-nc-nd/3.0/"><img src="http://i.creativecommons.org/l/by-nc-nd/3.0/88x31.png" alt="by-nc-nd" /></a></div><!--<rdf:RDF xmlns="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"><Work rdf:about=""><license rdf:resource="http://creativecommons.org/licenses/by-nc-nd/3.0/" /></Work><License rdf:about="http://creativecommons.org/licenses/by-nc-nd/3.0/"><requires rdf:resource="http://creativecommons.org/ns#Attribution" /><permits rdf:resource="http://creativecommons.org/ns#Reproduction" /><permits rdf:resource="http://creativecommons.org/ns#Distribution" /><prohibits rdf:resource="http://creativecommons.org/ns#CommercialUse" /><requires rdf:resource="http://creativecommons.org/ns#Notice" /></License></rdf:RDF>--><img src="http://plentz.org/wordpress/?ak_action=api_record_view&id=323&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://plentz.org/2010/07/03/6-coisas-que-voces-nao-sabem/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>jQuery maskMoney plugin</title>
		<link>http://plentz.org/2009/10/29/jquery-maskmoney-plugin/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=jquery-maskmoney-plugin</link>
		<comments>http://plentz.org/2009/10/29/jquery-maskmoney-plugin/#comments</comments>
		<pubDate>Fri, 30 Oct 2009 02:02:41 +0000</pubDate>
		<dc:creator>Diego Plentz</dc:creator>
				<category><![CDATA[coding]]></category>
		<category><![CDATA[clientside]]></category>
		<category><![CDATA[currency]]></category>
		<category><![CDATA[form]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[mask]]></category>
		<category><![CDATA[money]]></category>
		<category><![CDATA[plugin]]></category>

		<guid isPermaLink="false">http://plentz.org/?p=313</guid>
		<description><![CDATA[Hey pessoal, quick post: acabei de jogar no github mais um projeto que uso a tempo e contribui com algum código: o jquery-maskMoney plugin. É basicamente um plugin pra fazer o trabalho chato de ficar controlando formatação de campos numéricos(com ou sem precisão decimal). Pra usar ele é mega simples, mas mostrar é mais fácil [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://flickr.com/photos/dborman2/3258378233/" title="Money, Money, Money by borman818"><img src="http://farm4.static.flickr.com/3439/3258378233_46ac9b316d_m.jpg" width="193" height="240" alt="Money, Money, Money by borman818"  class="pc_img" border="0" style="border: 2px solid rgb(0, 0, 0); float: right; margin-left: 10px; margin-bottom: 10px;"/></a></p>
<p>Hey pessoal, quick post: acabei de jogar no <a href="http://github.com/">github</a> mais um projeto que uso a tempo e contribui com algum código: o <a href="http://github.com/plentz/jquery-maskmoney">jquery-maskMoney plugin</a>. É basicamente um plugin pra fazer o trabalho chato de ficar controlando formatação de campos numéricos(com ou sem precisão decimal). </p>
<p>Pra usar ele é mega simples, mas mostrar é mais fácil que falar, então dê uma <a href="http://plentz.org/maskmoney/">espiada na página de exemplos</a>. Dúvidas, sugestões, críticas, etc, basta entrar em contato, abrir uma issue no projeto ou deixar um comentário!</p>
<div class="acc_license"><a href="http://creativecommons.org/licenses/by-nc-nd/3.0/"><img src="http://i.creativecommons.org/l/by-nc-nd/3.0/88x31.png" alt="by-nc-nd" /></a></div><!--<rdf:RDF xmlns="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"><Work rdf:about=""><license rdf:resource="http://creativecommons.org/licenses/by-nc-nd/3.0/" /></Work><License rdf:about="http://creativecommons.org/licenses/by-nc-nd/3.0/"><requires rdf:resource="http://creativecommons.org/ns#Attribution" /><permits rdf:resource="http://creativecommons.org/ns#Reproduction" /><permits rdf:resource="http://creativecommons.org/ns#Distribution" /><prohibits rdf:resource="http://creativecommons.org/ns#CommercialUse" /><requires rdf:resource="http://creativecommons.org/ns#Notice" /></License></rdf:RDF>--><img src="http://plentz.org/wordpress/?ak_action=api_record_view&id=313&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://plentz.org/2009/10/29/jquery-maskmoney-plugin/feed/</wfw:commentRss>
		<slash:comments>22</slash:comments>
		</item>
		<item>
		<title>Update Cadabra!</title>
		<link>http://plentz.org/2009/07/19/update-cadabra/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=update-cadabra</link>
		<comments>http://plentz.org/2009/07/19/update-cadabra/#comments</comments>
		<pubDate>Mon, 20 Jul 2009 01:57:32 +0000</pubDate>
		<dc:creator>Diego Plentz</dc:creator>
				<category><![CDATA[coding]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[util]]></category>
		<category><![CDATA[automation]]></category>
		<category><![CDATA[macosx]]></category>
		<category><![CDATA[macports]]></category>
		<category><![CDATA[rubygems]]></category>
		<category><![CDATA[update]]></category>

		<guid isPermaLink="false">http://plentz.org/?p=291</guid>
		<description><![CDATA[Faz um bom tempo que tenho uma mania chata: gosto de ter tudo sempre atualizado. Confesso que é quase uma frescura (nada de piadinhas sobre gaúchos, ok?), mas automatizando um pouco, é um vício que da pra conviver. Para as apps do Mac OS X eu uso o AppFresh, que funciona muito bem e tem [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://flickr.com/photos/kt/120468504/" title="Caution: Magician Ahead! by The Rocketeer"><img src="http://farm1.static.flickr.com/43/120468504_c68075f6d7_m.jpg" width="240" height="201" alt="Caution: Magician Ahead! by The Rocketeer" style="border: 2px solid rgb(0, 0, 0); float: right; margin-left: 10px; margin-bottom: 10px;"/></a></p>
<p>Faz um bom tempo que tenho uma mania chata: gosto de ter <strong>tudo</strong> sempre atualizado. Confesso que é quase uma frescura (nada de piadinhas sobre gaúchos, ok?), mas <a href="http://gc.blog.br/2009/04/15/louco-por-automatizacao/">automatizando um pouco</a>, é um vício que da pra conviver. Para as apps do Mac OS X eu uso o <a href="http://metaquark.de/appfresh/">AppFresh</a>, que funciona muito bem e tem integração com o <a href="http://osx.iusethis.com/iconbonanza/plentz">iUseThis</a>. Mas ainda tinham algumas coisas que eu ainda fazia manualmente: MacPorts e RubyGems eram duas delas.</p>
<p>Depois do post que fiz sobre o <a href="http://plentz.org/2008/10/19/rmagick-cadabra/">rmagick-osx-installer</a> tive a idéia de fazer um script que fizesse o trabalho sujo por mim também. E depois de muita procastinação: <a href="http://github.com/plentz/update_cadabra/">update_cadabra</a>!</p>
<p>É basicamente, um script bash que roda os comandos pra atualização do <a href="http://rubygems.org/">Ruby Gems</a>+gems+<a href="http://www.macports.org/">MacPorts</a>+ports &#8211; e de quebra, ainda faz uma faxina no que está sobrando. Espero que usem, sugiram coisas novas e poupem ainda mais nosso tempo.</p>
<p>Pra usar, é só baixar o script, dar permissão de execução pro script e executá-lo:</p>
<p><code>chmod u+x update_cadabra.sh<br />
sudo update_cadabra.sh</code></p>
<p>ps: se você por algum motivo não pode atualizar suas gems, ou ainda tem algumas gems antigas instaladas para algum sistema legado, não recomendo usar o script<br />
ps2: use por sua conta e risco <img src='http://plentz.org/wordpress/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<div class="acc_license"><a href="http://creativecommons.org/licenses/by-nc-nd/3.0/"><img src="http://i.creativecommons.org/l/by-nc-nd/3.0/88x31.png" alt="by-nc-nd" /></a></div><!--<rdf:RDF xmlns="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"><Work rdf:about=""><license rdf:resource="http://creativecommons.org/licenses/by-nc-nd/3.0/" /></Work><License rdf:about="http://creativecommons.org/licenses/by-nc-nd/3.0/"><requires rdf:resource="http://creativecommons.org/ns#Attribution" /><permits rdf:resource="http://creativecommons.org/ns#Reproduction" /><permits rdf:resource="http://creativecommons.org/ns#Distribution" /><prohibits rdf:resource="http://creativecommons.org/ns#CommercialUse" /><requires rdf:resource="http://creativecommons.org/ns#Notice" /></License></rdf:RDF>--><img src="http://plentz.org/wordpress/?ak_action=api_record_view&id=291&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://plentz.org/2009/07/19/update-cadabra/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A dieta do programador</title>
		<link>http://plentz.org/2009/05/10/a-dieta-do-programador/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=a-dieta-do-programador</link>
		<comments>http://plentz.org/2009/05/10/a-dieta-do-programador/#comments</comments>
		<pubDate>Mon, 11 May 2009 01:50:41 +0000</pubDate>
		<dc:creator>Diego Plentz</dc:creator>
				<category><![CDATA[coding]]></category>
		<category><![CDATA[practices]]></category>
		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://plentz.org/?p=277</guid>
		<description><![CDATA[Todo dia, milhares de programadores (desenvolvedores, arquitetos, engenheiros de software, nerds, rock stars, dê o nome que achar melhor) se alimentam porai de forma errada. Tenho percebido isso a cada projeto que entro. Meu objetivo aqui não é colocar ninguém em uma dieta spartana, somente apontar algumas formas de deixar sua alimentação diária mais saudável [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://plentz.org/photos/dubby/2422215232/" title="Petrus: Mutton by dubbie"><img src="http://farm4.static.flickr.com/3270/2422215232_1d8dfdd8be_m.jpg" alt="Petrus: Mutton by dubbie" class="pc_img" height="240" width="160" style="border: 2px solid rgb(0, 0, 0); float: right; margin-left: 10px; margin-bottom: 10px;"/></a>Todo dia, milhares de programadores (desenvolvedores, arquitetos, engenheiros de software, nerds, rock stars, dê o nome que achar melhor) se alimentam porai de forma errada. Tenho percebido isso a cada projeto que entro. Meu objetivo aqui não é colocar ninguém em uma <a href="http://www.google.com.br/search?q=spartan+diet">dieta spartana</a>, somente apontar algumas formas de deixar sua alimentação diária mais saudável e nutritiva.</p>
<ul>
<li>Cuidado com os getters e setters: tentadores, eles tem preparo extremamente simples (ainda mais com ferramentas como o <a href="http://plentz.org/2005/02/27/eclipsed/">Eclipse</a> e o <a href="www.jetbrains.com/idea/">IntelliJ</a>), porém, assim como a gordura, se consumidas em excesso são prejudiciais a saúde, então, moderação!</li>
<li>As saborosas interfaces: são deliciosas e extremamente nutritivas. Porém, cuidado: elas não são adequadas pra todas as ocasiões. Porque iriamos colocar interfaces onde vamos ter <a href="http://stackoverflow.com/questions/90851/is-it-just-me-or-are-interfaces-overused">apenas uma implementação</a>?</li>
<li>Não coma somente pra agradar os outros: quem nunca teve uma tia que ofereceu uma porção de um prato que você não suporta e acaba comendo só pra agradar? Se você se flagra frequentemente alterando xmls, pare um pouco e pense se aquilo é realmente necessário ou se você não está fazendo só pra agradar o framework.</li>
<li>Evite repetir: a feijoada da vovó é <strong>bem</strong> tentadora einh? Mas repetir pode resultar em uma indigestão enorme. Código repetido também <a href="http://c2.com/cgi/wiki?DontRepeatYourself">não desce bem.</a></li>
<li>Experimente antes de servir: essa é uma dica que serve mais quando você está cozinhando. Mesmo os mais experientes cozinheiros, experimentam sua comida <strong>durante</strong> o preparo. Você <a href="http://c2.com/cgi/wiki?TestDrivenDevelopment">deveria fazer o mesmo</a>.</li>
<li>Menos é mais: a cozinha francesa tem a fama de ser a mais saborosa do mundo &#8211; e também por servir pratos com quantidades bem reduzidas. Guarde bem: mais essência, menos quantidade.<br />
<blockquote>Success only grows when work(pain, strain, effort) decreases and non-work (fun, love, effort-lessness) increases. &#8211; Fred Gratzon, The lazy way to success</p></blockquote>
</li>
<li>Prefira um bom restaurante à um posto de conveniências: prefira comer um bom prato em um restaurante do que um hamburguer em um posto de conveniências. Usar herança pode parecer mais prático que usar interfaces, mas seu estômago <a href="http://blog.caelum.com.br/2006/10/14/como-nao-aprender-orientacao-a-objetos-heranca/">prefere as interfaces</a>.</li>
</ul>
<p>Com o tempo (e com os comentários relevantes), vou adicionando novas dicas para que todos (inclusive eu), tenhamos uma vida mais saudável.</p>
<div class="acc_license"><a href="http://creativecommons.org/licenses/by-nc-nd/3.0/"><img src="http://i.creativecommons.org/l/by-nc-nd/3.0/88x31.png" alt="by-nc-nd" /></a></div><!--<rdf:RDF xmlns="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"><Work rdf:about=""><license rdf:resource="http://creativecommons.org/licenses/by-nc-nd/3.0/" /></Work><License rdf:about="http://creativecommons.org/licenses/by-nc-nd/3.0/"><requires rdf:resource="http://creativecommons.org/ns#Attribution" /><permits rdf:resource="http://creativecommons.org/ns#Reproduction" /><permits rdf:resource="http://creativecommons.org/ns#Distribution" /><prohibits rdf:resource="http://creativecommons.org/ns#CommercialUse" /><requires rdf:resource="http://creativecommons.org/ns#Notice" /></License></rdf:RDF>--><img src="http://plentz.org/wordpress/?ak_action=api_record_view&id=277&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://plentz.org/2009/05/10/a-dieta-do-programador/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Great design decisions</title>
		<link>http://plentz.org/2009/04/01/great-design-decisions/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=great-design-decisions</link>
		<comments>http://plentz.org/2009/04/01/great-design-decisions/#comments</comments>
		<pubDate>Wed, 01 Apr 2009 11:29:45 +0000</pubDate>
		<dc:creator>Diego Plentz</dc:creator>
				<category><![CDATA[geek]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[microsoft]]></category>
		<category><![CDATA[youtube]]></category>

		<guid isPermaLink="false">http://plentz.org/?p=271</guid>
		<description><![CDATA[A alguns dias, Doug Bowman, visual design lead no Google, anúnciou de que estaria saindo da empresa para se juntar ao time do twitter. Ele foi um dos primeiros a trabalhar nessa área no Google, e com certeza grandes idéias vieram de sua mente &#8211; inclusive participando do redesign completo do Blogger, alguns anos atrás. [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://flickr.com/photos/webessentials/48809831/" title="IMG_3623 by Web Essentials"><img src="http://farm1.static.flickr.com/31/48809831_e439cde589_m.jpg" alt="IMG_3623 by Web Essentials" class="pc_img" height="160" width="240" style="border: 2px solid rgb(0, 0, 0); float: right; margin-left: 10px; margin-bottom: 10px;"/></a></p>
<p>A alguns dias, <a href="http://stopdesign.com/">Doug Bowman</a>, visual design lead no Google, <a href="http://stopdesign.com/archive/2009/03/20/goodbye-google.html">anúnciou</a> de que  estaria saindo da empresa para <a href="http://blog.twitter.com/2009/03/welcome-doug-bowman.html#links">se juntar ao time do twitter</a>. Ele foi <a href="http://stopdesign.com/archive/2006/05/27/going-to-google.html">um dos primeiros</a> a trabalhar nessa área no Google, e com certeza grandes idéias vieram de sua mente &#8211; inclusive participando do redesign completo do Blogger, <a href="http://stopdesign.com/archive/2004/05/09/blogger.html">alguns anos atrás</a>.</p>
<p>Porém, novas pessoas trazem novas idéias e com a entrada de <a href="http://www.microsoft.com/design/People/Detail.aspx?key=august">August de los Reyes</a> (ex creative director for the Windows Platform Core Innovation team) no seu lugar, as coisas tendem a melhorar. Ele já estava trabalhando em conjunto com o Google à um certo tempo, mas como parte de um acordo com o Google &#8211; e o próprio Bowman &#8211; decidiram manter tudo em segredo, até para evitar boatos sobre quais os rumos que a empresa iria tomar. </p>
<p>Porém, com o anúncio oficial, isso deixa de ser um segredo e as idéias do novo membro começam a aparecer, sendo uma delas sendo uma melhoria significativa na interface do Youtube, projeto esse que vem sendo desenvolvido a alguns meses e tem como objetivomelhorar a usabilidade do sistema como um todo e também incentivar ainda mais o aprendizado &#8211; uma iniciativa que foi concebida juntamente com o <a href="http://www.youtube.com/edu">Youtube EDU</a>. Espero sinceramente que o substituto consiga manter o nível das inovações, que sempre foram característica do Google.</p>
<p><a href="http://www.youtube.com/watch?v=oHg5SJYRHA0&#038;flip=1">Confira o novo design</a>.</p>
<div class="acc_license"><a href="http://creativecommons.org/licenses/by-nc-nd/3.0/"><img src="http://i.creativecommons.org/l/by-nc-nd/3.0/88x31.png" alt="by-nc-nd" /></a></div><!--<rdf:RDF xmlns="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"><Work rdf:about=""><license rdf:resource="http://creativecommons.org/licenses/by-nc-nd/3.0/" /></Work><License rdf:about="http://creativecommons.org/licenses/by-nc-nd/3.0/"><requires rdf:resource="http://creativecommons.org/ns#Attribution" /><permits rdf:resource="http://creativecommons.org/ns#Reproduction" /><permits rdf:resource="http://creativecommons.org/ns#Distribution" /><prohibits rdf:resource="http://creativecommons.org/ns#CommercialUse" /><requires rdf:resource="http://creativecommons.org/ns#Notice" /></License></rdf:RDF>--><img src="http://plentz.org/wordpress/?ak_action=api_record_view&id=271&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://plentz.org/2009/04/01/great-design-decisions/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Como cancelar Claro 3G</title>
		<link>http://plentz.org/2009/02/11/como-cancelar-claro-3g/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=como-cancelar-claro-3g</link>
		<comments>http://plentz.org/2009/02/11/como-cancelar-claro-3g/#comments</comments>
		<pubDate>Thu, 12 Feb 2009 03:31:04 +0000</pubDate>
		<dc:creator>Diego Plentz</dc:creator>
				<category><![CDATA[geek]]></category>
		<category><![CDATA[3g]]></category>
		<category><![CDATA[adsl]]></category>
		<category><![CDATA[anatel]]></category>
		<category><![CDATA[banda larga]]></category>
		<category><![CDATA[claro]]></category>
		<category><![CDATA[telefonia]]></category>
		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://plentz.org/?p=258</guid>
		<description><![CDATA[Faz um tempo já desde o post que fiz relatando os problemas apresentados no serviço 3G da Claro. Depois de um tempo tentando dar uma chance pra Claro (infinitas ligações reclamando, etc), resolvi que realmente a única solução era cancelar. Liguei pra lá e (depois de 1 hora e meia no telefone) solicitei o cancelamento. [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://plentz.org/photos/chrismaverick/370432462/" title="1-26-07 by chrismaverick"><img src="http://farm1.static.flickr.com/180/370432462_5361a63e1f_m.jpg" alt="1-26-07 by chrismaverick" class="pc_img" height="180" width="240" style="border: 2px solid rgb(0, 0, 0);float: right; margin-left: 10px; margin-bottom: 10px;"/></a><br />
Faz um tempo já desde o post que fiz relatando os <a href="http://plentz.org/2008/03/15/internet-banda-lerda-3g-da-claro/">problemas apresentados no serviço 3G da Claro</a>. Depois de um tempo tentando dar uma chance pra <a href="http://www.claro.com.br/">Claro</a> (infinitas ligações reclamando, etc), resolvi que realmente a única solução era cancelar. Liguei pra lá e (depois de 1 hora e meia no telefone) solicitei o cancelamento. A moça me informou que como ainda não havia passado o período contratual, eu teria que pagar uma multa(!!!) por quebra de contrato. Desisti do cancelamento e resolvi então apelar.</p>
<p>Abri um chamado no site da <a href="http://www.anatel.gov.br/">Anatel</a> solicitando o cancelamento do serviço <a href="http://plentz.org/2007/12/26/internet-banda-larga-3g-da-claro/">Claro 3G</a> sem o pagamento da multa, uma vez que eu não estava recebendo o contratado. Após 5 dias a própria Claro me ligou (nada de ligações intermináveis) oferecendo 4 meses gratuitos caso eu desejasse ficar com o plano. Informei que queria realmente cancelar o plano pois não estava atendendo as minhas necessidades. Na hora o rapaz cancelou o plano. O texto que usei para cancelar foi o seguinte (caso alguém queira copiar&#8230;):</p>
<blockquote><p>Após meses de reclamações, stress, promessas não cumpridas, desisto de dar chances para a Claro 3G. O serviço que estou recebendo não é o que foi contratado. Seguem alguns dos N protocolos que abri reclamando dos serviços (alguns com registros de indisponibilidade do serviço e outros com velocidade abaixo da mínima estipulada em contrato, 10% de 1mb): 2008170992395, 2008163867876, 2008172621416. Se for verificado no banco de dados da Claro, verão que existem outros chamado meus relatando problemas. Quero que o serviço seja cancelado sem o pagamento da taxa de rompimento de contrato e, se possível, reembolso dos meses pagos.</p></blockquote>
<p>Então já sabe, se quizer cancelar seu <a href="http://www.tresg.com.br/">3G</a> sem se estressar e perder muito tempo no telefone, vá direto ao site da <a href="http://sistemas.anatel.gov.br/focus/FaleConosco/validarUsuario.asp">Anatel</a> &#8211; ou pelo telefone 0800 33 2001, nos dias úteis, das 8h às 20h &#8211; e solicite diretamente o cancelamento, nem perca tempo ligando para a Claro.</p>
<p>Para abrir o chamado pela internet eu usei as seguintes opções:</p>
<ol>
<li>Cadastrar Solicitação</li>
<li>Tipo de Atendimento: Reclamação</li>
<li>Serviço: Telefonia Móvel</li>
<li>Modalidade de Serviço: Pós-Pago</li>
<li>Motivo: Cancelamento, preencha o número do Claro 3G no campo que diz número (vem sempre na conta) e dê &#8220;Avançar&#8221;</li>
<li>Na última tela, selecione &#8220;Claro&#8221; no campo &#8220;Reclamado&#8221;, coloque uma descrição (pode usar o que eu coloquei como exemplo) e clique em &#8220;Confirmar&#8221;</li>
</ol>
<p>Fácil, indolor e sem multa.</p>
<div class="acc_license"><a href="http://creativecommons.org/licenses/by-nc-nd/3.0/"><img src="http://i.creativecommons.org/l/by-nc-nd/3.0/88x31.png" alt="by-nc-nd" /></a></div><!--<rdf:RDF xmlns="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"><Work rdf:about=""><license rdf:resource="http://creativecommons.org/licenses/by-nc-nd/3.0/" /></Work><License rdf:about="http://creativecommons.org/licenses/by-nc-nd/3.0/"><requires rdf:resource="http://creativecommons.org/ns#Attribution" /><permits rdf:resource="http://creativecommons.org/ns#Reproduction" /><permits rdf:resource="http://creativecommons.org/ns#Distribution" /><prohibits rdf:resource="http://creativecommons.org/ns#CommercialUse" /><requires rdf:resource="http://creativecommons.org/ns#Notice" /></License></rdf:RDF>--><img src="http://plentz.org/wordpress/?ak_action=api_record_view&id=258&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://plentz.org/2009/02/11/como-cancelar-claro-3g/feed/</wfw:commentRss>
		<slash:comments>353</slash:comments>
		</item>
		<item>
		<title>Bad, bad class. No donut for you</title>
		<link>http://plentz.org/2008/12/30/bad-bad-class-no-donut-for-you/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=bad-bad-class-no-donut-for-you</link>
		<comments>http://plentz.org/2008/12/30/bad-bad-class-no-donut-for-you/#comments</comments>
		<pubDate>Tue, 30 Dec 2008 13:44:32 +0000</pubDate>
		<dc:creator>Diego Plentz</dc:creator>
				<category><![CDATA[eclipse]]></category>
		<category><![CDATA[compiler]]></category>
		<category><![CDATA[java]]></category>

		<guid isPermaLink="false">http://plentz.org/?p=238</guid>
		<description><![CDATA[Provavelmente quem já desenvolve em java à algum tempo, já passou por esse problema: UnsupportedClassVersionError. Ele acontece basicamente quando tentamos executar um .class compilado com uma versão superior à da JVM que estamos tentando executar (exemplo: rodar um .class compilado com java 1.6 em uma jvm 1.5). Hoje pela manhã estava enfrentando esse problema e [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://flickr.com/photos/keesssss/2717166295/" title="BAD by !.keesssss.!"><img src="http://farm4.static.flickr.com/3213/2717166295_170710fee9_m.jpg" alt="BAD by !.keesssss.!" class="pc_img" height="150" width="240" style="border: 2px solid rgb(0, 0, 0);float: right; margin-left: 10px; margin-bottom: 10px;"/></a><br />
Provavelmente quem já desenvolve em java à algum tempo, já passou por esse problema: <a href="http://java.sun.com/javase/6/docs/api/java/lang/UnsupportedClassVersionError.html">UnsupportedClassVersionError</a>. Ele acontece basicamente quando tentamos executar um .class compilado com uma versão superior à da JVM que estamos tentando executar (exemplo: rodar um .class compilado com java 1.6 em uma jvm 1.5). Hoje pela manhã estava enfrentando esse problema e não conseguia de jeito nenhum entender o porque.</p>
<p><code>java.lang.UnsupportedClassVersionError: Bad version number in .class file</code></p>
<p>Após decompilar uma classe (aproveitando, usei o <a href="http://java.decompiler.free.fr/">JD-GUI</a> que funcionou bem no MacOS) que estava rodando no servidor (e *MEH* eu não tinha o fonte), alterar, recompilar na minha máquina e jogar de volta pro servidor, comecei a receber a mensagem de erro. Após revisar todas as configurações do Eclipse (Java Compiler específico no projeto, JRE System Library correto) continuei recebendo o mesmo erro.</p>
<p>Depois de procurar muito, descobri que mesmo alterando todas as configurações no Eclipse, na pasta do projeto ainda ficou um arquivo configurado pra java 6.0. Então se enfrentar o mesmo problema, procure pelo arquivo:</p>
<p><code>$PROJECT_ROOT/.settings/org.eclipse.jst.common.project.facet.core.prefs</code></p>
<p>E edite alterando a JRE para a correta para o seu projeto.</p>
<div class="acc_license"><a href="http://creativecommons.org/licenses/by-nc-nd/3.0/"><img src="http://i.creativecommons.org/l/by-nc-nd/3.0/88x31.png" alt="by-nc-nd" /></a></div><!--<rdf:RDF xmlns="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"><Work rdf:about=""><license rdf:resource="http://creativecommons.org/licenses/by-nc-nd/3.0/" /></Work><License rdf:about="http://creativecommons.org/licenses/by-nc-nd/3.0/"><requires rdf:resource="http://creativecommons.org/ns#Attribution" /><permits rdf:resource="http://creativecommons.org/ns#Reproduction" /><permits rdf:resource="http://creativecommons.org/ns#Distribution" /><prohibits rdf:resource="http://creativecommons.org/ns#CommercialUse" /><requires rdf:resource="http://creativecommons.org/ns#Notice" /></License></rdf:RDF>--><img src="http://plentz.org/wordpress/?ak_action=api_record_view&id=238&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://plentz.org/2008/12/30/bad-bad-class-no-donut-for-you/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>RMagick Cadabra</title>
		<link>http://plentz.org/2008/10/19/rmagick-cadabra/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=rmagick-cadabra</link>
		<comments>http://plentz.org/2008/10/19/rmagick-cadabra/#comments</comments>
		<pubDate>Mon, 20 Oct 2008 02:35:03 +0000</pubDate>
		<dc:creator>Diego Plentz</dc:creator>
				<category><![CDATA[ruby]]></category>
		<category><![CDATA[imagescience]]></category>
		<category><![CDATA[macosx]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[rmagick]]></category>

		<guid isPermaLink="false">http://plentz.org/?p=221</guid>
		<description><![CDATA[Essa semana vi um twitt do Pellegrino comentando da dor de cabeça pra instalar o RMagick. O Kung inclusive sugeriu usar o ImageScience, que eu nunca usei, mas deve ser uma alternativa interessante. Mas sendo mais prático preguiçoso, sempre existe uma forma mais fácil e menos dolorosa de fazer as coisas. E foi então que [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://flickr.com/photos/kipourax/2167284601/" title="The Wizard by Kipourax"><img src="http://farm3.static.flickr.com/2010/2167284601_b870b8c59f_m.jpg" alt="The Wizard by Kipourax" class="pc_img" height="160" width="240" style="border: 2px solid rgb(0, 0, 0);float: right; margin-left: 10px; margin-bottom: 10px;"/></a><br />
Essa semana vi um <a href="http://twitter.com/pellegrino/statuses/965341567">twitt</a> do <a href="http://vp.blog.br/">Pellegrino</a> comentando da dor de cabeça pra instalar o <a href="http://rmagick.rubyforge.org/">RMagick</a>. O <a href="http://fabiokung.com/">Kung</a> inclusive <a href="http://twitter.com/fabiokung/statuses/965343031">sugeriu</a> usar o <a href="http://seattlerb.rubyforge.org/ImageScience.html">ImageScience</a>, que eu nunca usei, mas deve ser uma alternativa interessante.</p>
<p>Mas sendo mais prático <del datetime="2008-10-20T01:54:36+00:00">preguiçoso</del>, sempre existe uma forma mais fácil e menos dolorosa de fazer as coisas. E foi então que achei o <a href="http://rubyforge.org/frs/?group_id=12">rmagick-osx-installer</a>. Basta fazer <a href="http://rubyforge.org/frs/?group_id=12">download</a>, descompactar e executar</p>
<p><code>ruby rm_install.rb</code></p>
<p>E depois de todo processo completo (com um pouco de sorte), você verá um lindo resumo como esse:</p>
<p><code>Summary: There were 0 failures<br />
libpng 1.2.26 was already installed.<br />
libjpeg was installed successfully<br />
ghostscript was installed successfully<br />
ghostscript-fonts-std was installed successfully<br />
FreeType 9.17.3 was already installed.<br />
libwmf was installed successfully<br />
ImageMagick was installed successfully<br />
RMagick was installed successfully<br />
Removing rm_install_tmp directory...Done</code></p>
<p><strong>Update</strong>: agora também é possível instalar o ImageMagick com o bom e velho ports:</p>
<p><code>sudo port install ImageMagick</code></p>
<div class="acc_license"><a href="http://creativecommons.org/licenses/by-nc-nd/3.0/"><img src="http://i.creativecommons.org/l/by-nc-nd/3.0/88x31.png" alt="by-nc-nd" /></a></div><!--<rdf:RDF xmlns="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"><Work rdf:about=""><license rdf:resource="http://creativecommons.org/licenses/by-nc-nd/3.0/" /></Work><License rdf:about="http://creativecommons.org/licenses/by-nc-nd/3.0/"><requires rdf:resource="http://creativecommons.org/ns#Attribution" /><permits rdf:resource="http://creativecommons.org/ns#Reproduction" /><permits rdf:resource="http://creativecommons.org/ns#Distribution" /><prohibits rdf:resource="http://creativecommons.org/ns#CommercialUse" /><requires rdf:resource="http://creativecommons.org/ns#Notice" /></License></rdf:RDF>--><img src="http://plentz.org/wordpress/?ak_action=api_record_view&id=221&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://plentz.org/2008/10/19/rmagick-cadabra/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Updating Gems</title>
		<link>http://plentz.org/2008/10/16/updating-gems/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=updating-gems</link>
		<comments>http://plentz.org/2008/10/16/updating-gems/#comments</comments>
		<pubDate>Fri, 17 Oct 2008 03:47:29 +0000</pubDate>
		<dc:creator>Diego Plentz</dc:creator>
				<category><![CDATA[coding]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[gem]]></category>
		<category><![CDATA[gems]]></category>
		<category><![CDATA[macosx]]></category>

		<guid isPermaLink="false">http://plentz.org/?p=213</guid>
		<description><![CDATA[Hoje resolvi fazer uma atualização do Rails e cia aqui e dei de cara com um problema chato de resolver. Além de instalar as versões novas dos gems, queria me livrar as antigas. Mas sempre que tentava fazer o gem cleanup, recebia o seguinte erro: ~ plentz$ sudo gem cleanup Cleaning up installed gems... Attempting [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://flickr.com/photos/richlegg/84028300/" title="How many steps can I go? by LeggNet"><img src="http://farm1.static.flickr.com/38/84028300_3f2ea22ed6_m.jpg" alt="How many steps can I go? by LeggNet" class="pc_img" height="160" width="240" style="border: 2px solid rgb(0, 0, 0);float: right; margin-left: 10px; margin-bottom: 10px;"/></a></p>
<p>Hoje resolvi fazer uma atualização do <a href="http://www.rubyonrails.org/">Rails</a> e cia aqui e dei de cara com um problema chato de resolver. Além de instalar as versões novas dos <a href="http://www.rubygems.org/">gems</a>, queria me livrar as antigas. Mas sempre que tentava fazer o <em>gem cleanup</em>, recebia o seguinte erro:<br />
<code><br />
~ plentz$ sudo gem cleanup<br />
Cleaning up installed gems...<br />
Attempting to uninstall mongrel-1.0.1<br />
ERROR:  While executing gem ... (Gem::InstallError)<br />
    Unknown gem mongrel = 1.0.1<br />
</code><br />
Depois de fazer um <em>find</em> (<em>find . -iname mongrel*</em> mesmo) no / inteiro, descobri um diretório com vários gems antigos. Ele fica em:</p>
<p><code>/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8</code></p>
<p>Entrei nele e fiz literalmente um limpa. Apaguei todos arquivos dentro das pastas specifications, doc, cache e gems. Então se quizer deixar sua instalação 100% fresh, rode os comandos abaixo, e caso encontre algum problema, siga a dica acima:<br />
<code><br />
sudo gem update --system<br />
sudo gem update<br />
sudo gem cleanup<br />
</code><br />
Depois confira que você ficou só com as últimas versões rodando: <em>gem list</em>.</p>
<div class="acc_license"><a href="http://creativecommons.org/licenses/by-nc-nd/3.0/"><img src="http://i.creativecommons.org/l/by-nc-nd/3.0/88x31.png" alt="by-nc-nd" /></a></div><!--<rdf:RDF xmlns="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"><Work rdf:about=""><license rdf:resource="http://creativecommons.org/licenses/by-nc-nd/3.0/" /></Work><License rdf:about="http://creativecommons.org/licenses/by-nc-nd/3.0/"><requires rdf:resource="http://creativecommons.org/ns#Attribution" /><permits rdf:resource="http://creativecommons.org/ns#Reproduction" /><permits rdf:resource="http://creativecommons.org/ns#Distribution" /><prohibits rdf:resource="http://creativecommons.org/ns#CommercialUse" /><requires rdf:resource="http://creativecommons.org/ns#Notice" /></License></rdf:RDF>--><img src="http://plentz.org/wordpress/?ak_action=api_record_view&id=213&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://plentz.org/2008/10/16/updating-gems/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Tomcat is deprecated</title>
		<link>http://plentz.org/2008/10/03/tomcat-is-deprecated/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=tomcat-is-deprecated</link>
		<comments>http://plentz.org/2008/10/03/tomcat-is-deprecated/#comments</comments>
		<pubDate>Fri, 03 Oct 2008 17:29:38 +0000</pubDate>
		<dc:creator>Diego Plentz</dc:creator>
				<category><![CDATA[java]]></category>
		<category><![CDATA[jetty]]></category>
		<category><![CDATA[outofmemory]]></category>
		<category><![CDATA[tomcat]]></category>
		<category><![CDATA[webserver]]></category>

		<guid isPermaLink="false">http://plentz.org/?p=204</guid>
		<description><![CDATA[Tomcat is deprecated. Use Jetty instead. É exatamente esse a impressão que eu tenho depois de migrar os nossos servidores para o Jetty. Depois de ver muita gente reclamando de OutOfMemory no Tomcat, inclusive aqui da empresa, resolvemos tentar o Jetty. A tempo que escutava o pessoal da Caelum (e principalmente o Kung) falando bem [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://flickr.com/photos/hockeylover/2870581459/" title="Marky is frustrated by Hockey.Lover"><img src="http://farm4.static.flickr.com/3185/2870581459_59a7e18b58_m.jpg" alt="Marky is frustrated by Hockey.Lover" class="pc_img" height="160" width="240" style="border: 2px solid rgb(0, 0, 0);float: right; margin-left: 10px; margin-bottom: 10px;"/></a><br />
<a href="http://tomcat.apache.org/">Tomcat</a> is deprecated. Use <a href="http://www.mortbay.org/jetty/">Jetty</a> instead.</p>
<p>É exatamente esse a impressão que eu tenho depois de migrar os <a href="http://www.criterium.com.br">nossos servidores</a> para o Jetty. Depois de ver <strong>muita</strong> gente reclamando de <a href="http://wiki.apache.org/tomcat/OutOfMemory">OutOfMemory</a> no Tomcat, inclusive <a href="http://www.criterium.com.br">aqui da empresa</a>, resolvemos tentar o Jetty.</p>
<p>A tempo que escutava o pessoal da <a href="http://blog.caelum.com.br/2008/06/27/melhorando-o-guj-jetty-nio-e-load-balancing/">Caelum</a> (e principalmente o <a href="http://fabiokung.com/">Kung</a>) falando bem do Jetty, mas só quando se começa a usar que se percebe as vantagens. Como temos várias aplicações rodando (diferente do <a href="http://guj.com.br">GUJ</a>, que era só o <a href="http://www.jforum.net/">JForum</a>, acredito), imaginei que a troca não seria tão smooth <a href="http://blog.caelum.com.br/2008/06/27/melhorando-o-guj-jetty-nio-e-load-balancing/">assim</a>.</p>
<p>Claro que antes de sair trocando tudo, fizemos alguns testes pra ter certeza que tudo ia ocorrer bem. Por sinal, a troca foi <strong>bem</strong> tranquila do ponto de vista da aplicação, só tivemos que fazer alguns ajustes:</p>
<ul>
<li>o Jetty lança <a href="http://java.sun.com/j2se/1.4.2/docs/api/java/util/Collections.html#unmodifiableMap(java.util.Map)">java.util.Collections$UnmodifiableMap</a> ao tentar modificar diretamente o (Hash)Map devolvido com <a href="http://java.sun.com/javaee/5/docs/api/javax/servlet/ServletRequest.html#getParameterMap()">request.getParameterMap()</a> ao invés de usar o método setAttribute() do request &#8211; coisa que o Tomcat deixa;</li>
<li>Diferenças ao tentar recuperar um resource do sistema utilizando como pasta base &#8220;.&#8221;, ou usar &#8220;..&#8221; pra navegar na estrutura de pastas. Para resolver, basta usar como pasta base &#8220;/&#8221; (ex: &#8220;/com/foo/resources/xpto.xml&#8221;) e colocar dentro do WEB-INF/classes;</li>
<li>E a última, mas simples de resolver, é que o Jetty deixa habilitado listagem de diretórios. Você pode alterar isso no etc/webdefault.xml, trocando o atributo dirAllowed para false;</li>
</ul>
<p>Feitos esses ajustes, chegou a vez de configurar o Jetty para atender aos diferentes domínios. E é aqui que vi uma das grandes vantagens do Jetty. A parte de configuração dele fica <strong>muito</strong> organizada. Fizemos da seguinte forma:</p>
<ul>
<li>Para cada aplicação (pra cada .war na pasta /webapps do Jetty), criamos um arquivo de contexto no /contexts (não é necessário, mas como temos urls diferentes e contextos diferentes, tivemos que customizar &#8211; e acabamos ganhando um brinde que conto depois)</li>
<li>Cada arquivo de context tem uma estrutura estupidamente simples:
<p><code><br />
&lt;?xml version="1.0"  encoding="ISO-8859-1"?&gt;<br />
&lt;!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN" "http://jetty.mortbay.org/configure.dtd"&gt;<br />
&lt;Configure class="org.mortbay.jetty.webapp.WebAppContext"&gt;<br />
&nbsp;&nbsp;&lt;Set name="contextPath"&gt;/&lt;/Set&gt;<br />
&nbsp;&nbsp;&lt;Set name="war"&gt;&lt;SystemProperty name="jetty.home" default="."/&gt;/webapps/demo_foo.war&lt;/Set&gt;<br />
&nbsp;&nbsp;&lt;Set name="defaultsDescriptor"&gt;&lt;SystemProperty name="jetty.home" default="."/&gt;/etc/webdefault.xml&lt;/Set&gt;<br />
<br />
&nbsp;&nbsp;&lt;Set name="virtualHosts"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;Array type="String"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;Item&gt;demo.foo.com&lt;/Item&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;/Array&gt;<br />
&nbsp;&nbsp;&lt;/Set&gt;<br />
<br />
&lt;/Configure&gt;<br />
</code>
</li>
</ul>
<p>Explicando por partes:</p>
<ul>
<li><a href="http://docs.codehaus.org/display/JETTY/ContextDeployer">WebAppContext</a> é o tipo de contexto que você vai usar, estamos usando esse pois permite o hotdeploy</li>
<li>contextPath serve para dizer (óbvio) o contexto que quer que a aplicação fique disponível. Aqui prefirimos colocar todas no contexto / e configurar diferentes <a href="http://docs.codehaus.org/display/JETTY/Virtual+hosts">Virtual Hosts</a> pra cada aplicação.</li>
<li>a propriedade war só diz qual .war (que pode ser um exploded war também) que vai ser <em>deployado</em> naquele contexto</li>
<li>na seção que diz <a href="http://docs.codehaus.org/display/JETTY/Virtual+hosts">virtualHosts</a>, você pode configurar todos os endereços que quer que sua aplicacão responda. Para ela aceitar mais de um endereço, basta ir adicionando Item&#8217;s com as outras URLs. Aproveitando, no Jetty 7 será possível <a href="http://jira.codehaus.org/browse/JETTY-721">usar wildcards</a>!</li>
</ul>
<p>Com isso feito, ficou <strong>muito</strong> fácil configurar o deploy automático de todas nossas aplicações, pois basta substituir o arquivo .war e dar um <a href="http://en.wikipedia.org/wiki/Touch_(Unix)">touch</a> no arquivo de contexts que o Jetty faz reload do contexto (e esse é o brinde! )! Agora, com o Jetty combinado ao <a href="https://hudson.dev.java.net/">Hudson</a>, com um clique podemos fazer deploy de qualquer uma das nossas aplicações em um ambiente específico ou mesmo em todos, <strong>automaticamente</strong>. Mas <a href="https://hudson.dev.java.net/">isso</a> já é assunto para um outro post.</p>
<p></p>
<h3>Links Relacionados</h3>
<ul>
<li><a href="http://blog.caelum.com.br/2008/06/27/melhorando-o-guj-jetty-nio-e-load-balancing/">Melhorando o GUJ: Jetty, NIO e load balancing</a></li>
<li><a href="http://docs.codehaus.org/display/JETTY/Jetty+Documentation">Jetty Documentation</a></li>
<li></li>
</ul>
<div class="acc_license"><a href="http://creativecommons.org/licenses/by-nc-nd/3.0/"><img src="http://i.creativecommons.org/l/by-nc-nd/3.0/88x31.png" alt="by-nc-nd" /></a></div><!--<rdf:RDF xmlns="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"><Work rdf:about=""><license rdf:resource="http://creativecommons.org/licenses/by-nc-nd/3.0/" /></Work><License rdf:about="http://creativecommons.org/licenses/by-nc-nd/3.0/"><requires rdf:resource="http://creativecommons.org/ns#Attribution" /><permits rdf:resource="http://creativecommons.org/ns#Reproduction" /><permits rdf:resource="http://creativecommons.org/ns#Distribution" /><prohibits rdf:resource="http://creativecommons.org/ns#CommercialUse" /><requires rdf:resource="http://creativecommons.org/ns#Notice" /></License></rdf:RDF>--><img src="http://plentz.org/wordpress/?ak_action=api_record_view&id=204&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://plentz.org/2008/10/03/tomcat-is-deprecated/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>E a privacidade, Anatel?</title>
		<link>http://plentz.org/2008/08/21/e-a-privacidade-anatel/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=e-a-privacidade-anatel</link>
		<comments>http://plentz.org/2008/08/21/e-a-privacidade-anatel/#comments</comments>
		<pubDate>Thu, 21 Aug 2008 14:43:53 +0000</pubDate>
		<dc:creator>Diego Plentz</dc:creator>
				<category><![CDATA[news]]></category>
		<category><![CDATA[adsl]]></category>
		<category><![CDATA[anatel]]></category>
		<category><![CDATA[brturbo]]></category>
		<category><![CDATA[segurança]]></category>
		<category><![CDATA[telefonia]]></category>

		<guid isPermaLink="false">http://plentz.org/?p=175</guid>
		<description><![CDATA[Faz dois meses que tento cancelar o BrTurbo. Após me dar conta que eu estava pagando 25 reais por mês para ter um login e poder logar na internet. Procurando um pouco, acabei achando 2 alternativas. O PS5 e o ADSLResidencial. Como o ADSLResidencial era mais barato, optei por ele. Dois minutos para criar um [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://flickr.com/photos/darwinbell/544550430/" title="messed up"><img src="http://farm2.static.flickr.com/1185/544550430_bd16551e67_m.jpg" alt="messed up" class="pc_img" height="240" width="188" style="border: 2px solid rgb(0, 0, 0);float: right; margin-left: 10px; margin-bottom: 10px;"/></a><br />
Faz dois meses que tento cancelar o BrTurbo. Após me dar conta que eu estava pagando 25 reais por mês para ter um login e poder logar na internet. Procurando um pouco, acabei achando 2 alternativas. O <a href="http://www.ps5.com.br/">PS5</a> e o <a href="http://www.adslresidencial.com.br/">ADSLResidencial</a>. Como o <a href="http://www.adslresidencial.com.br/">ADSLResidencial</a> era mais barato, optei por ele. Dois minutos para criar um usuário e já sair funcionando. Troquei o login no modem e funcionou de imediato. O boleto paguei 2 dias depois (criei o login no final de semana). Perfeito. Agora &#8220;basta&#8221; cancelar o BrTurbo. Depois de uma novela de 2 meses, continuo sem conseguir cancelar. Como não teve jeito de fazer pelos meios tradicionais, resolvi abrir um chamado na <a href="http://www.anatel.gov.br/">Anatel</a>. A novela toda pode ser acompanhada <a href="http://sistemas.anatel.gov.br/focus/FaleConosco/MostrarDetalheSolicitacao.asp?idtSolicitacao=7094023">aqui</a>.</p>
<p>Mas perai. Qualquer um consegue acessar o <strong>meu</strong> chamado na <a href="http://www.anatel.gov.br/">Anatel</a>? E se eu trocar o número do chamado? Vamos ver. <a href="http://sistemas.anatel.gov.br/focus/FaleConosco/MostrarDetalheSolicitacao.asp?idtSolicitacao=7094111">http://sistemas.anatel.gov.br/focus/FaleConosco/MostrarDetalheSolicitacao.asp?idtSolicitacao=7094111</a>. Excelente. Chamados públicos e com id sequencial. Parabéns equipe Anatel. Muito bom.</p>
<p>Ou seja, <strong>qualquer pessoa</strong> pode acessar qualquer chamado, pois os mesmos são abertos a público. E pior, com dados que não poderiam ser publicados, como CPF, email, telefone&#8230;ótimo não? Mas fica ainda pior. Sempre pode ficar pior. Me dei conta que o <a href="http://sistemas.anatel.gov.br/focus/FaleConosco/validarUsuario.asp">login do site da Anatel</a> é a combinação CPF+email. E esses dados são exibidos publicamente. Já entenderam o tamanho do problema, né?</p>
<p>Então já que após 3 dias até agora não escutei um &#8220;ah&#8221; da Anatel, resolvi fazer <em>uma certa publicidade</em>, pra ver se as coisas andam mais rápido. Por sinal, <a href="http://sistemas.anatel.gov.br/focus/FaleConosco/MostrarDetalheSolicitacao.asp?idtSolicitacao=7094023">meu chamado do BrTurbo</a> parece estar andando mais rápido que o <a href="http://sistemas.anatel.gov.br/focus/FaleConosco/MostrarDetalheSolicitacao.asp?idtSolicitacao=7094187">chamado deles</a>.</p>
<p>Só fica a dúvida: e a privacidade, Anatel?</p>
<p><em>update</em>: pra quem não viu, tirei uma screenshot <a href="http://flickr.com/photos/plentz/2785089034/">reproduzindo o problema</a>, <a href="http://flickr.com/photos/plentz/2784235159/">Anatel tentando corrigir o problema</a> e do <a href="http://flickr.com/photos/plentz/2784235009/">site da Anatel &#8220;em Manutenção&#8221;</a>.<br />
<em>update 2</em>: recebi agora pela manhã uma ligação da responsável pelo sistema da Anatel, agradecendo sobre o alerta e se comprometendo a só colocar o sistema no ar novamente quando tudo estiver resolvido &#8211; e me deixou o número para ligar diretamente, caso encontre outro problema. A <em>publicidade</em> funcionou.</p>
<p>Links:</p>
<ul>
<li><a href="http://www.baguete.com.br/noticiasDetalhes.php?id=27675">Baguete &#8211; Furo: Anatel retira dados do ar</a></li>
<li><a href="http://www.baguete.com.br/noticiasDetalhes.php?id=27669">Baguete &#8211; Furo: Anatel expõe dados pessoais</a></li>
<li><a href="http://imasters.uol.com.br/noticia/9788/seguranca/anatel_exibe_dados_de_usuarios_na_web/">iMasters &#8211; Anatel exibe dados de usuários na web</a></li>
</ul>
<div class="acc_license"><a href="http://creativecommons.org/licenses/by-nc-nd/3.0/"><img src="http://i.creativecommons.org/l/by-nc-nd/3.0/88x31.png" alt="by-nc-nd" /></a></div><!--<rdf:RDF xmlns="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"><Work rdf:about=""><license rdf:resource="http://creativecommons.org/licenses/by-nc-nd/3.0/" /></Work><License rdf:about="http://creativecommons.org/licenses/by-nc-nd/3.0/"><requires rdf:resource="http://creativecommons.org/ns#Attribution" /><permits rdf:resource="http://creativecommons.org/ns#Reproduction" /><permits rdf:resource="http://creativecommons.org/ns#Distribution" /><prohibits rdf:resource="http://creativecommons.org/ns#CommercialUse" /><requires rdf:resource="http://creativecommons.org/ns#Notice" /></License></rdf:RDF>--><img src="http://plentz.org/wordpress/?ak_action=api_record_view&id=175&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://plentz.org/2008/08/21/e-a-privacidade-anatel/feed/</wfw:commentRss>
		<slash:comments>25</slash:comments>
		</item>
	</channel>
</rss>

