<?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 &#187; tips</title>
	<atom:link href="http://plentz.org/tag/tips/feed/" rel="self" type="application/rss+xml" />
	<link>http://plentz.org</link>
	<description>plentiful thoughts from my empty head</description>
	<lastBuildDate>Sat, 03 Jul 2010 06:17:13 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>A dieta do programador</title>
		<link>http://plentz.org/2009/05/10/a-dieta-do-programador/?utm_source=rss&amp;utm_medium=rss&amp;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>10</slash:comments>
		</item>
		<item>
		<title>Como cancelar Claro 3G</title>
		<link>http://plentz.org/2009/02/11/como-cancelar-claro-3g/?utm_source=rss&amp;utm_medium=rss&amp;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>285</slash:comments>
		</item>
		<item>
		<title>Hibernate: save() ou persist()?</title>
		<link>http://plentz.org/2007/02/13/hibernate-save-ou-persist/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=hibernate-save-ou-persist</link>
		<comments>http://plentz.org/2007/02/13/hibernate-save-ou-persist/#comments</comments>
		<pubDate>Tue, 13 Feb 2007 15:28:43 +0000</pubDate>
		<dc:creator>Diego Plentz</dc:creator>
				<category><![CDATA[hibernate]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://plentz.org/2007/02/13/hibernate-save-ou-persist/</guid>
		<description><![CDATA[Por mais vasta que a documentação do Hibernate seja, sempre ficam pontos da API que precisam de melhorias na documentação. Um exemplo claro disso é esclarecer qual a diferença entre dois métodos da Session, o save() e o persist(). Ambos tem a mesma função: tornar uma instância transient em persistent. Segundo a doc da API: [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://flickr.com/photos/junieleong/195873892/" title="Hibernating Koala Bear"><img src="http://farm1.static.flickr.com/57/195873892_ea748faa3b_m.jpg" alt="Hibernating Koala Bear" height="180" width="240" style="border: 2px solid rgb(0, 0, 0);float: right; margin-left: 10px; margin-bottom: 10px;" /></a></p>
<p>Por mais vasta que a documentação do <a href="http://hibernate.org">Hibernate</a> seja, sempre ficam pontos da API que precisam de melhorias na documentação. Um exemplo claro disso é esclarecer qual a diferença entre dois métodos da <a href="http://www.hibernate.org/hib_docs/v3/api/org/hibernate/Session.html">Session</a>, o <a href="http://www.hibernate.org/hib_docs/v3/api/org/hibernate/Session.html#save(java.lang.Object)">save()</a> e o <a href="http://www.hibernate.org/hib_docs/v3/api/org/hibernate/Session.html#persist(java.lang.Object)">persist()</a>. Ambos tem a mesma função: tornar uma instância transient em persistent. Segundo a doc da API:</p>
<ul>
<li><em>persist()</em> &#8211; Make a transient instance persistent.</li>
<li><em>save()</em> &#8211; Persist the given transient instance, first assigning a generated identifier.</li>
</ul>
<p>O método persist(), não garante que será atribuito um id à instância imediatamente, sendo que a associação ocorrerá quando o <a href="http://www.hibernate.org/hib_docs/v3/reference/en/html/objectstate.html#objectstate-flushing">flush</a> ocorrer. Além disso, ele garante que só irá executar um insert se estiver dentro do contexto de uma transaction. Já o save(), atribui a chave imediatamente, não importando se isso exige um insert (no caso do <a href="http://www.hibernate.org/hib_docs/v3/reference/en/html_single/#mapping-declaration-id-generator">identity generator</a>) ou se existe um contexto de transação. Isso explica também porque o save() retorna o Id gerado e o persist() é void.</p>
<p>Mais informações podem ser encontradas no <a href="http://opensource.atlassian.com/projects/hibernate/browse/HHH-1273">Jira</a> e no <a href="http://forum.hibernate.org/viewtopic.php?t=951275">fórum</a> do Hibernate.</p>
<p><em>update</em>: não é somente eu que acha que a documentação precisa de melhorias nesse caso: <a href="http://opensource.atlassian.com/projects/hibernate/browse/HHH-1682">HHH-1682</a></p>
<p><em>update 2</em>: acabei de comitar a alteração na documentação, para a próxima versão do Hibernate (3.2.5), a seção <a href="http://www.hibernate.org/hib_docs/reference/en/html/objectstate.html#objectstate-makingpersistent">Making objects persistent</a> irá trazer informações mais detalhadas sobre a diferença entre os dois métodos.</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=153&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://plentz.org/2007/02/13/hibernate-save-ou-persist/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
	</channel>
</rss>
