<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;A04CQng8eCp7ImA9WxNUFU8.&quot;"><id>tag:blogger.com,1999:blog-29558514</id><updated>2009-11-06T14:52:43.670-03:00</updated><title>Soriano</title><subtitle type="html">Eita figurinha</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://sfohart.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://sfohart.blogspot.com/" /><link rel="hub" href="http://pubsubhubbub.appspot.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/29558514/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>Soriano</name><email>sfohart@gmail.com</email></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>326</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><link rel="self" href="http://feeds.feedburner.com/Soriano" type="application/atom+xml" /><feedburner:emailServiceId>Soriano</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><entry gd:etag="W/&quot;CUAFR3o6fip7ImA9WxNUFEg.&quot;"><id>tag:blogger.com,1999:blog-29558514.post-1460206157454273745</id><published>2009-11-05T17:41:00.000-03:00</published><updated>2009-11-05T17:41:56.416-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-11-05T17:41:56.416-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="sentimento" /><title>Uma história de amor em stop motion</title><content type="html">&lt;div style="font-family: Verdana,sans-serif; font-size: small; text-align: justify;"&gt;Um casal de aves desenhadas a lápis escapam do desenho de uma menina, levando-nos através dos seus sonhos. Não sei se eu já postei esse vídeo aqui antes, mas... Ai vai.&lt;br /&gt;
&lt;span id="fullpost"&gt;&lt;!-- google_ad_section_start --&gt; &lt;br /&gt;
&lt;br /&gt;
&lt;object width="400" height="225"&gt;&lt;param name="allowfullscreen" value="true" /&gt;&lt;param name="allowscriptaccess" value="always" /&gt;&lt;param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=877053&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=&amp;amp;fullscreen=1&amp;amp;group_id=" /&gt;&lt;embed src="http://vimeo.com/moogaloop.swf?clip_id=877053&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=&amp;amp;fullscreen=1&amp;amp;group_id=" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="225"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;p&gt;&lt;a href="http://vimeo.com/groups/66/videos/877053"&gt;A SHORT LOVE STORY IN STOP MOTION&lt;/a&gt; from &lt;a href="http://vimeo.com/carloslascano"&gt;Carlos Lascano&lt;/a&gt; on &lt;a href="http://vimeo.com"&gt;Vimeo&lt;/a&gt;.&lt;/p&gt;&lt;br /&gt;
P.S.: É, eu sei, eu voltei a ficar romântico&lt;br /&gt;
P.P.S.: É, eu sei, de vez em quando a gente faz mimos para a namorada.&lt;br /&gt;
P.P.P.S.: Quem me chamar de viadinho apanha!&lt;br /&gt;
&lt;br /&gt;
&lt;!-- google_ad_section_end --&gt;  &lt;a rel="license" href="http://creativecommons.org/licenses/by-nc-nd/2.5/br/"&gt;&lt;img alt="Creative Commons License" style="border-width:0" src="http://i.creativecommons.org/l/by-nc-nd/2.5/br/88x31.png" /&gt;&lt;/a&gt;&lt;br /&gt;
Esta &lt;span xmlns:dc="http://purl.org/dc/elements/1.1/" href="http://purl.org/dc/dcmitype/Text" rel="dc:type"&gt;obra&lt;/span&gt; est&amp;#225; licenciada sob uma &lt;a rel="license" href="http://creativecommons.org/licenses/by-nc-nd/2.5/br/"&gt;Licen&amp;#231;a Creative Commons&lt;/a&gt;.  &lt;/span&gt;  &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29558514-1460206157454273745?l=sfohart.blogspot.com'/&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/-_1sBiYPeFEAdWjvdFLaes-TfBI/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/-_1sBiYPeFEAdWjvdFLaes-TfBI/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/-_1sBiYPeFEAdWjvdFLaes-TfBI/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/-_1sBiYPeFEAdWjvdFLaes-TfBI/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Soriano/~4/X6xmhD1RTE8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://sfohart.blogspot.com/feeds/1460206157454273745/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://sfohart.blogspot.com/2009/11/uma-historia-de-amor-em-stop-motion.html#comment-form" title="1 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/29558514/posts/default/1460206157454273745?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/29558514/posts/default/1460206157454273745?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Soriano/~3/X6xmhD1RTE8/uma-historia-de-amor-em-stop-motion.html" title="Uma história de amor em stop motion" /><author><name>Soriano</name><email>sfohart@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="11910608697604757158" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total><feedburner:origLink>http://sfohart.blogspot.com/2009/11/uma-historia-de-amor-em-stop-motion.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0UNQ3g-eyp7ImA9WxNUFE8.&quot;"><id>tag:blogger.com,1999:blog-29558514.post-7163526139090732509</id><published>2009-11-05T09:20:00.004-03:00</published><updated>2009-11-05T09:48:12.653-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-11-05T09:48:12.653-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="viagens" /><title>[Porto de Galinhas] - Resenhas</title><content type="html">&lt;div style="font-family: Verdana,sans-serif; font-size: small; text-align: justify;"&gt;Eu fui! E curti muito! O lugar é realmente tudo o que falam, muito bonito. Mas enfim, vamos às considerações da viagem, detalhe por detalhe.&lt;br /&gt;
&lt;span id="fullpost"&gt;&lt;!-- google_ad_section_start --&gt; &lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;Passagens&lt;/h3&gt;&lt;br /&gt;
Pelo amor de Deus, não comprem passagens em cima da hora. Sai muito mais caro, e você não tem a liberdade de escolher horários confortáveis. Esse foi o nosso principal erro, pois só conseguimos passagens para o meio dia do sábado (31/10/2009) e 6:10 da manhã de terça (03/11/2009). Invariavelmente se consegue preços mais baratos e horários melhores com 2 ou 3 meses de antecedência.&lt;br /&gt;
&lt;br /&gt;
Comprar passagens no balcão também não é um bom negócio, pois se paga uma taxa a mais por isso. Prefira comprar passagens pela internet (o cabeção aqui não usa internet banking).&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;Hospedagem&lt;/h3&gt;&lt;br /&gt;
Ficamos na Pousada Agua Marinha. Fica há mais ou menos 500 metros da entrada da vila de Porto de Galinhas, e é uma pousada bem bacana.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_xnGn5_2-w_k/SvK5t6H5kWI/AAAAAAAAITc/zRMuL0YQYYg/s1600-h/PB020172.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_xnGn5_2-w_k/SvK5t6H5kWI/AAAAAAAAITc/zRMuL0YQYYg/s400/PB020172.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_xnGn5_2-w_k/SvK56adM9dI/AAAAAAAAITk/4Ks0p9KcQNc/s1600-h/PB020181.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_xnGn5_2-w_k/SvK56adM9dI/AAAAAAAAITk/4Ks0p9KcQNc/s400/PB020181.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
Servem café da manhã entre as 7h e as 10h. A arrumação dos quartos começa às 10h. A pousada fica aberta 24h (era de se esperar, vila em festa). Como podem ver, tem piscina... Chuveiro quente, ar condicionado e TV nos quartos, varanda com rede também.&lt;br /&gt;
&lt;br /&gt;
Contato: &lt;br /&gt;
e-mail: contato arroba aguamarinhapousada ponto com ponto br&lt;br /&gt;
Fone/Fax: (81) 3552-1087&lt;br /&gt;
(bots de spammers, aqui _)_ pra vcs!)&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;Translado&lt;/h3&gt;&lt;br /&gt;
Acertado com a própria pousada. Eles fazem contato com um serviço chamado "Disk Doblô". Só houve um pequeno equívoco na comunicação, quando disseram que era R$ XX,XX ida e volta, quando na verdade era só a ida. Ainda assim, valeu a pena, pois se fôssemos economizar, pegariamos um ônibus intermunicipal a R$6,00 mais ou menos, no estilo de uma viagem entre o Aeroporto e São Tomé de Paripe (ou algo assim). Também saímos em vantagem (na minha opinião), pudemos contar com o translado às 4h da manhã de terça feira, sendo que o nosso vôo sairia do Aeroporto de Recife às 6:10.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;Alimentação&lt;/h3&gt;&lt;br /&gt;
Quando ouvirem que ninguém por lá usa dendê, pelo fato de que ninguém por lá "aguenta", tome cuidado. O azeite de dendê aqui usado parece ser bem aquecido no preparo das muquecas ou na fritura do acarajé. Comemos um peixe na telha por lá e o resultado não foi muito bom (pra mim). Também falam mal do acarajé servido nas praias de lá, segundo o que corre a boca miúda, nenhuma das vendedoras de acarajé é baiana legítima, então...&lt;br /&gt;
&lt;br /&gt;
Quanto ao preço... É bastante variado, mas tome por base o preço dos pratos prontos do Salvador Shopping: algo entre R$15,00 e R$30,00 por pessoa. Claro que se você quiser comer lagosta, vai pagar seus R$120,00, mas isso não está em questão. Resolvemos seguir a dica do pessoal da pousada, e fomos até a Soparia Lumiar.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_xnGn5_2-w_k/SvK9WUrPKCI/AAAAAAAAITs/bbEA3bywqm0/s1600-h/PB140164.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_xnGn5_2-w_k/SvK9WUrPKCI/AAAAAAAAITs/bbEA3bywqm0/s400/PB140164.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_xnGn5_2-w_k/SvK9bkoG-nI/AAAAAAAAIT0/eJB8v3F1Lwg/s1600-h/PB010169.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_xnGn5_2-w_k/SvK9bkoG-nI/AAAAAAAAIT0/eJB8v3F1Lwg/s400/PB010169.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
Na segunda foto, ao meio, a dona da soparia. Infelizmente eu esqueci o nome dela, mas com certeza essa moça ai é uma figura! Sem falar no sotaque carregado dos pernambucanos que é engraçado pacas :) A coisa mais barata que achamos foram as sopas, que variam entre R$6,00 e R$8,00. A coisa mais cara que achamos foi um bobó de camarão (que não leva azeite de dendê) por R$35,00, prato para duas pessoas. Tinha também um arroz de polvo, a seus R$30,00, que é uma delícia. &lt;br /&gt;
&lt;br /&gt;
Achei importante comermos pratos leves, pois o calor é forte, muito mais do que aqui em Salvador. Tem café expresso por R$5,40 no Beijo Café, tem tapioca (que nada me tira da cabeça não passar de um simples beijú) variando entre R$2,00 e R$4,00, "caipifruta" variando entre R$8,00 e R$13,00, enfim, dá pra não passar tanto aperto assim.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_xnGn5_2-w_k/SvK-9IF2NQI/AAAAAAAAIT8/IpbO4NyhaBo/s1600-h/PB130054.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_xnGn5_2-w_k/SvK-9IF2NQI/AAAAAAAAIT8/IpbO4NyhaBo/s400/PB130054.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;h3&gt;Passeio de Jangada&lt;/h3&gt;&lt;br /&gt;
Sai a R$10,00 por pessoa. Te levam de jangada há mais ou menos uns 500 metros da praia para um recife de corais durante a maré baixa. O passeio dura em torno de 45 minutos, pois há fiscais do IBAMA nos corais e multam as jangadas que passarem deste tempo. Há cordas nos corais delimitando a área em que os turistas deveriam transitar (porque turista é um bicho indisciplinado do caramba), já que aqueles corais são áreas de preservação.&lt;br /&gt;
&lt;br /&gt;
Os caras da jangada dão ração pra peixe pra você jogar e atraí-los pra mais perto, a fim de tirar fotos.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_xnGn5_2-w_k/SvK_9LOxV9I/AAAAAAAAIUM/ci5KoOSOPTE/s1600-h/PB140105.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_xnGn5_2-w_k/SvK_9LOxV9I/AAAAAAAAIUM/ci5KoOSOPTE/s400/PB140105.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_xnGn5_2-w_k/SvK_2MxCFMI/AAAAAAAAIUE/RdWEUpzk1gU/s1600-h/PB140096.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_xnGn5_2-w_k/SvK_2MxCFMI/AAAAAAAAIUE/RdWEUpzk1gU/s400/PB140096.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;h3&gt;Mergulho&lt;/h3&gt;&lt;br /&gt;
O preço do mergulho varia bastante. Para um casal, os preços variam entre R$150,00 e R$130,00. Tome cuidado com o intervalo entre o seu mergulho e o seu voo de volta. Prefira um intervalo de 24 horas, independente de ser um mergulho entre 4 e 6 metros e um mergulho mais fundo. Por quê? Você pode se sentir mal (dores de ouvido, tonturas e afins) durante o voo. &lt;br /&gt;
&lt;br /&gt;
Eles normalmente dão um CD com mais ou menos 50 fotos do seu mergulho. Existem várias agências por lá, mas escolhemos a &lt;a href="http://www.ganeshdive.com.br"&gt;Ganesh Dive&lt;/a&gt;. Gostamos do tratamento do pessoal, bastante atenciosos. Prefira os primeiros horários, pois a água não está tão agitada, a visibilidade melhora e você consegue se divertir mais...&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_xnGn5_2-w_k/SvLBvS7TnoI/AAAAAAAAIUU/WIVbgPWwels/s1600-h/IMG_5954.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_xnGn5_2-w_k/SvLBvS7TnoI/AAAAAAAAIUU/WIVbgPWwels/s400/IMG_5954.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_xnGn5_2-w_k/SvLB4nYT4cI/AAAAAAAAIUc/Hz_WYK6vJwE/s1600-h/IMG_5962.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_xnGn5_2-w_k/SvLB4nYT4cI/AAAAAAAAIUc/Hz_WYK6vJwE/s400/IMG_5962.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;h3&gt;Passeio de buggy&lt;/h3&gt;&lt;br /&gt;
Infelizmente, não passeamos de buggy. O tempo ficou curto (e a grana também). Entretanto, para casais, os preços costumam variar entre R$80,00 (se você chorar &lt;b&gt;muito&lt;/b&gt;) e R$120,00. Passam por várias praias, e o passeio por todas elas dura em média 6 horas.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;Lembranças para os amigos&lt;/h3&gt;&lt;br /&gt;
O artesanato local é bastante diversificado, e vai desde esculturas de barro a quadros. Consegue-se chaveiros bonitinhos bem em conta (entre R$2,00 e R$5,00), camisetas com estampas hilárias (entre R$13,00 e R$25,00), e várias outras coisas, basta passear pelas lojas das galerias e pesquisar preços. Sim, gente, pesquisei preço, qual o problema? :P&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;Como saber disso tudo antes da viagem&lt;/h3&gt;&lt;br /&gt;
Para pesquisar as pousadas, usamos o site &lt;a href="http://www2.uol.com.br/portodegalinhas/"&gt;http://www2.uol.com.br/portodegalinhas/&lt;/a&gt;. Para saber a previsão do tempo durante o feriado, usamos o site do &lt;a href="http://www.climatempo.com.br/ "&gt;Climatempo&lt;/a&gt;, é, aquele mesmo que o povo do Jornal Hoje costuma usar pra dar a previsão do tempo.&lt;br /&gt;
&lt;br /&gt;
Enfim, pra quem vai, boa viagem! :P&lt;br /&gt;
&lt;br /&gt;
&lt;!-- google_ad_section_end --&gt;  &lt;a rel="license" href="http://creativecommons.org/licenses/by-nc-nd/2.5/br/"&gt;&lt;img alt="Creative Commons License" style="border-width:0" src="http://i.creativecommons.org/l/by-nc-nd/2.5/br/88x31.png" /&gt;&lt;/a&gt;&lt;br /&gt;
Esta &lt;span xmlns:dc="http://purl.org/dc/elements/1.1/" href="http://purl.org/dc/dcmitype/Text" rel="dc:type"&gt;obra&lt;/span&gt; est&amp;#225; licenciada sob uma &lt;a rel="license" href="http://creativecommons.org/licenses/by-nc-nd/2.5/br/"&gt;Licen&amp;#231;a Creative Commons&lt;/a&gt;.  &lt;/span&gt;  &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29558514-7163526139090732509?l=sfohart.blogspot.com'/&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/YHKV9OzmbUJsCynoag5fnBE68IE/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/YHKV9OzmbUJsCynoag5fnBE68IE/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/YHKV9OzmbUJsCynoag5fnBE68IE/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/YHKV9OzmbUJsCynoag5fnBE68IE/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Soriano/~4/0Tw6-oosjtw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://sfohart.blogspot.com/feeds/7163526139090732509/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://sfohart.blogspot.com/2009/11/porto-de-galinhas-resenhas.html#comment-form" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/29558514/posts/default/7163526139090732509?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/29558514/posts/default/7163526139090732509?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Soriano/~3/0Tw6-oosjtw/porto-de-galinhas-resenhas.html" title="[Porto de Galinhas] - Resenhas" /><author><name>Soriano</name><email>sfohart@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="11910608697604757158" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_xnGn5_2-w_k/SvK5t6H5kWI/AAAAAAAAITc/zRMuL0YQYYg/s72-c/PB020172.JPG" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://sfohart.blogspot.com/2009/11/porto-de-galinhas-resenhas.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkcARHY8fyp7ImA9WxNVE0U.&quot;"><id>tag:blogger.com,1999:blog-29558514.post-5944034873125564620</id><published>2009-10-23T10:09:00.004-03:00</published><updated>2009-10-24T08:34:05.877-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-24T08:34:05.877-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="informática" /><title>[Maven] Problemas ao baixar as dependências?</title><content type="html">&lt;div style="font-family: Verdana,sans-serif; font-size: small; text-align: justify;"&gt;Eu não sou o expert em Maven, mas eu fuço as coisas (como todo bom computeiro). Daí eu acabei achando coisas que normalmente não aparecem logo de cara.&lt;br /&gt;
&lt;span id="fullpost"&gt;&lt;!-- google_ad_section_start --&gt; &lt;br /&gt;
&lt;h3&gt;Atualizando/reconstruindo o índice&lt;/h3&gt;&lt;br /&gt;
Vá até Window -&gt; Show View -&gt; Other no seu Eclipse.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_xnGn5_2-w_k/SuGbrpK8YdI/AAAAAAAAIJQ/sbUwKc31MYY/s1600-h/show-view.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="250" src="http://2.bp.blogspot.com/_xnGn5_2-w_k/SuGbrpK8YdI/AAAAAAAAIJQ/sbUwKc31MYY/s400/show-view.png" width="400" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
Agora vá até a visão do Maven, clique no repositório http://repo1.maven.org/maven2, clicando com o botão direito e selecione Atualizar Índice&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_xnGn5_2-w_k/SuGctxF4QKI/AAAAAAAAIJY/p9gn536PHZE/s1600-h/update-index.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="236" src="http://3.bp.blogspot.com/_xnGn5_2-w_k/SuGctxF4QKI/AAAAAAAAIJY/p9gn536PHZE/s400/update-index.png" width="400" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
Se vocÊ também selecionou a visão Progress, lá da aba Geral em Window -&gt; Show View -&gt; Other, você perceberá que o plugin do Maven no eclipse baixará um índice para cada lib existente no repositório, contendo todas as versões existentes até então.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_xnGn5_2-w_k/SuGdkoVg7EI/AAAAAAAAIJg/0CDIVJstx8U/s1600-h/progress-update-index.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="235" src="http://2.bp.blogspot.com/_xnGn5_2-w_k/SuGdkoVg7EI/AAAAAAAAIJg/0CDIVJstx8U/s400/progress-update-index.png" width="400" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
Se esse era o seu problema, depois disso, tudo vai funcionar tranqulamente...&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;Configurando espelhos para o repositório&lt;/h3&gt;&lt;br /&gt;
Caso ainda assim você tenha problemas em encontrar as dependências, você poderia adicionar mirrors aos repositórios. Crie um arquivo chamado settings.xml dentro da pasta ${home-do-usuario}/.m2/ com o seguinte conteúdo:&lt;br /&gt;
&lt;br /&gt;
&lt;pre name="code" class="xml"&gt;&amp;lt;settings&amp;gt;
  .
  .
  .
  &amp;lt;mirrors&amp;gt;
    &amp;lt;mirror&amp;gt;
      &amp;lt;id&amp;gt;ibiblio.org&amp;lt;/id&amp;gt;
      &amp;lt;name&amp;gt;
        ibiblio Mirror of http://repo1.maven.org/maven2/
      &amp;lt;/name&amp;gt;
      &amp;lt;url&amp;gt;
        http://mirrors.ibiblio.org/pub/mirrors/maven2
      &amp;lt;/url&amp;gt;
      &amp;lt;mirrorOf&amp;gt;central&amp;lt;/mirrorOf&amp;gt;
    &amp;lt;/mirror&amp;gt;
  &amp;lt;/mirrors&amp;gt;
  .
  .
  .
&amp;lt;/settings&amp;gt;
&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
Para mais informações, &lt;a href="http://maven.apache.org/guides/mini/guide-mirror-settings.html"&gt;leia este tutorial&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;Configurando conexão usando um proxy&lt;/h3&gt;&lt;br /&gt;
Se você está sob um proxy (provavelmente dentro de uma empresa - quem colocaria um proxy em casa?), crie (ou edite, caso já o tenha criado) um arquivo chamado settings.xml na pasta ${home-do-usuario}/.m2/&lt;br /&gt;
&lt;br /&gt;
&lt;pre name="code" class="xml"&gt;&amp;lt;settings&amp;gt;
  .
  .
  .
  &amp;lt;proxies&amp;gt;
    &amp;lt;proxy&amp;gt;
      &amp;lt;active&amp;gt;
        true
      &amp;lt;/active&amp;gt;
      &amp;lt;protocol&amp;gt;
        http
      &amp;lt;/protocol&amp;gt;
      &amp;lt;host&amp;gt;
        proxy.somewhere.com
      &amp;lt;/host&amp;gt;
      &amp;lt;port&amp;gt;8080&amp;lt;/port&amp;gt;
      &amp;lt;username&amp;gt;proxyuser&amp;lt;/username&amp;gt;
      &amp;lt;password&amp;gt;somepassword&amp;lt;/password&amp;gt;
      &amp;lt;nonProxyHosts&amp;gt;
        www.google.com|*.somewhere.com
      &amp;lt;/nonProxyHosts&amp;gt;
    &amp;lt;/proxy&amp;gt;
  &amp;lt;/proxies&amp;gt;
  .
  .
  .
&amp;lt;/settings&amp;gt;
&lt;/pre&gt;&lt;br /&gt;
A parte do username e password somente deve ser usada se para ter acesso à rede externa vocÊ necessitar de usuário e senha. A parte do nonProxyHosts normalmente é utilizada para a rede interna da empresa, caso a equipe de desenvolvimento utilize também um repositório local para o maven.&lt;br /&gt;
&lt;br /&gt;
Para mais informações, &lt;a href="http://maven.apache.org/guides/mini/guide-proxies.html"&gt;veja este tutorial&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style="text-align: right"&gt;Isso é tudo, pessoal!&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;!-- google_ad_section_end --&gt;  &lt;a rel="license" href="http://creativecommons.org/licenses/by-nc-nd/2.5/br/"&gt;&lt;img alt="Creative Commons License" style="border-width:0" src="http://i.creativecommons.org/l/by-nc-nd/2.5/br/88x31.png" /&gt;&lt;/a&gt;&lt;br /&gt;
Esta &lt;span xmlns:dc="http://purl.org/dc/elements/1.1/" href="http://purl.org/dc/dcmitype/Text" rel="dc:type"&gt;obra&lt;/span&gt; est&amp;#225; licenciada sob uma &lt;a rel="license" href="http://creativecommons.org/licenses/by-nc-nd/2.5/br/"&gt;Licen&amp;#231;a Creative Commons&lt;/a&gt;.  &lt;/span&gt;  &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29558514-5944034873125564620?l=sfohart.blogspot.com'/&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/xv7lOfperDSZ7918cApu2zbD_6k/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/xv7lOfperDSZ7918cApu2zbD_6k/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/xv7lOfperDSZ7918cApu2zbD_6k/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/xv7lOfperDSZ7918cApu2zbD_6k/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Soriano/~4/NpmZZLJ9nHY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://sfohart.blogspot.com/feeds/5944034873125564620/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://sfohart.blogspot.com/2009/10/maven-problemas-ao-baixar-as.html#comment-form" title="3 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/29558514/posts/default/5944034873125564620?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/29558514/posts/default/5944034873125564620?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Soriano/~3/NpmZZLJ9nHY/maven-problemas-ao-baixar-as.html" title="[Maven] Problemas ao baixar as dependências?" /><author><name>Soriano</name><email>sfohart@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="11910608697604757158" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_xnGn5_2-w_k/SuGbrpK8YdI/AAAAAAAAIJQ/sbUwKc31MYY/s72-c/show-view.png" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">3</thr:total><feedburner:origLink>http://sfohart.blogspot.com/2009/10/maven-problemas-ao-baixar-as.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkECSXgzfSp7ImA9WxNVEk4.&quot;"><id>tag:blogger.com,1999:blog-29558514.post-8980664783463608023</id><published>2009-10-22T16:01:00.001-03:00</published><updated>2009-10-22T16:11:08.685-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-22T16:11:08.685-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="profissão" /><title>De Programador Para Analista - Promoção?</title><content type="html">&lt;div style="font-family: Verdana,sans-serif; font-size: small; text-align: justify;"&gt;Hoje faz mais ou menos um mês que eu saí do cargo de Desenvolvedor (Programador) Júnior Java para Analista / Programador de Sistemas. Ao menos é isso que consta em minha carteira de trabalho... Apesar de eu já ter essa ciência antes de dar esse passo, muitos pensam que passar de Programador para Analista significa uma promoção dentro de uma empresa.&lt;br /&gt;
&lt;span id="fullpost"&gt;&lt;!-- google_ad_section_start --&gt; &lt;br /&gt;
Nesse pouquíssimo tempo de trabalho na nova função, percebo que o escopo das atividades que exerço é muito maior do que apenas dar manutenção/implementar novos casos de uso. Decisões erradas tomadas nas fases de iniciação e elaboração podem comprometer todo o andamento (e até mesmo a viabilidade) do projeto, então, não acho que fui apenas "promovido".&lt;br /&gt;
&lt;br /&gt;
Mas também não posso dizer que trouxe absolutamente nada da minha fase de "peão". Minhas noções de orientação a objeto e modelagem de classes me ajudam e muito, isso sem falar das ocasiões em que eu discutia veementemente com a equipe da análise (e às vezes até com a equipe de teste). E não é só isso, meu português mais ou menos, trazido desde o ensino fundamental, ainda me ajuda a escrever textos que não deixam (a princípio) margem para má interpretação (porque ninguém está livre disso).&lt;br /&gt;
&lt;br /&gt;
Eu espero que nessa nova fase da minha carreira eu consiga me sair tão bem quanto eu (acho que) fui enquanto era apenas "peão"...&lt;br /&gt;
&lt;!-- google_ad_section_end --&gt;  &lt;a rel="license" href="http://creativecommons.org/licenses/by-nc-nd/2.5/br/"&gt;&lt;img alt="Creative Commons License" style="border-width:0" src="http://i.creativecommons.org/l/by-nc-nd/2.5/br/88x31.png" /&gt;&lt;/a&gt;&lt;br /&gt;
Esta &lt;span xmlns:dc="http://purl.org/dc/elements/1.1/" href="http://purl.org/dc/dcmitype/Text" rel="dc:type"&gt;obra&lt;/span&gt; est&amp;#225; licenciada sob uma &lt;a rel="license" href="http://creativecommons.org/licenses/by-nc-nd/2.5/br/"&gt;Licen&amp;#231;a Creative Commons&lt;/a&gt;.  &lt;/span&gt;  &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29558514-8980664783463608023?l=sfohart.blogspot.com'/&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/gLA0kscK-6weJ7uU5Zsk2TqYHEM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/gLA0kscK-6weJ7uU5Zsk2TqYHEM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/gLA0kscK-6weJ7uU5Zsk2TqYHEM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/gLA0kscK-6weJ7uU5Zsk2TqYHEM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Soriano/~4/dib2X0bYL44" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://sfohart.blogspot.com/feeds/8980664783463608023/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://sfohart.blogspot.com/2009/10/de-programador-para-analista-promocao.html#comment-form" title="1 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/29558514/posts/default/8980664783463608023?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/29558514/posts/default/8980664783463608023?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Soriano/~3/dib2X0bYL44/de-programador-para-analista-promocao.html" title="De Programador Para Analista - Promoção?" /><author><name>Soriano</name><email>sfohart@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="11910608697604757158" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total><feedburner:origLink>http://sfohart.blogspot.com/2009/10/de-programador-para-analista-promocao.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0UHQ348cSp7ImA9WxNVEE4.&quot;"><id>tag:blogger.com,1999:blog-29558514.post-7951803490295262206</id><published>2009-10-20T08:34:00.001-03:00</published><updated>2009-10-20T08:47:12.079-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-20T08:47:12.079-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="informática" /><title>Problemas com o proxy no Eclipse Galileo?</title><content type="html">&lt;div style="font-family: Verdana,sans-serif; font-size: small; text-align: justify;"&gt;Normalmente, as empresas se utilizam de proxy para barrar acessos a páginas consideradas impróprias, como, por exemplo, o site do Bahia e do Vitória (brincadeira :P). E ai, quando vamos fazer um install/update pelo Eclipse, encontramos problemas, porque o Eclipse não consegue acessar a internet normalmente. Como contornar isso?&lt;br /&gt;
&lt;span id="fullpost"&gt;&lt;!-- google_ad_section_start --&gt; &lt;br /&gt;
Eu tentei configurar o eclipse do mesmo modo como o firefox estava configurado, mas vi que não deu muito certo. Eu havia tentado configurar HTTP, HTTPS e SOCKS com o mesmo endereço e porta. Ai, eu resolvi apagar a parte HTTP e SOCKS, além de remover o 127.0.0.1 do bypass.&lt;br /&gt;
&lt;br /&gt;
É só ir em Windows -&gt; Preferences, escolher General - Network Connections e configurar mais ou menos assim:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_xnGn5_2-w_k/St2e3esBehI/AAAAAAAAIHk/617T2VycLEo/s1600-h/configuracao-proxy.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_xnGn5_2-w_k/St2e3esBehI/AAAAAAAAIHk/617T2VycLEo/s400/configuracao-proxy.png" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
Então, ainda nas preferÊncias, vá até Install/Update -&gt; Avaliable Software Sites e teste uma das conexões. Se disser algo do tipo "Xpto is avaliable", você conseguiu :)&lt;br /&gt;
&lt;br /&gt;
&lt;!-- google_ad_section_end --&gt;  &lt;a rel="license" href="http://creativecommons.org/licenses/by-nc-nd/2.5/br/"&gt;&lt;img alt="Creative Commons License" style="border-width:0" src="http://i.creativecommons.org/l/by-nc-nd/2.5/br/88x31.png" /&gt;&lt;/a&gt;&lt;br /&gt;
Esta &lt;span xmlns:dc="http://purl.org/dc/elements/1.1/" href="http://purl.org/dc/dcmitype/Text" rel="dc:type"&gt;obra&lt;/span&gt; est&amp;#225; licenciada sob uma &lt;a rel="license" href="http://creativecommons.org/licenses/by-nc-nd/2.5/br/"&gt;Licen&amp;#231;a Creative Commons&lt;/a&gt;.  &lt;/span&gt;  &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29558514-7951803490295262206?l=sfohart.blogspot.com'/&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/lkexiomQJB3IZPVRIYTxP5Ed6Vo/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/lkexiomQJB3IZPVRIYTxP5Ed6Vo/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/lkexiomQJB3IZPVRIYTxP5Ed6Vo/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/lkexiomQJB3IZPVRIYTxP5Ed6Vo/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Soriano/~4/xrLhPNLxf4o" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://sfohart.blogspot.com/feeds/7951803490295262206/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://sfohart.blogspot.com/2009/10/problemas-com-o-proxy-no-eclipse.html#comment-form" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/29558514/posts/default/7951803490295262206?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/29558514/posts/default/7951803490295262206?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Soriano/~3/xrLhPNLxf4o/problemas-com-o-proxy-no-eclipse.html" title="Problemas com o proxy no Eclipse Galileo?" /><author><name>Soriano</name><email>sfohart@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="11910608697604757158" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_xnGn5_2-w_k/St2e3esBehI/AAAAAAAAIHk/617T2VycLEo/s72-c/configuracao-proxy.png" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://sfohart.blogspot.com/2009/10/problemas-com-o-proxy-no-eclipse.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEAHSXk4fyp7ImA9WxNWF00.&quot;"><id>tag:blogger.com,1999:blog-29558514.post-1249871818531287026</id><published>2009-10-16T08:20:00.001-03:00</published><updated>2009-10-16T11:18:58.737-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-16T11:18:58.737-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="viagens" /><title>[Porto de Galinhas] Preparativos</title><content type="html">&lt;div style="font-family: Verdana,sans-serif; font-size: small; text-align: justify;"&gt;É... Eu vou pra Porto de Galinhas. Mas por conta própria. Muita gente já deve estar sabendo que eu comecei a namorar de novo. E foi ela quem sugeriu que gostaria de conhecer o lugar... Como eu sou meio doido, eu decidi embarcar nessa, afinal de contas, eu &lt;b&gt;nunca&lt;/b&gt; saí da Bahia, &lt;b&gt;nunca&lt;/b&gt; peguei um avião...&lt;br /&gt;
&lt;span id="fullpost"&gt;&lt;!-- google_ad_section_start --&gt; &lt;br /&gt;
&lt;h3&gt;Como não se preparar para uma viagem&lt;/h3&gt;Nós tinhamos ido 2 meses antes da data pré-estabelecida da viagem a uma agência de turismo, em busca de pacotes de viagem. A princípio, havíamos encontrado um pacote razoavelmente barato: algo na faixa de R$850,00 por 3 dias, incluindo passagens, hospedagem (com direito a café da manhã, é claro), e, se eu não me engano, translado.&lt;br /&gt;
&lt;br /&gt;
Entretanto, como procuramos os dois evitar ao máximo ficarmos presos a cartões de crédito e afins, decidimos juntar a grana e pagarmos a vista. Um mês depois, e alguém nos diz que o preço do pacote estava muito caro, e que se fôssemos pagando as coisas em separado, conseguiriamos alguma vantagem, mesmo que algo em torno de R$100 ou R$200 reais. E assim o fizemos.&lt;br /&gt;
&lt;br /&gt;
Quarta feira passada (14/10/2009) fomos até o aeroporto (porque o cabeção aqui não tem internet banking - vive perdendo os tokens) e conseguimos, depois de muito custo, passagens saindo de Salvador no dia 31/10, às 12h, e voltando de Recife no dia 03/11, às 5h. Um dia depois (15/10/2009), conseguimos, depois de muito custo, hospedagem por 3 dias, e o translado, oferecido pela própria pousada (ao custo de R$100,00). Pelo menos, garantimos a ida, a volta, e a cama (o mais importante, hehehe).&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;Mas por quê?&lt;/h3&gt;&lt;br /&gt;
Pense comigo: será que, se conseguíssemos fazer as mesmas coisas que fizemos agora com um pouco mais de antecedência, não conseguiríamos uma economia &lt;b&gt;bem maior&lt;/b&gt;? Será que não conseguiriamos uma pousada com um pouco mais de requinte, ou passagens em horários melhores? Para quem se planeja com antecedência, o mau costume brasileiro de deixar tudo para a última hora com certeza é um benefício e tanto... não concordam?&lt;br /&gt;
&lt;br /&gt;
&lt;div style="text-align: right"&gt;Porto de Galinhas - Porque um &lt;i&gt;anoniblogger&lt;/i&gt; também pode!&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
P.S.: Depois eu posto como a gente decidiu o que fazer e o que comer em Porto de Galinhas&lt;br /&gt;
&lt;br /&gt;
&lt;!-- google_ad_section_end --&gt;  &lt;a rel="license" href="http://creativecommons.org/licenses/by-nc-nd/2.5/br/"&gt;&lt;img alt="Creative Commons License" style="border-width:0" src="http://i.creativecommons.org/l/by-nc-nd/2.5/br/88x31.png" /&gt;&lt;/a&gt;&lt;br /&gt;
Esta &lt;span xmlns:dc="http://purl.org/dc/elements/1.1/" href="http://purl.org/dc/dcmitype/Text" rel="dc:type"&gt;obra&lt;/span&gt; est&amp;#225; licenciada sob uma &lt;a rel="license" href="http://creativecommons.org/licenses/by-nc-nd/2.5/br/"&gt;Licen&amp;#231;a Creative Commons&lt;/a&gt;.  &lt;/span&gt;  &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29558514-1249871818531287026?l=sfohart.blogspot.com'/&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/HuhWTnMBDFHLAScCiolorKf--Ts/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/HuhWTnMBDFHLAScCiolorKf--Ts/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/HuhWTnMBDFHLAScCiolorKf--Ts/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/HuhWTnMBDFHLAScCiolorKf--Ts/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Soriano/~4/i5F_cHoWJM0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://sfohart.blogspot.com/feeds/1249871818531287026/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://sfohart.blogspot.com/2009/10/porto-de-galinhas-preparativos.html#comment-form" title="1 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/29558514/posts/default/1249871818531287026?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/29558514/posts/default/1249871818531287026?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Soriano/~3/i5F_cHoWJM0/porto-de-galinhas-preparativos.html" title="[Porto de Galinhas] Preparativos" /><author><name>Soriano</name><email>sfohart@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="11910608697604757158" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total><feedburner:origLink>http://sfohart.blogspot.com/2009/10/porto-de-galinhas-preparativos.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Dk8NQno4fip7ImA9WxNXEU4.&quot;"><id>tag:blogger.com,1999:blog-29558514.post-8101910740667128908</id><published>2009-09-28T07:46:00.001-03:00</published><updated>2009-09-28T07:48:13.436-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-09-28T07:48:13.436-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="o menino amarelo" /><title>[O Menino Amarelo] O Cativeiro Mofado</title><content type="html">&lt;div style="font-family: Verdana,sans-serif; font-size: small; text-align: justify;"&gt;Era uma vez, um menino amarelo. E o menino amarelo estava namorando. A namorada do menino amarelo já havia tido filho, e era (como sempre) um tanto mais velha que o tal menino. Num desses finais de semana, a doida namorada do menino amarelo resolve convidá-lo para almoçar na casa dela...&lt;br /&gt;
&lt;span id="fullpost"&gt;&lt;!-- google_ad_section_start --&gt; &lt;br /&gt;
Depois de andar do Himaláia até o Egito, passar em Angola e ir parar ali, pertinho do Bom Preço, eis que o menino chega suado na casa da namorada, sem fôlego sequer pra abrir um portão. E ali estava a criatura. A cria da maluca. Criança simples, sorridente, sentada no sofá da sala assistindo TV, analisando a amarelidão em pessoa com o mesmo jeito de um Poodle (e o menino amarelo ficou com trauma de Poodles depois que um quase mordeu seu rosto).&lt;br /&gt;
&lt;br /&gt;
Comida diferente, sobremesa, sabe aquela média que namorada faz quando quer agradar? Pois bem. Ai vem aquela tapeada pra deixar o menino ambientado, pra acostumar a cria da maluca com o amarelo... Até que ela resolve despachar a cria pra Deus sabe onde. Leva até um pouco de sobremesa junto, pra tapear... Enfim sós. Ah, se ele soubesse... O tempo passa, e mais ou menos 3 ou 4 horas depois, batidas na porta. A maluca havia dito que estaria sozinha, então, a adestradora, junto com a cria da maluca e outra cria enxotada a tiros de um circo de horrores resolvem lhe fazer uma visita. Ambos ficaram desesperados, e no meio de tanta correria, a única idéia que a maluca teve foi trancafiar o menino amarelo num quarto mofado. Nãããããããooooooo! &lt;br /&gt;
&lt;br /&gt;
Todo mundo sabe que o menino amarelo tem alergia a mofo. Mais amarelo do que nunca (quase um verde cana), até que tentou respirar devagar pra não inalar tanto mofo, mas depois de um certo tempo, a idéia não deu muito certo. Enquanto isso, a criatura vinda do circo dos horrores vasculha tudo em todos os aposentos, exceto aquele, que está trancado. Parecia até farejar cheiro de meia com chulé (era o sapato amarelo, mas tudo bem). E o Poodle até que não mostrou os dentes, ficou quietinho...&lt;br /&gt;
&lt;br /&gt;
Diante do amarelo, havia uma janela. Gradeada por fora, mas era uma fresta de ar... E ali ele ficou feito peixe em rio poluído até a cavalaria do apocalipse ir embora... E que alívio... Parecia aquelas cenas de filme quando o navio afunda e há alguma câmara de ar, e os náufragos tomam o último fôlego antes de ir até a superfície, 150 metros acima...&lt;br /&gt;
&lt;br /&gt;
&lt;!-- google_ad_section_end --&gt;  &lt;a rel="license" href="http://creativecommons.org/licenses/by-nc-nd/2.5/br/"&gt;&lt;img alt="Creative Commons License" style="border-width:0" src="http://i.creativecommons.org/l/by-nc-nd/2.5/br/88x31.png" /&gt;&lt;/a&gt;&lt;br /&gt;
Esta &lt;span xmlns:dc="http://purl.org/dc/elements/1.1/" href="http://purl.org/dc/dcmitype/Text" rel="dc:type"&gt;obra&lt;/span&gt; est&amp;#225; licenciada sob uma &lt;a rel="license" href="http://creativecommons.org/licenses/by-nc-nd/2.5/br/"&gt;Licen&amp;#231;a Creative Commons&lt;/a&gt;.  &lt;/span&gt;  &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29558514-8101910740667128908?l=sfohart.blogspot.com'/&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/ljHYGBCixfBP13sKY743vkKuiUA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ljHYGBCixfBP13sKY743vkKuiUA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/ljHYGBCixfBP13sKY743vkKuiUA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ljHYGBCixfBP13sKY743vkKuiUA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Soriano/~4/NboxrbBNJn8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://sfohart.blogspot.com/feeds/8101910740667128908/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://sfohart.blogspot.com/2009/09/o-menino-amarelo-o-cativeiro-mofado.html#comment-form" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/29558514/posts/default/8101910740667128908?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/29558514/posts/default/8101910740667128908?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Soriano/~3/NboxrbBNJn8/o-menino-amarelo-o-cativeiro-mofado.html" title="[O Menino Amarelo] O Cativeiro Mofado" /><author><name>Soriano</name><email>sfohart@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="11910608697604757158" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://sfohart.blogspot.com/2009/09/o-menino-amarelo-o-cativeiro-mofado.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEYFSH4zcSp7ImA9WxNQFU4.&quot;"><id>tag:blogger.com,1999:blog-29558514.post-4015633986073807907</id><published>2009-09-21T08:21:00.000-03:00</published><updated>2009-09-21T08:21:59.089-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-09-21T08:21:59.089-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="perfeccionismo" /><title>[Vimeo] Origami - In the Pursuit of Perfection</title><content type="html">&lt;div style="font-family: Verdana,sans-serif; font-size: small; text-align: justify;"&gt;De bobeira, inventei de ir catar alguns videos no &lt;a href="http://www.vimeo.com"&gt;Vimeo&lt;/a&gt;. Afinal de contas, não é só o &lt;a href="http://www.youtube.com"&gt;Youtube&lt;/a&gt; que tem coisa boa. Acabei achando essa animação bacaninha sobre origamis. Sem legenda, mas vale a pena :P&lt;br /&gt;
&lt;!-- google_ad_section_start --&gt; &lt;br /&gt;
&lt;object width="400" height="225"&gt;&lt;param name="allowfullscreen" value="true" /&gt;&lt;param name="allowscriptaccess" value="always" /&gt;&lt;param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=2188162&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=&amp;amp;fullscreen=1" /&gt;&lt;embed src="http://vimeo.com/moogaloop.swf?clip_id=2188162&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=&amp;amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="225"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;p&gt;&lt;a href="http://vimeo.com/2188162"&gt;Origami In the Pursuit of Perfection&lt;/a&gt; from &lt;a href="http://vimeo.com/user915053"&gt;MABONA ORIGAMI&lt;/a&gt; on &lt;a href="http://vimeo.com"&gt;Vimeo&lt;/a&gt;.&lt;/p&gt;&lt;!-- google_ad_section_end --&gt;  &lt;a rel="license" href="http://creativecommons.org/licenses/by-nc-nd/2.5/br/"&gt;&lt;img alt="Creative Commons License" style="border-width:0" src="http://i.creativecommons.org/l/by-nc-nd/2.5/br/88x31.png" /&gt;&lt;/a&gt;&lt;br /&gt;
Esta &lt;span xmlns:dc="http://purl.org/dc/elements/1.1/" href="http://purl.org/dc/dcmitype/Text" rel="dc:type"&gt;obra&lt;/span&gt; est&amp;#225; licenciada sob uma &lt;a rel="license" href="http://creativecommons.org/licenses/by-nc-nd/2.5/br/"&gt;Licen&amp;#231;a Creative Commons&lt;/a&gt;.  &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29558514-4015633986073807907?l=sfohart.blogspot.com'/&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/b40-FylQ1RhAVj9OCaLhv5pZJyY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/b40-FylQ1RhAVj9OCaLhv5pZJyY/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/b40-FylQ1RhAVj9OCaLhv5pZJyY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/b40-FylQ1RhAVj9OCaLhv5pZJyY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Soriano/~4/bK58r3aIyE4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://sfohart.blogspot.com/feeds/4015633986073807907/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://sfohart.blogspot.com/2009/09/vimeo-origami-in-pursuit-of-perfection.html#comment-form" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/29558514/posts/default/4015633986073807907?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/29558514/posts/default/4015633986073807907?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Soriano/~3/bK58r3aIyE4/vimeo-origami-in-pursuit-of-perfection.html" title="[Vimeo] Origami - In the Pursuit of Perfection" /><author><name>Soriano</name><email>sfohart@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="11910608697604757158" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://sfohart.blogspot.com/2009/09/vimeo-origami-in-pursuit-of-perfection.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUYNSHg5fip7ImA9WxNXEks.&quot;"><id>tag:blogger.com,1999:blog-29558514.post-8257550235316442446</id><published>2009-09-17T22:27:00.002-03:00</published><updated>2009-09-29T19:26:39.626-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-09-29T19:26:39.626-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="bizarro" /><title>[+18] FUUUUUU - salto mortal</title><content type="html">&lt;div style="font-family: Verdana,sans-serif; font-size: small; text-align: justify;"&gt;Depois dessa, eu JURO que NUNCA mais dou salto mortal de escadas, pedras, ou seja lá que poha for, mesmo que seja a menos de 1 metro de altura!&lt;br /&gt;
&lt;span id="fullpost"&gt;&lt;br /&gt;
&lt;!-- google_ad_section_start --&gt; &lt;br /&gt;
&lt;embed src='http://www.videolog.tv/ajax/codigoPlayer.php?id_video=483060&amp;relacionados=S&amp;default=S&amp;lang=PT_BR&amp;cor_fundo=000000&amp;swf=1&amp;width=424&amp;height=318' width='424' height='318' type='application/x-shockwave-flash' allowFullScreen='true' AllowScriptAccess='always'&gt;&lt;/embed&gt;&lt;br /&gt;
&lt;br /&gt;
UPDATE: Tiraram o video do ar no vimeo, mas achei em outro lugar.&lt;br /&gt;
&lt;br /&gt;
&lt;!-- google_ad_section_end --&gt;  &lt;a rel="license" href="http://creativecommons.org/licenses/by-nc-nd/2.5/br/"&gt;&lt;img alt="Creative Commons License" style="border-width:0" src="http://i.creativecommons.org/l/by-nc-nd/2.5/br/88x31.png" /&gt;&lt;/a&gt;&lt;br /&gt;
Esta &lt;span xmlns:dc="http://purl.org/dc/elements/1.1/" href="http://purl.org/dc/dcmitype/Text" rel="dc:type"&gt;obra&lt;/span&gt; est&amp;#225; licenciada sob uma &lt;a rel="license" href="http://creativecommons.org/licenses/by-nc-nd/2.5/br/"&gt;Licen&amp;#231;a Creative Commons&lt;/a&gt;.  &lt;/span&gt;  &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29558514-8257550235316442446?l=sfohart.blogspot.com'/&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/SvV3_eer6VNaESmX696ioQNQx50/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/SvV3_eer6VNaESmX696ioQNQx50/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/SvV3_eer6VNaESmX696ioQNQx50/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/SvV3_eer6VNaESmX696ioQNQx50/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Soriano/~4/F6oMYEnrdXE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://sfohart.blogspot.com/feeds/8257550235316442446/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://sfohart.blogspot.com/2009/09/fuuuuuuu-salto-mortal.html#comment-form" title="4 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/29558514/posts/default/8257550235316442446?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/29558514/posts/default/8257550235316442446?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Soriano/~3/F6oMYEnrdXE/fuuuuuuu-salto-mortal.html" title="[+18] FUUUUUU - salto mortal" /><author><name>Soriano</name><email>sfohart@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="11910608697604757158" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">4</thr:total><feedburner:origLink>http://sfohart.blogspot.com/2009/09/fuuuuuuu-salto-mortal.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEEESHc9eyp7ImA9WxNSGUQ.&quot;"><id>tag:blogger.com,1999:blog-29558514.post-8490636204431182450</id><published>2009-09-03T13:15:00.002-03:00</published><updated>2009-09-03T13:50:09.963-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-09-03T13:50:09.963-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="SCJP" /><title>SCJP - 07 - Collections [parte 02]</title><content type="html">&lt;div style="font-family: Verdana,sans-serif; font-size: small; text-align: justify;"&gt;Bem, eu pensava que os termos &lt;i&gt;order&lt;/i&gt; e &lt;i&gt;sort&lt;/i&gt; em inglês significavam a mesma coisa, mas a gente já sabe que isso não é verdade. Vimos duas interfaces úteis para definir o modo como objetos devem ser ordenados numa coleção. E agora, como faço a ordenação, de fato?&lt;br /&gt;
&lt;span id="fullpost"&gt;&lt;!-- google_ad_section_start --&gt; &lt;br /&gt;
&lt;h3&gt;Ordenando Coleções&lt;/h3&gt;&lt;br /&gt;
Tome o seguinte trecho de código, onde tentamos ordenar uma certa lista de pessoas:&lt;br /&gt;
&lt;br /&gt;
&lt;pre name="code" class="java"&gt;import java.util.*;
import java.io.*;

class Pessoa { 
    private String nome;
    
    public Pessoa (String nome){
        this.nome = nome;
    }
    
    public String getNome() {
        return this.nome;
    }
    
    public void setNome(String nome){
        this.nome = nome;
    }
 
    public String toString() {
        String result = "nome: " + this.nome;
        return result;
    }
}

public class Principal {
    public static void main(String[] args){
        List&amp;lt;Pessoa&amp;gt; listaPessoa = new ArrayList&amp;lt;Pessoa&amp;gt;();
        listaPessoa.add(new Pessoa("Fulano"));
        listaPessoa.add(new Pessoa("Cicrano"));
        listaPessoa.add(new Pessoa("Beltrano"));

        Collections.sort(listaPessoa);
        System.out.println(listaPessoa);
    }
}
&lt;/pre&gt;&lt;br /&gt;
Note que não definimos qualquer ordenação natural, como no &lt;a href="http://sfohart.blogspot.com/2009/09/scjp-07-collections-parte-01.html"&gt;post anterior&lt;/a&gt;. Ao tentar compilar este código, temos o seguinte:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_xnGn5_2-w_k/Sp-lxbmOK_I/AAAAAAAAIF4/Qfdh4vR1TU4/s1600-h/ScreenHunter_01+Sep.+03+08.17.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_xnGn5_2-w_k/Sp-lxbmOK_I/AAAAAAAAIF4/Qfdh4vR1TU4/s400/ScreenHunter_01+Sep.+03+08.17.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Se consultarmos a api do Java para este método, veremos que:&lt;br /&gt;
&lt;br /&gt;
&lt;pre name="code" class="java"&gt;static &amp;lt;T extends Comparable&amp;lt;? super T&amp;gt;&amp;gt;
void sort(List&amp;lt;T&amp;gt; list)
&lt;/pre&gt;&lt;br /&gt;
É meio confuso ler esta assinatura de método, mas perceba que a lista que o método recebe é parametrizada. E o parâmetro é uma classe que &lt;b&gt;deve&lt;/b&gt; implementar a interface &lt;i&gt;Comparable&lt;/i&gt;. Mais precisamente, qualquer subclasse para qual exista uma superclasse que implemente esta interface.&lt;br /&gt;
&lt;br /&gt;
Existe uma sobrecarga deste método, que recebe uma instância de &lt;i&gt;Comparator&lt;/i&gt;:&lt;br /&gt;
&lt;br /&gt;
&lt;pre name="code" class="java"&gt;static &amp;lt;T&amp;gt; void sort(List&amp;lt;T&amp;gt; list, Comparator&amp;lt;? super T&amp;gt; c) 
&lt;/pre&gt;&lt;br /&gt;
Também vimos como definir um &lt;i&gt;Comparator&lt;/i&gt; no &lt;a href="http://sfohart.blogspot.com/2009/09/scjp-07-collections-parte-01.html"&gt;post anterior&lt;/a&gt;. O mais interessante, é que podemos instanciar um &lt;i&gt;Comparator&lt;/i&gt; e definir o método de comparação ai mesmo, na passagem de parâmetros, ao invés de se criar uma classe específica. Isto é recomendado apenas se esta instância de comparator, com este critério de ordenação, for utilizado somente uma vez:&lt;br /&gt;
&lt;br /&gt;
&lt;pre name="code" class="java"&gt;Collections.sort(listaPessoa, new Comparator&amp;lt;Pessoa&amp;gt;() {
    public int compare(Pessoa a, Pessoa b) {
        return a.getNome().compareTo(b.getNome());
    }
});
&lt;/pre&gt;&lt;br /&gt;
Existem coisas interessantes como definir uma ordem inversa à ordem natural, de maneira extremamente simples. Para isso, usa-se o método estático Collections.reverseOrder(), que retorna uma instância de Comparator. Este método deve ser usado se a sua classe implementa a interface Comparable. Caso este não seja o caso, e já exista uma implementação de Comparator, use Collections.reverseOrder(Comparator&amp;lt;T&amp;gt; cmp). Pense como se estes métodos retornassem o resultado dos métodos que já vimos anteriormente, multiplicados por -1.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;Ordenando Arrays&lt;/h3&gt;&lt;br /&gt;
Assim como vimos a classe utilitária Collections para a ordenação de coleções, existe também a classe utilitária Arrays, com os mesmos  métodos de ordenação: o que espera listas cujo tipo parametrizado é uma instância de &lt;i&gt;Comparable&lt;/i&gt;, e o que espera uma instância de &lt;i&gt;Comparable&lt;/i&gt; como definição de ordenação. Em adição, existem diversos métodos sobrecarregados iguais a esses, contemplando cada tipo primitivo (char, byte, short, int, boolean, float, double - esqueci de algum?). E mais: para esta classe utilitária, em especial, existem métodos que nos permitem ordenar &lt;i&gt;apenas uma parte do array&lt;/i&gt; de valores. Vale dar uma conferida rápida na &lt;a href="http://java.sun.com/javase/6/docs/api/java/util/Arrays.html"&gt;api&lt;/a&gt; desta classe.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;Buscas em Coleções&lt;/h3&gt;&lt;br /&gt;
Um dos métodos mais eficientes e mais conhecidos para buscas é a &lt;a href="http://pt.wikipedia.org/wiki/Pesquisa_bin%C3%A1ria"&gt;pesquisa binária&lt;/a&gt;. A classe utilitária Collections possui um método chamado binarySearch, que contempla este tipo de pesquisa:&lt;br /&gt;
&lt;br /&gt;
&lt;pre name="code" class="java"&gt;static &amp;lt;T&amp;gt; int
binarySearch(List&amp;lt;? extends Comparable&amp;lt;? super T&amp;gt;&amp;gt; list, 
             T key)

static &amp;lt;T&amp;gt; int
binarySearch(List&amp;lt;? extends T&amp;gt; list, T key, 
             Comparator&amp;lt;? super T&amp;gt; c) 
&lt;/pre&gt;&lt;br /&gt;
Note que ambos os métodos esperam uma &lt;b&gt;lista&lt;/b&gt;, pelos motivos que veremos logo a seguir.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://upload.wikimedia.org/wikipedia/commons/3/35/Busca_binaria.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="411" src="http://upload.wikimedia.org/wikipedia/commons/3/35/Busca_binaria.png" width="420" /&gt;&lt;/a&gt;&lt;br /&gt;
Fluxograma extraído da &lt;a href="http://commons.wikimedia.org/wiki/File:Busca_binaria.png"&gt;Wikipedia&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Entretanto, é importante seguir algumas regras:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Buscas &lt;i&gt;com sucesso&lt;/i&gt; retornam o &lt;i&gt;índice&lt;/i&gt; do elemento procurado na lista passada pro parâmetro (para que o objeto possa ser resgatado usando o método &lt;i&gt;get(int index)&lt;/i&gt; da lista).&lt;/li&gt;
&lt;li&gt;Buscas &lt;i&gt;sem sucesso&lt;/i&gt; retornam um valor negativo, que pode ser encarado cmo a &lt;i&gt;posição de inserção&lt;/i&gt; do novo elemento da lista. Por ser um valor negativo (já que 0 é uma posição válida dentro da lista), a primeira posição de inserção válida é -1. Então, este número deve ser "transformado" para um valor positivo através do cálculo (-&amp;lt;&lt;i&gt;ponto de inserção&lt;/i&gt;&amp;gt; - 1).&lt;/li&gt;
&lt;li&gt;A coleção &lt;b&gt;deve ser ordenada&lt;/b&gt; antes de se efetuar qualquer busca.&lt;/li&gt;
&lt;li&gt;Se a coleção for ordenada utilizando determinado método de classificação (natural - implementando a interface &lt;i&gt;Comparable&lt;/i&gt; - ou algum específico - implementando a interface &lt;i&gt;Comparator&lt;/i&gt;), as buscas devem ser feitas utilizando &lt;b&gt;exatamente o mesmo método de classificação&lt;/b&gt;.&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
O não uso da mesma estratégia de classificação na busca e na ordenação, ou a não ordenação da coleção antes da busca pode tornar os resultados da busca imprevisiveis.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;Buscando em Arrays&lt;/h3&gt;&lt;br /&gt;
Novamente, existem métodos similares aos citados para buscas nas coleções na classe utilitária Arrays. As regras para o uso destes métodos são as mesmas que as citadas para as coleções. Também existem sobrecargas desses métodos para cada primitiva existente, bem como sobrecargas para que buscas sejam efetuadas apenas numa parte do array. Para dúvidas, consultar a &lt;a href="http://www.j2ee.me/javase/6/docs/api/java/util/Arrays.html"&gt;api&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;Curiosidades sobre métodos de busca&lt;/h3&gt;&lt;br /&gt;
A despeito do conhecimento da maioria, existe um tipo de busca chamado de &lt;a href="http://en.wikipedia.org/wiki/Interpolation_search"&gt;Busca por Interpolação&lt;/a&gt;, que é &lt;i&gt;mais eficiente&lt;/i&gt; que a busca binária. Isso porque o algoritmo utiliza &lt;a href="http://pt.wikipedia.org/wiki/Interpola%C3%A7%C3%A3o"&gt;interpolação&lt;/a&gt; linear para meio que "adivinhar" a posição do elemeto procurado, no caso de elementos uniformemente distribuídos. Vale a pena dar uma olhada, a título de informação.&lt;br /&gt;
&lt;br /&gt;
&lt;!-- google_ad_section_end --&gt;  &lt;a rel="license" href="http://creativecommons.org/licenses/by-nc-nd/2.5/br/"&gt;&lt;img alt="Creative Commons License" style="border-width:0" src="http://i.creativecommons.org/l/by-nc-nd/2.5/br/88x31.png" /&gt;&lt;/a&gt;&lt;br /&gt;
Esta &lt;span xmlns:dc="http://purl.org/dc/elements/1.1/" href="http://purl.org/dc/dcmitype/Text" rel="dc:type"&gt;obra&lt;/span&gt; est&amp;#225; licenciada sob uma &lt;a rel="license" href="http://creativecommons.org/licenses/by-nc-nd/2.5/br/"&gt;Licen&amp;#231;a Creative Commons&lt;/a&gt;.  &lt;/span&gt;  &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29558514-8490636204431182450?l=sfohart.blogspot.com'/&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/M2ZOSY1qTyS9vBszI7E6KSwb4RY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/M2ZOSY1qTyS9vBszI7E6KSwb4RY/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/M2ZOSY1qTyS9vBszI7E6KSwb4RY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/M2ZOSY1qTyS9vBszI7E6KSwb4RY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Soriano/~4/bqyioxgO4so" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://sfohart.blogspot.com/feeds/8490636204431182450/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://sfohart.blogspot.com/2009/09/scjp-07-collections-parte-02.html#comment-form" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/29558514/posts/default/8490636204431182450?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/29558514/posts/default/8490636204431182450?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Soriano/~3/bqyioxgO4so/scjp-07-collections-parte-02.html" title="SCJP - 07 - Collections [parte 02]" /><author><name>Soriano</name><email>sfohart@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="11910608697604757158" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_xnGn5_2-w_k/Sp-lxbmOK_I/AAAAAAAAIF4/Qfdh4vR1TU4/s72-c/ScreenHunter_01+Sep.+03+08.17.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://sfohart.blogspot.com/2009/09/scjp-07-collections-parte-02.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ak4GSH04eSp7ImA9WxNSGUo.&quot;"><id>tag:blogger.com,1999:blog-29558514.post-4676069806909116685</id><published>2009-09-02T16:08:00.004-03:00</published><updated>2009-09-03T08:55:29.331-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-09-03T08:55:29.331-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="SCJP" /><title>SCJP - 07 - Collections [parte 01]</title><content type="html">&lt;div style="font-family: Verdana,sans-serif; font-size: small; text-align: justify;"&gt;E lá vou eu, ainda estudando muito pouco sobre a certificação. Mas aos poucos a gente vai lendo, e pelo menos tem noção do que é cobrado ou não no exame. Hoje, o assunto são as coleções do Java 6.&lt;br /&gt;
&lt;span id="fullpost"&gt;&lt;!-- google_ad_section_start --&gt; &lt;br /&gt;
Esta imagem, retirada do livro da SCJP 6, demonstra bem o que a api fornece em termos de classes, interfaces e utilitarios:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_xnGn5_2-w_k/Sp5T0E5NofI/AAAAAAAAIFw/YLhjq8qFTxs/s1600-h/java-collection.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_xnGn5_2-w_k/Sp5T0E5NofI/AAAAAAAAIFw/YLhjq8qFTxs/s400/java-collection.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Pelo diagrama de classes exibido acima, já podemos esclarecer algo importante: &lt;b&gt;Nem todas as classes concretas herdam de Collection&lt;/b&gt;. É o caso, obviamente, das classes utilitárias (Collections e Arrays), e de todas as classes/interfaces relacionadas a Map (SortedMap, HashMap, Hashtable, TreeMap, LinkedHashMap e NavigableMap). &lt;b&gt;Lembre-se disso ao tentar fazer conversões (&lt;i&gt;cast&lt;/i&gt;) entre estes tipos.&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Existem quatro comportamentos básicos, como também é visto no diagrama acima: as listas (List), os conjuntos (Set), os mapas (Map) e as filas (Queue). Falando dos mais complexos: os mapas relacionam uma chave, que pode ser qualquer coisa (desde que herde de Object) com um valor qualquer (também herdando de Object). Assim, vc pode mapear Integers em Strings, Strings em outros Maps, e por ai vai. As filas funcionam como uma lista de prioridades, ora implementadas como FIFO (&lt;i&gt;first-in-first-out&lt;/i&gt;, ou &lt;i&gt;primeiro a entrar é o primeiro a sair&lt;/i&gt;) ou como LIFO (&lt;i&gt;last-in-first-out&lt;/i&gt;, ou &lt;i&gt;ultimo a entrar é o primeiro a sair&lt;/i&gt;, também conhecido como &lt;i&gt;pilha&lt;/i&gt; ou &lt;i&gt;stack&lt;/i&gt;).&lt;br /&gt;
&lt;br /&gt;
Existem também dois conceitos chave no que se refere a coleções em Java: &lt;b&gt;ordenação&lt;/b&gt; e &lt;b&gt;classificação&lt;/b&gt;. Existem coleções não ordenadas e não classificadas, coleções ordenadas e não classificadas, e coleções ordenadas e classificadas. Não existem coleções classificadas e não ordenadas, porque classificação é um tipo específico de ordenação. Qual a diferença entre um e outro? Até eles admitem que é um tanto confuso :P&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;Ordenação e Classificação&lt;/h3&gt;&lt;br /&gt;
&lt;b&gt;Ordenação&lt;/b&gt; se refere a como os elementos lhe são apresentados durante uma iteração sobre a coleção. Ao iterar sobre uma coleção, você espera encontrar elementos dispostos em uma &lt;i&gt;ordem (não randômica)&lt;/i&gt;. Algumas coleções mantém a ordem dos elementos baseadas num índice, outras baseadas no método de inserção (sempre ao final, por exemplo).&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Classificação&lt;/b&gt; é um tipo de ordenação que toma por base propriedades do próprio objeto. A mais comum é a classificação &lt;i&gt;natural&lt;/i&gt;, como por exemplo a alfabética ou a numérica. Quando não existe uma classificação natural para os objetos de uma classe, é preciso definí-la programaticamente, usando uma de duas alternativas: as interfaces &lt;i&gt;Comparable&lt;/i&gt; e &lt;i&gt;Comparator&lt;/i&gt;.&lt;br /&gt;
&lt;br /&gt;
Para a primeira das alternativas, as classes passivas de classificação devem implementar a interface &lt;i&gt;Comparable&lt;/i&gt;, que exige apenas a implementação do método compareTo().&lt;br /&gt;
&lt;br /&gt;
&lt;pre name="code" class="java"&gt;public class Pessoa implements Comparable&amp;lt;Pessoa&amp;gt; {
    private String nome;
    ...
    public int compareTo(Pessoa pessoa) {       
        //Lembrando que String implementa Comparable 
        return this.getNome().compareTo(pessoa.getNome());
    }
}
&lt;/pre&gt;&lt;br /&gt;
O contrato para este método é:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Deve ser um método público, retornar um inteiro primitivo, e receber como parâmetro, um objeto da própria classe.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Retorne 0&lt;/b&gt;, se o objeto em questão &lt;b&gt;for logicamente igual&lt;/b&gt; que o objeto passad como parâmetro.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Retorne um inteiro negativo&lt;/b&gt;, se o objeto em questão &lt;b&gt;for logicamente menor&lt;/b&gt; que o objeto passado como parâmetro.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Retorne um inteiro positivo&lt;/b&gt;, se o objeto em questão &lt;b&gt;for logicamente maior&lt;/b&gt; que o objeto passado como parâmetro&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
Para a segunda alternativa, é preciso criar uma classe em separado, que implemente a interface &lt;i&gt;Comparator&lt;/i&gt;:&lt;br /&gt;
&lt;br /&gt;
&lt;pre name="code" class="java"&gt;import java.util.*;
public class PessoaComparator implements Comparator&amp;lt;Pessoa&amp;gt; {
    public int compare(Pessoa a, Pessoa b) {
        //Lembrando que String implementa Comparable
        return a.getNome().compareTo(b.getNome());
    }
}
&lt;/pre&gt;&lt;br /&gt;
O que diferencia uma da outra, em termos do contrato de implementação, é apenas a assinatura do método: precisa receber duas instâncias da classe passível de classificação. A lógica de retorno é a mesma definida para a interface &lt;i&gt;Comparable&lt;/i&gt;.&lt;br /&gt;
&lt;br /&gt;
Uma observação importante, é que devemos (ou deveríamos) verificar se os objetos são &lt;i&gt;mutuamente comparáveis&lt;/i&gt;. Geralmente, não gostaríamos que fosse possível comparar instâncias de Pombo e Jacare, por exemplo. Isso só deve acontecer em casos &lt;b&gt;bem específicos&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;!-- google_ad_section_end --&gt;  &lt;a rel="license" href="http://creativecommons.org/licenses/by-nc-nd/2.5/br/"&gt;&lt;img alt="Creative Commons License" style="border-width:0" src="http://i.creativecommons.org/l/by-nc-nd/2.5/br/88x31.png" /&gt;&lt;/a&gt;&lt;br /&gt;
Esta &lt;span xmlns:dc="http://purl.org/dc/elements/1.1/" href="http://purl.org/dc/dcmitype/Text" rel="dc:type"&gt;obra&lt;/span&gt; est&amp;#225; licenciada sob uma &lt;a rel="license" href="http://creativecommons.org/licenses/by-nc-nd/2.5/br/"&gt;Licen&amp;#231;a Creative Commons&lt;/a&gt;.  &lt;/span&gt;  &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29558514-4676069806909116685?l=sfohart.blogspot.com'/&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/T5bMcHLgheX-xmhyeixzr21UG90/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/T5bMcHLgheX-xmhyeixzr21UG90/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/T5bMcHLgheX-xmhyeixzr21UG90/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/T5bMcHLgheX-xmhyeixzr21UG90/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Soriano/~4/HAHRUFxpuDc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://sfohart.blogspot.com/feeds/4676069806909116685/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://sfohart.blogspot.com/2009/09/scjp-07-collections-parte-01.html#comment-form" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/29558514/posts/default/4676069806909116685?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/29558514/posts/default/4676069806909116685?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Soriano/~3/HAHRUFxpuDc/scjp-07-collections-parte-01.html" title="SCJP - 07 - Collections [parte 01]" /><author><name>Soriano</name><email>sfohart@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="11910608697604757158" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_xnGn5_2-w_k/Sp5T0E5NofI/AAAAAAAAIFw/YLhjq8qFTxs/s72-c/java-collection.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://sfohart.blogspot.com/2009/09/scjp-07-collections-parte-01.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0AFSH07cCp7ImA9WxNSF08.&quot;"><id>tag:blogger.com,1999:blog-29558514.post-2482751944704311414</id><published>2009-08-31T09:20:00.003-03:00</published><updated>2009-08-31T09:28:39.308-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-08-31T09:28:39.308-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="SCJP" /><title>SCJP - 07 - Equals e Hashcode</title><content type="html">&lt;div style="font-family: Verdana,sans-serif; font-size: small; text-align: justify;"&gt;É, eu sei, eu tenho estudado pouco para a certificação. E sei que isso mais cedo ou mais tarde vai dar merda... Comecei o capítulo 7 hoje, e nem sei quando eu vou terminar de lê-lo. Ando só lendo, nada de exercício, trabalho nao deixa, e chego meio cansado em casa... Bem, chega de &lt;a href="http://desciclo.pedia.ws/wiki/Mimimi"&gt;mimimi&lt;/a&gt; e vamos ao que interessa.&lt;br /&gt;
&lt;span id="fullpost"&gt;&lt;br /&gt;
&lt;!-- google_ad_section_start --&gt; &lt;br /&gt;
&lt;h4&gt;Equals - Pra que?&lt;/h4&gt;&lt;br /&gt;
Por que usar equals? Quando você não o sobrescreve, acaba usando a implementação da classe Object, onde equals() e == significam a mesma coisa. O operador == verifica se dois objetos são idênticos, ou seja, se duas variáveis de referência possuem a mesma sequência de bits, o que significa que referenciam o mesmo objeto em memória.&lt;br /&gt;
&lt;br /&gt;
Um bom motivo para usar uma versão sobrescrita do método equals() é a necessidade de usar um Map no Java. Map&lt;K,V&gt; é uma estrutura na qual você mapeia um valor do tipo V usando uma chave do tipo K. As chaves devem ser únicas no mapa. Você, invariavelmente, vai precisar instanciar um novo objeto do tipo K, usando certos dados significativos, para resgatar um valor do tipo V no Map. Se não implementar o método equals(), o objeto que foi usado como chave no Map &lt;b&gt;nunca&lt;/b&gt; será igual ao que você acaba de instanciar.&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;Equals - Como?&lt;/h4&gt;&lt;br /&gt;
Implementar o método equals() é relativamente simples, mas se faz necessário certos cuidados. Quando se usa a geração automática de código do Eclipse, algo parecido com o código abaixo é gerado:&lt;br /&gt;
&lt;br /&gt;
&lt;pre name="code" class="java"&gt;public boolean equals(Object obj) {
    if (this == obj)
        return true;
    if (!super.equals(obj))
        return false;
    if (getClass() != obj.getClass())
        return false;

    ...
}
&lt;/pre&gt;&lt;br /&gt;
Primeiramente, se duas variáveis de referência referenciam o mesmo objeto, obviamente, elas possuem o mesmo conteúdo. Se a sua classe é derivada de outra, é prudente fazer um teste com o equals() da superclasse. Note também que a terceira condicional tem semântica semelhante ao &lt;b&gt;instanceof&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;
Às reticências, seguiriam um cast para o tipo da classe, e a comparação, campo a campo, da chamada chave de negócio. &lt;br /&gt;
&lt;br /&gt;
&lt;blockquote&gt;&lt;b&gt;Chave de negócio&lt;/b&gt;, entre outras palavras, é um conjunto de campos que tornam um registro único em relação aos demais.&lt;/blockquote&gt;&lt;br /&gt;
Para uma implementação "correta" do método equals, note o seguinte:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;O método equals() é &lt;b&gt;público&lt;/b&gt;, precisa receber um &lt;b&gt;Object&lt;/b&gt; como parâmetro, e deve retornar um valor primitivo &lt;b&gt;boolean&lt;/b&gt;.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Reflexão&lt;/b&gt;: Para todo objeto x, o teste x.equals(x) é verdadeiro.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Elemento Nulo&lt;/b&gt;: Para todo x, x.equals(null) é falso.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Transitividade&lt;/b&gt;: Para todo x, y, z, se x.equals(y) e y.equals(z), então x.equals(z).&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Simetria&lt;/b&gt;: Para todo x e y, se x.equals(y), então y.equals(x).&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Consistência&lt;/b&gt;: Obviamente, que para todo x e y, se nenhuma informação usada na comparação em ambas as variáveis de referência for modificada, múltiplas chamadas a x.equals(y) ou retornam &lt;b&gt;true&lt;/b&gt;, ou retornam &lt;b&gt;false&lt;/b&gt;.&lt;br /&gt;
&lt;/ul&gt;&lt;h4&gt;Hashcode - Pra que?&lt;/h4&gt;&lt;blockquote&gt;Uma função hash é um procedimento bem definido ou função matemática que converte uma quantidade variável (possivelmente grande) de dados em um pequeno dado, muitas vezes um inteiro, usado como índice em tabelas. [&lt;a href="http://en.wikipedia.org/wiki/Hashcode"&gt;Wikipedia&lt;/a&gt;]&lt;/blockquote&gt;As tais tabelas, citadas na definição acima traduzida livremente por mim, fazem referênia às tabelas de dispersão:      &lt;blockquote&gt;Em ciência da computação, uma tabela de dispersão (também conhecida por tabela de espalhamento ou tabela hash, do inglês hash) é uma estrutura de dados especial, que associa chaves de pesquisa a valores. Seu objetivo é, a partir de uma chave simples, fazer uma busca rápida e obter o valor desejado. [&lt;a href="http://pt.wikipedia.org/wiki/Tabela_de_dispers%C3%A3o"&gt;Wikipedia&lt;/a&gt;]&lt;/blockquote&gt;Em java, estruturas como HashMap, HashSet e outras, usam o hashcode para definir &lt;i&gt;onde&lt;/i&gt; um registro será armazenado, de forma que, também usando o hashcode, este registro seja resgatado com custo O(1) no melhor caso (complexidade de algoritmos). Para se resgatar um registro, usa-se normalmente o hashcode() para saber em quais posições da estrutura de dados procurar, e o método equals() para verificar se aquele é o registro procurado. Por isso, costuma-se dizer que, para manter a lógica da aplicação, equals() e hashcode() devem usar a mesma chave de negócio. Além disso, se dois objetos podem cair numa mesma posição da estrutura de dados, usando o hashcode() como meio de endereçamento, isso significa que existem x e y para os quais hashcode(x) = hashcode(y), o que costuma-se chamar de &lt;a href="http://pt.wikipedia.org/wiki/Tabela_de_dispers%C3%A3o#Colis.C3.B5es"&gt;colisão&lt;/a&gt;.  &lt;h4&gt;Hashcode - Como?&lt;/h4&gt;Existem muitas formas de implementar uma funçao hashcode, como também descrito aqui, mas vamos dar uma olhada naquela que o Eclipse nos fornece, automaticamente:  &lt;pre name="code" class="java"&gt;public int hashCode() {
    final int prime = 31;
    int result = 1;
    result = prime * result
        + ((campoX == null) ? 0 : campoX.hashCode());

    ... // para outros campos, siga como acima.
    return result;
}
&lt;/pre&gt;É possível perceber que, ao final, é feita uma multiplicação como a seguinte:  &lt;pre&gt;hash(A1,...,An) = n * hash(A1,...,An-1) + hash(An)
&lt;/pre&gt;Onde n é um número primo.       &lt;blockquote&gt;Isso porque a escolha de n influencia o espalhamento dos registros, e números primos tendem a distribuir os restos da divisão de maneira mais uniforme que os não primos. [&lt;a href="http://www.icmc.sc.usp.br/~sce183/hash1.html"&gt;Hashing. Pimente, Graça &amp; Cristina, Maria. ICMC&lt;/a&gt;] &lt;/blockquote&gt;Obs.: Não tomem essa função como 100% correta :P   Assim como a implementação do equals() segue um certo &lt;b&gt;contrato&lt;/b&gt;, também o é com a implementação do hashcode().    &lt;ul&gt;&lt;li&gt;Sempre que invocado no mesmo objeto mais de uma vez durante a execução de uma aplicação Java, o método hashcode() precisa retornar o mesmo resultado, se nenhuma informação usada pelo método equals() for alterada. O método hashcode() não precisa manter a consistência do resultado de uma execução da aplicação para outra.&lt;/li&gt;
&lt;li&gt;Para todo x,y, se x.equals(y) == true, então hashcode(x) == hashcode(y). Pela lei da &lt;a href="http://pt.wikipedia.org/wiki/Tautologia_%28l%C3%B3gica%29"&gt;contraposição&lt;/a&gt;, para os mesmos x,y, se hashcode(x) != hashcode(y), então x.equals(y) == false.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Não&lt;/b&gt; é necessário que dois objetos com o mesmo hashcode() sejam iguais, pelo método equals().&lt;/li&gt;
&lt;/ul&gt;Acho que falei demais, né? :P Espero que tenha ficado o mais claro e resumido possível. Aparentemente, quando se pensa em equals() e hashcode(), não se imagina quanta coisinha de lógica e regras tem nos bastidores...  E, pra variar, no caso de usar campos de data no hashcode, sugiro que você dê uma olhada &lt;a href="http://sfohart.blogspot.com/2008/05/hibernate-e-java-um-dia-eu-mato-vocs-1.html"&gt;nisso&lt;/a&gt;.  

&lt;!-- google_ad_section_end --&gt;  &lt;a rel="license" href="http://creativecommons.org/licenses/by-nc-nd/2.5/br/"&gt;&lt;img alt="Creative Commons License" style="border-width:0" src="http://i.creativecommons.org/l/by-nc-nd/2.5/br/88x31.png" /&gt;&lt;/a&gt; Esta &lt;span xmlns:dc="http://purl.org/dc/elements/1.1/" href="http://purl.org/dc/dcmitype/Text" rel="dc:type"&gt;obra&lt;/span&gt; est&amp;#225; licenciada sob uma &lt;a rel="license" href="http://creativecommons.org/licenses/by-nc-nd/2.5/br/"&gt;Licen&amp;#231;a Creative Commons&lt;/a&gt;.  &lt;/span&gt;  &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29558514-2482751944704311414?l=sfohart.blogspot.com'/&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/hW0V_yDhbQxRg5xkyiPMVlARN60/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/hW0V_yDhbQxRg5xkyiPMVlARN60/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/hW0V_yDhbQxRg5xkyiPMVlARN60/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/hW0V_yDhbQxRg5xkyiPMVlARN60/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Soriano/~4/AUh15iUCQ6M" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://sfohart.blogspot.com/feeds/2482751944704311414/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://sfohart.blogspot.com/2009/08/scjp-07-equals-e-hashcode.html#comment-form" title="1 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/29558514/posts/default/2482751944704311414?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/29558514/posts/default/2482751944704311414?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Soriano/~3/AUh15iUCQ6M/scjp-07-equals-e-hashcode.html" title="SCJP - 07 - Equals e Hashcode" /><author><name>Soriano</name><email>sfohart@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="11910608697604757158" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total><feedburner:origLink>http://sfohart.blogspot.com/2009/08/scjp-07-equals-e-hashcode.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEcMQ344eCp7ImA9WxNSEEg.&quot;"><id>tag:blogger.com,1999:blog-29558514.post-5415875593042430195</id><published>2009-08-23T15:28:00.000-03:00</published><updated>2009-08-23T15:28:02.030-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-08-23T15:28:02.030-03:00</app:edited><title>Coisas para se fazer ao sair de um motel</title><content type="html">&lt;div style="font-family: Verdana,sans-serif; font-size: small; text-align: justify;"&gt;&lt;!-- google_ad_section_start --&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Saia apertando todas as campainhas de todos os quartos&lt;/li&gt;
&lt;li&gt;Pague o período inteiro com moedas de R$0,01&lt;/li&gt;
&lt;li&gt;Berre pelo corredor em alto e bom som: desculpe incomodar o silêncio da trepada de vocês, eu venho aqui trazendo o delicioso mendorato na promoção, 3 por R$1,00...&lt;/li&gt;
&lt;li&gt;Bata insistentemente na porta de um dos quartos, aos berros, &lt;a href="http://sfohart.blogspot.com/2009/03/o-menino-amarelo-o-recepcionista_11.html"&gt;falando que o tempo acabou&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
Quem sugere mais coisa? :P&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;!-- google_ad_section_end --&gt;  &lt;a rel="license" href="http://creativecommons.org/licenses/by-nc-nd/2.5/br/"&gt;&lt;img alt="Creative Commons License" style="border-width:0" src="http://i.creativecommons.org/l/by-nc-nd/2.5/br/88x31.png" /&gt;&lt;/a&gt;&lt;br /&gt;
Esta &lt;span xmlns:dc="http://purl.org/dc/elements/1.1/" href="http://purl.org/dc/dcmitype/Text" rel="dc:type"&gt;obra&lt;/span&gt; est&amp;#225; licenciada sob uma &lt;a rel="license" href="http://creativecommons.org/licenses/by-nc-nd/2.5/br/"&gt;Licen&amp;#231;a Creative Commons&lt;/a&gt;.  &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29558514-5415875593042430195?l=sfohart.blogspot.com'/&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/v9zvoo1yemQH1HZ9ne0bHvnLhH4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/v9zvoo1yemQH1HZ9ne0bHvnLhH4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/v9zvoo1yemQH1HZ9ne0bHvnLhH4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/v9zvoo1yemQH1HZ9ne0bHvnLhH4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Soriano/~4/6_lI-Atfy5c" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://sfohart.blogspot.com/feeds/5415875593042430195/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://sfohart.blogspot.com/2009/08/coisas-para-se-fazer-ao-sair-de-um.html#comment-form" title="1 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/29558514/posts/default/5415875593042430195?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/29558514/posts/default/5415875593042430195?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Soriano/~3/6_lI-Atfy5c/coisas-para-se-fazer-ao-sair-de-um.html" title="Coisas para se fazer ao sair de um motel" /><author><name>Soriano</name><email>sfohart@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="11910608697604757158" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total><feedburner:origLink>http://sfohart.blogspot.com/2009/08/coisas-para-se-fazer-ao-sair-de-um.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkIDRHk-eyp7ImA9WxNTFkU.&quot;"><id>tag:blogger.com,1999:blog-29558514.post-1187326175968706056</id><published>2009-08-19T08:12:00.004-03:00</published><updated>2009-08-19T08:16:15.753-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-08-19T08:16:15.753-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="profissão" /><title>Saber sair do emprego: eis a questão.</title><content type="html">&lt;div style="font-family: Verdana,sans-serif; font-size: small; text-align: justify;"&gt;Ouvi, certa feita, que os jovens tem a ansiedade dentro do sangue. A sede de contestar valores, de expressar insatisfação, a pressa para ocupar e conquistar um espaço, em qualquer lugar que seja. Isso não exclui o mercado de trabalho.&lt;br /&gt;
&lt;br /&gt;
&lt;span id="fullpost"&gt;&lt;!-- google_ad_section_start --&gt;&lt;br /&gt;
A primeira assinatura na nossa carteira de trabalho é comemorada como um &lt;a href="http://www.bbmp.com.br/"&gt;campeonato brasileiro&lt;/a&gt; da vida. E o primeiro salário &lt;a href="http://www.artigonal.com/relacionamentos-artigos/20-motivos-pra-levar-um-fora-1037997.html"&gt;vai embora&lt;/a&gt; mais rápido que aquela loira gostosa do bar, quando chegamos junto com cara de peixe morto. O tempo vai passando, e a gente vai ganhando experiência, vai ouvindo conversas aqui e ali, nos corredores, aprendendo com os nossos erros e com os erros alheios.&lt;br /&gt;
&lt;br /&gt;
Entretanto, em algumas ocasiões, as coisas mudam. Surgem novas oportunidades, ou simplesmente a espectativa de crescimento dentro da empresa não nos agrada. Às vezes, não nos sentimos tão confortáveis com algo estático. Há ainda, aquelas ocasiões em que saímos de uma empresa por não aguentar mais um chefe, um colega de trabalho... E ai? &lt;br /&gt;
&lt;br /&gt;
Foi &lt;b&gt;lendo&lt;/b&gt; que eu aprendi grande parte do que eu sei hoje (inclusive, sobre sexo). E foi lendo que eu encontrei &lt;a href="http://www.produzindo.net/saber-sair-do-emprego-e-tao-importante-quanto-saber-procurar-emprego/"&gt;este&lt;/a&gt; artigo, no &lt;a href="http://www.produzindo.net"&gt;Produzindo.net&lt;/a&gt;:&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote&gt;&lt;b&gt;Não se precipite&lt;/b&gt;. Mantenha a calma. A menos que algo terrível tenha acontecido, esta decisão não precisa (e não deve) ser tomada do dia para a noite. Se você pedir as contas por uma simples discussão ou um resultado ruim, não será encarado com bons olhos por chefes nem colegas. Isto pode dificultar muito na hora de conseguir um novo emprego.&lt;/blockquote&gt;&lt;br /&gt;
Leiam o &lt;a href="http://www.produzindo.net/saber-sair-do-emprego-e-tao-importante-quanto-saber-procurar-emprego/"&gt;artigo&lt;/a&gt;, realmente vale &lt;b&gt;muito&lt;/b&gt; a pena.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;!-- google_ad_section_end --&gt; &lt;br /&gt;
&lt;a rel="license" href="http://creativecommons.org/licenses/by-nc-nd/2.5/br/"&gt;&lt;img alt="Creative Commons License" style="border-width:0" src="http://i.creativecommons.org/l/by-nc-nd/2.5/br/88x31.png" /&gt;&lt;/a&gt;&lt;br /&gt;
Esta &lt;span xmlns:dc="http://purl.org/dc/elements/1.1/" href="http://purl.org/dc/dcmitype/Text" rel="dc:type"&gt;obra&lt;/span&gt; est&amp;#225; licenciada sob uma &lt;a rel="license" href="http://creativecommons.org/licenses/by-nc-nd/2.5/br/"&gt;Licen&amp;#231;a Creative Commons&lt;/a&gt;. &lt;/span&gt;  &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29558514-1187326175968706056?l=sfohart.blogspot.com'/&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/wju6U3-hazLEqcblsmvgFASryrQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/wju6U3-hazLEqcblsmvgFASryrQ/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/wju6U3-hazLEqcblsmvgFASryrQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/wju6U3-hazLEqcblsmvgFASryrQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Soriano/~4/HXJdYg-4Gkw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://sfohart.blogspot.com/feeds/1187326175968706056/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://sfohart.blogspot.com/2009/08/saber-sair-do-emprego-eis-questao.html#comment-form" title="2 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/29558514/posts/default/1187326175968706056?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/29558514/posts/default/1187326175968706056?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Soriano/~3/HXJdYg-4Gkw/saber-sair-do-emprego-eis-questao.html" title="Saber sair do emprego: eis a questão." /><author><name>Soriano</name><email>sfohart@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="11910608697604757158" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total><feedburner:origLink>http://sfohart.blogspot.com/2009/08/saber-sair-do-emprego-eis-questao.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkINRX84fCp7ImA9WxNTFkU.&quot;"><id>tag:blogger.com,1999:blog-29558514.post-6286704357777876020</id><published>2009-08-14T16:48:00.000-03:00</published><updated>2009-08-19T08:16:34.134-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-08-19T08:16:34.134-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="profissão" /><title>Calcule sua recisão contratual</title><content type="html">&lt;div style="font-family: Verdana,sans-serif; font-size: small; text-align: justify;"&gt;Ainda não achei o que eu queria, uma calculadora de salário líquido decente. Todas as que eu vi tinham  uma certa variação nos resultados, dando o mesmo valor como entada. Mas... Acabei achando um site onde você pode ter uma noção do quanto ganhará se pedisse demissão hoje.&lt;br /&gt;
&lt;!-- google_ad_section_start --&gt;&lt;br /&gt;
Eu estou falando do site &lt;a href="http://www.calculoexato.com.br/adel/default.asp"&gt;cálculo exato&lt;/a&gt;. Fui lá na parte trabalhista e escolhi calcular uma possível recisão por pedido de demissão. Dá pra rir um pouco :D Bem, isso pode ser útil  mais tarde, então, estou postando aqui pra referências futuras :)&lt;br /&gt;
&lt;br /&gt;
&lt;!-- google_ad_section_end --&gt;   &lt;a rel="license" href="http://creativecommons.org/licenses/by-nc-nd/2.5/br/"&gt;&lt;img alt="Creative Commons License" style="border-width:0" src="http://i.creativecommons.org/l/by-nc-nd/2.5/br/88x31.png" /&gt;&lt;/a&gt;&lt;br /&gt;
Esta &lt;span xmlns:dc="http://purl.org/dc/elements/1.1/" href="http://purl.org/dc/dcmitype/Text" rel="dc:type"&gt;obra&lt;/span&gt; est&amp;#225; licenciada sob uma &lt;a rel="license" href="http://creativecommons.org/licenses/by-nc-nd/2.5/br/"&gt;Licen&amp;#231;a Creative Commons&lt;/a&gt;.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29558514-6286704357777876020?l=sfohart.blogspot.com'/&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/ANKTShKc9AP6aloEvhfhrqqmCi4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ANKTShKc9AP6aloEvhfhrqqmCi4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/ANKTShKc9AP6aloEvhfhrqqmCi4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ANKTShKc9AP6aloEvhfhrqqmCi4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Soriano/~4/dzs4PIfilEA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://sfohart.blogspot.com/feeds/6286704357777876020/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://sfohart.blogspot.com/2009/08/calcule-sua-recisao-contratual.html#comment-form" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/29558514/posts/default/6286704357777876020?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/29558514/posts/default/6286704357777876020?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Soriano/~3/dzs4PIfilEA/calcule-sua-recisao-contratual.html" title="Calcule sua recisão contratual" /><author><name>Soriano</name><email>sfohart@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="11910608697604757158" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://sfohart.blogspot.com/2009/08/calcule-sua-recisao-contratual.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUQMRX47fSp7ImA9WxJaGU0.&quot;"><id>tag:blogger.com,1999:blog-29558514.post-1852223520569922722</id><published>2009-08-09T00:19:00.004-03:00</published><updated>2009-08-10T08:23:04.005-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-08-10T08:23:04.005-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="reflexão" /><title>E o seu relacionamento, como vai?</title><content type="html">&lt;div style="font-family: Verdana,sans-serif; font-size: small; text-align: justify;"&gt;Como não podia deixar de ser, Fausto, o Mestre dos Magos, vai e resolve citar um vídeo do youtube, um programa com toda aquela cara sensacionalista que nós vemos por ai. Mas o interessante foi o episódio em questão, que me fez baixar a sequência de 6 partes aqui pro meu pc.&lt;br /&gt;
&lt;span id="fullpost"&gt;&lt;!-- google_ad_section_start --&gt;&lt;br /&gt;
Uma mulher, que informam ter 19 anos, vai até o programa em questão fazer o tal Teste de Fidelidade. O namorado dela, um cara extremamente culto, do ramo das artes, vai fazer uma entrevista de emprego para um antiquário, entrevista esta totalmente armada pelo programa. A dona do antiquário, atriz do programa (&lt;a href="http://pt.wikipedia.org/wiki/M%C3%A1rcia_Imperator"&gt;Márcia Imperator&lt;/a&gt;, quem não conhece?), tenta seduzí-lo, para testar a fidelidade dele à namorada.&lt;br /&gt;
&lt;br /&gt;
&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/nM5B-8-3kyo&amp;hl=pt-br&amp;fs=1&amp;"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/nM5B-8-3kyo&amp;hl=pt-br&amp;fs=1&amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;
&lt;br /&gt;
O engraçado é o modo como ele fala da namorada dele. O modo como ele se posiciona dentro do próprio relacionamento. O sistema de pesos e medidas que ele adota, até chegar ao climax deste episódio, que aparentemente fez o &lt;a href="http://www.youtube.com"&gt;youtube&lt;/a&gt; pedir confirmação de data de nascimento :D&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Update&lt;/b&gt; - Segue o link dos demais episódios:&lt;br /&gt;
&lt;br /&gt;
Parte 01 - &lt;a href="http://www.youtube.com/watch?v=nM5B-8-3kyo"&gt;http://www.youtube.com/watch?v=nM5B-8-3kyo&lt;/a&gt;&lt;br /&gt;
Parte 02 - &lt;a href="http://www.youtube.com/watch?v=9oKmU_Chfto"&gt;http://www.youtube.com/watch?v=9oKmU_Chfto&lt;/a&gt;&lt;br /&gt;
Parte 03 - &lt;a href="http://www.youtube.com/watch?v=smBbtT5eznA"&gt;http://www.youtube.com/watch?v=smBbtT5eznA&lt;/a&gt;&lt;br /&gt;
Parte 04 - &lt;a href="http://www.youtube.com/watch?v=KDd4AQEdzPM"&gt;http://www.youtube.com/watch?v=KDd4AQEdzPM&lt;/a&gt;&lt;br /&gt;
Parte 05 - &lt;a href="http://www.youtube.com/watch?v=h6WWTrxGMXc"&gt;http://www.youtube.com/watch?v=h6WWTrxGMXc&lt;/a&gt;&lt;br /&gt;
Parte 06 - &lt;a href="http://www.youtube.com/watch?v=Dy65CNjJO1A"&gt;http://www.youtube.com/watch?v=Dy65CNjJO1A&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Dica pra quem quiser baixar estes episódios pro computador: instala o &lt;a href="http://superdownloads.uol.com.br/download/132/vdownloader/"&gt;vdownloader&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;!-- google_ad_section_end --&gt;   &lt;a rel="license" href="http://creativecommons.org/licenses/by-nc-nd/2.5/br/"&gt;&lt;img alt="Creative Commons License" style="border-width:0" src="http://i.creativecommons.org/l/by-nc-nd/2.5/br/88x31.png" /&gt;&lt;/a&gt;&lt;br /&gt;
Esta &lt;span xmlns:dc="http://purl.org/dc/elements/1.1/" href="http://purl.org/dc/dcmitype/Text" rel="dc:type"&gt;obra&lt;/span&gt; est&amp;#225; licenciada sob uma &lt;a rel="license" href="http://creativecommons.org/licenses/by-nc-nd/2.5/br/"&gt;Licen&amp;#231;a Creative Commons&lt;/a&gt;.  &lt;/span&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29558514-1852223520569922722?l=sfohart.blogspot.com'/&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/nkYmhufTBNkAId1bonIMFai8EJM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/nkYmhufTBNkAId1bonIMFai8EJM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/nkYmhufTBNkAId1bonIMFai8EJM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/nkYmhufTBNkAId1bonIMFai8EJM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Soriano/~4/BTzTPSgycsk" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://sfohart.blogspot.com/feeds/1852223520569922722/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://sfohart.blogspot.com/2009/08/e-o-seu-relacionamento-como-vai.html#comment-form" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/29558514/posts/default/1852223520569922722?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/29558514/posts/default/1852223520569922722?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Soriano/~3/BTzTPSgycsk/e-o-seu-relacionamento-como-vai.html" title="E o seu relacionamento, como vai?" /><author><name>Soriano</name><email>sfohart@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="11910608697604757158" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://sfohart.blogspot.com/2009/08/e-o-seu-relacionamento-como-vai.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0YDQX8yfyp7ImA9WxJaFE8.&quot;"><id>tag:blogger.com,1999:blog-29558514.post-605360867317226572</id><published>2009-08-04T12:20:00.001-03:00</published><updated>2009-08-04T20:39:30.197-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-08-04T20:39:30.197-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="informática" /><category scheme="http://www.blogger.com/atom/ns#" term="profissão" /><title>Escrever bem pode salvar o seu emprego</title><content type="html">&lt;div style="font-family: Verdana,sans-serif; font-size: small; text-align: justify;"&gt;Tem gente que me sacaneia porque eu sou um pseudo-nerd e tenho um blog que não é totalmente voltado pra questões tecnológicas. Aqui tem poesia, tem música, tem desabafos, e muitas outras coisas. Eu já desconfiava que escrever, tocar um instrumento, ou os famosos &lt;i&gt;happy hour&lt;/i&gt; às sextas feiras são maneiras de aliviar o &lt;i&gt;stress&lt;/i&gt; nessa que é uma das, senão a maior, estressantes áreas.&lt;br /&gt;
&lt;span id="fullpost"&gt;&lt;!-- google_ad_section_start --&gt;&lt;br /&gt;
Até o momento em que eu paro o que estou fazendo (entre casos de uso e e-books) para a leitura periódica dos meus feeds. E lá estava um &lt;a href="http://carreiradeti.com.br/comportamento-escrever-garantir-emprego-saude/"&gt;post&lt;/a&gt; do &lt;a href="http://carreiradeti.com.br/author/admin/"&gt;Vinícius&lt;/a&gt;, do &lt;a href="http://carreiradeti.com.br/"&gt;Carreira e Certificações em TI&lt;/a&gt;. Eu não sabia que escrever poderia salvar o meu emprego :) Pelo que o artigo relata, escrever traz equilíbrio emocional, que se reflete em maior segurança durante as entrevistas de emprego:&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote&gt;&lt;i&gt;Após três meses do estudo realizado, 27% dos participantes do grupo que escreveu conseguiram um novo emprego, enquanto somente 5% das pessoas dos outros dois grupos obtiveram sucesso. Nos meses seguintes, 53% dos “escritores” já estavam empregados, contra somente 18% dos demais grupos.&lt;/i&gt;&lt;/blockquote&gt;&lt;br /&gt;
Então, eu acho que preciso escrever mais um pouco :) Quem sabe eu não vire um GP só escrevendo? Não, senhores, GP (Gerente de Projeto) nada tem a ver com garoto de programa.&lt;br /&gt;
&lt;br /&gt;
&lt;!-- google_ad_section_end --&gt;   &lt;a rel="license" href="http://creativecommons.org/licenses/by-nc-nd/2.5/br/"&gt;&lt;img alt="Creative Commons License" style="border-width:0" src="http://i.creativecommons.org/l/by-nc-nd/2.5/br/88x31.png" /&gt;&lt;/a&gt;&lt;br /&gt;
Esta &lt;span xmlns:dc="http://purl.org/dc/elements/1.1/" href="http://purl.org/dc/dcmitype/Text" rel="dc:type"&gt;obra&lt;/span&gt; est&amp;#225; licenciada sob uma &lt;a rel="license" href="http://creativecommons.org/licenses/by-nc-nd/2.5/br/"&gt;Licen&amp;#231;a Creative Commons&lt;/a&gt;.  &lt;/span&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29558514-605360867317226572?l=sfohart.blogspot.com'/&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/v_N4734rLhSEITBRcFk-zkZ78vE/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/v_N4734rLhSEITBRcFk-zkZ78vE/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/v_N4734rLhSEITBRcFk-zkZ78vE/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/v_N4734rLhSEITBRcFk-zkZ78vE/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Soriano/~4/q-JEdQYQnJg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://sfohart.blogspot.com/feeds/605360867317226572/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://sfohart.blogspot.com/2009/08/escrever-bem-pode-salvar-o-seu-emprego.html#comment-form" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/29558514/posts/default/605360867317226572?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/29558514/posts/default/605360867317226572?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Soriano/~3/q-JEdQYQnJg/escrever-bem-pode-salvar-o-seu-emprego.html" title="Escrever bem pode salvar o seu emprego" /><author><name>Soriano</name><email>sfohart@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="11910608697604757158" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://sfohart.blogspot.com/2009/08/escrever-bem-pode-salvar-o-seu-emprego.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkcCRHk8eip7ImA9WxJaEU4.&quot;"><id>tag:blogger.com,1999:blog-29558514.post-3982208488214209627</id><published>2009-08-01T10:41:00.000-03:00</published><updated>2009-08-01T10:41:05.772-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-08-01T10:41:05.772-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="informática" /><category scheme="http://www.blogger.com/atom/ns#" term="profissão" /><title>[EricEvans] Domain Driven Design - DDD</title><content type="html">&lt;div style="font-family: Verdana,sans-serif; font-size: small; text-align: justify;"&gt;Estava eu matando a curiosidade sobre o termo, que ao pé da letra significa Projeto Orientado a Domínio. Estava também procurando o livro do Eric Evans sobre o assunto, mas acabei encontrando esse post do &lt;a href="http://gc.blog.br/tag/eric-evans/"&gt;Guilherme Chapiewski&lt;/a&gt;: &lt;a href="http://gc.blog.br/2009/01/17/sindrome-de-dao/"&gt;Síndrome de DAO&lt;/a&gt;.&lt;br /&gt;
&lt;span id="fullpost"&gt;&lt;!-- google_ad_section_start --&gt; &lt;br /&gt;
Logo abaixo desse mesmo post, uma crítica a mim mesmo: &lt;a href="http://gc.blog.br/2008/01/22/voce-tem-que-ler-os-livros/"&gt;Você tem que ler os livros!&lt;/a&gt; Bem, e que livros seriam esses? E lá vai eu dar aquela pesquisada de novo. Tem a comunidade do &lt;a href="http://domaindrivendesign.org"&gt;Domain Driven Design&lt;/a&gt; na internet. Achei que lá seria o melhor ponto de partida para saber &lt;a href="http://domaindrivendesign.org/books"&gt;quais livros&lt;/a&gt; eu teria que ler. Então, eu acho que vou começar pelo &lt;a href="http://domaindrivendesign.org/books#DDD_quickly"&gt;Domain Driven Design Quickly&lt;/a&gt;, isso é, se o volume de coisas que me mandam fazer no trabalho diminuir um pouco (ainda nem terminei o SCJP 6 Book) :D&lt;br /&gt;
&lt;br /&gt;
Fuçando mais um pouco, eu achei um link de uma &lt;a href="http://domaindrivendesign.org/node/42"&gt;aplicação de exemplo&lt;/a&gt; da aplicação da DDD. Ainda não tive tempo de olhar, mas deixo aqui pra referências futuras :D&lt;br /&gt;
&lt;br /&gt;
&lt;!-- google_ad_section_end --&gt;   &lt;a rel="license" href="http://creativecommons.org/licenses/by-nc-nd/2.5/br/"&gt;&lt;img alt="Creative Commons License" style="border-width:0" src="http://i.creativecommons.org/l/by-nc-nd/2.5/br/88x31.png" /&gt;&lt;/a&gt;&lt;br /&gt;
Esta &lt;span xmlns:dc="http://purl.org/dc/elements/1.1/" href="http://purl.org/dc/dcmitype/Text" rel="dc:type"&gt;obra&lt;/span&gt; est&amp;#225; licenciada sob uma &lt;a rel="license" href="http://creativecommons.org/licenses/by-nc-nd/2.5/br/"&gt;Licen&amp;#231;a Creative Commons&lt;/a&gt;.  &lt;/span&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29558514-3982208488214209627?l=sfohart.blogspot.com'/&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Ph100177GHDH7i3iYTaD5JXeawc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Ph100177GHDH7i3iYTaD5JXeawc/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Ph100177GHDH7i3iYTaD5JXeawc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Ph100177GHDH7i3iYTaD5JXeawc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Soriano/~4/AzOb9gMKclk" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://sfohart.blogspot.com/feeds/3982208488214209627/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://sfohart.blogspot.com/2009/08/ericevans-domain-driven-design-ddd.html#comment-form" title="1 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/29558514/posts/default/3982208488214209627?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/29558514/posts/default/3982208488214209627?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Soriano/~3/AzOb9gMKclk/ericevans-domain-driven-design-ddd.html" title="[EricEvans] Domain Driven Design - DDD" /><author><name>Soriano</name><email>sfohart@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="11910608697604757158" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total><feedburner:origLink>http://sfohart.blogspot.com/2009/08/ericevans-domain-driven-design-ddd.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkIHRXgyeip7ImA9WxJaEEo.&quot;"><id>tag:blogger.com,1999:blog-29558514.post-6761075756524914241</id><published>2009-07-31T17:02:00.000-03:00</published><updated>2009-07-31T17:02:14.692-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-07-31T17:02:14.692-03:00</app:edited><title>[Soriano] Frases muito loucas, ditas por caras muito doidos...</title><content type="html">&lt;div style="font-family: Verdana,sans-serif; font-size: small; text-align: justify;"&gt;&lt;blockquote&gt;&lt;i&gt;E se o mundo todo fosse feito de bordéis? Os homens se matariam por um furinho na parede \o/ [Ferreira, Leandro Soriano]&lt;/i&gt;&lt;/blockquote&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;!-- google_ad_section_end --&gt;   &lt;a rel="license" href="http://creativecommons.org/licenses/by-nc-nd/2.5/br/"&gt;&lt;img alt="Creative Commons License" style="border-width:0" src="http://i.creativecommons.org/l/by-nc-nd/2.5/br/88x31.png" /&gt;&lt;/a&gt;&lt;br /&gt;
Esta &lt;span xmlns:dc="http://purl.org/dc/elements/1.1/" href="http://purl.org/dc/dcmitype/Text" rel="dc:type"&gt;obra&lt;/span&gt; est&amp;#225; licenciada sob uma &lt;a rel="license" href="http://creativecommons.org/licenses/by-nc-nd/2.5/br/"&gt;Licen&amp;#231;a Creative Commons&lt;/a&gt;.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29558514-6761075756524914241?l=sfohart.blogspot.com'/&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/LkGhv4JhQ7S_AYnvFUmD5vS6CpU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/LkGhv4JhQ7S_AYnvFUmD5vS6CpU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/LkGhv4JhQ7S_AYnvFUmD5vS6CpU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/LkGhv4JhQ7S_AYnvFUmD5vS6CpU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Soriano/~4/c7zZzPmh-xE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://sfohart.blogspot.com/feeds/6761075756524914241/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://sfohart.blogspot.com/2009/07/soriano-frases-muito-loucas-ditas-por.html#comment-form" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/29558514/posts/default/6761075756524914241?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/29558514/posts/default/6761075756524914241?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Soriano/~3/c7zZzPmh-xE/soriano-frases-muito-loucas-ditas-por.html" title="[Soriano] Frases muito loucas, ditas por caras muito doidos..." /><author><name>Soriano</name><email>sfohart@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="11910608697604757158" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://sfohart.blogspot.com/2009/07/soriano-frases-muito-loucas-ditas-por.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUAFR3w6fip7ImA9WxJbGUo.&quot;"><id>tag:blogger.com,1999:blog-29558514.post-6196576446882989323</id><published>2009-07-30T15:15:00.000-03:00</published><updated>2009-07-30T15:15:16.216-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-07-30T15:15:16.216-03:00</app:edited><title>Eu? Nerd?</title><content type="html">&lt;div style="font-family: Verdana,sans-serif; font-size: small; text-align: justify;"&gt;Tava aqui de bobeira, vendo twittadas, e resolvo seguir um link.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_xnGn5_2-w_k/SnHi_RjDJLI/AAAAAAAAIDY/Y_EgOtjtG20/s1600-h/ScreenHunter_02+Jul.+30+15.13.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_xnGn5_2-w_k/SnHi_RjDJLI/AAAAAAAAIDY/Y_EgOtjtG20/s400/ScreenHunter_02+Jul.+30+15.13.jpg" /&gt;&lt;/a&gt;&amp;nbsp;&lt;/div&gt;&lt;br /&gt;
Vê se pode? &lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://creativecommons.org/licenses/by-nc-nd/2.5/br/" rel="license"&gt;&lt;img alt="Creative Commons License" src="http://i.creativecommons.org/l/by-nc-nd/2.5/br/88x31.png" style="border-width: 0pt;" /&gt;&lt;/a&gt;&lt;br /&gt;
Esta obra está licenciada sob uma &lt;a href="http://creativecommons.org/licenses/by-nc-nd/2.5/br/" rel="license"&gt;Licença Creative Commons&lt;/a&gt;. &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29558514-6196576446882989323?l=sfohart.blogspot.com'/&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/2vaorvK2migBN78FeSFmGW2UBLE/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/2vaorvK2migBN78FeSFmGW2UBLE/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/2vaorvK2migBN78FeSFmGW2UBLE/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/2vaorvK2migBN78FeSFmGW2UBLE/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Soriano/~4/yDxlGgvwaeA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://sfohart.blogspot.com/feeds/6196576446882989323/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://sfohart.blogspot.com/2009/07/eu-nerd.html#comment-form" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/29558514/posts/default/6196576446882989323?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/29558514/posts/default/6196576446882989323?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Soriano/~3/yDxlGgvwaeA/eu-nerd.html" title="Eu? Nerd?" /><author><name>Soriano</name><email>sfohart@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="11910608697604757158" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_xnGn5_2-w_k/SnHi_RjDJLI/AAAAAAAAIDY/Y_EgOtjtG20/s72-c/ScreenHunter_02+Jul.+30+15.13.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://sfohart.blogspot.com/2009/07/eu-nerd.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkMNRngyeyp7ImA9WxNTFkU.&quot;"><id>tag:blogger.com,1999:blog-29558514.post-8373722765348731911</id><published>2009-07-26T14:37:00.001-03:00</published><updated>2009-08-19T10:28:17.693-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-08-19T10:28:17.693-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="SCJP" /><title>SCJP - 06 - Expressões Regulares</title><content type="html">&lt;div style="font-family: Verdana,sans-serif; font-size: small; text-align: justify;"&gt;Quando eu vi isso pela primeira vez, eu gostei pra caramba. Usei isso bastante nos meus trabalhos de faculdade, porque costumávamos ler as entradas para nossos trabalhos de um arquivo de texto. Eram vertices e arestas de um grafo, pontos de controle para uma superfície em cálculo numérico, enfim, bastante coisa. E depois, o pouco conhecimento de expressões regulares serviu para validação e manipulação de strings em javascript.&lt;br /&gt;
&lt;span id="fullpost"&gt;&lt;!-- google_ad_section_start --&gt; &lt;br /&gt;
&lt;h3&gt;Uma breve revisão de expessões regulares&lt;/h3&gt;&lt;br /&gt;
Algumas coisas a gente pega fácil, como por exemplo, os metacaracteres. Existem alguns que precisamos entender para o exame. Temos o &lt;b&gt;\d&lt;/b&gt;, que "casa" com todos os dígitos, tem o &lt;b&gt;\s&lt;/b&gt;, que "casa" com espaço em branco, e o &lt;b&gt;\w&lt;/b&gt;, que "casa" com todos os caracteres alfanuméricos (letras, números e o "underscore", o "_"). Tem o &lt;b&gt;ponto&lt;/b&gt; (.) que funciona como curinga, ou seja, qualquer caractere "casa" com ele.&lt;br /&gt;
&lt;br /&gt;
Tem os quantificadores, que servem para dizermos quantas vezes queremos que um padrão se repita na nossa expressão regular. Existe o &lt;b&gt;+&lt;/b&gt;, que permite repetição de uma ou mais vezes aquele padrão, o &lt;b&gt;*&lt;/b&gt;, para zero ou mais vezes, e o &lt;b&gt;?&lt;/b&gt;, para zero ou uma vez.&lt;br /&gt;
&lt;br /&gt;
Com essas facilidades, nós conseguimos criar expressões como 0[xX]([a-zA-Z\d])+, que casa com números hexadecimais, ou \d\d\d\d[-\s]\d\d\d\d, que casa com telefones de 8 dígitos, separados ao meio por um hífem (-) ou um espaço em branco. &lt;br /&gt;
&lt;br /&gt;
Você pode fazer um programinha que lhe ajude a brincar com casamento de padrões com duas classes do pacote java.util.regex: Pattern e Matcher.&lt;br /&gt;
&lt;br /&gt;
&lt;pre name="code" class="java"&gt;import java.util.regex.*;

public class RegexMatcher {
    public static void main(String[] args) {
        if (args.length != 2) {
            System.out.println ("Passe padrão e entrada, " 
                + "nessa ordem, como parametro");
        } else {
            System.out.println("Padrao: " + args[0]);
            System.out.println("Entrada: " + args[1]);

            Pattern pattern = Pattern.compile(args[0]);
            Matcher matcher = pattern.matcher(args[1]);

            while (matcher.find()) {
                System.out.println("Inicio em: " 
                    + matcher.start() 
                    + " - Encontrato: " 
                    + matcher.group());
            }
        }
    }
}
&lt;/pre&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_xnGn5_2-w_k/Smxt4THbS-I/AAAAAAAAIDI/QzGImr4qRIg/s1600-h/ScreenHunter_01+Jul.+26+11.52.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="118" src="http://3.bp.blogspot.com/_xnGn5_2-w_k/Smxt4THbS-I/AAAAAAAAIDI/QzGImr4qRIg/s400/ScreenHunter_01+Jul.+26+11.52.gif" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Bem, mas não foi bem essa a intenção desse post. Normalmente, eu crio estes posts da SCJP para coisas que eu ainda não sabia, ou coisas importantes que eu precisava frizar. Existem construções de expressões regulares conhecidas como gulosas (&lt;i&gt;greed&lt;/i&gt;), relutantes (&lt;i&gt;reluctant&lt;/i&gt;) e possessivas (&lt;i&gt;possessive&lt;/i&gt;).&lt;br /&gt;
&lt;br /&gt;
Pegue a entrada xxxxxyxyxyxxxyxxyxyxx e o padrão (.)*xx e veja o que o seu programa te retorna. Você teria, pelo menos, quantas possibilidades?&lt;br /&gt;
&lt;br /&gt;
Uma coisa engraçada que acontece, é que quando eu vi isso pela primeira vez, eu tentava pensar em casamento de padrões como aquele problema conhecido de encontrar quantos triângulos existiam na imagem. A gente costuma usar os triângulos menores para formar triângulos maiores. Mas em expressões regulares, esse não é o &lt;i&gt;default&lt;/i&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://www.educ.fc.ul.pt/icm/icm98/icm45/images/jogo12.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="185" src="http://www.educ.fc.ul.pt/icm/icm98/icm45/images/jogo12.gif" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
os resultados encontrados não são usados para formar novos resultados, não por default. Então, eu acho que teríamos apenas esses resultados:&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;xx
xx
xyxyxyxx
xyxx
yxyxx
&lt;/pre&gt;&lt;br /&gt;
Mas o seu padrão "engoliu" a entrada inteira (lá ele), não foi? Isso porque o programa olhou para toda a entrada antes de definir um "xx" como sufixo.&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Usar ? é guloso. Usar ?? é relutante&lt;/li&gt;
&lt;li&gt;Usar + é guloso. Usar +? é relutante&lt;/li&gt;
&lt;li&gt;Usar * é guloso. Usar *? é relutante&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
Assim, se vc usar o padrão (.)*?xx como padrão, os resultados que vc vai encontrar vão ser diferentes de quando vc usou o padrão anterior (exatemente os mesmos resultados que eu mencionei acima). Usando expressões relutantes, a entrada inteira não é utilizada antes de avaliar o padrão.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;Problemas entre expressões regulares e strings&lt;/h3&gt;&lt;br /&gt;
Quando for criar expressões regulares, frequentemente você usará construções como \d, \s e \w. Provavelmente, vai criar construções como:&lt;br /&gt;
&lt;br /&gt;
&lt;pre name="code" class="java"&gt;String patternString = "\d"; 
Pattern pattern = Pattern.compile(patternString);
&lt;/pre&gt;&lt;br /&gt;
Quando você tentar compilar isso, vai dar um erro. Por quê? o caractere "\" é usado em java como flag para uma sequência de escape, como "\n" por exemplo, que nos dá um &lt;i&gt;enter&lt;/i&gt;. Daí, quando o compilador enxergar o "\d", vai tentar achar alguma sequência de escape pra isso e não vai encontrar, o que gerará o erro. Por isso, ao invés de "\d", você terá que usar um "\\d". O "\\" serve como uma sequência de escape para o "\".&lt;br /&gt;
&lt;br /&gt;
No nosso programa anterior, usamos os argumentos passados via linha de comando diretamente na classe Pattern e Matcher. Se fossemos armazená-los em uma string, para depois incluirmos em tais classes, talvez precisássemos utilizar sequências de escape. Note também que se você precisar de espaços em branco na string usada como entrada de dados, envolva tal string com aspas (").&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;Classes Pattern e Matcher&lt;/h3&gt;&lt;br /&gt;
Agora vamos analizar o programa anterior que nós usamos para testar as nossas expressões regulares. A classe Pattern serve para representar os padrões usados por nós. Para criar uma instância de Pattern, usamos o método estático Pattern.compile(). A classe Matcher serve para englobar a máquina de avaliação das expressões regulares, e para criar uma instância, você usa o método Pattern.macher(). O método Matcher.find() avalia/consome a expressão de entrada de dados e diz se ainda tem algum trecho que case com o padrão (retorna true, nesse caso).&lt;br /&gt;
&lt;br /&gt;
&lt;pre name="code" class="java"&gt;import java.util.regex.*;

public class RegexMatcher {
    public static void main(String[] args) {
        if (args.length != 2) {
            System.out.println ("Passe padrão e entrada, " 
                + "nessa ordem, como parametro");
         } else {
            System.out.println("Padrao: " + args[0]);
            System.out.println("Entrada: " + args[1]);

            Pattern pattern = Pattern.compile(args[0]);
            Matcher matcher = pattern.matcher(args[1]);

            while (matcher.find()) {
                System.out.println("Inicio em: " 
                    + matcher.start() 
                    + " Término em: "
                    + matcher.end()
                    + " - Encontrato: " 
                    + matcher.group());
            }
        }
    }
}
&lt;/pre&gt;&lt;br /&gt;
Quando o método find() retornar true, você pode usar o método start() para dizer onde o trecho que casa com o padrão se inicia, e o método end() para dizer onde ele termina. Novamente, o start() encara o inicio da string como 0, e o método end() encara o inicio da string como 1. O método group() retorna exatamente que trecho da expressão de entrada casou com o padrão, durante a execução do método find().&lt;br /&gt;
&lt;br /&gt;
Obs.: Use o programa acima e padrões que usem quantificadores como * e ?, e avalie os resultados.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;Casamento de padrões e a classe Scanner&lt;/h3&gt;&lt;br /&gt;
Você pode usar a classe Scanner para ler a entrada de dados e buscar por determinado padrão usando o método Scanner.findInLine(). A classe Scanner não possui tantas funcionalidades quanto a classe Matcher, mas você pode usá-la para contar quantas instâncias de determinado padrão sua entrada de dados possui.&lt;br /&gt;
&lt;br /&gt;
&lt;pre name="code" class="java"&gt;import java.util.regex.*;
import java.util.*;

public class RegexMatcher {
    public static void main(String[] args) {
        if (args.length != 1) {
            System.out.println (
                "Passe padrão como parametro");
        } else {
            System.out.println(
                "Padrao: " 
                + args[0]);

            System.out.print("input: ");
            System.out.flush();
            try {
                Scanner scanner = 
                    new Scanner(System.in);
                String token = null;
                do {
                    token = scanner.findInLine(args[0]);
                    System.out.println(
                        "encontrado: " 
                        + token);
                } while (token != null);
            } catch (Exception ex){
                ex.printStackTrace();
            }
        }
    }
}
&lt;/pre&gt;&lt;br /&gt;
Note que ao final da string que vc digitar como entrada, seu programa exibirá o &lt;b&gt;null&lt;/b&gt; como token.&lt;br /&gt;
&lt;br /&gt;
&lt;!-- google_ad_section_end --&gt;   &lt;br /&gt;
&lt;a rel="license" href="http://creativecommons.org/licenses/by-nc-nd/2.5/br/"&gt;&lt;img alt="Creative Commons License" style="border-width:0" src="http://i.creativecommons.org/l/by-nc-nd/2.5/br/88x31.png" /&gt;&lt;/a&gt;&lt;br /&gt;
Esta &lt;span xmlns:dc="http://purl.org/dc/elements/1.1/" href="http://purl.org/dc/dcmitype/Text" rel="dc:type"&gt;obra&lt;/span&gt; est&amp;#225; licenciada sob uma &lt;a rel="license" href="http://creativecommons.org/licenses/by-nc-nd/2.5/br/"&gt;Licen&amp;#231;a Creative Commons&lt;/a&gt;.  &lt;/span&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29558514-8373722765348731911?l=sfohart.blogspot.com'/&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Bzkk9faFl6sckxxgh65LhvRbRmo/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Bzkk9faFl6sckxxgh65LhvRbRmo/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Bzkk9faFl6sckxxgh65LhvRbRmo/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Bzkk9faFl6sckxxgh65LhvRbRmo/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Soriano/~4/_eiCPsas_8I" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://sfohart.blogspot.com/feeds/8373722765348731911/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://sfohart.blogspot.com/2009/07/scjp-6-expressoes-regulares.html#comment-form" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/29558514/posts/default/8373722765348731911?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/29558514/posts/default/8373722765348731911?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Soriano/~3/_eiCPsas_8I/scjp-6-expressoes-regulares.html" title="SCJP - 06 - Expressões Regulares" /><author><name>Soriano</name><email>sfohart@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="11910608697604757158" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_xnGn5_2-w_k/Smxt4THbS-I/AAAAAAAAIDI/QzGImr4qRIg/s72-c/ScreenHunter_01+Jul.+26+11.52.gif" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://sfohart.blogspot.com/2009/07/scjp-6-expressoes-regulares.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0UCSX87eSp7ImA9WxJbE0k.&quot;"><id>tag:blogger.com,1999:blog-29558514.post-7792507791181098193</id><published>2009-07-23T08:34:00.001-03:00</published><updated>2009-07-23T08:41:08.101-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-07-23T08:41:08.101-03:00</app:edited><title>Google - O Divino Oráculo de Delfos e meu blog</title><content type="html">&lt;div style="font-family: Verdana,sans-serif; font-size: small; text-align: justify;"&gt;Eu aqui, de bobeira, enrolando um pouco antes de continuar lendo o livro da certificação... Resolvo abrir o Google Analytics só pra ver quantas visitas eu tenho a partir do momento em que eu resolvi contar. Fiquei até surpreso, mais ou menos 1.700 visitantes únicos... Mas o mais engraçado é ver o que as pessoas buscaram no google antes de chegar até meu blog.&lt;br /&gt;
&lt;span id="fullpost"&gt;&lt;br /&gt;
As palavras chave "&lt;b&gt;amarok não toca mp3&lt;/b&gt;" fazem meu blog aparecer na primeira página de resultados (grande coisa :D). Na verdade, é o primeiro resultado da primeira página :D. Tá, isso não é engraçado, continuemos com a lista. Alguma menina que gosta de metrossexuais como o David Beckham resolve procurar no meu blog por "&lt;b&gt;emoticons do cristiano ronaldo&lt;/b&gt;". &lt;br /&gt;
&lt;br /&gt;
Isso sem falar que alguma mãe deve ter se assustado depois de procurar "&lt;b&gt;meu filho esta com amigdalite posso dar cetoprofeno&lt;/b&gt;" e ver as &lt;a href="http://sfohart.blogspot.com/2009/05/cetoprofeno-eu-te-odeio.html"&gt;reações adversas&lt;/a&gt; que ele causava em mim. Tem  gente que pensa que google é secretária, e pede com toda a educação: "&lt;b&gt;procuro foto de uma erva chamada cansanção&lt;/b&gt;"&lt;br /&gt;
&lt;br /&gt;
E um outro pervertido resolve procurar por "&lt;b&gt;emoticons de gozada na cara&lt;/b&gt;". Isso, se não for o mesmo nerd também pervertido fã de naruto que resolve encontrar um tutorial pro jutsu "&lt;b&gt;naruto gozada maxima&lt;/b&gt;", vê se pode? Tá, gente, eu sei que eu sou meio nerd, meio pervertido, e fã de naruto também, mas não chego a esse nível... Nem quero ter um cara desse como &lt;i&gt;sensei&lt;/i&gt;. Tem também quem queira ficar com apenas um dos braços forte e queira dicas de como fazer um "&lt;b&gt;plantao punheteiro&lt;/b&gt;"&lt;br /&gt;
&lt;br /&gt;
Qualquer dia desses eu tiro um tempo pra fazer isso de novo e rir um pouco mais, foi divertido :D&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://creativecommons.org/licenses/by-nc-nd/2.5/br/" rel="license"&gt;&lt;img alt="Creative Commons License" src="http://i.creativecommons.org/l/by-nc-nd/2.5/br/88x31.png" style="border-width: 0pt;" /&gt;&lt;/a&gt;&lt;br /&gt;
Esta obra está licenciada sob uma &lt;a href="http://creativecommons.org/licenses/by-nc-nd/2.5/br/" rel="license"&gt;Licença Creative Commons&lt;/a&gt;.  &lt;/span&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29558514-7792507791181098193?l=sfohart.blogspot.com'/&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/WiPQeEKugBAQD7Y3QXaSQjaua40/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/WiPQeEKugBAQD7Y3QXaSQjaua40/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/WiPQeEKugBAQD7Y3QXaSQjaua40/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/WiPQeEKugBAQD7Y3QXaSQjaua40/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Soriano/~4/TGUsaL5t5YA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://sfohart.blogspot.com/feeds/7792507791181098193/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://sfohart.blogspot.com/2009/07/google-o-divino-oraculo-de-delfos-e-meu.html#comment-form" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/29558514/posts/default/7792507791181098193?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/29558514/posts/default/7792507791181098193?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Soriano/~3/TGUsaL5t5YA/google-o-divino-oraculo-de-delfos-e-meu.html" title="Google - O Divino Oráculo de Delfos e meu blog" /><author><name>Soriano</name><email>sfohart@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="11910608697604757158" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://sfohart.blogspot.com/2009/07/google-o-divino-oraculo-de-delfos-e-meu.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUEMQ3szfyp7ImA9WxJbEko.&quot;"><id>tag:blogger.com,1999:blog-29558514.post-453279527331013509</id><published>2009-07-22T11:50:00.002-03:00</published><updated>2009-07-22T12:48:02.587-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-07-22T12:48:02.587-03:00</app:edited><title>[Detran] - Passei, porra!</title><content type="html">&lt;div style="font-family: Verdana,sans-serif; font-size: small; text-align: justify;"&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_xnGn5_2-w_k/Smc0q2ENimI/AAAAAAAAIDA/_r4GcIv1Qxg/s1600-h/ScreenHunter_01+Jul.+22+10.40.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_xnGn5_2-w_k/Smc0q2ENimI/AAAAAAAAIDA/_r4GcIv1Qxg/s400/ScreenHunter_01+Jul.+22+10.40.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
Os postes que se segurem, porque eu tô solto na pista! :D Só &lt;b&gt;queria&lt;/b&gt; saber &lt;b&gt;onde&lt;/b&gt; foi que eu fiz essa tal conversão indevida, mas será que isso importa agora?&lt;br /&gt;
&lt;br /&gt;
Rá!&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://creativecommons.org/licenses/by-nc-nd/2.5/br/" rel="license"&gt;&lt;img alt="Creative Commons License" src="http://i.creativecommons.org/l/by-nc-nd/2.5/br/88x31.png" style="border-width: 0pt;" /&gt;&lt;/a&gt;&lt;br /&gt;
Esta obra está licenciada sob uma &lt;a href="http://creativecommons.org/licenses/by-nc-nd/2.5/br/" rel="license"&gt;Licença Creative Commons&lt;/a&gt;. &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29558514-453279527331013509?l=sfohart.blogspot.com'/&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/-yFALLBLLORRnl-YRotAw6nHKaI/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/-yFALLBLLORRnl-YRotAw6nHKaI/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/-yFALLBLLORRnl-YRotAw6nHKaI/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/-yFALLBLLORRnl-YRotAw6nHKaI/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Soriano/~4/LCfesO-_-sw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://sfohart.blogspot.com/feeds/453279527331013509/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://sfohart.blogspot.com/2009/07/detran-passei-porra.html#comment-form" title="1 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/29558514/posts/default/453279527331013509?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/29558514/posts/default/453279527331013509?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Soriano/~3/LCfesO-_-sw/detran-passei-porra.html" title="[Detran] - Passei, porra!" /><author><name>Soriano</name><email>sfohart@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="11910608697604757158" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_xnGn5_2-w_k/Smc0q2ENimI/AAAAAAAAIDA/_r4GcIv1Qxg/s72-c/ScreenHunter_01+Jul.+22+10.40.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total><feedburner:origLink>http://sfohart.blogspot.com/2009/07/detran-passei-porra.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEcERng-fCp7ImA9WxJbEU4.&quot;"><id>tag:blogger.com,1999:blog-29558514.post-8262123272017292993</id><published>2009-07-20T20:20:00.000-03:00</published><updated>2009-07-20T20:20:07.654-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-07-20T20:20:07.654-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="informática" /><title>[Debian] AC'97 Audio Controler - Sem Som</title><content type="html">&lt;div style="font-family: Verdana,sans-serif; font-size: small; text-align: justify;"&gt;Faz 4 dias que eu estou tentando instalar o debian no meu pc com audio funcionando. E confesso que só optei por uma distribuição linux porque é o único modo de baixar algum download pesado sem o meu modem resetar...&lt;br /&gt;
&lt;span id="fullpost"&gt;&lt;!-- google_ad_section_start --&gt; &lt;br /&gt;
A principio, meu driver de som não funcionava. Não sabia como fazer funcionar, até que eu resolvo por a mão na massa.&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;root@leandro-pc:/home/sfohart# lspci -v | grep Audio
00:11.5 Multimedia audio controller: VIA Technologies, Inc. 
VT8233/A/8235/8237 AC97 Audio Controller (rev 60)
        Subsystem: Giga-byte Technology GA-7VAX Onboard Audio (Realtek ALC650)
        Kernel driver in use: VIA 82xx Audio

&lt;/pre&gt;&lt;br /&gt;
Todo mundo falava para executar o alsaconf, comando do pacote alsa-utils. Mas acontece que a versão que eu estava (sim, eu disse &lt;b&gt;estava&lt;/b&gt; utilizando era a alsa-utils-1.0.20, cujo comando foi extinto. Não lembro se essa era a versão padrão do cd do &lt;a href="http://brdesktop.org/cdd/wiki/BrDesktop"&gt;BrDesktop&lt;/a&gt; que eu baixei, ou se no meio dos aptitude dist-upgrade essa versão foi atualizada.&lt;br /&gt;
&lt;br /&gt;
Até que eu resolvo reinstalar do zero ontem à noite, e instalar alguns pacotes somente hoje. Mudo meu sources.list para a lista abaixo:&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;deb http://linorg.usp.br/debian/ lenny main non-free contrib
deb-src http://linorg.usp.br/debian/ lenny main non-free contrib

deb http://security.debian.org/ lenny/updates main contrib non-free
deb-src http://security.debian.org/ lenny/updates main contrib non-free

deb http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
deb-src http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free

deb ftp://ftp.debian-multimedia.org lenny main contrib non-free
&lt;/pre&gt;&lt;br /&gt;
E instalo os pacotes do alsa&lt;br /&gt;
&lt;pre&gt;aptitude install alsa-base alsa-utils alsa-tools
&lt;/pre&gt;&lt;br /&gt;
Pra minha surpresa, o alsaconf estava funcionando. Rodei-o e pronto, audio funcionando pro kernel 2.6.26-2-686. Mas peraeh, que versão do alsa-utils eu estou utilizando?&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;root@leandro-pc:/home/sfohart# dpkg -l alsa-utils
Desejado=U=Desconhecido/Instalar/Remover/exPurgar/H=Reter
| Estado=Não/Inst/arqs-Cfg/U=Descomp/Falhou-cfg/H=semi-inst/W=trig-adiado/Trig-pend
|/ Erro?=(nenhum)/H=Ret/precisa-Reinst/X=ambos-problemas (Est,Err: maiúsculas=ruim)
||/ Nome            Versão          Descrição
+++-===============-===============-===========================
ii  alsa-utils      1.0.16-2        ALSA utilities
&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
Então, se alguém tiver o mesmo problema que eu, usando o mesmo kernel, tenta um downgrade do alsa pra ver se resolve...&lt;br /&gt;
&lt;br /&gt;
&lt;!-- google_ad_section_end --&gt;   &lt;a rel="license" href="http://creativecommons.org/licenses/by-nc-nd/2.5/br/"&gt;&lt;img alt="Creative Commons License" style="border-width:0" src="http://i.creativecommons.org/l/by-nc-nd/2.5/br/88x31.png" /&gt;&lt;/a&gt;&lt;br /&gt;
Esta &lt;span xmlns:dc="http://purl.org/dc/elements/1.1/" href="http://purl.org/dc/dcmitype/Text" rel="dc:type"&gt;obra&lt;/span&gt; est&amp;#225; licenciada sob uma &lt;a rel="license" href="http://creativecommons.org/licenses/by-nc-nd/2.5/br/"&gt;Licen&amp;#231;a Creative Commons&lt;/a&gt;.  &lt;/span&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29558514-8262123272017292993?l=sfohart.blogspot.com'/&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/i0tC7PSZXjnyh1bCuuwz4P0qhd0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/i0tC7PSZXjnyh1bCuuwz4P0qhd0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/i0tC7PSZXjnyh1bCuuwz4P0qhd0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/i0tC7PSZXjnyh1bCuuwz4P0qhd0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Soriano/~4/2Nwk63Q0_vQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://sfohart.blogspot.com/feeds/8262123272017292993/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://sfohart.blogspot.com/2009/07/debian-ac97-audio-controler-sem-som.html#comment-form" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/29558514/posts/default/8262123272017292993?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/29558514/posts/default/8262123272017292993?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Soriano/~3/2Nwk63Q0_vQ/debian-ac97-audio-controler-sem-som.html" title="[Debian] AC'97 Audio Controler - Sem Som" /><author><name>Soriano</name><email>sfohart@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="11910608697604757158" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://sfohart.blogspot.com/2009/07/debian-ac97-audio-controler-sem-som.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0MERX0_fyp7ImA9WxJbEU8.&quot;"><id>tag:blogger.com,1999:blog-29558514.post-1057883836086822312</id><published>2009-07-20T17:57:00.003-03:00</published><updated>2009-07-20T19:36:44.347-03:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-07-20T19:36:44.347-03:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="SCJP" /><title>SCJP - 06 - Serialização</title><content type="html">&lt;div style="font-family: Verdana,sans-serif; font-size: small; text-align: justify;"&gt;Fazia bastante tempo que eu não lia um capítulo da SCJP 6, mas como eu preciso retomar meus estudos, então, por tabela, tammbém preciso retomar minhas anotações/posts sobre o que eu andar lendo...&lt;br /&gt;
&lt;span id="fullpost"&gt;&lt;!-- google_ad_section_start --&gt; &lt;br /&gt;
&lt;blockquote&gt;&lt;i&gt;Em Ciência da Computação, no contexto de armazenamento e transmissão de dados, a serialização é o processo de salvar um objeto em um meio de armazenamento (como um arquivo de computador ou um buffer de memória) ou transmiti-lo por uma conexão de rede, seja em forma binária ou em formato de texto como o XML. Esta série de bytes pode ser usada para recriar um objeto com o mesmo estado interno que o original. [Wikipedia]&lt;/i&gt;&lt;/blockquote&gt;&lt;br /&gt;
Você, estagiário (não tenho saudades dessa época), vai se lembrar de serialização quando estiver desenvolvendo alguma aplicação web, por exemplo. Eu nunca havia feito serialização manualmente até o momento em que eu li essa seção do livro da SCJP 6.&lt;br /&gt;
&lt;br /&gt;
&lt;pre name="code" class="java"&gt;import java.util.*;
import java.io.*;

class Pessoa implements Serializable { 
    private String nome;
    
    public Pessoa (String nome){
        this.nome = nome;
    }
    
    public String getNome() {
        return this.nome;
    }
    
    public void setNome(String nome){
        this.nome = nome;
    }
 
    public String toString() {
        String result = "nome: " + this.nome;
        return result;
    }
}

public class Principal {
    public static void main(String[] args){
        Pessoa pessoa = new Pessoa("Leandro");

        String fileName = Pessoa.class.getName() + ".txt";
        System.out.println("Antes da serialização -  " 
            + pessoa);
        serializeObject(fileName, pessoa);
        
        Pessoa pessoaNova = 
            (Pessoa) deserializeObject(fileName);
        System.out.println("Depois da serialização - " 
            + pessoaNova);
    }
 
    public static void serializeObject(
        String fileName, 
        Object object){
        try {
            FileOutputStream fos = 
                new FileOutputStream(fileName);
            ObjectOutputStream oos = 
                new ObjectOutputStream(fos);
            oos.writeObject(object);
            oos.close();
        } catch (Exception ex){
            ex.printStackTrace();
        }
    }
 
    public static Object deserializeObject(String fileName){
        Object object = null;
        try {
            FileInputStream fis = 
                new FileInputStream(fileName);
            ObjectInputStream ois = 
                new ObjectInputStream(fis);
            object = ois.readObject();
            ois.close();
        } catch (Exception ex){
            ex.printStackTrace();
        }
         
        return object;
    }
}
&lt;/pre&gt;&lt;br /&gt;
Execute esse código e abra o arquivo Pessoa.txt só por curiosidade. Note que você consegue entender parte do que foi escrito apenas por mera casualidade, pois o Java deve utilizar uma estrutura bem formada para organizar os dados de um objeto num arquivo.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_xnGn5_2-w_k/SmTR-SvxFbI/AAAAAAAAICQ/wwyFpWywAD8/s1600-h/ScreenHunter_06+Jul.+20+17.22.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_xnGn5_2-w_k/SmTR-SvxFbI/AAAAAAAAICQ/wwyFpWywAD8/s400/ScreenHunter_06+Jul.+20+17.22.jpg" zj="true" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
Agora, vamos complicar. E se eu quiser que uma das variáveis de instância da classe Pessoa seja uma referência a outro objeto? Insira no código acima a classe Contato:&lt;br /&gt;
&lt;br /&gt;
&lt;pre name="code" class="java"&gt;class Contato {
    private String telefone;
    
    Contato(String telefone){
        this.telefone = telefone;
    }

    public String getTelefone(){
        return this.telefone;
    }
  
    public void setTelefone(String telefone){
        this.telefone = telefone;
    }

    public String toString() {
        String result = "telefone: " + telefone;
        return result;
    }
}
&lt;/pre&gt;&lt;br /&gt;
Modifique a classe Pessoa:&lt;br /&gt;
&lt;pre name="code" class="java"&gt;class Pessoa implements Serializable { 
    private String nome;
    private int idade;
    private Contato dadosContato;
    
    Pessoa (
            String nome, 
            int idade, 
            Contato dadosContato){
 
        this.nome = nome;    
        this.idade = idade;
        this.dadosContato = dadosContato
    }

    ...

    public int getIdade() {
        return this.idade;
    }
 
    public void setIdade(int idade){
        this.idade = idade;
    }
  
    public Contato getDadosContato() {
        return this.dadosContato;
    }
 
    public void setDadosContato(Contato dadosContato){
        this.dadosContato = dadosContato;
    }

    public String toString() {
        String result = "nome: " + this.nome + "\n";
        result += "idade: " + this.idade + "\n";
        result += "contato -  " + this.dadosContato;
        return result;
    }

}
&lt;/pre&gt;&lt;br /&gt;
E a classe Principal também:&lt;br /&gt;
&lt;pre name="code" class="java"&gt;public class Principal {
    public static void main(String[] args){
        Contato dadosContato = new Contato("9876-5432");
        Pessoa pessoa = 
            new Pessoa("Leandro",23, dadosContato);        
    }

    ...
}
&lt;/pre&gt;&lt;br /&gt;
Agora tente executar novamente. Conseguiu? Eu acho que não...&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_xnGn5_2-w_k/SmS_KiVxKLI/AAAAAAAAIB4/c3t9snVaIcg/s1600-h/ScreenHunter_03+Jul.+20+15.59.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_xnGn5_2-w_k/SmS_KiVxKLI/AAAAAAAAIB4/c3t9snVaIcg/s400/ScreenHunter_03+Jul.+20+15.59.jpg" zj="true" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Como você pode ver, o programa não consegue serializar a propriedade dadosContrato da classe Pessoa, porque a classe Contrato não é serializavel. Você conseguiria resolver esse problema, fazendo a classe Contrato implementar Serializable, mas e se não tiver acesso ao seu código fonte? &lt;br /&gt;
&lt;br /&gt;
Incluindo o modificador de acesso &lt;b&gt;transient&lt;/b&gt; à propriedade dadosContrato de Pessoa, você não salva o seu estado quando serializar a instância de Pessoa, acabando com o erro em tempo de execução. Entretanto, vale lembrar que nenhum construtor da classe a ser serializada é chamado,  muito menos os valores atribuidos em tempo de declaração das variáveis de instância são  usados, o que significa que as variáveis transientes são inicializadas com valores default.&lt;br /&gt;
&lt;br /&gt;
Para testar isso, tente serializar a classe abaixo:&lt;br /&gt;
&lt;br /&gt;
&lt;pre name="code" class="java"&gt;class Teste implements Serializable{
    private transient int numero = 42;
    private String texto;
    
    Teste() {
        this.numero = 25;
        this.texto = "Mais um teste";
    }

    Teste(String texto, int numero){
        this.texto = texto;
        this.numero = numero;
    }
    
    public String getTexto() {
  return this.texto;
 }
 
    public void setTexto(String texto){
        this.texto = texto;
    }
  
    public int getNumero() {
        return this.numero;
    }
    
    public void setNumero(int numero){
        this.numero = numero;
    }
    
    public String toString(){
        String result = "texto: " + this.texto + "\n";        
        result += "numero: " + this.numero;
        return result;
    }
}
&lt;/pre&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_xnGn5_2-w_k/SmTQnToTBII/AAAAAAAAICI/1P3kFlMCklI/s1600-h/ScreenHunter_05+Jul.+20+17.16.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_xnGn5_2-w_k/SmTQnToTBII/AAAAAAAAICI/1P3kFlMCklI/s400/ScreenHunter_05+Jul.+20+17.16.jpg" zj="true" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
Mas e se for &lt;b&gt;justamente&lt;/b&gt; salvar &lt;b&gt;esta&lt;/b&gt; propriedade &lt;b&gt;não serializável&lt;/b&gt; o que você precisa?&lt;br /&gt;
&lt;br /&gt;
Você pode, além de fazer esta propriedade virar &lt;b&gt;transient&lt;/b&gt;, implementar um par de métodos na sua classe Pessoa, para serializar &lt;b&gt;você mesmo&lt;/b&gt; os dados de Contato durante a serialização de Pessoa. Altere a classe Pessoa conforme código abaixo:&lt;br /&gt;
&lt;br /&gt;
&lt;pre name="code" class="java"&gt;class Pessoa implements Serializable { 
    private String nome;
    private int idade;
    private transient Contato dadosContato;

    ...

    private void writeObject(ObjectOutputStream os) {
        try {
            os.defaultWriteObject();
            Boolean checkDadosContrato = 
                (this.dadosContato != null);
            os.writeBoolean(checkDadosContrato);
            if (checkDadosContrato) {
                os.writeObject(this.dadosContato
                    .getTelefone());
            } 
        } catch (Exception ex){
            ex.printStackTrace();
        }
    }
    
    private void readObject(ObjectInputStream is) {
        try {
            is.defaultReadObject();
            Boolean checkDadosContrato = 
                is.readBoolean();      
            if (checkDadosContrato) {
                String telefone = (String) is.readObject();
                this.dadosContato = new Contato(telefone);
            } 
        } catch (Exception ex){
            ex.printStackTrace();
        }
    }
&lt;/pre&gt;&lt;br /&gt;
Acho que agora você consegue executar o programa.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_xnGn5_2-w_k/SmTMyKoLTyI/AAAAAAAAICA/6wq8RKp_oYw/s1600-h/ScreenHunter_04+Jul.+20+16.59.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_xnGn5_2-w_k/SmTMyKoLTyI/AAAAAAAAICA/6wq8RKp_oYw/s400/ScreenHunter_04+Jul.+20+16.59.jpg" zj="true" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Tá quase acabando, prometo :D Vimos que nenhum construtor da classe serializavel é executado. Vimos que variaveis transientes não são salvas. Vimos como serializar uma propriedade não serializável. Mas e quando a super classe não for serializável? E quanto às variáveis estáticas?&lt;br /&gt;
&lt;br /&gt;
Bem, variáveis estáticas não correspondemm ao estado do objeto (instância da classe) em si. Perceba que &lt;b&gt;todas&lt;/b&gt; as instâncias de uma classe compartilham &lt;b&gt;o mesmo valor&lt;/b&gt; de uma variável estatica. Que sentido faria salvá-la? E se duas ou mais instâncias de uma classe fossem salvas, qual valor para a variável estática seria utilizado?&lt;br /&gt;
&lt;br /&gt;
Quanto à super classe não serializável... Bem, dissemos que o construtor da classe serializável não é chamado, nem as variáveis de instância são inicializadas com os valores descritos em tempo de declaração. Mas o construtor da primeira classe não serializável é chamado, que chama o construtor da sua super classe, e assim por diante. Quer tirar a dúvida?&lt;br /&gt;
&lt;br /&gt;
&lt;pre name="code" class="java"&gt;class TesteBase {
    private long numeroLongo = 100000L;
    private String textoBase;
    
    TesteBase() {
        textoBase = "texto base";
    }
    
    TesteBase(long numeroLongo, String textoBase){
        this.numeroLongo = numeroLongo;
        this.textoBase = textoBase;
    }
    
    public String toString(){
        String result = 
            "textoBase: " + this.textoBase + "\n";        
        result += "numeroLongo: " + this.numeroLongo;
        return result;
    }
}

class Teste extends TesteBase implements Serializable{
    private transient int numero = 42;
    private String texto;
    
    Teste() {
        this.numero = 25;
        this.texto = "Mais um teste";
    }
    
    Teste(
        String texto, 
        int numero, 
        long numeroLongo, 
        String textoBase){
        
        super(numeroLongo,textoBase);
        
        this.texto = texto;
        this.numero = numero;
    }
    
    public String getTexto() {
        return this.texto;
    }
    
    public void setTexto(String texto){
        this.texto = texto;
    }
    
    public int getNumero() {
        return this.numero;
    }
    
    public void setNumero(int numero){
        this.numero = numero;
    }
    
    public String toString(){
        String result = 
            "texto: " + this.texto + "\n";        
        result += "numero: " + this.numero + "\n";
        result += super.toString();
        return result;
    }
}
&lt;/pre&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_xnGn5_2-w_k/SmTZMUdRr-I/AAAAAAAAICY/oUVJgGJ-5FY/s1600-h/ScreenHunter_07+Jul.+20+17.52.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_xnGn5_2-w_k/SmTZMUdRr-I/AAAAAAAAICY/oUVJgGJ-5FY/s400/ScreenHunter_07+Jul.+20+17.52.jpg" zj="true" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;!-- google_ad_section_end --&gt;   &lt;a rel="license" href="http://creativecommons.org/licenses/by-nc-nd/2.5/br/"&gt;&lt;img alt="Creative Commons License" style="border-width:0" src="http://i.creativecommons.org/l/by-nc-nd/2.5/br/88x31.png" /&gt;&lt;/a&gt;&lt;br /&gt;
Esta &lt;span xmlns:dc="http://purl.org/dc/elements/1.1/" href="http://purl.org/dc/dcmitype/Text" rel="dc:type"&gt;obra&lt;/span&gt; est&amp;#225; licenciada sob uma &lt;a rel="license" href="http://creativecommons.org/licenses/by-nc-nd/2.5/br/"&gt;Licen&amp;#231;a Creative Commons&lt;/a&gt;.  &lt;/span&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29558514-1057883836086822312?l=sfohart.blogspot.com'/&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/K8eAt0M8OcR78xt9MhiKDsy4c20/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/K8eAt0M8OcR78xt9MhiKDsy4c20/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/K8eAt0M8OcR78xt9MhiKDsy4c20/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/K8eAt0M8OcR78xt9MhiKDsy4c20/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Soriano/~4/zD4oW1V61_c" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://sfohart.blogspot.com/feeds/1057883836086822312/comments/default" title="Postar comentários" /><link rel="replies" type="text/html" href="http://sfohart.blogspot.com/2009/07/scjp-06-serializacao.html#comment-form" title="0 Comentários" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/29558514/posts/default/1057883836086822312?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/29558514/posts/default/1057883836086822312?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Soriano/~3/zD4oW1V61_c/scjp-06-serializacao.html" title="SCJP - 06 - Serialização" /><author><name>Soriano</name><email>sfohart@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="11910608697604757158" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_xnGn5_2-w_k/SmTR-SvxFbI/AAAAAAAAICQ/wwyFpWywAD8/s72-c/ScreenHunter_06+Jul.+20+17.22.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://sfohart.blogspot.com/2009/07/scjp-06-serializacao.html</feedburner:origLink></entry></feed>
