<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-8514344970732460488</id><updated>2012-02-16T17:51:15.029-08:00</updated><category term='mobile'/><category term='flash'/><category term='administração'/><category term='nexus'/><category term='análise de sistemas'/><category term='javascript'/><category term='html5'/><category term='web'/><category term='engenharia de software'/><category term='usa'/><category term='estágio'/><category term='chrome'/><category term='chrome extensions'/><category term='Scala'/><category term='análise de requisitos'/><category term='iphone'/><category term='css'/><category term='agile'/><category term='iphone 4'/><category term='TI - Geral'/><category term='windows'/><category term='vaga'/><category term='emprego'/><category term='Ti'/><category term='xp'/><category term='americano'/><category term='rfid'/><category term='flexutils'/><category term='levantamento de requisitos'/><category term='santa catarina'/><category term='javautils'/><category term='jsf'/><category term='florianópolis'/><category term='java'/><category term='silverlight'/><category term='internet explorer'/><category term='nfc'/><category term='galaxy 5'/><category term='google nexus s'/><category term='celular'/><category term='eua'/><category term='blog'/><category term='galaxy S'/><category term='flex'/><category term='internet explorer 10'/><category term='inside system'/><category term='webservice'/><category term='rest'/><category term='florianopolis'/><category term='jquery'/><category term='windows 8'/><category term='android'/><category term='blogger'/><category term='scrum'/><category term='html'/><category term='elicitação de requisitos'/><category term='galaxyS'/><category term='celulares'/><category term='galaxy5'/><category term='nexus s'/><category term='análise de negócios'/><category term='sc'/><category term='trabalho'/><category term='google'/><category term='exército'/><category term='estados unidos'/><category term='estagio'/><title type='text'>Rodison Blog</title><subtitle type='html'>Blog de Programação, Java, Web, Flex, mobile, análise de sistemas &lt;br&gt; e desenvolvimento de software em geral.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://rodison.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8514344970732460488/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://rodison.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Rodison Ferreira</name><uri>https://profiles.google.com/116042571911434716678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-z9EVRh3jVHE/AAAAAAAAAAI/AAAAAAAAARA/dON2G5kV-qY/s512-c/photo.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>66</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8514344970732460488.post-1730255121515690869</id><published>2012-01-09T07:01:00.001-08:00</published><updated>2012-01-09T07:01:51.300-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='iphone'/><title type='text'>[iPhone] Dragon Dictation - speech-to-text - Um dos melhores apps pra
iPhone</title><content type='html'>[iPhone] Dragon Dictation - speech-to-text - Um dos melhores apps pra iPhone&lt;br /&gt;&lt;br /&gt;Uma das melhores aplicações que eu já baixei pra iPhone é o Dragon Dictation. É um aplicativo em que você fala um texto (em Português-BR mesmo) e ele converte para texto!&lt;br /&gt;&lt;br /&gt;Muito útil quando você está caminhando, por exemplo, e precisa reponder rapidamente a um e-mail ou até mesmo anotar alguma coisa.&lt;br /&gt;&lt;br /&gt;É muito prático e é incrível o grau de acerto dele na hora de converter uma fala em texto. E você pode falar normalmente. Não precisa falar pausadamente como se fosse um robô, ele entende direitinho. &lt;br /&gt;&lt;br /&gt;Ele só se perde um pouco quando se fala algum termo técnico. &lt;br /&gt;&lt;br /&gt;A interface dele é bem simples. É só apertar o botão Gravar, falar e então apertar o botão Terminar. Pronto, rapidonho ele já mostra a frase falada no formato de texto. &lt;br /&gt;&lt;br /&gt;E ele ainda permite que você edite o texto depois de convertido. Muito prático. &lt;br /&gt;&lt;br /&gt;E também ele possui alguns botões muito úteis. Depois que o texto falado é convertido para texto escrito, você pode enviar o texto por e-mail, pode enviar um tweet com o texto, postar no facebook ou simplesmente copiar o texto para colar em qualquer outro programa. &lt;br /&gt;&lt;br /&gt;A única desvantagem deste programa é que você precisa estar conectado na internet para que o programa faça a conversão de fala para texto. &lt;br /&gt;&lt;br /&gt;Como o meu iPhone tá sempre conectado na internet, isso não é problema pra mim :)&lt;br /&gt;&lt;br /&gt;Mas mesmo precisando de internet, o desempenho dele é muito bom. Nem precisa usar ele com 3G pra funcionar bem. Com 2G mesmo ele funciona muito bem. &lt;br /&gt;&lt;br /&gt;Abaixo, algumas imagens do programa. &lt;br /&gt;&lt;br /&gt;Flw, Rodison&lt;br /&gt;&lt;div class="separator"style="clear: both; text-align: center;"&gt;&lt;a href="https://lh3.googleusercontent.com/-yDyzvkF8FKk/TwsBOQ_KK9I/AAAAAAAAAR0/A5ce5up1MLQ/s640/blogger-image-746092144.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="https://lh3.googleusercontent.com/-yDyzvkF8FKk/TwsBOQ_KK9I/AAAAAAAAAR0/A5ce5up1MLQ/s640/blogger-image-746092144.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator"style="clear: both; text-align: center;"&gt;&lt;a href="https://lh6.googleusercontent.com/-1X4sK6qBW6A/TwsBQaBpJ2I/AAAAAAAAAR8/IRe19dRZchY/s640/blogger-image--351731887.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="https://lh6.googleusercontent.com/-1X4sK6qBW6A/TwsBQaBpJ2I/AAAAAAAAAR8/IRe19dRZchY/s640/blogger-image--351731887.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator"style="clear: both; text-align: center;"&gt;&lt;a href="https://lh6.googleusercontent.com/-S7Z2cAOWsM4/TwsBSZ29KLI/AAAAAAAAASE/Q0Q-25gIWn4/s640/blogger-image--1838582538.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="https://lh6.googleusercontent.com/-S7Z2cAOWsM4/TwsBSZ29KLI/AAAAAAAAASE/Q0Q-25gIWn4/s640/blogger-image--1838582538.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator"style="clear: both; text-align: center;"&gt;&lt;a href="https://lh4.googleusercontent.com/-KNmmjZlmdGo/TwsBTHjcGZI/AAAAAAAAASM/nU4cKWPQd3M/s640/blogger-image--1601511225.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="https://lh4.googleusercontent.com/-KNmmjZlmdGo/TwsBTHjcGZI/AAAAAAAAASM/nU4cKWPQd3M/s640/blogger-image--1601511225.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator"style="clear: both; text-align: center;"&gt;&lt;a href="https://lh3.googleusercontent.com/-NlgDjBb7IRc/TwsBUVkiSaI/AAAAAAAAASU/euNVH644yIs/s640/blogger-image-332053076.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="https://lh3.googleusercontent.com/-NlgDjBb7IRc/TwsBUVkiSaI/AAAAAAAAASU/euNVH644yIs/s640/blogger-image-332053076.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator"style="clear: both; text-align: center;"&gt;&lt;a href="https://lh6.googleusercontent.com/-hFHU3X8sRRQ/TwsBVVoFdwI/AAAAAAAAASc/7ubQ_pM88-M/s640/blogger-image--1111344380.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="https://lh6.googleusercontent.com/-hFHU3X8sRRQ/TwsBVVoFdwI/AAAAAAAAASc/7ubQ_pM88-M/s640/blogger-image--1111344380.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator"style="clear: both; text-align: center;"&gt;&lt;a href="https://lh5.googleusercontent.com/-OHwR-FBSo2s/TwsBWUNAEqI/AAAAAAAAASk/hzRr54RxMOM/s640/blogger-image--1843161656.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="https://lh5.googleusercontent.com/-OHwR-FBSo2s/TwsBWUNAEqI/AAAAAAAAASk/hzRr54RxMOM/s640/blogger-image--1843161656.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator"style="clear: both; text-align: center;"&gt;&lt;a href="https://lh4.googleusercontent.com/-dItJX0lpOHo/TwsBXanHxHI/AAAAAAAAASs/ym7R61R4ZD0/s640/blogger-image--430688249.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="https://lh4.googleusercontent.com/-dItJX0lpOHo/TwsBXanHxHI/AAAAAAAAASs/ym7R61R4ZD0/s640/blogger-image--430688249.jpg" /&gt;&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/8514344970732460488-1730255121515690869?l=rodison.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rodison.blogspot.com/feeds/1730255121515690869/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8514344970732460488&amp;postID=1730255121515690869&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8514344970732460488/posts/default/1730255121515690869'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8514344970732460488/posts/default/1730255121515690869'/><link rel='alternate' type='text/html' href='http://rodison.blogspot.com/2012/01/iphone-dragon-dictation-speech-to-text.html' title='[iPhone] Dragon Dictation - speech-to-text - Um dos melhores apps pra&#xA;iPhone'/><author><name>Rodison Ferreira</name><uri>https://profiles.google.com/116042571911434716678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-z9EVRh3jVHE/AAAAAAAAAAI/AAAAAAAAARA/dON2G5kV-qY/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='https://lh3.googleusercontent.com/-yDyzvkF8FKk/TwsBOQ_KK9I/AAAAAAAAAR0/A5ce5up1MLQ/s72-c/blogger-image-746092144.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8514344970732460488.post-2059339449985670680</id><published>2012-01-03T09:31:00.001-08:00</published><updated>2012-01-03T17:31:15.028-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='usa'/><category scheme='http://www.blogger.com/atom/ns#' term='mobile'/><category scheme='http://www.blogger.com/atom/ns#' term='Ti'/><category scheme='http://www.blogger.com/atom/ns#' term='americano'/><category scheme='http://www.blogger.com/atom/ns#' term='eua'/><category scheme='http://www.blogger.com/atom/ns#' term='exército'/><category scheme='http://www.blogger.com/atom/ns#' term='estados unidos'/><title type='text'>Exército americano vai contratar desenvolvedores mobile!</title><content type='html'>A agência de pesquisas e projetos de defesa dos Estados Unidos (Darpa), está pensando em contratar programadores mobile. &lt;br /&gt;&lt;br /&gt;Eles querem fazer uma tecnologia em que robôs espiões e robôs usados em guerra possam ser controlados remotamente. Para isso, a experiência de devs mobile seria interessante, principalmente para mesclar com tecnologias tipo geolocalização. &lt;br /&gt;&lt;br /&gt;O objetivo é diminuir a dependência do exército de empresas de informática e diminuir o tempo de acesso do exército a novas tecnologias. &lt;br /&gt;&lt;br /&gt;Isso porque as atuais empresas de TI parceiras do exército demoram até 3 anos para entregar novas tecnologias para o exército. &lt;br /&gt;&lt;br /&gt;Contratando desenvolvedores, eles esperam diminuir esse tempo para 1 ano. &lt;br /&gt;&lt;br /&gt;Outra coisa legal é que o exército tem (ou quer ter) smartphones próprios, com rede criptografada para uso di exército. E para isso, os desenvolvimentos não podem ser abertos, eles têm que ficar no esquema de sigilo secreto também. &lt;br /&gt;&lt;br /&gt;Até que o Exército brasileiro podia fazer isso e contratar uns programadores mobile também :)&lt;br /&gt;&lt;br /&gt;Origem:&lt;br /&gt;&lt;br /&gt;http://infoe.abril.com.br/noticias/ti/forcas-armadas-dos-eua-terao-desenvolvedores-de-apps-01012012-5.shl&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8514344970732460488-2059339449985670680?l=rodison.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rodison.blogspot.com/feeds/2059339449985670680/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8514344970732460488&amp;postID=2059339449985670680&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8514344970732460488/posts/default/2059339449985670680'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8514344970732460488/posts/default/2059339449985670680'/><link rel='alternate' type='text/html' href='http://rodison.blogspot.com/2012/01/exercito-americano-vai-contratar.html' title='Exército americano vai contratar desenvolvedores mobile!'/><author><name>Rodison Ferreira</name><uri>https://profiles.google.com/116042571911434716678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-z9EVRh3jVHE/AAAAAAAAAAI/AAAAAAAAARA/dON2G5kV-qY/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8514344970732460488.post-7534190856116550791</id><published>2012-01-02T17:23:00.001-08:00</published><updated>2012-01-02T17:24:47.842-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='flex'/><category scheme='http://www.blogger.com/atom/ns#' term='jquery'/><category scheme='http://www.blogger.com/atom/ns#' term='html5'/><category scheme='http://www.blogger.com/atom/ns#' term='web'/><category scheme='http://www.blogger.com/atom/ns#' term='html'/><category scheme='http://www.blogger.com/atom/ns#' term='css'/><title type='text'>8 artigos p/ devs #flex adotarem o #jQuery</title><content type='html'>Ótimos artigos do @igorcosta: 8 artigos p/ devs #flex adotarem o #jQuery em seus projetos web: &lt;a href="http://t.co/7fXFPFeI"&gt;http://t.co/7fXFPFeI&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Vale a pena a leitura&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8514344970732460488-7534190856116550791?l=rodison.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rodison.blogspot.com/feeds/7534190856116550791/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8514344970732460488&amp;postID=7534190856116550791&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8514344970732460488/posts/default/7534190856116550791'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8514344970732460488/posts/default/7534190856116550791'/><link rel='alternate' type='text/html' href='http://rodison.blogspot.com/2012/01/8-artigos-p-devs-flex-adotarem-o-jquery.html' title='8 artigos p/ devs #flex adotarem o #jQuery'/><author><name>Rodison Ferreira</name><uri>https://profiles.google.com/116042571911434716678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-z9EVRh3jVHE/AAAAAAAAAAI/AAAAAAAAARA/dON2G5kV-qY/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8514344970732460488.post-212245594893082596</id><published>2012-01-02T16:49:00.001-08:00</published><updated>2012-01-02T16:49:01.360-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='blogger'/><category scheme='http://www.blogger.com/atom/ns#' term='blog'/><category scheme='http://www.blogger.com/atom/ns#' term='iphone'/><title type='text'>Finalmente uma App do Blogger pro iPhone!!!</title><content type='html'>A Google finalmente lançou uma app do Blogger pra iPhone! É só procurar na App Store por "Blogger" :)&lt;br /&gt;&lt;br /&gt;Aparentemente gostei da App. Funciona direitinho. Permite adicionar fotos e colocar labels nos post. &lt;br /&gt;&lt;br /&gt;Permite visualizar, editar e excluir posts. E permite gerenciar mais de um blog. &lt;br /&gt;&lt;br /&gt;A única desvantagem até agora é que a tela não deita pra usar o teclado virtual do iPhone na forma horizontal. &lt;br /&gt;&lt;br /&gt;Mas nada de outro mundo tb. Inclusive, estou escrevendo este post nele :)&lt;br /&gt;&lt;br /&gt;Abaixo, alguns prints da tela da app.&lt;br /&gt;&lt;br /&gt;Flw, Rodison&lt;div class="separator"style="clear: both; text-align: center;"&gt;&lt;a href="https://lh6.googleusercontent.com/-Hnf-2DWdsww/TwJQcgMFboI/AAAAAAAAARM/PxCjXRpr_L4/s640/blogger-image-927940744.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="https://lh6.googleusercontent.com/-Hnf-2DWdsww/TwJQcgMFboI/AAAAAAAAARM/PxCjXRpr_L4/s640/blogger-image-927940744.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator"style="clear: both; text-align: center;"&gt;&lt;a href="https://lh6.googleusercontent.com/-rquAPgg_chM/TwJQda7-anI/AAAAAAAAARU/CUTB_ztXPZI/s640/blogger-image--1360653890.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="https://lh6.googleusercontent.com/-rquAPgg_chM/TwJQda7-anI/AAAAAAAAARU/CUTB_ztXPZI/s640/blogger-image--1360653890.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator"style="clear: both; text-align: center;"&gt;&lt;a href="https://lh5.googleusercontent.com/-YdfXSpYXn38/TwJQd2t_E5I/AAAAAAAAARc/PzE6Kk73vM0/s640/blogger-image--1150098831.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="https://lh5.googleusercontent.com/-YdfXSpYXn38/TwJQd2t_E5I/AAAAAAAAARc/PzE6Kk73vM0/s640/blogger-image--1150098831.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator"style="clear: both; text-align: center;"&gt;&lt;a href="https://lh5.googleusercontent.com/-K0BBmnm7fe0/TwJQedGdG4I/AAAAAAAAARk/UxN_2tqDAdw/s640/blogger-image-1752116042.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="https://lh5.googleusercontent.com/-K0BBmnm7fe0/TwJQedGdG4I/AAAAAAAAARk/UxN_2tqDAdw/s640/blogger-image-1752116042.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator"style="clear: both; text-align: center;"&gt;&lt;a href="https://lh4.googleusercontent.com/-pdES4hO-lXA/TwJQe7sasXI/AAAAAAAAARs/NPaxhGV-oB8/s640/blogger-image--1306790088.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="https://lh4.googleusercontent.com/-pdES4hO-lXA/TwJQe7sasXI/AAAAAAAAARs/NPaxhGV-oB8/s640/blogger-image--1306790088.jpg" /&gt;&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/8514344970732460488-212245594893082596?l=rodison.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rodison.blogspot.com/feeds/212245594893082596/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8514344970732460488&amp;postID=212245594893082596&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8514344970732460488/posts/default/212245594893082596'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8514344970732460488/posts/default/212245594893082596'/><link rel='alternate' type='text/html' href='http://rodison.blogspot.com/2012/01/finalmente-uma-app-do-blogger-pro.html' title='Finalmente uma App do Blogger pro iPhone!!!'/><author><name>Rodison Ferreira</name><uri>https://profiles.google.com/116042571911434716678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-z9EVRh3jVHE/AAAAAAAAAAI/AAAAAAAAARA/dON2G5kV-qY/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='https://lh6.googleusercontent.com/-Hnf-2DWdsww/TwJQcgMFboI/AAAAAAAAARM/PxCjXRpr_L4/s72-c/blogger-image-927940744.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8514344970732460488.post-1957154657185897866</id><published>2012-01-02T16:34:00.000-08:00</published><updated>2012-01-02T16:34:30.673-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='chrome extensions'/><category scheme='http://www.blogger.com/atom/ns#' term='chrome'/><category scheme='http://www.blogger.com/atom/ns#' term='google'/><title type='text'>Novo site das extensões do Google Chrome</title><content type='html'>Impressão minha ou o novo site das extensões do Google Chrome (&lt;a href="https://chrome.google.com/webstore/category/home?hl=pt-BR"&gt;https://chrome.google.com/webstore/category/home?hl=pt-BR&lt;/a&gt;) está muito parecido com o novo Windows 8???...&lt;br /&gt;&lt;br /&gt;Aliás, o novo site das extensões do Google Chrome se chama Chrome Web Store... parecido com alguma App Store da Apple, por acaso? hehehe :)&lt;br /&gt;&lt;br /&gt;Na TI na se cria, tudo se copia ;)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8514344970732460488-1957154657185897866?l=rodison.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rodison.blogspot.com/feeds/1957154657185897866/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8514344970732460488&amp;postID=1957154657185897866&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8514344970732460488/posts/default/1957154657185897866'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8514344970732460488/posts/default/1957154657185897866'/><link rel='alternate' type='text/html' href='http://rodison.blogspot.com/2012/01/novo-site-das-extensoes-do-google.html' title='Novo site das extensões do Google Chrome'/><author><name>Rodison Ferreira</name><uri>https://profiles.google.com/116042571911434716678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-z9EVRh3jVHE/AAAAAAAAAAI/AAAAAAAAARA/dON2G5kV-qY/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8514344970732460488.post-5933359932186501390</id><published>2012-01-02T15:41:00.001-08:00</published><updated>2012-01-02T15:50:31.267-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Scala'/><title type='text'>A linguagem Scala inaugurou um novo site de documentação</title><content type='html'>A linguagem Scala inaugurou um novo site de documentação. Vale a pena dar uma olhada. &lt;br /&gt;&lt;br /&gt;O link é: http://docs.scala-lang.org/&lt;br /&gt;&lt;br /&gt;Não sei se o Scala vai pegar como linguagem. Não aposto mais pois o Flex não deu certo (embora alguns digam o contrário). &lt;br /&gt;&lt;br /&gt;Mais do que nunca, na área de TI, a moral é ficar no tradicional mesmo, até que o novo vire tradicional também. &lt;br /&gt;&lt;br /&gt;Não é à toa que ainda tem muita gente ainda usando o Struts 1...&lt;br /&gt;&lt;br /&gt;Mas, mesmo assim, é importante pelo menos conhecer e fazer algumas brincadeiras com estas linguagens novas. &lt;br /&gt;&lt;br /&gt;Flw, Rodison&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8514344970732460488-5933359932186501390?l=rodison.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rodison.blogspot.com/feeds/5933359932186501390/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8514344970732460488&amp;postID=5933359932186501390&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8514344970732460488/posts/default/5933359932186501390'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8514344970732460488/posts/default/5933359932186501390'/><link rel='alternate' type='text/html' href='http://rodison.blogspot.com/2012/01/linguagem-scala-inaugurou-um-novo-site.html' title='A linguagem Scala inaugurou um novo site de documentação'/><author><name>Rodison Ferreira</name><uri>https://profiles.google.com/116042571911434716678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-z9EVRh3jVHE/AAAAAAAAAAI/AAAAAAAAARA/dON2G5kV-qY/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8514344970732460488.post-2506837430425579774</id><published>2011-10-05T18:23:00.000-07:00</published><updated>2011-10-05T19:07:01.099-07:00</updated><title type='text'>Steve  Jobs morreu...</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: justify;"&gt;Steve &amp;nbsp;Jobs morreu...&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;Eis a página da Apple:&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-JgnLxdI-inQ/To0CqGAPnXI/AAAAAAAAAP8/gkZP4BPG7fo/s1600/site_da_apple_morte_do_steve_jobs.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="290" src="http://3.bp.blogspot.com/-JgnLxdI-inQ/To0CqGAPnXI/AAAAAAAAAP8/gkZP4BPG7fo/s400/site_da_apple_morte_do_steve_jobs.png" width="400" /&gt;&lt;/a&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/-SSUXdgHrHCU/To0CsZKf8lI/AAAAAAAAAQA/szGEY7O6dtM/s1600/site_da_apple_morte_do_steve_jobs_2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="284" src="http://1.bp.blogspot.com/-SSUXdgHrHCU/To0CsZKf8lI/AAAAAAAAAQA/szGEY7O6dtM/s640/site_da_apple_morte_do_steve_jobs_2.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #444444; font-family: Arial, 'Helvetica Neue', sans-serif;"&gt;&lt;span class="Apple-style-span" style="font-size: 15px; line-height: 19px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #444444; font-family: Arial, 'Helvetica Neue', sans-serif;"&gt;&lt;span class="Apple-style-span" style="font-size: 15px; line-height: 19px;"&gt;steve jobs morreu... um homem q revolucionou a tecnologia... esperanças q ainda existam e surjam muitos como ele. são pessoas necessárias.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #444444; font-family: Arial, 'Helvetica Neue', sans-serif;"&gt;&lt;span class="Apple-style-span" style="background-color: white; font-size: 15px; line-height: 19px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: white; color: #444444; font-family: Arial, 'Helvetica Neue', sans-serif; font-size: 15px; line-height: 19px;"&gt;&lt;a class="  twitter-hashtag pretty-link" href="http://twitter.com/#!/search?q=%23RIPSteveJobs" rel="nofollow" style="color: #0084b4; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none; white-space: nowrap;" title="#RIPSteveJobs"&gt;&lt;s class="hash" style="display: inline-block; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; opacity: 0.7; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none;"&gt;#&lt;/s&gt;&lt;b style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: underline; white-space: normal;"&gt;RIPSteveJobs&lt;/b&gt;&lt;/a&gt;,&amp;nbsp;&lt;a class="  twitter-hashtag pretty-link" href="http://twitter.com/#!/search?q=%23thankyousteve" rel="nofollow" style="color: #0084b4; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none; white-space: nowrap;" title="#thankyousteve"&gt;&lt;s class="hash" style="display: inline-block; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; opacity: 0.7; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none;"&gt;#&lt;/s&gt;&lt;b style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; white-space: normal;"&gt;thankyousteve&lt;/b&gt;&lt;/a&gt;,&amp;nbsp;&lt;a class="  twitter-hashtag pretty-link" href="http://twitter.com/#!/search?q=%23iDead" rel="nofollow" style="color: #0084b4; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none; white-space: nowrap;" title="#iDead"&gt;&lt;s class="hash" style="display: inline-block; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; opacity: 0.7; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none;"&gt;#&lt;/s&gt;&lt;b style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; white-space: normal;"&gt;iDead&lt;/b&gt;&lt;/a&gt;&amp;nbsp;os trends mais falados sobre o steve jobs. vai fazer falta, com certeza&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: white; color: #444444; font-family: Arial, 'Helvetica Neue', sans-serif; font-size: 15px; line-height: 19px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: white; color: #444444; font-family: Arial, 'Helvetica Neue', sans-serif; font-size: 15px; line-height: 19px;"&gt;A informática evoluiu muito nos últimos 10 anos, graças ao Steve Jobs, pelo Mac OS X, iPod, iPhone e iPad #thankyousteve&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8514344970732460488-2506837430425579774?l=rodison.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rodison.blogspot.com/feeds/2506837430425579774/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8514344970732460488&amp;postID=2506837430425579774&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8514344970732460488/posts/default/2506837430425579774'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8514344970732460488/posts/default/2506837430425579774'/><link rel='alternate' type='text/html' href='http://rodison.blogspot.com/2011/10/steve-jobs-morreu.html' title='Steve  Jobs morreu...'/><author><name>Rodison Ferreira</name><uri>https://profiles.google.com/116042571911434716678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-z9EVRh3jVHE/AAAAAAAAAAI/AAAAAAAAARA/dON2G5kV-qY/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-JgnLxdI-inQ/To0CqGAPnXI/AAAAAAAAAP8/gkZP4BPG7fo/s72-c/site_da_apple_morte_do_steve_jobs.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8514344970732460488.post-4222969204450119285</id><published>2011-09-16T18:38:00.000-07:00</published><updated>2011-09-16T19:05:58.631-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='flex'/><category scheme='http://www.blogger.com/atom/ns#' term='internet explorer'/><category scheme='http://www.blogger.com/atom/ns#' term='silverlight'/><category scheme='http://www.blogger.com/atom/ns#' term='windows 8'/><category scheme='http://www.blogger.com/atom/ns#' term='jquery'/><category scheme='http://www.blogger.com/atom/ns#' term='html5'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><category scheme='http://www.blogger.com/atom/ns#' term='flash'/><category scheme='http://www.blogger.com/atom/ns#' term='internet explorer 10'/><category scheme='http://www.blogger.com/atom/ns#' term='css'/><title type='text'>Internet Explorer 10 para tablets no Windows 8 não suportará Flash e nem Silverlight!!! E será programado com HTML5 + Javascript + CSS!!!</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: verdana, helvetica, sans-serif; font-size: 14px; line-height: 18px;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;h1 style="font: normal normal bold 27px/32px tahoma, helvetica, sans-serif; margin-bottom: 10px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;Internet Explorer 10 para tablets no Windows 8 não suportará Flash e nem Silverlight!!! E será programado com HTML5 + Javascript + CSS!!!&lt;/h1&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Caraca... o novo Internet Explorer 10 no Windows 8 não terá suporte a plugins em sua versão para tablets... que coisa... vai ter suporte apenas na sua versão desktop...&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;O mais estranho é que, além de significar que ele não suportará Flash em sua versão para tablets, ele não suportará também o plugin Silverlight DA PRÓPRIA MICROSOFT!!!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Em alguns sites na Web já se fala até mesmo da morte do Silverlight... isso é uma coisa muito estranha... é quase como que um tiro no pé...&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;O mais estranho é a linguagem que será aceita no novo Windows 8: HTML 5 + Javascript + CSS!!! Mesmo pra um ambiente desktop!!! ISSO é muito bizarro...&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Javascript e CSS já é uma droga para desenvolvedores. Para a Web, felizmente, surgiu o JQuery que padroniza o Javascript dos navegadores. Um código escrito em JQuery PRATICAMENTE roda igual em todos os navegadores (mas não é 100% garantido). Mas ainda não criaram um "JQueryCSS", ou seja, o CSS escrito para um navegador roda diferente em outro navegador.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Para que um efeito em CSS rode iguais em diferentes navegadores, temos que colocar alguns "IFs" e fazer alguns "truques" (os famosos "hacks") para isso. Sem contar que a cada lançamento novo de algum navegador, sempre alguma funcionalidade ou algum efeito deixa de funcionar... e lá vai o coitado do programador a toque de caixa correr atrás do prejuízo feito um louco...&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Ou seja, Javascript + CSS é um ambiente INSTÁVEL para desenvolvimento. Me parece completamente ILÓGICO jogar um ambiente desses para um ambiente desktop. O ambiente desktop sempre foi um ambiente estável. Com ótimas ferramentas de desenvolvimento no estilo RAD. Já, fazer um ambiente de desenvolvimento no estilo RAD com Javascript + CSS... não confio muito não...&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Por isso é que passei a ADORAR o Flex. O Flex trouxe uma plataforma madura, estável, robusta e com uma ÓTIMA ferramenta RAD exatamente PARA O AMBIENTE WEB! Um ambiente que nunca teve algo assim. Programar em Flex é muito fácil e - principalmente - muito rápido. E desenvolver software rápido em uma época onde TUDO é para ontem... faz toda a diferença.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Um conhecido meu sempre fala que "Javascript é a linguagem do futuro". E eu sempre respondo "Eu sei. Por isso acho que o futuro será negro", hehehe. Continuo com essa minha afirmação.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Ah, outra coisa. Também não ouvi falar em .Net, Visual Basic.Net, C#.Net nesse novo Windows 8 ainda...&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Bem... mas o que importa é que, hoje em dia, a maior parte dos programadores desenvolvem aplicações COMERCIAIS em Flex. Esse tipo de sistema pode ser feito com Flex e distribuído com Adobe Air para que ele rode como um programa desktop instalado na máquina.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Graças a essa tecnologia, programadores Flex podem fazer programas que rodam na Web, em desktop e até mesmo como um aplicativo para iPhone e Android. Dessa forma, acho que o Adobe Air ainda será disponibilizado no Windows 8 para a versão para tablets (menos mal :) )&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Bem... vamos ver o que o futuro nos reserva...&lt;/div&gt;&lt;div&gt;&lt;br /&gt;Fontes:&lt;br /&gt;&lt;a href="http://www1.folha.uol.com.br/tec/976016-internet-explorer-para-tela-sensivel-ao-toque-nao-suportara-flash.shtml"&gt;http://www1.folha.uol.com.br/tec/976016-internet-explorer-para-tela-sensivel-ao-toque-nao-suportara-flash.shtml&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://blogs.msdn.com/b/b8/archive/2011/09/14/metro-style-browsing-and-plug-in-free-html5.aspx"&gt;http://blogs.msdn.com/b/b8/archive/2011/09/14/metro-style-browsing-and-plug-in-free-html5.aspx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.devdotnet.com.br/?p=1196"&gt;http://www.devdotnet.com.br/?p=1196&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://gustavomalheiros.wordpress.com/2011/07/18/rumos-do-silverlight-wpf-e-do-windows-8/"&gt;http://gustavomalheiros.wordpress.com/2011/07/18/rumos-do-silverlight-wpf-e-do-windows-8/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://forums.silverlight.net/t/230502.aspx"&gt;http://forums.silverlight.net/t/230502.aspx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://davidburela.wordpress.com/2011/06/14/premature-cries-of-silverlight-wpf-skill-loss-windows-8-supports-all-programming-models/"&gt;http://davidburela.wordpress.com/2011/06/14/premature-cries-of-silverlight-wpf-skill-loss-windows-8-supports-all-programming-models/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Flw,&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Rodison&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8514344970732460488-4222969204450119285?l=rodison.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rodison.blogspot.com/feeds/4222969204450119285/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8514344970732460488&amp;postID=4222969204450119285&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8514344970732460488/posts/default/4222969204450119285'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8514344970732460488/posts/default/4222969204450119285'/><link rel='alternate' type='text/html' href='http://rodison.blogspot.com/2011/09/internet-explorer-para-tablets-nao.html' title='Internet Explorer 10 para tablets no Windows 8 não suportará Flash e nem Silverlight!!! E será programado com HTML5 + Javascript + CSS!!!'/><author><name>Rodison Ferreira</name><uri>https://profiles.google.com/116042571911434716678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-z9EVRh3jVHE/AAAAAAAAAAI/AAAAAAAAARA/dON2G5kV-qY/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8514344970732460488.post-7946641560751743481</id><published>2011-09-16T16:52:00.000-07:00</published><updated>2011-09-16T16:52:07.805-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='windows 8'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><title type='text'>Primeiras impressões: Windows 8 Developer Preview [vídeo]</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif; font-size: 16px;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;h1 style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;Primeiras impressões: Windows 8 Developer Preview [vídeo]&lt;/h1&gt;&lt;span class="subtitle"&gt;A Microsoft liberou uma versão Pré-Beta do novo Windows e o Baixaki já testou.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif; font-size: 16px;"&gt;&lt;span class="subtitle"&gt;Esse é o vídeo:&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif; font-size: 16px;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;object style="height: 390px; width: 640px;"&gt;&lt;param name="movie" value="http://www.youtube.com/v/2crcmEGg_OQ?version=3"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowScriptAccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/2crcmEGg_OQ?version=3" type="application/x-shockwave-flash" allowfullscreen="true" allowScriptAccess="always" width="640" height="390"&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;Leia mais em:&amp;nbsp;&lt;a href="http://www.tecmundo.com.br/windows-8/13372-primeiras-impressoes-windows-8-developer-preview-video-.htm#ixzz1YA7aZ5uG" style="color: #003399; text-decoration: none;"&gt;http://www.tecmundo.com.br/windows-8/13372-primeiras-impressoes-windows-8-developer-preview-video-.htm#ixzz1YA7aZ5uG&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif; font-size: 16px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif; font-size: 16px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif; font-size: 16px;"&gt;Bem legal o vídeo. Vai mudar bastante coisa. A princípio eu achei legal. Vamos ver...&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif; font-size: 16px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif; font-size: 16px;"&gt;Flw,&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif; font-size: 16px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif; font-size: 16px;"&gt;Rodison&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8514344970732460488-7946641560751743481?l=rodison.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rodison.blogspot.com/feeds/7946641560751743481/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8514344970732460488&amp;postID=7946641560751743481&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8514344970732460488/posts/default/7946641560751743481'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8514344970732460488/posts/default/7946641560751743481'/><link rel='alternate' type='text/html' href='http://rodison.blogspot.com/2011/09/primeiras-impressoes-windows-8.html' title='Primeiras impressões: Windows 8 Developer Preview [vídeo]'/><author><name>Rodison Ferreira</name><uri>https://profiles.google.com/116042571911434716678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-z9EVRh3jVHE/AAAAAAAAAAI/AAAAAAAAARA/dON2G5kV-qY/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8514344970732460488.post-1594190541122156525</id><published>2011-09-16T08:19:00.001-07:00</published><updated>2011-09-16T16:47:43.222-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='iphone 4'/><category scheme='http://www.blogger.com/atom/ns#' term='iphone'/><title type='text'>[iPhone] iPhone 4 apaga / desliga e não volta mais</title><content type='html'>[iPhone] iPhone 4 apaga / desliga e não volta mais&lt;br /&gt;&lt;br /&gt;Dia desses aconteceu algo realmente estranho no meu iPhone 4. A tela dele apagou e não acendeu mais!!!&lt;br /&gt;&lt;br /&gt;Apertei tudo quanto é botão e nada dele.&lt;br /&gt;&lt;br /&gt;O mais estranho é que se eu pegava outro celular para ligar para o meu número, ele ficava chamando, chamando, chamando mas no iPhone não aparecia nada. O iPhone não tocava, não vibrava, não acendia... nada!&lt;br /&gt;&lt;br /&gt;Botei pra carregar e nada também. Ele não acendia e nem dizia que estava carregando.&lt;br /&gt;&lt;br /&gt;Então deixei ele como estava pois tive que sair e só voltei de noite, umas 4 horas depois. Já tinha me decidido que no dia seguinte iria numa loja Apple aqui em Florianópolis.&lt;br /&gt;&lt;br /&gt;Então não aceitei o fato e fui pro Google.&lt;br /&gt;&lt;br /&gt;Surpresa minha: encontrei vários links falando sobre este problema e até um vídeo no Youtube que explica como religar o aparelho.&lt;br /&gt;&lt;br /&gt;Para religar o aparelho é até bastante simples:&lt;br /&gt;&lt;br /&gt;Fique pressionando o botão home (o botão redondo com um quadradinho branco q fica na parte da frente do iPhone mais embaixo) junto com o botão de liga/desliga (em cima do iPhone) por mais ou menos 1 minuto. Então a maçãzinha da Apple vai aparecer na tela e ele vai religar o aparelho.&lt;br /&gt;&lt;br /&gt;O nome desse procedimento é Hard Reset (se você quiser procurar no Google).&lt;br /&gt;&lt;br /&gt;O aparelho então demora para reiniciar porque na verdade ele vai estar um reboot forçado no iPhone, mas depois ele volta 100% ao normal.&lt;br /&gt;&lt;br /&gt;O motivo deste problema, segundo os links que eu achei no Google, é porque o meu iPhone estava rodando a versão do sistema operacional do iPhone (o iOS) versão 4.3.3.&lt;br /&gt;&lt;br /&gt;A solução para o problema é atualizar para a versão 4.3.5 (ou posterior) que está disponível via iTunes.&lt;br /&gt;&lt;br /&gt;TEORICAMENTE este problema foi resolvido na atualização 4.3.5 do iOS.&lt;br /&gt;&lt;br /&gt;Atualizei o meu e até agora tudo OK... mas vou ficar de olho, hehehe.&lt;br /&gt;&lt;br /&gt;É isso pessoal, flw&lt;br /&gt;&lt;br /&gt;Rodison&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8514344970732460488-1594190541122156525?l=rodison.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rodison.blogspot.com/feeds/1594190541122156525/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8514344970732460488&amp;postID=1594190541122156525&amp;isPopup=true' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8514344970732460488/posts/default/1594190541122156525'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8514344970732460488/posts/default/1594190541122156525'/><link rel='alternate' type='text/html' href='http://rodison.blogspot.com/2011/09/iphone-iphone-4-apaga-desliga-e-nao.html' title='[iPhone] iPhone 4 apaga / desliga e não volta mais'/><author><name>Rodison Ferreira</name><uri>https://profiles.google.com/116042571911434716678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-z9EVRh3jVHE/AAAAAAAAAAI/AAAAAAAAARA/dON2G5kV-qY/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8514344970732460488.post-5135042889383763178</id><published>2011-09-15T18:04:00.000-07:00</published><updated>2011-09-15T18:05:58.793-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='rest'/><category scheme='http://www.blogger.com/atom/ns#' term='webservice'/><category scheme='http://www.blogger.com/atom/ns#' term='html5'/><category scheme='http://www.blogger.com/atom/ns#' term='jsf'/><title type='text'>Mini curso gratuito - JSF 2, Rest e HTML5 - GlobalCode</title><content type='html'>&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;Dia 29/09/2011 das 19hs às 22hs, a GlobalCode estará realizando o mini curso GRATUITO&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="background-color: white; color: #00a160; font-family: Verdana, Arial, Helvetica, sans-serif; font-weight: bold; line-height: 18px;"&gt;MC98 - JSF 2, Rest e HTML5&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;Ementa do curso:&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;span class="Apple-style-span" style="background-color: white; font-family: Verdana, Arial, Helvetica, sans-serif;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="margin-bottom: 4px; margin-top: 4px; text-align: left;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;Integração de sistemas sempre foi uma tarefa difícil, REST é um estilo arquitetural definido por Roy Fielding em sua tese de doutorado no ano 2000, onde simplificou-se os padrões de trocas de mensagem, sem a necessidade de protocolo de serviços web como SOAP.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 4px; margin-top: 4px; text-align: left;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;Neste mini-curso entenderemos como pensar em uma arquitetura com REST, e como ele trabalha com JSF 2 através da JSR - 311 (JAX-RS), além de como podemos integrar isto tudo com HTML 5 em nossos projetos.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom: 4px; margin-top: 4px; text-align: left;"&gt;&lt;/div&gt;&lt;div style="margin-bottom: 4px; margin-top: 4px; text-align: left;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;Minicurso criado pelo Raphael Adrien originalmente para apresentação no JavaOne Brasil 2010.&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: white;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: white;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;O mini curso será realizado em Florianópolis (sem transmissão pela Internet).&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: white;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;Para fazer a inscrição no mini curso, acesse:&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;a href="http://www.globalcode.com.br/gratuitos/minicursos/minicurso-jsf2-rest-html5"&gt;http://www.globalcode.com.br/gratuitos/minicursos/minicurso-jsf2-rest-html5&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;Eu já fiz a minha&amp;nbsp;&lt;/span&gt;inscrição&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&amp;nbsp;nesse mini curso também ;)&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;Flw,&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;Rodison&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8514344970732460488-5135042889383763178?l=rodison.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rodison.blogspot.com/feeds/5135042889383763178/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8514344970732460488&amp;postID=5135042889383763178&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8514344970732460488/posts/default/5135042889383763178'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8514344970732460488/posts/default/5135042889383763178'/><link rel='alternate' type='text/html' href='http://rodison.blogspot.com/2011/09/mini-curso-gratuito-jsf-2-rest-e-html5.html' title='Mini curso gratuito - JSF 2, Rest e HTML5 - GlobalCode'/><author><name>Rodison Ferreira</name><uri>https://profiles.google.com/116042571911434716678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-z9EVRh3jVHE/AAAAAAAAAAI/AAAAAAAAARA/dON2G5kV-qY/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8514344970732460488.post-6460307099811640017</id><published>2011-09-15T17:47:00.000-07:00</published><updated>2011-09-15T17:52:28.914-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='agile'/><category scheme='http://www.blogger.com/atom/ns#' term='engenharia de software'/><category scheme='http://www.blogger.com/atom/ns#' term='análise de sistemas'/><category scheme='http://www.blogger.com/atom/ns#' term='xp'/><category scheme='http://www.blogger.com/atom/ns#' term='scrum'/><title type='text'>Mini curso gratuito - Scrum + XP = Agilidade eXtrema - GlobalCode</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;Dia 22/09/2011 das 19hs às 22hs, a GlobalCode estará realizando o mini curso GRATUITO MC57 - Scrum + XP = Agilidade eXtrema&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;Ementa do curso:&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: white;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;Neste mini curso, vamos apresentar os conceitos por trás das metologias ágeis até culminar no surgimento do manifesto ágil. Vamos abordar os fundamentos do Gerenciamento Ágil de projetos com Scrum e analisar como é feito o planejamento e a estimativa de projetos dentro de um contexto ágil. E vamos abordar os príncipios, valores e práticas do Extreme Programming, conforme apresentado por Kent Beck no livro Extreme Programming Embrace Change, e demonstrar como Scrum e XP se relacionam, e como trabalhar em conjunto com as duas dentro de um contexto prático.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: white;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: white;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;O mini curso será realizado em São Paulo mas também será mostrado ao vivo pela Internet via webcast.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: white;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: white;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;Você pode já baixar o material do curso em:&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: white;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: white;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;a href="http://www.globalcode.com.br/download/minicursos/mc57.pdf"&gt;http://www.globalcode.com.br/download/minicursos/mc57.pdf&lt;/a&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: white;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: white;"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;Para fazer a inscrição no mini curso, acesse:&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;a href="http://www.globalcode.com.br/gratuitos/minicursos/minicurso-scrum-extreme-programming-agilidade-extrema#.TnKFp_GtKU4.twitter"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;http://www.globalcode.com.br/gratuitos/minicursos/minicurso-scrum-extreme-programming-agilidade-extrema#.TnKFp_GtKU4.twitter&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;Eu já fiz a minha inscrição ;)&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;Flw,&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;Rodison&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8514344970732460488-6460307099811640017?l=rodison.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rodison.blogspot.com/feeds/6460307099811640017/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8514344970732460488&amp;postID=6460307099811640017&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8514344970732460488/posts/default/6460307099811640017'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8514344970732460488/posts/default/6460307099811640017'/><link rel='alternate' type='text/html' href='http://rodison.blogspot.com/2011/09/mini-curso-gratuito-scrum-xp-agilidade.html' title='Mini curso gratuito - Scrum + XP = Agilidade eXtrema - GlobalCode'/><author><name>Rodison Ferreira</name><uri>https://profiles.google.com/116042571911434716678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-z9EVRh3jVHE/AAAAAAAAAAI/AAAAAAAAARA/dON2G5kV-qY/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8514344970732460488.post-5614781822509508433</id><published>2011-09-13T19:08:00.000-07:00</published><updated>2011-09-13T19:08:50.195-07:00</updated><title type='text'>Windows 8 - Copenhagen Concept in 2012</title><content type='html'>&lt;iframe width="480" height="295" src="http://www.youtube.com/embed/5zqGXWnYe_U?fs=1" frameborder="0" allowfullscreen=""&gt;&lt;/iframe&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8514344970732460488-5614781822509508433?l=rodison.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rodison.blogspot.com/feeds/5614781822509508433/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8514344970732460488&amp;postID=5614781822509508433&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8514344970732460488/posts/default/5614781822509508433'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8514344970732460488/posts/default/5614781822509508433'/><link rel='alternate' type='text/html' href='http://rodison.blogspot.com/2011/09/windows-8-copenhagen-concept-in-2012.html' title='Windows 8 - Copenhagen Concept in 2012'/><author><name>Rodison Ferreira</name><uri>https://profiles.google.com/116042571911434716678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-z9EVRh3jVHE/AAAAAAAAAAI/AAAAAAAAARA/dON2G5kV-qY/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://img.youtube.com/vi/5zqGXWnYe_U/default.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8514344970732460488.post-1138900420036414904</id><published>2011-09-13T18:16:00.000-07:00</published><updated>2011-09-13T18:16:46.082-07:00</updated><title type='text'>Trillian - comunicador instantâneo</title><content type='html'>&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;testando o trillian... muito bom... muito bom mesmo. permite usar o msn, google talk e ateh o antigo icq tudo junto.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;além disso tb permite o usar o chat do facebook, do foursquare, do linkedIn e do twitter (nem sabia q tinha)&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;e não é só isso!!! tb permite ver todos os posts do twitter e facebook!&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;tudo isso junto em apenas uma barrinha q fica à direita da tela... muito bom, muito rápido e muito prático.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;e o melhor de tudo! levíssimo!!! consome só 16MB de ram!!! isso é muito pouco (até pq hj em dia qualquer coisinha de nada consome no mínimo uns 60MB de ram (o q eh um absurdo, mas...))&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;muito bom esse programa mesmo. recomendo.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;flw,&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif;"&gt;rodison&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8514344970732460488-1138900420036414904?l=rodison.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rodison.blogspot.com/feeds/1138900420036414904/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8514344970732460488&amp;postID=1138900420036414904&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8514344970732460488/posts/default/1138900420036414904'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8514344970732460488/posts/default/1138900420036414904'/><link rel='alternate' type='text/html' href='http://rodison.blogspot.com/2011/09/trillian-comunicador-instantaneo.html' title='Trillian - comunicador instantâneo'/><author><name>Rodison Ferreira</name><uri>https://profiles.google.com/116042571911434716678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-z9EVRh3jVHE/AAAAAAAAAAI/AAAAAAAAARA/dON2G5kV-qY/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8514344970732460488.post-7344805185889931827</id><published>2011-09-13T17:33:00.000-07:00</published><updated>2011-09-13T17:38:15.683-07:00</updated><title type='text'>Histórias legais que a gente encontra de vez em quando sem querer na Internet</title><content type='html'>&lt;span class="Apple-style-span" style="background-color: #ecf1f0; font-family: Arial, 'Lucida Sans', 'Lucida Grande', Verdana, sans-serif; font-size: 17px;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;strong&gt;Histórias legais que a gente encontra de vez em quando sem querer na Internet&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;Esse texto não é meu, mas achei muito legal:&lt;br /&gt;&lt;strong&gt;&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;Fonte:&amp;nbsp;&lt;/strong&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: #ecf1f0; font-family: Arial, 'Lucida Sans', 'Lucida Grande', Verdana, sans-serif; font-size: 17px;"&gt;&lt;a href="http://www.madcap.com.br/2010/contos-da-carochinha/a-volta-do-icq/"&gt;http://www.madcap.com.br/2010/contos-da-carochinha/a-volta-do-icq/&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, 'Lucida Sans', 'Lucida Grande', Verdana, sans-serif;"&gt;&lt;span class="Apple-style-span" style="font-size: 17px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="background-color: #ecf1f0; font-family: Arial, 'Lucida Sans', 'Lucida Grande', Verdana, sans-serif; font-size: 17px;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;strong&gt;A australiana&lt;/strong&gt;&lt;br /&gt;O ICQ era legal, porque toda vez que algum novo usuário aparecia, você sabia que era mais um adido cultural na sua lista de experiências virtuais. E não existia tanta privacidade, um UIN conversava com o outro sem a necessidade de adicionar ou pedir permissão (Isso mudou em 1999 com a neurótica Aol LLC).&lt;br /&gt;&lt;br /&gt;Uma dessas conversas foi com uma garota australiana. Ela era toda bonitinha, eu era um salafrário cafajeste, então já viu. Conversávamos por muito tempo — eu na madruga e ela no entardecer — amenidades, diferenças culturais, gírias&amp;nbsp;&lt;em&gt;aussies&amp;nbsp;&lt;/em&gt;pra cá, inglês macarrônico pra lá.&lt;br /&gt;&lt;br /&gt;Até que eu contei que meu avô era imigrante aqui no Brasil. Ela confidenciou que o avô dela também era alemão e refugiado da segunda guerra, mas que tinha perdido dois irmãos pelo mundo quando fugiram, talvez para a américa. Solícito que sou, disse que aqui na América do sul era fácil achar gente (era nada), e que faria uma pesquisa mais complexa para ela.&lt;br /&gt;&lt;br /&gt;A minha idéia era passar os nomes para um amigo que trabalhava na antiga operadora de telefonia que a TIM comprou. Por ali ele conseguiria abranger o Brasil inteiro e, se os dois chucrutes estivesse nas terras tupiniquins, eu teria assunto para mais uns anos com a ruivinha.&lt;br /&gt;&lt;br /&gt;Acontece que eu tinha duas listas telefônicas embaixo do meu monitor (gambiarra de nivelamento de vídeo avançado) e resolvi folheá-las. Era muita coincidência: tinha 9 sobrenomes que batiam. Destes dois eram os primeiros nomes indicados. Aí já fiquei com a pulga atrás da orelha e resolvi ligar para o primeiro.&lt;br /&gt;&lt;blockquote style="display: block; font-family: Georgia, 'Times New Roman', Times, serif; left: -65px; padding-left: 70px; position: relative; width: 590px;"&gt;— Seu Walfried?&lt;br /&gt;— Ja vohl!&lt;br /&gt;— O senhor é o irmão mais velho do Günter?&lt;br /&gt;— …&lt;br /&gt;— Alôuuu?&lt;br /&gt;— Como você sabe!?&lt;/blockquote&gt;Desliguei na cara. Liguei para o Manfried. Mesma reação atônita.&lt;br /&gt;Mandei um e-mail para a garota australiana (naquele tempo a gente usava o ICQ para amenidades e e-mails para coisas importantes), com os dados dos dois velhos: telefone, endereço, CEP, tudo.&lt;br /&gt;O que se sucedeu foi uma coisa inacreditável, relatado por e-mail pelo pai da&amp;nbsp;&lt;em&gt;down under:&lt;/em&gt;Eles contataram os velhos aqui no Brasil; Os dois não sabiam que o irmão estava vivo, nem o irmão sabia que os dois ainda estavam na ativa; reuniram os três, 50 anos depois, em uma grande festa em Melbourne, onde os primos, netos, familiares e agregados se conheceram pela primeira vez.&lt;br /&gt;A garota achava que eu era um herói, eu achava que nunca ia dar uns pegas nela. Ela achou namorado, eu virei metaleiro, ela casou e eu comprei uma bicicleta.&lt;br /&gt;Depois disso só ficou a lembrança de ter feito uma coisa extremamente fenomenal para alguém que eu nunca, de fato, conheci.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8514344970732460488-7344805185889931827?l=rodison.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rodison.blogspot.com/feeds/7344805185889931827/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8514344970732460488&amp;postID=7344805185889931827&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8514344970732460488/posts/default/7344805185889931827'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8514344970732460488/posts/default/7344805185889931827'/><link rel='alternate' type='text/html' href='http://rodison.blogspot.com/2011/09/historias-legais-que-gente-encontra-de.html' title='Histórias legais que a gente encontra de vez em quando sem querer na Internet'/><author><name>Rodison Ferreira</name><uri>https://profiles.google.com/116042571911434716678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-z9EVRh3jVHE/AAAAAAAAAAI/AAAAAAAAARA/dON2G5kV-qY/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8514344970732460488.post-4520810708378262033</id><published>2011-08-03T09:32:00.001-07:00</published><updated>2011-08-03T09:32:15.201-07:00</updated><title type='text'>[PIADA] Os tipos de problemas (em forma ascendente)</title><content type='html'>[PIADA] Os tipos de problemas (em forma ascendente)&lt;br /&gt; &lt;br /&gt;Isso é de uma piadinha que eu recebi:&lt;br /&gt; &lt;br /&gt;Pepino = problema&lt;br /&gt; &lt;br /&gt;Leão = um grande problema&lt;br /&gt; &lt;br /&gt;Dragão = é um problema enorme&lt;br /&gt; &lt;br /&gt;ALIEN = é um problema do outro mundo&lt;br /&gt; &lt;br /&gt;PREDADOR = é um problema impossível de ser resolvido, exemplo, fazer um corpo com massa m viajar com velocidade acima da velocidade da luz&lt;br /&gt; &lt;br /&gt;flw,&lt;br /&gt; &lt;br /&gt;Rodison&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8514344970732460488-4520810708378262033?l=rodison.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rodison.blogspot.com/feeds/4520810708378262033/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8514344970732460488&amp;postID=4520810708378262033&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8514344970732460488/posts/default/4520810708378262033'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8514344970732460488/posts/default/4520810708378262033'/><link rel='alternate' type='text/html' href='http://rodison.blogspot.com/2011/08/piada-os-tipos-de-problemas-em-forma.html' title='[PIADA] Os tipos de problemas (em forma ascendente)'/><author><name>Rodison Ferreira</name><uri>https://profiles.google.com/116042571911434716678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-z9EVRh3jVHE/AAAAAAAAAAI/AAAAAAAAARA/dON2G5kV-qY/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8514344970732460488.post-2438312913110735755</id><published>2011-08-03T08:48:00.001-07:00</published><updated>2011-08-03T08:48:52.990-07:00</updated><title type='text'>[java] Técnica "ReturnSet"</title><content type='html'>[java] Técnica "ReturnSet"&lt;br /&gt; &lt;br /&gt;Oi pessoal,&lt;br /&gt; &lt;br /&gt;Estou aqui para falar de uma prática que costumo adotar nos meus códigos java e flex chamado "ReturnSet".&lt;br /&gt; &lt;br /&gt;É algo bem básico e simples que facilita a vida para quem precisa popular VOs que contenha muitos atributos.&lt;br /&gt; &lt;br /&gt;Não chamo isso de padrão de projeto pois padrão de projeto é algo que foi muito estudado e - principalmente - comprovado na prática em várias situações e por várias pessoas em vários projetos.&lt;br /&gt; &lt;br /&gt;Bem, vamos ao que interessa:&lt;br /&gt; &lt;br /&gt;Digamos que você tem um VO com 10 atributos e precisa popular ele. O tradicional seria:&lt;br /&gt; &lt;br /&gt;MeuVO meuVO = new MeuVO();&lt;br /&gt;meuVO.setAtributo1("valor1");&lt;br /&gt;meuVO.setAtributo2("valor2");&lt;br /&gt;meuVO.setAtributo3("valor3");&lt;br /&gt;...&lt;br /&gt;meuVO.setAtributo10("valor10");&lt;br /&gt; &lt;br /&gt;isso para cada um dos 10 atributos.&lt;br /&gt; &lt;br /&gt;Ou então colocar tudo no construtor:&lt;br /&gt; &lt;br /&gt;MeuVO = new MeuVO("valor1", "valor2", "valor3", ...,  "valor10");&lt;br /&gt; &lt;br /&gt;Essa segunda opção eu não gosto porque são tantos atributos - e não tem nada pra identificar eles - que eu pelo menos me perco sobre qual valor é de qual atributo.&lt;br /&gt; &lt;br /&gt;Sem contar que se eu quisesse alterar só 3 atributos eu não conseguiria dessa segunda forma porque eu teria que passar todos os outros 7 atributos.&lt;br /&gt; &lt;br /&gt;Uma solução simples para isso seria: além de ter um get e set tradicionais para cada atributo, poderíamos criar também um returnSet para cada atributo no VO.&lt;br /&gt; &lt;br /&gt;Este "returnSet" seria como a seguir:&lt;br /&gt; &lt;br /&gt;public MeuVO returnSetAtributo1(String atributo1) {&lt;br /&gt;   this.setAtributo1(atributo1);&lt;br /&gt;   return this;&lt;br /&gt;}&lt;br /&gt; &lt;br /&gt;Simples assim.&lt;br /&gt; &lt;br /&gt;Dessa forma, para setar os atributos, só teríamos que fazer assim:&lt;br /&gt; &lt;br /&gt;MeuVO meuVO = new MeuVO().returnSetAtributo1("valor1").returnSetAtributo2("valor2").returnSetAtributo3("valor3");&lt;br /&gt; &lt;br /&gt;Pronto, só isso. Em uma única linha de maneira legível :)&lt;br /&gt; &lt;br /&gt;Ah, mas dá mais trabalho ter que criar um returnSet para cada atributo!&lt;br /&gt; &lt;br /&gt;Ah, mas eu já não gosto de gets e sets e tu vem me colocar mais um!&lt;br /&gt; &lt;br /&gt;A minha resposta pra isso é: isso não é problema nenhum se você tem uma ferramenta que automatize seu código para você.&lt;br /&gt; &lt;br /&gt;É muito fácil (muito mais fácil - e rápido - do que todo mundo imagina) fazer uma ferramenta automatizadora de código.&lt;br /&gt; &lt;br /&gt;Vou mostrar isso em alguns posts pra frente.&lt;br /&gt; &lt;br /&gt;É isso pessoal, flw.&lt;br /&gt;&lt;br /&gt;Rodison&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8514344970732460488-2438312913110735755?l=rodison.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rodison.blogspot.com/feeds/2438312913110735755/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8514344970732460488&amp;postID=2438312913110735755&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8514344970732460488/posts/default/2438312913110735755'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8514344970732460488/posts/default/2438312913110735755'/><link rel='alternate' type='text/html' href='http://rodison.blogspot.com/2011/08/java-tecnica.html' title='[java] Técnica &amp;quot;ReturnSet&amp;quot;'/><author><name>Rodison Ferreira</name><uri>https://profiles.google.com/116042571911434716678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-z9EVRh3jVHE/AAAAAAAAAAI/AAAAAAAAARA/dON2G5kV-qY/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8514344970732460488.post-2968665867974191690</id><published>2011-07-29T08:15:00.001-07:00</published><updated>2011-07-29T08:15:51.760-07:00</updated><title type='text'>Java - método chamarMetodo() - método utilitário para chamar um método qualquer dinamicamente em Java via Reflection</title><content type='html'>&lt;br /&gt;Java - método chamarMetodo() - método utilitário para chamar um método qualquer dinamicamente em Java via Reflection&lt;br /&gt; &lt;br /&gt;Oi pessoal,&lt;br /&gt; &lt;br /&gt;Hoje vou mostrar um método utilitário para chamar um método qualquer dinamicamente em Java via Reflection:&lt;br /&gt; &lt;br /&gt;   /**&lt;br /&gt;    * Chama um método dinamicamente (via Reflection).&lt;br /&gt;    *&lt;br /&gt;    * @param classeExecutora - A Classe onde está o método a ser chamado.&lt;br /&gt;    * @param objetoExecutor - Uma instância da classeExecutora que irá executar o método. Se o&lt;br /&gt;    *           método a ser chamado for um método static, neste parâmetro deve vir null.&lt;br /&gt;    * @param nomeMetodo - O nome do método a ser chamado.&lt;br /&gt;    * @param arrayClassesParametros - Um array com as Classes dos parâmetros do método a ser&lt;br /&gt;    *           chamado.&lt;br /&gt;    * @param arrayObjetosParametros - Um array com as instâncias (os valores) dos parâmetros do&lt;br /&gt;    *           método a ser chamado.&lt;br /&gt;    * @return Object - o retorno do método desejado (se o mesmo tiver algum retorno, senão&lt;br /&gt;    *         retorna null)&lt;br /&gt;    */&lt;br /&gt;   @SuppressWarnings("unchecked")&lt;br /&gt;   public static Object chamarMetodo(Class classeExecutora, Object objetoExecutor,&lt;br /&gt;            String nomeMetodo, Class[] arrayClassesParametros, Object[] arrayObjetosParametros) {&lt;br /&gt;      if (nomeMetodo == null || "".equals(nomeMetodo.trim())) {&lt;br /&gt;         throw new RuntimeException(&lt;br /&gt;                  "chamarMetodo() - O nome do método que deveria ser chamado está vazio.");&lt;br /&gt;      }&lt;br /&gt;      if (arrayClassesParametros == null) {&lt;br /&gt;         // se o araryClassesParametros estah null, cria um array vazio&lt;br /&gt;         arrayClassesParametros = new Class[] {};&lt;br /&gt;      }&lt;br /&gt;      if (arrayObjetosParametros == null) {&lt;br /&gt;         // se o arrayObjetosParametros estah null, cria um array vazio&lt;br /&gt;         arrayObjetosParametros = new Object[] {};&lt;br /&gt;      }&lt;br /&gt;      Object retorno = null;&lt;br /&gt;&lt;br /&gt;      // vai chamar o método desejado&lt;br /&gt;      Method metodo;&lt;br /&gt;      try {&lt;br /&gt;         metodo = classeExecutora.getMethod(nomeMetodo, arrayClassesParametros);&lt;br /&gt;      } catch (NullPointerException e) {&lt;br /&gt;         throw new RuntimeException(&lt;br /&gt;                  "chamarMetodo() - A classeExecutora (a classe que deveria chamar " +&lt;br /&gt;                           "o método desejado) está nula. Error: " + e);&lt;br /&gt;      } catch (NoSuchMethodException e) {&lt;br /&gt;         throw new RuntimeException("chamarMetodo() - O método chamado (" +&lt;br /&gt;                  classeExecutora.getName() + "." + nomeMetodo + "()" +&lt;br /&gt;                  ") não foi encontrado. Error: " + e);&lt;br /&gt;      }&lt;br /&gt;&lt;br /&gt;      try {&lt;br /&gt;         retorno = metodo.invoke(objetoExecutor, arrayObjetosParametros);&lt;br /&gt;      } catch (InvocationTargetException e) {&lt;br /&gt;         throw new RuntimeException(&lt;br /&gt;                  "chamarMetodo() - Erro desconhecido ao chamar o método \"" +&lt;br /&gt;                           nomeMetodo + "\" com os parâmetros \"" + arrayObjetosParametros +&lt;br /&gt;                           "\".\n\nExceção gerada: " + e + " ##### Target do Erro: " +&lt;br /&gt;                           e.getTargetException());&lt;br /&gt;&lt;br /&gt;      } catch (IllegalAccessException e) {&lt;br /&gt;         throw new RuntimeException(&lt;br /&gt;                  "chamarMetodo() - Erro desconhecido ao chamar o método \"" +&lt;br /&gt;                           nomeMetodo + "\" com os parâmetros \"" + arrayObjetosParametros +&lt;br /&gt;                           "\".\n\nExceção gerada: " + e);&lt;br /&gt;      }&lt;br /&gt;      return retorno;&lt;br /&gt;   }&lt;br /&gt; &lt;br /&gt;Com este método, fica muito mais fácil chamar um método qualquer via Reflection. Veja como funciona com os exemplos abaixo:&lt;br /&gt; &lt;br /&gt;1 - Digamos que eu tenho uma classe MeuTeste com o seguinte método:&lt;br /&gt; &lt;br /&gt;public Map testando(String nome, TesteVO testeVO);&lt;br /&gt; &lt;br /&gt;Para chamar o método, fazemos o seguinte:&lt;br /&gt; &lt;br /&gt;MeuTeste meuTeste = new MeuTeste();&lt;br /&gt;TesteVO testeVO = new TesteVO();&lt;br /&gt; &lt;br /&gt;Map mapaRetorno = (Map)chamarMetodo(MeuTeste.class, meuTeste, "testando", new Class[] { String.class, TesteVO.class }, new Object[] { "Rodison", testeVO });&lt;br /&gt; &lt;br /&gt;Dessa forma, o método será chamado via Reflection.&lt;br /&gt; &lt;br /&gt;Chamar um método desta forma permite muitas possibilidades, principalmente se você está fazendo métodos utilitários que poderão ser reutilizados em N projetos para automatizar trechos de código.&lt;br /&gt; &lt;br /&gt;Vamos para o segundo exemplo.&lt;br /&gt; &lt;br /&gt;2 - Vamos chamar a mesma função mas sem parâmetros:&lt;br /&gt; &lt;br /&gt;public Map testando2();&lt;br /&gt; &lt;br /&gt;Para chamar o método, fazemos o seguinte:&lt;br /&gt; &lt;br /&gt;MeuTeste meuTeste = new MeuTeste();&lt;br /&gt; &lt;br /&gt;Map mapaRetorno = (Map)chamarMetodo(MeuTeste.class, meuTeste, "testando2", null, null);&lt;br /&gt; &lt;br /&gt;3 - Chamando um método void:&lt;br /&gt; &lt;br /&gt;public void testando3();&lt;br /&gt; &lt;br /&gt;Para chamar o método, fazemos o seguinte:&lt;br /&gt; &lt;br /&gt;MeuTeste meuTeste = new MeuTeste();&lt;br /&gt; &lt;br /&gt;chamarMetodo(MeuTeste.class, meuTeste, "testando3", null, null);&lt;br /&gt; &lt;br /&gt;4 - Chamando um método estático:&lt;br /&gt; &lt;br /&gt;public static RetornoVO testandoEstatico(String texto);&lt;br /&gt; &lt;br /&gt;Para chamar o método, fazemos o seguinte:&lt;br /&gt; &lt;br /&gt;RetornoVO retornoVO = (RetornoVO)chamarMetodo(MeuTeste.class, null, "testandoEstatico", new Class[] {String.class}, new Object[] {"texto qualquer"});&lt;br /&gt; &lt;br /&gt;Para chamar um método estático repare que o segundo argumento do chamarMetodo deve ser null (pois um método estácio é chamado diretamente sem precisar a classe do método).&lt;br /&gt; &lt;br /&gt;Bem, é isso. Mais uma funçãozinha pra facilitar a vida da gente :)&lt;br /&gt; &lt;br /&gt;flw,&lt;br /&gt; &lt;br /&gt;Rodison&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8514344970732460488-2968665867974191690?l=rodison.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rodison.blogspot.com/feeds/2968665867974191690/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8514344970732460488&amp;postID=2968665867974191690&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8514344970732460488/posts/default/2968665867974191690'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8514344970732460488/posts/default/2968665867974191690'/><link rel='alternate' type='text/html' href='http://rodison.blogspot.com/2011/07/java-metodo-chamarmetodo-metodo.html' title='Java - método chamarMetodo() - método utilitário para chamar um método qualquer dinamicamente em Java via Reflection'/><author><name>Rodison Ferreira</name><uri>https://profiles.google.com/116042571911434716678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-z9EVRh3jVHE/AAAAAAAAAAI/AAAAAAAAARA/dON2G5kV-qY/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8514344970732460488.post-7131107182310739003</id><published>2011-07-28T20:21:00.001-07:00</published><updated>2011-07-28T20:21:15.973-07:00</updated><title type='text'>Vida de programador.com.br</title><content type='html'>Ótimo blog: www.vidadeprogramador.com.br&lt;br /&gt;&lt;br /&gt;Blog com quadrinhos sobre situações corriqueirad e engraçadas na vida de um programador. &lt;br /&gt;&lt;br /&gt;Vale a pena conferir. &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8514344970732460488-7131107182310739003?l=rodison.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rodison.blogspot.com/feeds/7131107182310739003/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8514344970732460488&amp;postID=7131107182310739003&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8514344970732460488/posts/default/7131107182310739003'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8514344970732460488/posts/default/7131107182310739003'/><link rel='alternate' type='text/html' href='http://rodison.blogspot.com/2011/07/vida-de-programadorcombr.html' title='Vida de programador.com.br'/><author><name>Rodison Ferreira</name><uri>https://profiles.google.com/116042571911434716678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-z9EVRh3jVHE/AAAAAAAAAAI/AAAAAAAAARA/dON2G5kV-qY/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8514344970732460488.post-6351323328575693724</id><published>2011-05-11T10:28:00.000-07:00</published><updated>2011-05-11T10:28:07.106-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='florianopolis'/><category scheme='http://www.blogger.com/atom/ns#' term='flex'/><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='inside system'/><category scheme='http://www.blogger.com/atom/ns#' term='florianópolis'/><category scheme='http://www.blogger.com/atom/ns#' term='estagio'/><category scheme='http://www.blogger.com/atom/ns#' term='estágio'/><category scheme='http://www.blogger.com/atom/ns#' term='santa catarina'/><category scheme='http://www.blogger.com/atom/ns#' term='emprego'/><category scheme='http://www.blogger.com/atom/ns#' term='sc'/><category scheme='http://www.blogger.com/atom/ns#' term='vaga'/><category scheme='http://www.blogger.com/atom/ns#' term='trabalho'/><title type='text'>Vaga de Estágio Java / Flex - Florianópolis / SC - Inside System Informática Ltda.</title><content type='html'>Oi pessoal,&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt;Aqui na minha empresa abrimos vaga para duas vagas de estágio Java / Flex. As vagas são&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: monospace;"&gt;na área de desenvolvimento Java para web / Flex em Florianópolis.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt;&lt;br /&gt;O candidato deve possuir os seguintes conhecimentos (desejável, mas não obrigatório):&lt;br /&gt;&lt;br /&gt;- Bons conhecimentos em orientação a objetos;&lt;br /&gt;&lt;br /&gt;- Bons conhecimentos em programação java;&lt;br /&gt;&lt;br /&gt;- Bons conhecimentos em arquitetura web;&lt;br /&gt;&lt;br /&gt;- Conhecimentos em javascript e css;&lt;br /&gt;&lt;br /&gt;- Conhecimentos de Servlets e JSP (ou de algum framework para a web como JSF ou Struts, de preferência JSF);&lt;br /&gt;&lt;br /&gt;- Conhecimentos de banco de dados (saber fazer selects com cláusulas union, de preferência);&lt;br /&gt;&lt;br /&gt;- Ter iniciativa;&lt;br /&gt;&lt;br /&gt;- Saber se relacionar bem com colegas e clientes;&lt;br /&gt;&lt;br /&gt;- Ser auto-didata.&lt;br /&gt;&lt;br /&gt;O estágio é remunerado e oferecemos treinamento para o estagiário aprender a desenvolver sistemas web utilizando Hibernate, Spring, Flex, iReports, WebServices, JSF, Ajax e outras tecnologias.&lt;br /&gt;&lt;br /&gt;Este é um estágio que visa a contratação do canditado. Assim, ao fim do estágio, oferecemos oportunidade para contratação.&lt;br /&gt;&lt;br /&gt;Interessados, favor enviar e-mail com currículo e pretensão salarial para rodison@insidesystem.com.br e no título do e-mail colocar "VAGA ESTÁGIO JAVA FLEX".&lt;br /&gt;&lt;br /&gt;Atenciosamente,&lt;br /&gt;&lt;br /&gt;Rodison dos Santos Ferreira&lt;br /&gt;Coordenador Java&lt;br /&gt;Inside System Informática Ltda.&lt;br /&gt;www.insidesystem.com.br&lt;br /&gt;&lt;br /&gt;twitter: www.twitter.com/rodison&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8514344970732460488-6351323328575693724?l=rodison.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rodison.blogspot.com/feeds/6351323328575693724/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8514344970732460488&amp;postID=6351323328575693724&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8514344970732460488/posts/default/6351323328575693724'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8514344970732460488/posts/default/6351323328575693724'/><link rel='alternate' type='text/html' href='http://rodison.blogspot.com/2011/05/vaga-de-estagio-java-flex-florianopolis.html' title='Vaga de Estágio Java / Flex - Florianópolis / SC - Inside System Informática Ltda.'/><author><name>Rodison Ferreira</name><uri>https://profiles.google.com/116042571911434716678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-z9EVRh3jVHE/AAAAAAAAAAI/AAAAAAAAARA/dON2G5kV-qY/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8514344970732460488.post-953747235878946807</id><published>2011-01-26T16:41:00.000-08:00</published><updated>2011-01-26T16:41:31.585-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='celulares'/><category scheme='http://www.blogger.com/atom/ns#' term='mobile'/><category scheme='http://www.blogger.com/atom/ns#' term='nfc'/><category scheme='http://www.blogger.com/atom/ns#' term='nexus'/><category scheme='http://www.blogger.com/atom/ns#' term='rfid'/><category scheme='http://www.blogger.com/atom/ns#' term='google'/><category scheme='http://www.blogger.com/atom/ns#' term='google nexus s'/><category scheme='http://www.blogger.com/atom/ns#' term='celular'/><category scheme='http://www.blogger.com/atom/ns#' term='nexus s'/><title type='text'>NFC - Mais uma tecnologia nova interessante chegando (ou um RFID 2.0)</title><content type='html'>NFC, ou&amp;nbsp;Near Field Communication, é mais uma daquelas tecnologias novas que pode facilitar bastante a nossa vida.&lt;br /&gt;&lt;br /&gt;Ela seria uma "extensão" da tecnologia RFID.&lt;br /&gt;&lt;br /&gt;A tecnologia RFID é uma "etiqueta" que as empresas passaram a colocar nos seus produtos. Nesta etiqueta tem um transmissor de rádio que pode transmitir alguns dados por frequência de rádio. Este transmissor é tão fino que pode ser colocado em uma etiqueta adesiva, por exemplo.&amp;nbsp;Várias lojas estão colocando estas etiquetas em seus produtos pra servir como um "detector de roubo".&lt;br /&gt;&lt;br /&gt;Exemplo, se você pega um sapato em uma loja de sapatos e sem querer sai da loja passando por aqueles detectores de produtos, o detector apita dizendo que você saiu da loja com uma sapato sem pagar. Você olha para o sapato e não tem nada pendurado nele, nenhuma daquelas peças de plástico, nenhum dispositivo de segurança. Provavelmente é porque tem uma etiqueta dentro do sapato, entre as camadas de couro do sapato ou até mesmo dentro da sola do sapato. Ela emite uma frequência de rádio que avisa o detector de produtos.&lt;br /&gt;&lt;br /&gt;O RFID é usado inclusive em pedágios. Quando você instala aqueles "Via Rápida" no seu carro, que daí você passa direto no pedágio sem ter que pagar porque o valor é debitado automaticamente da sua conta quando você passa com o carro, é porque tem um dispositivo com RFID instalado no seu carro.&lt;br /&gt;&lt;br /&gt;Pois bem, o NFC seria uma evolução do RFID, mas para trafegar qualquer tipo de dados e com segurança. Isso significa que você poderia fazer pagamentos bancários ou comprar coisas através de um dispositivo com um chip NFC.&lt;br /&gt;&lt;br /&gt;Ou seja, um dispositivo NFC poderia ser usado no lugar de um cartão de débito ou de crédito. Na verdade, vejo ele como um ótimo substituto do cartão de débito / crédito.&lt;br /&gt;&lt;br /&gt;Até porque já estão surgindo celulares com chips NFC! Como o Google Nexus S que eu falei &lt;a href="http://rodison.blogspot.com/2011/01/google-nexus-s-o-proximo-celular-do.html"&gt;no último post&lt;/a&gt;. Ou seja, seu smartphone poderia ganhar mais uma função: função de cartão de débito / crédito. Muito bom.&lt;br /&gt;&lt;br /&gt;Sem contar que podem colocar "leitores" NFC em um celular, por exemplo.&lt;br /&gt;&lt;br /&gt;Imagina só, você vai no cinema. Vê nos cartazes os filmes em cartaz. No cartaz tem um chip NFC. Você aproxima o seu celular perto do cartaz e o seu celular automaticamente detecta o filme e mostra informações da internet sobre o filme e te permite até mesmo ver o trailer do filme pelo seu celular. Ótimo, né?&lt;br /&gt;&lt;br /&gt;Até mesmo alguns bancos, a Visa e a Mastercard já estão utilizando esta tecnologia, como se pode ver nesta ótima matéria da Convergência Digital em&amp;nbsp;&lt;a href="http://convergenciadigital.uol.com.br/cgi/cgilua.exe/sys/start.htm?infoid=24057&amp;amp;sid=15"&gt;http://convergenciadigital.uol.com.br/cgi/cgilua.exe/sys/start.htm?infoid=24057&amp;amp;sid=15&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Mais informações sobre o NFC na wikipedia (em inglês):&amp;nbsp;&lt;a href="http://en.wikipedia.org/wiki/Near_field_communication"&gt;http://en.wikipedia.org/wiki/Near_field_communication&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;E mais informações sobre o RFC na wikipedia (em português):&amp;nbsp;&lt;a href="http://pt.wikipedia.org/wiki/Rfid"&gt;http://pt.wikipedia.org/wiki/Rfid&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;flw&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8514344970732460488-953747235878946807?l=rodison.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rodison.blogspot.com/feeds/953747235878946807/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8514344970732460488&amp;postID=953747235878946807&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8514344970732460488/posts/default/953747235878946807'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8514344970732460488/posts/default/953747235878946807'/><link rel='alternate' type='text/html' href='http://rodison.blogspot.com/2011/01/nfc-mais-uma-tecnologia-nova.html' title='NFC - Mais uma tecnologia nova interessante chegando (ou um RFID 2.0)'/><author><name>Rodison Ferreira</name><uri>https://profiles.google.com/116042571911434716678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-z9EVRh3jVHE/AAAAAAAAAAI/AAAAAAAAARA/dON2G5kV-qY/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8514344970732460488.post-4327742263178072523</id><published>2011-01-26T15:57:00.000-08:00</published><updated>2011-01-26T15:57:53.110-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='celulares'/><category scheme='http://www.blogger.com/atom/ns#' term='galaxyS'/><category scheme='http://www.blogger.com/atom/ns#' term='galaxy S'/><category scheme='http://www.blogger.com/atom/ns#' term='nfc'/><category scheme='http://www.blogger.com/atom/ns#' term='nexus'/><category scheme='http://www.blogger.com/atom/ns#' term='rfid'/><category scheme='http://www.blogger.com/atom/ns#' term='celular'/><category scheme='http://www.blogger.com/atom/ns#' term='google nexus s'/><category scheme='http://www.blogger.com/atom/ns#' term='galaxy 5'/><category scheme='http://www.blogger.com/atom/ns#' term='mobile'/><category scheme='http://www.blogger.com/atom/ns#' term='google'/><category scheme='http://www.blogger.com/atom/ns#' term='android'/><category scheme='http://www.blogger.com/atom/ns#' term='nexus s'/><title type='text'>Google Nexus S - O próximo celular do Google rodando Android 2.3 (Gingerbread)</title><content type='html'>Duas notícias:&lt;br /&gt;&lt;br /&gt;Depois de lançar o Google Nexus One em parceria com a HTC, o Google vai lançar a segunda versão do seu celular: o Google Nexus S.&lt;br /&gt;&lt;br /&gt;Dessa vez o celular da Google vai ser feito pela Samsung, a mesma fabricante do Galaxy S e do Galaxy 5 (o meu celular, hehehe :P )&lt;br /&gt;&lt;br /&gt;O Google Nexus S virá rodando o Android 2.3 (Gingerbread). Espero que a atualização do Android 2.3 para os outros celulares venha logo também (inclusive pro meu cel, hehehe :) ).&lt;br /&gt;&lt;br /&gt;Quanto ao Hardware, não tem muitas diferenças quanto ao Galaxy S. Uma das vantagens, é que o celular virá com um chip NFC, algo beeeeem interessante :)&lt;br /&gt;&lt;br /&gt;Para ver mais sobre o Google Nexus S, acesse este site:&amp;nbsp;&lt;a href="http://www.kerodicas.com/noticias/artigo=41329/#more-41329"&gt;http://www.kerodicas.com/noticias/artigo=41329/#more-41329&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Para saber mais sobre o NFC, acesse o meu próximo post :)&lt;br /&gt;&lt;br /&gt;flw&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8514344970732460488-4327742263178072523?l=rodison.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rodison.blogspot.com/feeds/4327742263178072523/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8514344970732460488&amp;postID=4327742263178072523&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8514344970732460488/posts/default/4327742263178072523'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8514344970732460488/posts/default/4327742263178072523'/><link rel='alternate' type='text/html' href='http://rodison.blogspot.com/2011/01/google-nexus-s-o-proximo-celular-do.html' title='Google Nexus S - O próximo celular do Google rodando Android 2.3 (Gingerbread)'/><author><name>Rodison Ferreira</name><uri>https://profiles.google.com/116042571911434716678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-z9EVRh3jVHE/AAAAAAAAAAI/AAAAAAAAARA/dON2G5kV-qY/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8514344970732460488.post-38761781347127621</id><published>2011-01-12T09:10:00.000-08:00</published><updated>2011-01-12T09:13:18.263-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mobile'/><category scheme='http://www.blogger.com/atom/ns#' term='android'/><title type='text'>Aplicativos para Android</title><content type='html'>Oi pessoal,&lt;br /&gt;&lt;br /&gt;Conforme eu falei, comprei um celular com Android e agora vou listar os programas que eu tenho instalado nele e falar um pouco sobre eles:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;# Adobe Reader -&lt;/b&gt; maravilhoso leitor de PDF pra Android. Ele tem a função Text Reflow (Refluxo de Texto) que quebra o texto do pdf para que se possa ler ele perfeitamente no celular. Dá pra ler um livro inteiro em pdf com ele. Muito bom.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;# AnySoftKeyboard -&lt;/b&gt; o teclado virtual padrão do Android não é muito bom. As letras são muito pequenas. Só que o Android te permite baixar outros teclados virtuais para usar no lugar do teclado padrão dele. O AnySoftKeyboard é um outro teclado virtual feito pra usar no lugar do teclado padrão do Android. Ele permite muitas configurações avançadas, inclusive para aumentar o tamanho das teclas. Com este teclado, eu uso o meu celular quase como se fosse um teclado de um computador normal. Muito bom.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;# BB -&lt;/b&gt; Aplicativo do Banco do Brasil pra acessar o banco. Muito bom.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;# Cine Mobits -&lt;/b&gt; Mostra a programação de cinema dos principais cinemas da sua cidade. Com direito a horário dos filmes, sinopse e trailer :)&lt;br /&gt;&lt;br /&gt;&lt;b&gt;# Clima -&lt;/b&gt; mostra a previsão do tempo para a sua cidade.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;# Evernote - &lt;/b&gt;versão do Evernote para o Android. O Evernote é um sistema web que permite salvar notas escritas por você na internet. Ele tem uma versão pra windows. Você escreve uma nota no windows e automaticamente ele atualiza a nota na internet. E agora pra android também. Você escreve uma nota no android e ele atualiza na internet. Ou seja, suas notas ficam acessíveis pra você tanto no android, quanto no windows, quanto na internet. Muito bom.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;# Facebook - &lt;/b&gt;aplicativo oficial do facebook&lt;br /&gt;&lt;br /&gt;&lt;b&gt;# Foursquare -&lt;/b&gt; aplicativo oficial do foursquare&lt;br /&gt;&lt;br /&gt;&lt;b&gt;# Google Buzz - &lt;/b&gt;aplicativo oficial do google buzz&lt;br /&gt;&lt;br /&gt;&lt;b&gt;# Google Tradutor - &lt;/b&gt;aplicativo oficial do google tradutor. muito rápido, prático e fácil. Exige conexão com a internet.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;# Jabiru -&lt;/b&gt; cliente IM que utiliza o padrão Jabber. O mesmo usado pelo Google Talk e Spark.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;# Loterias Brasil - &lt;/b&gt;Mostra os resultados das loterias atualizadas no seu android (nunca é demais contar um pouquinho com a sorte, né? :) )&lt;br /&gt;&lt;br /&gt;&lt;b&gt;# MSN Droid - &lt;/b&gt;Ótimo cliente MSN pro Android&lt;br /&gt;&lt;br /&gt;&lt;b&gt;# MySettings - &lt;/b&gt;Programa muito útil que mostra as principais configurações do Android em uma única tela.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;# NDrive - &lt;/b&gt;Programa de GPS que eu já tinha comentado no post anterior.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;# OverclockWidget -&lt;/b&gt; Programa que permite alterar o clock do processador. Eu uso pra diminuir o clock para economizar bateria como eu já comentei também no post anterior.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;# Ping &amp;amp; DNS - &lt;/b&gt;Programa que permite fazer ping para um determinado IP ou url. Mostra várias informações sobre o IP / URL.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;# Quick Settings - &lt;/b&gt;parecido com o MySettings, só que ele tem uma funcionalidade de lanterna que faz a tela do seu android se iluminar no máximo em um fundo branco, o que faz ele atuar como uma lanterna. Muito útil.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;# RockPlayer - &lt;/b&gt;player de vídeo pro Android muito bom. Consegui até tocar filmes em avi nele. Ficou meio lento mas até quebra um galho. Se você pegar um filme em uma baixa resolução, daí fica perfeito.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;# SimpleNotes -&lt;/b&gt; programa simples pra anotações.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;# StopWatch &amp;amp; Timer -&lt;/b&gt; ótimo programa pra servir como conômetro e contagem regressiva.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;# TweetDeck -&lt;/b&gt; ótimo cliente pra Twitter, Buzz e Foursquare em um único programa com suporte a notificações e tudo. CUIDADO: se você colocar pra ele se atualizar em busca de posts em um intervalo menor do que de 15 em 15 minutos, ele acaba consumindo muita energia da bateria. Ele também serve como cliente pro Facebook mas daí não é tão bom.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;# Universal Androot - &lt;/b&gt;aplicativo que permite a você acessar seu Android no modo root, como eu já tinha falado no post anterior. Requerido por alguns programas (como o&amp;nbsp;OverclockWidget).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8514344970732460488-38761781347127621?l=rodison.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rodison.blogspot.com/feeds/38761781347127621/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8514344970732460488&amp;postID=38761781347127621&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8514344970732460488/posts/default/38761781347127621'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8514344970732460488/posts/default/38761781347127621'/><link rel='alternate' type='text/html' href='http://rodison.blogspot.com/2011/01/aplicativos-para-android.html' title='Aplicativos para Android'/><author><name>Rodison Ferreira</name><uri>https://profiles.google.com/116042571911434716678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-z9EVRh3jVHE/AAAAAAAAAAI/AAAAAAAAARA/dON2G5kV-qY/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8514344970732460488.post-2749045805778173489</id><published>2011-01-12T08:31:00.000-08:00</published><updated>2011-01-12T08:31:01.328-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mobile'/><category scheme='http://www.blogger.com/atom/ns#' term='galaxy5'/><category scheme='http://www.blogger.com/atom/ns#' term='android'/><category scheme='http://www.blogger.com/atom/ns#' term='galaxy 5'/><title type='text'>Samsung Galaxy 5 - Celular com Android</title><content type='html'>Comprei um Samsung Galaxy 5. Não é um Galaxy S mas é muito bom. Pelo menos é o melhor custo x benefício &amp;nbsp;pra um celular que rode Android e eu não tenho nada a reclamar dele (com exceção da bateria, que dura pouco, mas dá pra configurar pra gastar menos).&lt;br /&gt;&lt;br /&gt;Tirando a questão da bateria, o aparelho é FANTÁSTICO, ainda mais se você usa internet no celular todo dia (como eu faço, por exemplo).&lt;br /&gt;&lt;br /&gt;O aparelho vem instalado com o Android 2.1Eclair. Ele é muito bom, te permite fazer tudo de forma muito fácil.&lt;br /&gt;&lt;br /&gt;Com certeza uma das melhores coisas do Android é o Android Market. É só abrir o android market, buscar por qualquer assunto ou palavra e ele lista dezenas de aplicativos sobre tal assunto ou palavra. É só escolher e clicar para instalar.&lt;br /&gt;&lt;br /&gt;A instalação dos programas é feita na hora, automaticamente de forma muito fácil. Muito bom. Tem vários aplicativos que são pagos mas a maior parte é gratuito e os gratuitos suprem a necessidade muito bem.&lt;br /&gt;&lt;br /&gt;O navegador é muito bom também. Abre qualquer site numa boa. O único defeito é que não roda flash, mas ninguém morre por causa disso.&lt;br /&gt;&lt;br /&gt;Este celular vem com GPS nativo. Para usar o GPS ele usa o aplicativo do Google Maps, que funciona muito bem mas precisa estar com a internet ligada para ir mostrando o mapa. De resto funciona muito bem. Você pode configurar um percurso e ele vai guiando na tela (sem áudio) as ruas, indicando em quais ruas dobrar, etc. Muito bom.&lt;br /&gt;&lt;br /&gt;Para quem quer um GPS melhor, é só instalar um programa chamado NDrive. Com ele, é só baixar o mapa do Brasil e o programa vai guiando da mesma forma que o google maps, só que ele não precisa acessar a internet porque o mapa já fica baixado no aparelho. E o melhor de tudo, ele vai guiando com voz em português. Estilo "daqui a 50 metros, dobre à direita". Muito bom.&lt;br /&gt;&lt;br /&gt;O único problema é que o NDrive é gratuito, mas os mapas pra baixar são pagos :( (nem tudo é perfeito, hehehe)&lt;br /&gt;&lt;br /&gt;Agora, um aviso. Este celular não é pra qualquer um. A pessoa tem que conhecer um pouco de TI pra poder usar o aparelho principalmente por causa do problema com a bateria.&lt;br /&gt;&lt;br /&gt;Para usar a internet o dia inteiro e fazer a bateria durar pelo menos 1 dia, é preciso instalar um programa para (o Universal Androot) acessar o android como root (administrador) e depois instalar um outro programa chamado OverclockWidget.&lt;br /&gt;&lt;br /&gt;Este segundo programa, o&amp;nbsp;OverclockWidget, serve principalmente para diminuir o clock do processador do celular. O clock normal do Galaxy 5 é 600MHz.&lt;br /&gt;&lt;br /&gt;Para fazer a bateria durar pelo menos 1 dia usando todos os recursos (internet ligado direto, auto sincronização de conta do google que atualiza contatos, agenda e e-mail automaticamente, gps e localização via telefonia ligados direto), você deve baixar a velocidade do processador para 320MHz.&lt;br /&gt;&lt;br /&gt;Com esse clock o celular funciona muito bem, faz todas as funções perfeitamente sem um mínimo de lerdeza. O clock só deve ser aumentado se você for jogar algum jogo 3D que exija muito de processar ou se for ver vídeos no celular. Para todo o resto, 320MHz dá e sobra.&lt;br /&gt;&lt;br /&gt;Bem é isso, depois vou postar sobre os programas que eu tenho instalado no meu Android e depois vou atualizar o meu Android para o 2.2 (Froyo) e daí comento mais aqui.&lt;br /&gt;&lt;br /&gt;Flw&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8514344970732460488-2749045805778173489?l=rodison.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rodison.blogspot.com/feeds/2749045805778173489/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8514344970732460488&amp;postID=2749045805778173489&amp;isPopup=true' title='2 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8514344970732460488/posts/default/2749045805778173489'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8514344970732460488/posts/default/2749045805778173489'/><link rel='alternate' type='text/html' href='http://rodison.blogspot.com/2011/01/samsung-galaxy-5-celular-com-android.html' title='Samsung Galaxy 5 - Celular com Android'/><author><name>Rodison Ferreira</name><uri>https://profiles.google.com/116042571911434716678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-z9EVRh3jVHE/AAAAAAAAAAI/AAAAAAAAARA/dON2G5kV-qY/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8514344970732460488.post-1376116298547012020</id><published>2010-12-13T07:42:00.000-08:00</published><updated>2010-12-13T07:42:52.087-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='levantamento de requisitos'/><category scheme='http://www.blogger.com/atom/ns#' term='agile'/><category scheme='http://www.blogger.com/atom/ns#' term='engenharia de software'/><category scheme='http://www.blogger.com/atom/ns#' term='análise de sistemas'/><category scheme='http://www.blogger.com/atom/ns#' term='elicitação de requisitos'/><category scheme='http://www.blogger.com/atom/ns#' term='análise de requisitos'/><category scheme='http://www.blogger.com/atom/ns#' term='administração'/><category scheme='http://www.blogger.com/atom/ns#' term='análise de negócios'/><category scheme='http://www.blogger.com/atom/ns#' term='xp'/><category scheme='http://www.blogger.com/atom/ns#' term='scrum'/><title type='text'>As empresas, por acaso, precisariam de um consultor da área da administração?</title><content type='html'>As empresas, por acaso, precisariam de um consultor da área da administração?&lt;br /&gt;&lt;br /&gt;Neste post - que promete ser gigante -, vou falar um pouco sobre a história do desenvolvimento de software, alguns dos problemas atuais encontrados na nossa área e uma pequena sugestão de evolução das metodologias de desenvolvimento de software adotando um novo papel: o do consultor da área da administração.&lt;br /&gt;&lt;br /&gt;A maior parte das empresas têm problemas para saber exatamente o que o cliente quer. Será que não seria então mais interessante para as empresas ter um serviço de consultoria para isso? Ter alguém da área de administração para fazer o MAPEAMENTO DE PROCESSOS do cliente?&lt;br /&gt;&lt;br /&gt;Antigamente - nem tão antigamente assim - se usava o modelo cascata. Dúzias de analistas de sistemas - que não eram da área da administração mas sim da área da informática ou engenharia - se reuniam com quilos de papéis para tentar descobrir o que os clientes queriam (a famosa etapa de análise / levantamento / elicitação de requisitos) para só depois começar a implementar um sistema.&lt;br /&gt;&lt;br /&gt;Como todos nós sabemos - ou deveríamos saber - isso não funciona. Não funciona porque o cliente pede algo e quando o sistema é entregue ele percebe que deveria ter pedido mais X, mais Y e que aquele Z que ele pediu, ele pediu errado, que ele deveria ter pedido W, na verdade.&lt;br /&gt;&lt;br /&gt;Daí veio a famosa frase que diz que o cliente não sabe o que quer e que ele só vai saber quando o sistema for entregue. E mesmo depois que o sistema foi entregue talvez ele ainda não saiba o que quer.&lt;br /&gt;&lt;br /&gt;Então todo mundo começou a falar: no início do projeto a incerteza é muito alta exatamente porque o cliente não sabe o que quer. Então vamos reduzir a incerteza divindindo todo o processo em ciclos pequenos e iterativos para entregar pedaços de software mais cedo.&lt;br /&gt;&lt;br /&gt;Quanto mais cedo o cliente ver o sistema (mesmo que seja uma parte dele) mais ele vai saber o que quer e mais cedo ele vai informando o que deve mudar para a equipe.&lt;br /&gt;&lt;br /&gt;E é muito mais fácil (e barato) alterar um sistema no início do projeto do que no final dele. Surgiu então o processo iterativo e incremental.&lt;br /&gt;&lt;br /&gt;Com o processo iterativo e incremental - principalmente os processos iterativo e incremental utilizado pelas famosas metodologias ágeis (XP, Scrum, etc.) - você e/ou a equipe faz o levantamento geral e abrangente de tudo o que deve ser feito no programa falando diretamente com o cliente.&lt;br /&gt;&lt;br /&gt;Depois que esse levantamento inicial e geral é feito, o cliente prioriza as tarefas levantadas dizendo quais são as mais importantes.&lt;br /&gt;&lt;br /&gt;Então é criado um pequeno ciclo de desenvolvimento de 1 ou 2 semanas. Nestas 1 ou 2 semanas a equipe conversa com o cliente para fazer um levantamento mais detalhado destas tarefas (mesmo que de maneira meio informal) e desenvolve as tarefas que o cliente disse que são as mais importantes e que mais geram valor de negócio para o cliente.&lt;br /&gt;&lt;br /&gt;Em cada um desses ciclos, a equipe entrega uma ou mais funcionalidades já 100%. Dessa forma, o cliente tem software rodando bem mais cedo. E se o software for entregue mais cedo, a incerteza do cliente diminui.&lt;br /&gt;&lt;br /&gt;A cada pedaço de software entregue, mais o cliente vai descobrindo melhor o que ele quer e com isso, as chances do sistema terminar com sucesso é muito maior.&lt;br /&gt;&lt;br /&gt;Resumindo, com o processo iterativo e incremental as chance de se entregar o que o cliente realmente quer é muito maior.&lt;br /&gt;&lt;br /&gt;Mas e se a empresa de software deseja mais do que apenas entregar o que o cliente quer?&lt;br /&gt;&lt;br /&gt;Mas entregar o que o cliente quer é o sonho de toda a empresa de software, certo? Certo. Mas conseguir mais do que isso é o que faz uma empresa se destacar muito mais do que as outras.&lt;br /&gt;&lt;br /&gt;E se, ao invés de entregar o que o cliente quer, a empresa AJUDE O CLIENTE a DESCOBRIR o que ele REALMENTE PRECISA?&lt;br /&gt;&lt;br /&gt;Isso seria possível se a empresa - além de trabalhar como uma desenvolvedora de software - também trabalhasse como uma consultoria administrativa.&lt;br /&gt;&lt;br /&gt;Neste caso, a empresa de software disponibilizaria um profissional da área da administração para fazer todo o LEVANTAMENTO DE PROCESSOS da empresa do cliente.&lt;br /&gt;&lt;br /&gt;Este profissional iria até a empresa do cliente, falaria com ele e iria analisar a empresa do cliente.&lt;br /&gt;&lt;br /&gt;Analisar a empresa do cliente significa:&lt;br /&gt;&lt;br /&gt;1 - acompanhar o dia-a-dia da empresa do cliente, para entender o que a empresa do cliente realmente faz;&lt;br /&gt;&lt;br /&gt;2 - depois que o consultor entendeu de verdade o que a empresa faz, ele deve olhar o dia-a-dia de cada uma das pessoas que estão envolvidas no negócio do cliente.&lt;br /&gt;&lt;br /&gt;Desde o presidente da empresa, passando pelos diretores, gerentes, técnicos, digitadores, os funcionários que controlam linhas de produção, os que atendem os usuários, etc. até o trabalho dos porteiros, office-boys, encarregados da manutenção, faxina, etc.&lt;br /&gt;&lt;br /&gt;O seja, todos os funcionários que estão diretamente ou indiretamente ligados a empresa;&lt;br /&gt;&lt;br /&gt;3 - fazer o mesmo, mas para todos os terceirizados e fornecedores da empresa. Como que é o relacionamento da empresa com seus fornecedores e com as empresas terceirizadas que prestam serviços pra empresa.&lt;br /&gt;&lt;br /&gt;Acompanhar o dia-a-dia de como os funcionários da empresa se relacionam com estes terceiros;&lt;br /&gt;&lt;br /&gt;4 - fazer o mesmo, mas agora com os clientes da empresa. Ver como que a empresa se relaciona com seus clientes. Qual é a visão que os cliente têm da empresa. Como que é a comunicação da empressa com os clientes. Quais papéis, formulários, requisições o cliente precisa preencher, etc. Quais as principais críticas e elogios que os clientes têm para com a empresa, etc.&lt;br /&gt;&lt;br /&gt;Após analisar todos estes passos, o consultor então começa a desenhar o diagrama de processos da empresa, como se faz nas cadeiras de administração mesmo.&lt;br /&gt;&lt;br /&gt;Tudo isso serve para poder identificar o processo que a empresa atualmente utiliza.&lt;br /&gt;&lt;br /&gt;A maior parte das empresas pequenas ou médias não sabe atualmente como que é, 100% no papel, o processo de sua própria empresa. E este desconhecimento do seu próprio processo pode se dar pelos seguintes fatores:&lt;br /&gt;&lt;br /&gt;1 - falta de conhecimento da área administrativa da empresa. São várias as empresas que são administradas não por pessoas da administração, mas sim por técnicos que por serem muito bons, por ter um bom relacionamento dentro da empresa e por conhecer a empresa há anos, acabam sendo elencados a uma posição administrativa, de coordenação.&lt;br /&gt;&lt;br /&gt;Estas pessoas, mesmo sem ter uma formação administrativa, conseguem fazer a empresa funcionar muito bem e corretamente. Porém, a parte mais teórica da administração - como o mapeamento de processos - elas acabam não fazendo;&lt;br /&gt;&lt;br /&gt;2 - Outro fator pode ser o famoso "nunca fizemos isso e até agora isso não nos fez falta. Se algum dia a gente sentir necessidade de fazer isso, a gente faz". Esse fator todo mundo conhece muito bem ;) ;&lt;br /&gt;&lt;br /&gt;3 - Outro fator é que a empresa pode achar melhor contratar uma consultoria para fazer isso. E o preço cobrado por essa consultoria pode ser bem alto, o que faria isso não entrar para a lista de prioridades da empresa devido a uma relação custo/benefício.&lt;br /&gt;&lt;br /&gt;Geralmente as empresas só resolvem fazer um mapeamento de processos quando a empresa resolve tirar uma certificação ISO. Para se tirar uma certificação ISO, um dos passos necessários é fazer o mapeamento do processo da empresa - claro que não é só isso que é necessário. É necessário mais várias coisas como padronizar a forma de trabalhar das pessoas, etc.&lt;br /&gt;&lt;br /&gt;Ok, fizemos o mapeamento dos processos da empresa. Agora podemos começar a desenvolver software, certo?&lt;br /&gt;&lt;br /&gt;Hum... eu teria um pouco mais de calma.&lt;br /&gt;&lt;br /&gt;Isto porque nós fizemos o mapeamento dos processos da empresa, certo? Ou seja, descobrimos "de cabo a rabo" como que a empresa funciona. Legal.&lt;br /&gt;&lt;br /&gt;Geralmente, quando se faz o levantamento de requisitos ou quando se faz as conversas com o cliente tanto no modelo cascata quanto nos modelos iterativo / incremental e modelos ágeis, nós conversamos com o cliente exatamente para descobrir como que a empresa funciona. Mais ou menos como que é o mapeamento de processos da empresa.&lt;br /&gt;&lt;br /&gt;Se toda esta conversa com o cliente for muito bem feita, você vai chegar bem perto do mapeamento de processos que eu citei aqui até agora.&lt;br /&gt;&lt;br /&gt;Só que é aí que mora mais um dos problemas do desenvolvimento de software: chegamos o mais perto possível do mapeamento de processos perfeito da empresa, ou seja, descobrimos como a empresa trabalha. Mas e quem diz que a empresa trabalha bem? Quem diz que os processos da empresa são bons?&lt;br /&gt;&lt;br /&gt;Se você fizer um sistema para uma empresa cujos processos são ruins, o seu software será ruim para a empresa. Isto porque o seu software será um reflexo dos processos da empresa. Um software nada mais é do que o processo de uma empresa em um formato computacional automatizado. Nada mais.&lt;br /&gt;&lt;br /&gt;Então aí vem mais uma vantagem de se fazer o levantamento dos processos de uma empresa por alguém da área da administração: além de levantar os processos de uma empresa, sugerir mudanças para melhorar o processo da empresa.&lt;br /&gt;&lt;br /&gt;É como se você fosse fazer um software para uma empresa que trabalha com linha de produção. Digamos que esta empresa fabrica 1000 itens por dia. Você descobre algumas falhas no processo da empresa e propõe melhorias no processo que fará a empresa produzir 1500 itens por dia ao invés dos atuais 1000.&lt;br /&gt;&lt;br /&gt;Seria bem melhor para o seu cliente, certo? E se seria melhor para o seu cliente, seria melhor para você também.&lt;br /&gt;&lt;br /&gt;Este é o ponto que eu queria chegar. Não basta fazer o levantamento dos processos da empresa e desenvolver um software a partir dele. De certa forma isto é o que todo mundo faz (ou tenta fazer).&lt;br /&gt;&lt;br /&gt;Para você se diferenciar, para se destacar, para fazer mais do que os outros, você precisa fazer o levantamento dos processos da empresa, melhorar estes processos e, então sim, desenvolver um software a partir dele. Daí com certeza, sua empresa seria uma empresa diferenciada. A qualidade do seu produto seria muito melhor.&lt;br /&gt;&lt;br /&gt;Em equipes de desenvolvimento mais tradicionais, nós temos o Analista de Requisitos ou o Analista de Negócios. A minha sugestão seria a de que, nestes casos, o Analista de Requisitos ou o Analista de Negócios não fosse alguém da área da informática, mas sim alguém da área da administração, que ele fosse o consultor da área da administração.&lt;br /&gt;&lt;br /&gt;Ou isso, ou que os Analistas de Requisitos e/ou de Negócios fizessem uma pós-graduação em Administração para que eles mesmo possam fazer um levantamento de processos corretamente.&lt;br /&gt;&lt;br /&gt;Em equipes ágeis, nós temos algumas figuras no desenvolvimento de software. Temos a equipe, o líder da equipe e temos o Product Owner (PO).&lt;br /&gt;&lt;br /&gt;O PO é a pessoa que representa o cliente, a pessoa que vai dizer para a equipe o que o cliente espera do software, o que a equipe deve fazer, quais tarefas deve fazer e que também prioriza as tarefas. Este PO geralmente é o próprio cliente. Alguém que trabalhe na empresa do cliente.&lt;br /&gt;&lt;br /&gt;A minha sugestão para equipes ágeis é que além de ter o PO como parte da equipe, também deveríamos ter o consultor da área da administração como parte da equipe. Desta forma o PO mais este consultor deveriam guiar a equipe de desenvolvimento sobre o que deve ser feito.&lt;br /&gt;&lt;br /&gt;Mas o importante é que o consultor - nestes casos de equipes ágeis - se reúna antes com o PO para mostrar o resultado do levantamento de processos e faça as sugestões de melhorias no processo. Tudo isso antes de envolver a equipe de desenvolvimento.&lt;br /&gt;&lt;br /&gt;Depois que tudo foi acordado e que o consultor mostrou todos os processos para o PO, daí sim deve-se dar início ao desenvolvimento com a equipe todos juntos.&lt;br /&gt;&lt;br /&gt;Já nesta segunda etapa junto com a equipe, o consultor deve deixar o PO conduzir todo o processo e apenas deve se manifestar caso o PO tenha esquecido de mencionar alguma coisa ou se o PO falar algo que contrarie o que havia sido acordado antes entre os dois.&lt;br /&gt;&lt;br /&gt;Afinal, se o PO fala algo que contrarie o novo processo proposto, pode ser que o PO não tenha entendido corretamente o novo processo, então o consultor deve entrar em cena para debater o assunto junto com o PO e a equipe apenas para "afinar" o desenvolvimento.&lt;br /&gt;&lt;br /&gt;Desta forma, teríamos o desenvolvimento em equipes ágeis bem parecido com o que se faz hoje em dia, apenas adicionaríamos esta figura do consultor para ajudar.&lt;br /&gt;&lt;br /&gt;É importante lembrar e frisar que o consultor deve deixar o PO conduzir o desenvolvimento. O PO é o dono do produto, não o consultor. O consultor é apenas uma ajuda, um reforço. O maestro deve continuar sendo o PO.&lt;br /&gt;&lt;br /&gt;Desta forma, acho que podemos melhorar um pouco ainda mais o desenvolvimento de software para que cada vez mais projetos alcancem o sucesso com uma ótima qualidade.&lt;br /&gt;&lt;br /&gt;Principalmente porque a quantidade de projetos que não dão certo, que não atendem às expectativas dos clientes ou que não apresentam uma boa qualidade, é muito grande. Isso sem falar dos projetos que terminam com atraso.&lt;br /&gt;&lt;br /&gt;Tanto que na área de software, os clientes já aprenderam a se contentar com pouco, exatamente porque são poucas as empresas que conseguem fazer este pouco.&lt;br /&gt;&lt;br /&gt;A maior parte das empresas não consegue fazer um sistema que espelhe 100% os processos atuais da empresa, quem dirá propor melhorias no processo. De fato, isto seria um "mundinho ideal". Seria muito bom fazer isso, mas é muito difícil.&lt;br /&gt;&lt;br /&gt;Continuando no "mundinho ideal", outra coisa que é preciso prestar atenção é que mesmo sugerindo melhorias no processo da empresa, os processos têm uma característica marcante: a mutabilidade.&lt;br /&gt;&lt;br /&gt;Ou seja, um processo não dura pra sempre estático. Os processos mudam, evoluem com o tempo. E o que acontece - pra tristeza das empresas em geral e pra alegria das empresas que desenvolvem software :) - é que sempre que processos mudam, os softwares relacionados a estes processos precisam mudar também.&lt;br /&gt;&lt;br /&gt;Então, para completar o "mundinho perfeito", o ideal seria fazer um software que se adaptasse às mudanças nos processos sem a necessidade de precisar reescrever ou alterar o código fonte do software.&lt;br /&gt;&lt;br /&gt;Mas para chegar neste patamar creio que ainda é preciso alguns muitos anos a mais na questão do amadurecimento da indústria de software.&lt;br /&gt;&lt;br /&gt;Isto tudo porque a área de desenvolvimento de software é uma criança ainda, se você analisar bem. Se comparar com qualquer outra área - administração, a maior parte das engenharias, psicologia, medicina, etc. - veremos que a àrea de desenvolvimento de software ainda é muito nova e muito recente.&lt;br /&gt;&lt;br /&gt;Na nossa área não existe ainda uma regra de como desenvolver software. Regra do tipo "faça isso, isso e aquilo e você conseguirá construir um software bom e de qualidade". Todas as outras áreas já têm isso, só nós é que ainda não temos.&lt;br /&gt;&lt;br /&gt;Na engenharia civil, existem regras que devem ser seguidas para se construir um prédio. Estas regras até podem mudar para que sejam construídos novos prédios diferentes, com novos materiais, etc., mas se você seguir as regras normais, você conseguirá construir um prédio bom, corretamente e de qualidade. Ou seja, existem as regras básicas. E as regras básicas são boas.&lt;br /&gt;&lt;br /&gt;Já no desenvolvimento de software nós também temos as nossas regras básicas segundo o modelo cascata (o modelo de software mais tradicional que existe). Só que daí vemos estudos que dizem que uns 70% dos projetos falham.&lt;br /&gt;&lt;br /&gt;70% é muito. Já imaginaram se 70% dos prédios caíssem?!&lt;br /&gt;&lt;br /&gt;Na psicologia existem várias escolas. Freudiana, Junguiana, Lacaniana. São teorias sobre a psiquê humana já consolidadas. Hoje em dia, se você encontra uma teoria psicológica nova, ela já tem uns 20 anos! Ou seja, existem as regras básicas. E as regras básicas são boas.&lt;br /&gt;&lt;br /&gt;Tendo isto em vista, vemos como o desenvolvimento de software é uma coisa nova. De certa forma, somos todos pioneiros tentando descobrir, inventar as regras que serão as regras básicas no desenvolvimento de software daqui a 40, 50 anos.&lt;br /&gt;&lt;br /&gt;Já tivemos a programação estruturada. Agora temos a orientada a objetos. Já tivemos o modelo cascata. Agora estão aparecendo as metodologias ágeis. E assim vai.&lt;br /&gt;&lt;br /&gt;Do ponto de vista romântico isto é algo bom pois somos pioneiros, descobridores, desbravadores.&lt;br /&gt;&lt;br /&gt;Já do ponto de vista do dia-a-dia, em que precisamos desenvolver software pra ganhar dinheiro, isto já não é algo tão bom assim.&lt;br /&gt;&lt;br /&gt;Afinal quanto mais fácil, rápido e com uma qualidade mínima aceitável desenvolvermos sistemas, mais dinheiro ganharemos. Por este ponto de vista seria muito bom já tivéssemos as nossas regras básicas estabelecidas.&lt;br /&gt;&lt;br /&gt;Mas é isso aí pessoal. "A luta continua, companheiro" :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8514344970732460488-1376116298547012020?l=rodison.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rodison.blogspot.com/feeds/1376116298547012020/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8514344970732460488&amp;postID=1376116298547012020&amp;isPopup=true' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8514344970732460488/posts/default/1376116298547012020'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8514344970732460488/posts/default/1376116298547012020'/><link rel='alternate' type='text/html' href='http://rodison.blogspot.com/2010/12/as-empresas-por-acaso-precisariam-de-um.html' title='As empresas, por acaso, precisariam de um consultor da área da administração?'/><author><name>Rodison Ferreira</name><uri>https://profiles.google.com/116042571911434716678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-z9EVRh3jVHE/AAAAAAAAAAI/AAAAAAAAARA/dON2G5kV-qY/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8514344970732460488.post-8250479161044628527</id><published>2010-11-07T18:10:00.000-08:00</published><updated>2010-11-07T18:10:46.507-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mobile'/><title type='text'>A revolução da TIM no celular</title><content type='html'>A revolução da TIM no celular&lt;br /&gt;&lt;br /&gt;Isso pode parecer até comercial, mas não é, hehe :)&lt;br /&gt;&lt;br /&gt;Acontece que a realidade brasileira de desenvolvimento de software pode mudar por causa da Tim.&lt;br /&gt;&lt;br /&gt;Isso por causa da promoção de internet no celular por R$0,50 por dia.&lt;br /&gt;&lt;br /&gt;Já faz quase 1 mês q eu to usando internet no meu celular. Funciona.&lt;br /&gt;&lt;br /&gt;No meu celular eu acesso o meu gmail, o email da minha empresa, acesso meu facebook, twitter e acesso as minhas notícias e blog via rsou. Tudo isso no meu celular! Por R$0,50 por dia! Osu seja, por R$15,00 reais por mês!!! E pelo q a tim fala, isso não é promoção, é o preço celes&lt;br /&gt;&lt;br /&gt; mesmo.&lt;br /&gt;&lt;br /&gt;Axontece q no momento em q a tim faz isso, as ourras operacoras tb vão fazer. Ou seja, não dô nem 2 anos tra q todo mundo q a gente conhece tenha internet no celular. Até a nossa avó!!! (mesmo q ela nãoruse, ela vai ter internet no xelular dela).&lt;br /&gt;&lt;br /&gt;Só q daí a área mobile entra em uma fase diferente do q ela estava indo agora. &lt;br /&gt;&lt;br /&gt;Digo isso pq na área de mobile agora, muito se fala em programação pra iphone e pra android, ou seja, programação pra smaetphones da nova era.&lt;br /&gt;&lt;br /&gt;Só q atualmente no brasil, a maior parte das pessoas têm um celular basicão. A maior parte dos brasileiros nem sabe direito o q é um smartphone. Pra imaior parte das pessoas “smartphone é aquele celular bonitinho da maçãzinha, né?”. :) &lt;br /&gt;&lt;br /&gt;E  eu falo isso pq, apesar de ser um nerdzão da área da informática, eu convivo com bastantes pessoas q não são da área de informática (e eu tenho q agradcer à mnha esposa por isso, hehehe) e eu já vi pessoas falando a frase acima.&lt;br /&gt;&lt;br /&gt;Acontece q a maior parte dos celulares basicão das pessoas rodam java ME e não iphoneOS e muito menos android!&lt;br /&gt;&lt;br /&gt;Por isso é q eu digo q temos um novo cenário. Todo mundo querendo fazer sistema pra iphone e etc e agora quase todas as pessoas terão internet nos seus celulares basicão rodando java ME... Q coisa, hein?&lt;br /&gt;&lt;br /&gt;Se quase todo mundo vai ter internet no celular, isso quer dizer q você pode fazer sistemas para esses MILHÕES de pessoas. E se vc fizer isso, vc e/ou sua empresa podem GANHAR DINHEIRO com isso. &lt;br /&gt;&lt;br /&gt;E como toda empresa sabe, dinheiro é palavra mágica e ganhar dinheiro então é o sonho de toda empresa.&lt;br /&gt;&lt;br /&gt;Então devo aprender javaME? Eu diria, sim. Acho q vai ser uma exigência básica de mercado da mesma forma q aconteceu com o firefox e com os webservices.&lt;br /&gt;&lt;br /&gt;Hoje em dia, todo sistema web não poder rodar apenas no IE, mas tem rq odar no Firefox tb.&lt;br /&gt;&lt;br /&gt;Hoje em dia, todo sistema grnade deve ter suporte a web service. &lt;br /&gt;&lt;br /&gt;Rodar páginas no firefox e ter webservice já virou o básico hoje em dia. E acho q o mesmo vai acontecer com mobile. &lt;br /&gt;&lt;br /&gt;Até pq eu já vi clientes nossos perguntando se nossos sistemas rodavam em celular. E no momento em q os clientes começam a perguntar isso... Já viu, né?&lt;br /&gt;&lt;br /&gt;É, este é o maravilhoso mundo da informática. Um mundo onde uma tecnologia q aparentava estar ficando esquecida pode acabar voltando com força total :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8514344970732460488-8250479161044628527?l=rodison.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rodison.blogspot.com/feeds/8250479161044628527/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8514344970732460488&amp;postID=8250479161044628527&amp;isPopup=true' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8514344970732460488/posts/default/8250479161044628527'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8514344970732460488/posts/default/8250479161044628527'/><link rel='alternate' type='text/html' href='http://rodison.blogspot.com/2010/11/revolucao-da-tim-no-celular.html' title='A revolução da TIM no celular'/><author><name>Rodison Ferreira</name><uri>https://profiles.google.com/116042571911434716678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-z9EVRh3jVHE/AAAAAAAAAAI/AAAAAAAAARA/dON2G5kV-qY/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8514344970732460488.post-3690872265805232566</id><published>2010-08-10T17:13:00.000-07:00</published><updated>2010-08-10T17:13:13.878-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='javautils'/><title type='text'>[java, javautils] gerarHashMD5() - como gerar um hash MD5 em java</title><content type='html'>Método java para gerar um hash MD5. Veja como gerar um hash MD5 em java:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; /**&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;* Gera um hash MD5 a partir da senha passada por parâmetro&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;*&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;* @param senha&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;* @return String - o hash gerado&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;* @throws NoSuchAlgorithmException&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;*/&lt;br /&gt;&amp;nbsp;&amp;nbsp; public static String gerarHashMD5(String senha) throws NoSuchAlgorithmException {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;MessageDigest digest = MessageDigest.getInstance("MD5");&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;digest.reset();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;digest.update(senha.getBytes());&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;byte[] byteDigest = digest.digest();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;String res = "";&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;for (int i = 0; i &amp;lt; byteDigest.length; ++i) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; String aux = Integer.toHexString((byteDigest[i] &amp;amp; 0xFF));&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (aux.length() == 1) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;aux = '0' + aux;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; res += aux;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;return res;&lt;br /&gt;&amp;nbsp;&amp;nbsp; }&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8514344970732460488-3690872265805232566?l=rodison.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rodison.blogspot.com/feeds/3690872265805232566/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8514344970732460488&amp;postID=3690872265805232566&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8514344970732460488/posts/default/3690872265805232566'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8514344970732460488/posts/default/3690872265805232566'/><link rel='alternate' type='text/html' href='http://rodison.blogspot.com/2010/08/java-javautils-gerarhashmd5-como-gerar.html' title='[java, javautils] gerarHashMD5() - como gerar um hash MD5 em java'/><author><name>Rodison Ferreira</name><uri>https://profiles.google.com/116042571911434716678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-z9EVRh3jVHE/AAAAAAAAAAI/AAAAAAAAARA/dON2G5kV-qY/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8514344970732460488.post-3471212682399148284</id><published>2010-08-09T19:39:00.000-07:00</published><updated>2010-08-09T19:39:40.443-07:00</updated><title type='text'>Be-a-Byte - Aulas de informática gratuitas - Inclusão Digital</title><content type='html'>&lt;div style="font-family: arial; font-size: small;"&gt;bem interessante, estou repassando&lt;/div&gt;&lt;span class="Apple-style-span" style="font-family: arial; font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="gmail_quote" style="font-family: arial; font-size: small;"&gt;&lt;br /&gt;&lt;div class="gmail_quote"&gt;&lt;span style="color: #454545; font-family: Tahoma, Arial, Helvetica, sans-serif; font-size: 11px;"&gt;&lt;h2 style="border-bottom-style: none; border-bottom-width: 0px; border-color: initial; border-left-style: none; border-left-width: 0px; border-right-style: none; border-right-width: 0px; border-top-style: none; border-top-width: 0px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: -1px; line-height: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;span class="Apple-style-span" style="color: black; font-family: 'courier new', monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h2&gt;&lt;div&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: 'courier new', monospace;"&gt;&lt;span style="color: black;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: 'courier new', monospace;"&gt;&lt;span style="color: black;"&gt;Repasso esse artigo do Sérgio Carvalho sobre o site BE-A-BYTE construído pelo Professor João Antônio. O projeto,&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: 'courier new', monospace;"&gt;&lt;span style="color: black;"&gt;que aborda a inclusão digital para todos,&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: 'courier new', monospace;"&gt;&lt;span style="color: black;"&gt;é muito interessante e importante para o nosso país.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: 'courier new', monospace;"&gt;&lt;span style="color: black;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: 'courier new', monospace;"&gt;&lt;span style="color: black;"&gt;Leiam e acessem o site (&lt;a href="http://www.beabyte.com.br/" target="_blank"&gt;www.beabyte.com.br&lt;/a&gt;). No vídeo inicial ele explica como tudo começou. Se acharem interessante repassem!&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: black; font-family: 'courier new', monospace; font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: black; font-family: 'courier new', monospace; font-size: small;"&gt;------------------------------&lt;wbr&gt;&lt;/wbr&gt;------------------&lt;/span&gt;&lt;/div&gt;&lt;h2 style="border-bottom-style: none; border-bottom-width: 0px; border-color: initial; border-left-style: none; border-left-width: 0px; border-right-style: none; border-right-width: 0px; border-top-style: none; border-top-width: 0px; font-family: Candara, 'Trebuchet MS', Arial; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: -1px; line-height: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;span style="font-size: large;"&gt;&lt;span style="color: black;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h2&gt;&lt;h2 style="border-bottom-style: none; border-bottom-width: 0px; border-color: initial; border-left-style: none; border-left-width: 0px; border-right-style: none; border-right-width: 0px; border-top-style: none; border-top-width: 0px; font-family: Candara, 'Trebuchet MS', Arial; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: -1px; line-height: normal; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;span style="font-size: large;"&gt;&lt;span style="color: black;"&gt;Um Presente Para João!&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/h2&gt;&lt;div&gt;&lt;span style="font-size: small;"&gt;&lt;span style="color: black;"&gt;06/08/2010&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-size: small;"&gt;&lt;span style="color: black;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div style="border-bottom-style: none; border-bottom-width: 0px; border-color: initial; border-left-style: none; border-left-width: 0px; border-right-style: none; border-right-width: 0px; border-top-style: none; border-top-width: 0px; line-height: 16px; margin-bottom: 15px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="color: black;"&gt;Queridos Amigos,&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="border-bottom-style: none; border-bottom-width: 0px; border-color: initial; border-left-style: none; border-left-width: 0px; border-right-style: none; border-right-width: 0px; border-top-style: none; border-top-width: 0px; line-height: 16px; margin-bottom: 15px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="color: black;"&gt;Espero que estejam todos bem!&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-size: small;"&gt;&lt;span style="color: black;"&gt;O assunto que lhes trago hoje é da maior importância e de uma grandeza ímpar!&lt;br /&gt;&lt;br /&gt;Imaginem vocês, só por hipótese, se o melhor professor de informática do Brasil olhasse em volta, e reconhecesse que vive num país de excluídos de todas as espécies e de todas as idades!&lt;br /&gt;&lt;br /&gt;Suponham que este professor, impulsionado pelo mais sincero propósito de fazer algo para mudar esta tão excruciante situação, tenha pensado consigo: "O que está a meu alcance fazer? Eu sou apenas um professor... O que poderia doar de mim mesmo?"&lt;br /&gt;&lt;br /&gt;E eis que surgiu a abençoada ideia: "Vou ensinar tudo o que sei. Vou repassar todo o CONHECIMENTO que aprendi. É tudo o que tenho para DOAR!"&lt;br /&gt;&lt;br /&gt;Este professor existe, meus amigos! Seu nome é João Antônio.&lt;br /&gt;&lt;br /&gt;Essa historinha é a mais perfeita expressão da verdade!&lt;br /&gt;&lt;br /&gt;Muito provavelmente vocês ainda não se tenham dado conta da dimensão que representa o projeto BE-A-BYTE (&lt;a href="http://www.beabyte.com.br/" target="_blank"&gt;www.beabyte.com.br&lt;/a&gt;) criado por João.&lt;br /&gt;&lt;br /&gt;Em poucas palavras: João Antônio está ensinando informática para crianças, para jovens, para adultos e para idosos! GRATUITAMENTE!&lt;br /&gt;&lt;br /&gt;"Por que ele está fazendo isso, professor? O que há por trás disso?"&lt;br /&gt;&lt;br /&gt;Ele está fazendo isso porque se importa - e muito! - com o país que vai deixar para seus filhos e netos. João se importa com as pessoas. João sabe que a realidade não se modifica por si, e que nada será diferente um dia se todos ficarmos de braços cruzados, esperando, esperando, esperando...&lt;br /&gt;&lt;br /&gt;O Be-a-Byte está aí! Já começou! Em uma semana, já são quatro mil inscritos!&lt;br /&gt;&lt;br /&gt;É muito? Não acho! É muito pouco! Pouquíssimo!&lt;br /&gt;&lt;br /&gt;João completa amanhã 34 anos.&lt;br /&gt;&lt;br /&gt;Então o presente que eu proponho "darmos" a ele é o seguinte: que tal tentarmos conseguir, até o fim do dia de amanhã, mais TRINTA MIL inscritos no Be-a-Byte?&lt;br /&gt;&lt;br /&gt;Já pensaram vocês se, no domingo de manhã, João abrisse o site e descobrisse trinta e quatro mil inscritos? Que presente maravilhoso e MERECIDO!&lt;br /&gt;&lt;br /&gt;A inscrição no Be-a-Byte, bem como tudo mais o que há neste site, é inteiramente grátis!&lt;br /&gt;&lt;br /&gt;Se você que está lendo agora fizer seu cadastro no site, estou certo que conseguiremos construir este presente!&amp;nbsp;&lt;br /&gt;&lt;br /&gt;E se você tem criança em casa (filho, filha, sobrinho, sobrinha), se você tem pessoas idosas em seu convívio (pai, mãe, avô, avó), se você tem adolescentes que lhe são próximos, então, meu amigo, minha amiga, o BE-A-BYTE é do seu interesse!&lt;br /&gt;&lt;br /&gt;Já pensou que presente magnífico você pode dar para seu pai, apresentando para ele o Be-a-Byte e o inscrevendo no site?&lt;br /&gt;&lt;br /&gt;Então é isso, meus amigos! Desde já agradeço a todos pelo que irão fazer, disseminando pelos quatro cantos do Brasil esse projeto tão belo e singular!&lt;br /&gt;&lt;br /&gt;Mãos à obra!&lt;br /&gt;&lt;br /&gt;Um forte abraço a todos!&lt;br /&gt;&lt;br /&gt;Sérgio Carvalho&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;div&gt;&lt;span style="font-family: Tahoma, Arial, Helvetica, sans-serif; line-height: 16px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family: Tahoma, Arial, Helvetica, sans-serif;"&gt;&lt;/span&gt;&lt;span style="font-family: Tahoma, Arial, Helvetica, sans-serif; line-height: 16px;"&gt;Sérgio de Carvalho Filho é Auditor Fiscal da Receita Federal do Brasil, tendo sido aprovado para&amp;nbsp;este cargo no primeiro concurso do ano de 2002.&amp;nbsp;&lt;/span&gt;&lt;span style="font-family: Tahoma, Arial, Helvetica, sans-serif; line-height: 16px;"&gt;Atualmente leciona Matemática Financeira, Estatística e Raciocínio Lógico em diversas cidades, de norte a sul do Brasil.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8514344970732460488-3471212682399148284?l=rodison.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rodison.blogspot.com/feeds/3471212682399148284/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8514344970732460488&amp;postID=3471212682399148284&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8514344970732460488/posts/default/3471212682399148284'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8514344970732460488/posts/default/3471212682399148284'/><link rel='alternate' type='text/html' href='http://rodison.blogspot.com/2010/08/be-byte-aulas-de-informatica-gratuitas.html' title='Be-a-Byte - Aulas de informática gratuitas - Inclusão Digital'/><author><name>Rodison Ferreira</name><uri>https://profiles.google.com/116042571911434716678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-z9EVRh3jVHE/AAAAAAAAAAI/AAAAAAAAARA/dON2G5kV-qY/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8514344970732460488.post-2100153727779760761</id><published>2010-08-09T18:57:00.000-07:00</published><updated>2010-08-09T18:57:42.311-07:00</updated><title type='text'>[humor] java vs .net! Muito cômico</title><content type='html'>muito cômico!!!&lt;br /&gt;&lt;br /&gt;&lt;object height="385" width="640"&gt;&lt;param name="movie" value="http://www.youtube.com/v/8Px-GHPxB4I&amp;amp;rel=0&amp;amp;color1=0xb1b1b1&amp;amp;color2=0xd0d0d0&amp;amp;hl=en_US&amp;amp;feature=player_embedded&amp;amp;fs=1"&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/8Px-GHPxB4I&amp;amp;rel=0&amp;amp;color1=0xb1b1b1&amp;amp;color2=0xd0d0d0&amp;amp;hl=en_US&amp;amp;feature=player_embedded&amp;amp;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" allowScriptAccess="always" width="640" height="385"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8514344970732460488-2100153727779760761?l=rodison.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rodison.blogspot.com/feeds/2100153727779760761/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8514344970732460488&amp;postID=2100153727779760761&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8514344970732460488/posts/default/2100153727779760761'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8514344970732460488/posts/default/2100153727779760761'/><link rel='alternate' type='text/html' href='http://rodison.blogspot.com/2010/08/humor-java-vs-net-muito-comico.html' title='[humor] java vs .net! Muito cômico'/><author><name>Rodison Ferreira</name><uri>https://profiles.google.com/116042571911434716678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-z9EVRh3jVHE/AAAAAAAAAAI/AAAAAAAAARA/dON2G5kV-qY/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8514344970732460488.post-984627570480043096</id><published>2010-08-03T20:04:00.000-07:00</published><updated>2010-08-03T20:04:42.777-07:00</updated><title type='text'>Texto: O que matou o RUP pode matar o Agile</title><content type='html'>ótimo texto:&lt;br /&gt;&lt;h3 style="color: #656551; font-family: Georgia, 'Lucida Sans Unicode', Tahoma, Arial, serif; font-size: 18px; line-height: 25px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; position: relative; top: 4px;"&gt;&lt;br /&gt;&lt;/h3&gt;&lt;h3 style="color: #656551; font-family: Georgia, 'Lucida Sans Unicode', Tahoma, Arial, serif; font-size: 18px; line-height: 25px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; position: relative; top: 4px;"&gt;&lt;br /&gt;&lt;/h3&gt;&lt;h3 style="color: #656551; font-family: Georgia, 'Lucida Sans Unicode', Tahoma, Arial, serif; font-size: 18px; line-height: 25px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; position: relative; top: 4px;"&gt;&lt;a href="http://blog.aspercom.com.br/2009/09/29/o-que-matou-o-rup-pode-matar-o-agile/" rel="bookmark" style="border-bottom-color: rgb(101, 101, 81); border-bottom-style: solid; border-bottom-width: 1px; color: #656551; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none;" title="Link permanente para O que matou o RUP pode matar o Agile"&gt;O que matou o RUP pode matar o Agile&lt;/a&gt;&lt;/h3&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8514344970732460488-984627570480043096?l=rodison.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rodison.blogspot.com/feeds/984627570480043096/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8514344970732460488&amp;postID=984627570480043096&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8514344970732460488/posts/default/984627570480043096'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8514344970732460488/posts/default/984627570480043096'/><link rel='alternate' type='text/html' href='http://rodison.blogspot.com/2010/08/texto-o-que-matou-o-rup-pode-matar-o.html' title='Texto: O que matou o RUP pode matar o Agile'/><author><name>Rodison Ferreira</name><uri>https://profiles.google.com/116042571911434716678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-z9EVRh3jVHE/AAAAAAAAAAI/AAAAAAAAARA/dON2G5kV-qY/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8514344970732460488.post-423478451421149106</id><published>2010-07-29T20:16:00.000-07:00</published><updated>2010-07-29T20:16:12.553-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='javautils'/><title type='text'>[javautils] moveFile</title><content type='html'>&amp;nbsp;&amp;nbsp; /**&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;* Move um arquivo&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;*&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;* @param filenameSource&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;* @param filenameDestiny&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;*/&lt;br /&gt;&amp;nbsp;&amp;nbsp; public static void moveFile(String filenameSource, String filenameDestiny) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;try {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; JavaUtils.copyFile(filenameSource, filenameDestiny);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; JavaUtils.deleteFile(filenameSource, false);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;} catch (Throwable e) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; try {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;JavaUtils.deleteFile(filenameDestiny, true);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; } catch (Throwable e1) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; throw new RuntimeException(&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;"JavaUtils.moveFile() - Erro desconhecido ao mover o arquivo de \"" +&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; filenameSource + "\" para \"" + filenameDestiny + "\". Error: " + e);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp; }&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8514344970732460488-423478451421149106?l=rodison.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rodison.blogspot.com/feeds/423478451421149106/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8514344970732460488&amp;postID=423478451421149106&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8514344970732460488/posts/default/423478451421149106'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8514344970732460488/posts/default/423478451421149106'/><link rel='alternate' type='text/html' href='http://rodison.blogspot.com/2010/07/javautils-movefile.html' title='[javautils] moveFile'/><author><name>Rodison Ferreira</name><uri>https://profiles.google.com/116042571911434716678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-z9EVRh3jVHE/AAAAAAAAAAI/AAAAAAAAARA/dON2G5kV-qY/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8514344970732460488.post-8936085593131845865</id><published>2010-07-29T20:14:00.001-07:00</published><updated>2010-07-29T20:14:30.852-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='javautils'/><title type='text'>[javautils] deleteFile</title><content type='html'>&amp;nbsp;&amp;nbsp; /**&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;* Exclui um arquivo (e seus subdiretorios e sub arquivos, se ele for um diretorio)&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;*&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;* @param filename&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;* @param silent - se true, não gera nenhuma exceção mesmo que não consiga excluir o arquivo&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;*/&lt;br /&gt;&amp;nbsp;&amp;nbsp; public static void deleteFile(String filename, boolean silent) {&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;File arquivo = new File(filename);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;/*&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; * Se o arquivo não for um diretório, é deletado. Caso seja um diretório, é deletado com&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; * seus subdiretórios e arquivos.&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; */&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;if (!arquivo.isDirectory()) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; JavaUtils.subDeleteFile(filename, silent, arquivo);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;} else {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; File[] listFiles = arquivo.listFiles();&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; for (int i = 0; i &amp;lt; listFiles.length; i++) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;File arquivoFilho = listFiles[i];&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;JavaUtils.deleteFile(arquivoFilho.getAbsolutePath(), silent);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; JavaUtils.subDeleteFile(filename, silent, arquivo);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp; } &amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; /**&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;* Usado pelo deleteFile. Tenta apagar o arquivo e faz o tratamento de exceção.&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;*&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;* @param filename&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;* @param silent&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;* @param arquivo&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;*/&lt;br /&gt;&amp;nbsp;&amp;nbsp; protected static void subDeleteFile(String filename, boolean silent, File arquivo) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;boolean excluiu = false;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;try {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; excluiu = arquivo.delete();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;} catch (Throwable e) {&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (!silent) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// Se silent for false, gera exceção.&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;throw new RuntimeException(&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; "JavaUtils.deleteFile() - Erro desconhecido ao excluir o arquivo \"" +&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;filename + "\". Error: " + e);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;if (!excluiu &amp;amp;&amp;amp; !silent) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; //Se não conseguir excluir o arquivo, gera exceção.&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; throw new RuntimeException(&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;"JavaUtils.deleteFile() - Erro desconhecido. Não conseguiu excluir o arquivo com o nome \"" +&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; filename +&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; "\". Pode ser que o arquivo não exista, por isso o erro.");&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp; } &amp;nbsp;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8514344970732460488-8936085593131845865?l=rodison.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rodison.blogspot.com/feeds/8936085593131845865/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8514344970732460488&amp;postID=8936085593131845865&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8514344970732460488/posts/default/8936085593131845865'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8514344970732460488/posts/default/8936085593131845865'/><link rel='alternate' type='text/html' href='http://rodison.blogspot.com/2010/07/javautils-deletefile.html' title='[javautils] deleteFile'/><author><name>Rodison Ferreira</name><uri>https://profiles.google.com/116042571911434716678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-z9EVRh3jVHE/AAAAAAAAAAI/AAAAAAAAARA/dON2G5kV-qY/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8514344970732460488.post-3245618707948860594</id><published>2010-07-29T20:11:00.001-07:00</published><updated>2010-07-29T20:11:28.782-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='javautils'/><title type='text'>[javautils] createFile</title><content type='html'>&amp;nbsp;&amp;nbsp; /**&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;* Cria um novo arquivo vazio&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;*&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;* @param filename&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;* @param overwrite - se true, recria o arquivo mesmo que ele já exista&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;*/&lt;br /&gt;&amp;nbsp;&amp;nbsp; public static void createFile(String filename, boolean overwrite) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;try {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; boolean criou = false;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; File file = new File(filename);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; criou = file.createNewFile();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (!criou &amp;amp;&amp;amp; overwrite) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;JavaUtils.writeFile(filename, new StringBuffer());&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; } else if (!criou) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;throw new RuntimeException(&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; "JavaUtils.createFile() - Erro desconhecido. Não conseguiu criar o arquivo com o nome \"" +&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;filename +&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;"\". Pode ser que o arquivo já esteja criado, por isso o erro.");&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;} catch (Throwable e) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; throw new RuntimeException(&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;"JavaUtils.createFile() - Erro desconhecido ao criar o arquivo \"" +&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; filename + "\". Error: " + e);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp; }&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8514344970732460488-3245618707948860594?l=rodison.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rodison.blogspot.com/feeds/3245618707948860594/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8514344970732460488&amp;postID=3245618707948860594&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8514344970732460488/posts/default/3245618707948860594'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8514344970732460488/posts/default/3245618707948860594'/><link rel='alternate' type='text/html' href='http://rodison.blogspot.com/2010/07/javautils-createfile.html' title='[javautils] createFile'/><author><name>Rodison Ferreira</name><uri>https://profiles.google.com/116042571911434716678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-z9EVRh3jVHE/AAAAAAAAAAI/AAAAAAAAARA/dON2G5kV-qY/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8514344970732460488.post-3425012058385867164</id><published>2010-07-29T20:06:00.000-07:00</published><updated>2010-07-29T20:09:02.882-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='javautils'/><title type='text'>[javautils] copyFile</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: Arial; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px;"&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; /**&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;* Faz a cópia de um arquivo&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;*&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;* @param filenameSource&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;* @param filenameDestiny&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;*/&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; public static void copyFile(String filenameSource, String filenameDestiny) {&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;try {&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Cria a stream para ler o arquivo original&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; FileInputStream fin = new FileInputStream(filenameSource);&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Cria a stream para gravar o arquivo de cópia&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; FileOutputStream fout = new FileOutputStream(filenameDestiny);&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Usa as streams para criar os canais correspondentes&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; FileChannel in = fin.getChannel();&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; FileChannel out = fout.getChannel();&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Número de bytes do arquivo original&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; long numbytes = in.size();&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Transfere todo o volume para o arquivo de cópia.&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; in.transferTo(0, numbytes, out);&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; out.close();&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; in.close();&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; fout.close();&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; fin.close();&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;} catch (Throwable e) {&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; throw new&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman'; font-size: medium;"&gt;RuntimeException&lt;/span&gt;(&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;"JavaUtils.copyFile() - Erro desconhecido ao copiar o arquivo \"" +&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; filenameSource + "\" para \"" + filenameDestiny + "\". Error: " + e);&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; }&lt;/div&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8514344970732460488-3425012058385867164?l=rodison.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rodison.blogspot.com/feeds/3425012058385867164/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8514344970732460488&amp;postID=3425012058385867164&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8514344970732460488/posts/default/3425012058385867164'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8514344970732460488/posts/default/3425012058385867164'/><link rel='alternate' type='text/html' href='http://rodison.blogspot.com/2010/07/javautils-copyfile.html' title='[javautils] copyFile'/><author><name>Rodison Ferreira</name><uri>https://profiles.google.com/116042571911434716678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-z9EVRh3jVHE/AAAAAAAAAAI/AAAAAAAAARA/dON2G5kV-qY/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8514344970732460488.post-8430243989578375748</id><published>2010-07-29T20:04:00.001-07:00</published><updated>2010-07-29T20:08:23.772-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='javautils'/><title type='text'>[javautils] readFileAsStringBuffer</title><content type='html'>&amp;nbsp;&amp;nbsp; /**&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;* Lê o texto de um arquivo&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;*&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;* @param filename&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;* @return StringBuffer - Um StringBuffer com todo o texto do arquivo&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;*/&lt;br /&gt;&amp;nbsp;&amp;nbsp; public static StringBuffer readFileAsStringBuffer(String filename) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;StringBuffer texto = new StringBuffer();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;try {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; FileReader reader = new FileReader(filename);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; BufferedReader in = new BufferedReader(reader);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; String linha = null;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; long count = 0;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; while ((linha = in.readLine()) != null) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (count == 0) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; texto.append(linha);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; count++;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} else {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; texto.append("\n");&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; texto.append(linha);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; in.close();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; reader.close();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;} catch (Throwable e) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; throw new RuntimeException(&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;"JavaUtils.readFileAsStringBuffer() - Erro desconhecido ao ler o arquivo \"" +&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; filename + "\". Error: " + e);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;return texto;&lt;br /&gt;&amp;nbsp;&amp;nbsp; }&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8514344970732460488-8430243989578375748?l=rodison.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rodison.blogspot.com/feeds/8430243989578375748/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8514344970732460488&amp;postID=8430243989578375748&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8514344970732460488/posts/default/8430243989578375748'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8514344970732460488/posts/default/8430243989578375748'/><link rel='alternate' type='text/html' href='http://rodison.blogspot.com/2010/07/javautils-readfileasstringbuffer.html' title='[javautils] readFileAsStringBuffer'/><author><name>Rodison Ferreira</name><uri>https://profiles.google.com/116042571911434716678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-z9EVRh3jVHE/AAAAAAAAAAI/AAAAAAAAARA/dON2G5kV-qY/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8514344970732460488.post-5988547065819593262</id><published>2010-07-28T17:30:00.001-07:00</published><updated>2010-07-28T17:30:35.560-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='javautils'/><title type='text'>[javautils] writeFile</title><content type='html'>&amp;nbsp;&amp;nbsp; /**&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;* Escreve um texto no arquivo (sobrescrevendo todo o texto que já existia nele)&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;*&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;* @param filename&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;* @param texto&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;*/&lt;br /&gt;&amp;nbsp;&amp;nbsp; public static void writeFile(String filename, String texto) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;try {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; FileWriter writer = new FileWriter(filename);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; BufferedWriter out = new BufferedWriter(writer);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; out.write(texto);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; out.close();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; writer.close();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;} catch (Throwable e) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; throw new RuntimeException(&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;"JavaUtils.writeFile(String, String) - Erro desconhecido ao escrever um texto no arquivo \"" +&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; filename + "\". Error: " + e);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp; } &amp;nbsp;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8514344970732460488-5988547065819593262?l=rodison.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rodison.blogspot.com/feeds/5988547065819593262/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8514344970732460488&amp;postID=5988547065819593262&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8514344970732460488/posts/default/5988547065819593262'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8514344970732460488/posts/default/5988547065819593262'/><link rel='alternate' type='text/html' href='http://rodison.blogspot.com/2010/07/javautils-writefile.html' title='[javautils] writeFile'/><author><name>Rodison Ferreira</name><uri>https://profiles.google.com/116042571911434716678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-z9EVRh3jVHE/AAAAAAAAAAI/AAAAAAAAARA/dON2G5kV-qY/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8514344970732460488.post-6966704028048951269</id><published>2010-07-28T17:29:00.001-07:00</published><updated>2010-07-28T17:29:35.392-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='javautils'/><title type='text'>[javautils] appendFile</title><content type='html'>&amp;nbsp;&amp;nbsp; /**&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;* Escreve um texto no final do arquivo (append)&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;*&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;* @param filename&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;* @param texto&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;*/&lt;br /&gt;&amp;nbsp;&amp;nbsp; public static void appendFile(String filename, String texto) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;try {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; FileWriter writer = new FileWriter(filename, true);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; BufferedWriter out = new BufferedWriter(writer);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; out.write(texto);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; out.close();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; writer.close();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;} catch (Throwable e) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; throw new RuntimeException(&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;"JavaUtils.appendFile(String, String) - Erro desconhecido ao escrever um texto no final do arquivo \"" +&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; filename + "\". Error: " + e);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp; }&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8514344970732460488-6966704028048951269?l=rodison.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rodison.blogspot.com/feeds/6966704028048951269/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8514344970732460488&amp;postID=6966704028048951269&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8514344970732460488/posts/default/6966704028048951269'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8514344970732460488/posts/default/6966704028048951269'/><link rel='alternate' type='text/html' href='http://rodison.blogspot.com/2010/07/javautils-appendfile.html' title='[javautils] appendFile'/><author><name>Rodison Ferreira</name><uri>https://profiles.google.com/116042571911434716678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-z9EVRh3jVHE/AAAAAAAAAAI/AAAAAAAAARA/dON2G5kV-qY/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8514344970732460488.post-2454602148636493007</id><published>2010-07-28T17:28:00.000-07:00</published><updated>2010-07-28T17:28:17.140-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='javautils'/><title type='text'>[javautils] convertCollectionToSqlINClause</title><content type='html'>&amp;nbsp;&amp;nbsp; /**&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;* Converte uma coleção qualquer em um formato que possa ser colocado em uma cláusula SQL&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;* "IN".&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;* &lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;* Ex: dada uma coleção da seguinte forma:&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;* &lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;* Collection textoColecao = new ArrayList();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;* textoColecao.add("primeiro");&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;* textoColecao.add("segundo");&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;* textoColecao.add("terceiro");&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;* &lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;*&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;* A chamada em uma clásula IN ficaria assim:&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;* &lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;*&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;* StringBuffer sql = new StringBuffer();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;* sql.append("select * from algo where algo.id in ( ");&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;* sql.append(JavaUtils.convertCollectionToSqlINClause(textoColecao);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;* sql.append(" ) ");&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;* &lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;*&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;* O resultado da sql montada será:&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;* &lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;*&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;* select * from algo where algo.id in ( primeiro, segundo, terceiro ) &lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;*&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;* @param colecao&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;* @return String&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;*/&lt;br /&gt;&amp;nbsp;&amp;nbsp; public static String convertCollectionToSqlINClause(Collection colecao) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;try {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; StringBuffer buffer = new StringBuffer();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Iterator iterator = colecao.iterator();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Object primeiroItem = iterator.next();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; buffer.append(primeiroItem.toString());&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; while (iterator.hasNext()) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Object item = iterator.next();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;buffer.append("," + item);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return buffer.toString();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;} catch (Throwable e) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; throw new RuntimeException(&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;"JavaUtils.convertCollectionToSqlINClause() - Error on convert the collection \"" +&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; colecao +&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; "\" with size \"" +&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ((colecao == null) ? null : colecao.size()) +&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; "\" in a sql \"IN\" clause. Error details: " + e);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp; }&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8514344970732460488-2454602148636493007?l=rodison.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rodison.blogspot.com/feeds/2454602148636493007/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8514344970732460488&amp;postID=2454602148636493007&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8514344970732460488/posts/default/2454602148636493007'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8514344970732460488/posts/default/2454602148636493007'/><link rel='alternate' type='text/html' href='http://rodison.blogspot.com/2010/07/javautils-convertcollectiontosqlinclaus.html' title='[javautils] convertCollectionToSqlINClause'/><author><name>Rodison Ferreira</name><uri>https://profiles.google.com/116042571911434716678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-z9EVRh3jVHE/AAAAAAAAAAI/AAAAAAAAARA/dON2G5kV-qY/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8514344970732460488.post-2988007132229125296</id><published>2010-07-27T19:56:00.000-07:00</published><updated>2010-07-27T19:57:27.527-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='javautils'/><title type='text'>[java] convertStringDecimalToBigDecimal</title><content type='html'>&amp;nbsp;&amp;nbsp; /**&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;* Converte uma String no formato decimal (valor de moeda, p. ex.) para um BigDecimal.&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;* Se a&amp;nbsp;String for vazia ou se ocorrer uma exceção, retorna null&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;*&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;* @param valor&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;* @param locale - pegue o Locale desejado pelo método "getLocale..." do JavaUtils&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;* @return String&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;*/&lt;br /&gt;&amp;nbsp;&amp;nbsp; public static BigDecimal convertStringDecimalToBigDecimal(String valor, Locale locale,&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;int minimoCasasDecimais, int maximoCasasDecimais) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;BigDecimal retorno = null;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;if (JavaUtils.&lt;a href="http://rodison.blogspot.com/2010/05/java-metodo-que-verifica-se-uma-string.html"&gt;isStringNaoVazia&lt;/a&gt;(valor)) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; try {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;NumberFormat formato = DecimalFormat.getNumberInstance(locale);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;formato.setMinimumFractionDigits(minimoCasasDecimais);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;formato.setMaximumFractionDigits(maximoCasasDecimais);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;retorno = new BigDecimal(formato.parse(valor).doubleValue());&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; } catch (Throwable e) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;log.warn("JavaUtils.convertStringDecimalToBigDecimal() - Erro de " +&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; "conversao. Vai retornar null. Error: " + e);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;return retorno;&lt;br /&gt;&amp;nbsp;&amp;nbsp; }&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8514344970732460488-2988007132229125296?l=rodison.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rodison.blogspot.com/feeds/2988007132229125296/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8514344970732460488&amp;postID=2988007132229125296&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8514344970732460488/posts/default/2988007132229125296'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8514344970732460488/posts/default/2988007132229125296'/><link rel='alternate' type='text/html' href='http://rodison.blogspot.com/2010/07/java-convertstringdecimaltobigdecimal.html' title='[java] convertStringDecimalToBigDecimal'/><author><name>Rodison Ferreira</name><uri>https://profiles.google.com/116042571911434716678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-z9EVRh3jVHE/AAAAAAAAAAI/AAAAAAAAARA/dON2G5kV-qY/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8514344970732460488.post-2455390547382952175</id><published>2010-07-26T20:28:00.000-07:00</published><updated>2010-07-26T20:28:40.121-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='javautils'/><title type='text'>[java] isBigDecimalVazio</title><content type='html'>&lt;span class="Apple-style-span" style="color: #333333; font-family: Verdana, sans-serif; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; line-height: 19px;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #333333; font-family: Verdana, sans-serif; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; line-height: 19px;"&gt;/**&lt;br /&gt;* Verifica se o BigDecimal está vazio (se é null ou igual a 0)&lt;br /&gt;*&lt;br /&gt;* @param valor&lt;br /&gt;* @return boolean&lt;br /&gt;*/&lt;br /&gt;public static boolean isBigDecimalVazio(BigDecimal valor) {&lt;br /&gt;&amp;nbsp;try {&lt;br /&gt;&amp;nbsp;&amp;nbsp;BigDecimal zero = new BigDecimal(0);&lt;br /&gt;&amp;nbsp;&amp;nbsp;if (valor.compareTo(zero) == 0) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; // se o numero eh igual a 0 (zero) retorna true&lt;br /&gt;&amp;nbsp;&amp;nbsp; return true;&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;} catch (NullPointerException e) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;// se o numero eh null, retorna true&lt;br /&gt;&amp;nbsp;&amp;nbsp;return true;&lt;br /&gt;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;return false;&lt;br /&gt;}&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8514344970732460488-2455390547382952175?l=rodison.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rodison.blogspot.com/feeds/2455390547382952175/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8514344970732460488&amp;postID=2455390547382952175&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8514344970732460488/posts/default/2455390547382952175'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8514344970732460488/posts/default/2455390547382952175'/><link rel='alternate' type='text/html' href='http://rodison.blogspot.com/2010/07/java-isbigdecimalvazio_26.html' title='[java] isBigDecimalVazio'/><author><name>Rodison Ferreira</name><uri>https://profiles.google.com/116042571911434716678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-z9EVRh3jVHE/AAAAAAAAAAI/AAAAAAAAARA/dON2G5kV-qY/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8514344970732460488.post-8904644649246391819</id><published>2010-07-26T20:17:00.001-07:00</published><updated>2010-07-26T20:23:20.447-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='javautils'/><title type='text'>[java] convertBigDecimalToStringDecimal</title><content type='html'>&amp;nbsp;&amp;nbsp; /**&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;* Converte um BigDecimal para uma String no formato&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;* decimal (valor de moeda, p. ex.). Se o&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;* BigDecimal for vazio ou se ocorrer uma exceção,&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;* retorna uma String vazia ("")&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;*&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;* @param valor&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;* @param locale - pegue o Locale desejado pelo&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;* &amp;nbsp; &amp;nbsp; &amp;nbsp; método "getLocale..." do JavaUtils&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;* @param minimoCasasDecimais&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;* @param maximoCasasDecimais&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;* @return String&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;*/&lt;br /&gt;&amp;nbsp;&amp;nbsp; public static String convertBigDecimalToStringDecimal(BigDecimal valor, Locale locale,&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;int minimoCasasDecimais, int maximoCasasDecimais) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;String retorno = "";&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;if (&lt;a href="http://rodison.blogspot.com/2010/07/java-isbigdecimalnaovazio.html"&gt;JavaUtils.isBigDecimalNaoVazio&lt;/a&gt;(valor)) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; try {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;NumberFormat formato = DecimalFormat.getNumberInstance(locale);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;formato.setMinimumFractionDigits(minimoCasasDecimais);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;formato.setMaximumFractionDigits(maximoCasasDecimais);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;retorno = formato.format(valor);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; } catch (Throwable e) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;log.warn("JavaUtils.convertBigDecimalToStringDecimal() - Erro de " +&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; "conversao. Vai retornar \"\". Error: " + e);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;return retorno;&lt;br /&gt;&amp;nbsp;&amp;nbsp; }&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8514344970732460488-8904644649246391819?l=rodison.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rodison.blogspot.com/feeds/8904644649246391819/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8514344970732460488&amp;postID=8904644649246391819&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8514344970732460488/posts/default/8904644649246391819'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8514344970732460488/posts/default/8904644649246391819'/><link rel='alternate' type='text/html' href='http://rodison.blogspot.com/2010/07/java-convertbigdecimaltostringdecimal.html' title='[java] convertBigDecimalToStringDecimal'/><author><name>Rodison Ferreira</name><uri>https://profiles.google.com/116042571911434716678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-z9EVRh3jVHE/AAAAAAAAAAI/AAAAAAAAARA/dON2G5kV-qY/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8514344970732460488.post-2423473165371044825</id><published>2010-07-26T20:16:00.003-07:00</published><updated>2010-07-26T20:20:07.918-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='javautils'/><title type='text'>[java] getLocaleEUA</title><content type='html'>&amp;nbsp;&amp;nbsp; /**&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;* Retorna o Locale dos Estados Unidos&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;*&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;* @return Locale&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;*/&lt;br /&gt;&amp;nbsp;&amp;nbsp; public static Locale getLocaleEUA() {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;return Locale.ENGLISH;&lt;br /&gt;&amp;nbsp;&amp;nbsp; }&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8514344970732460488-2423473165371044825?l=rodison.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rodison.blogspot.com/feeds/2423473165371044825/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8514344970732460488&amp;postID=2423473165371044825&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8514344970732460488/posts/default/2423473165371044825'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8514344970732460488/posts/default/2423473165371044825'/><link rel='alternate' type='text/html' href='http://rodison.blogspot.com/2010/07/java-getlocaleeua.html' title='[java] getLocaleEUA'/><author><name>Rodison Ferreira</name><uri>https://profiles.google.com/116042571911434716678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-z9EVRh3jVHE/AAAAAAAAAAI/AAAAAAAAARA/dON2G5kV-qY/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8514344970732460488.post-2031627307043003696</id><published>2010-07-26T20:16:00.001-07:00</published><updated>2010-07-26T20:20:36.005-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='javautils'/><title type='text'>[java] getLocaleBrasil</title><content type='html'>&amp;nbsp;&amp;nbsp; /**&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;* Retorna o Locale do Brasil&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;*&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;* @return Locale&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;*/&lt;br /&gt;&amp;nbsp;&amp;nbsp; public static Locale getLocaleBrasil() {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;return new Locale("pt", "BR");&lt;br /&gt;&amp;nbsp;&amp;nbsp; }&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8514344970732460488-2031627307043003696?l=rodison.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rodison.blogspot.com/feeds/2031627307043003696/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8514344970732460488&amp;postID=2031627307043003696&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8514344970732460488/posts/default/2031627307043003696'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8514344970732460488/posts/default/2031627307043003696'/><link rel='alternate' type='text/html' href='http://rodison.blogspot.com/2010/07/java-getlocalebrasil.html' title='[java] getLocaleBrasil'/><author><name>Rodison Ferreira</name><uri>https://profiles.google.com/116042571911434716678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-z9EVRh3jVHE/AAAAAAAAAAI/AAAAAAAAARA/dON2G5kV-qY/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8514344970732460488.post-839915902230097005</id><published>2010-07-26T20:15:00.001-07:00</published><updated>2010-07-26T20:30:43.110-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='javautils'/><title type='text'>[java] isBigDecimalNaoVazio</title><content type='html'>&amp;nbsp;&amp;nbsp; /**&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;* Verifica se o BigDecimal não está vazio (se não é null nem igual a 0)&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;*&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;* @param valor&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;* @return boolean&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;*/&lt;br /&gt;&amp;nbsp;&amp;nbsp; public static boolean isBigDecimalNaoVazio(BigDecimal valor) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;return !&lt;a href="http://rodison.blogspot.com/2010/07/java-isbigdecimalvazio_26.html"&gt;JavaUtils.isBigDecimalVazio&lt;/a&gt;(valor);&lt;br /&gt;&amp;nbsp;&amp;nbsp; }&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8514344970732460488-839915902230097005?l=rodison.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rodison.blogspot.com/feeds/839915902230097005/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8514344970732460488&amp;postID=839915902230097005&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8514344970732460488/posts/default/839915902230097005'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8514344970732460488/posts/default/839915902230097005'/><link rel='alternate' type='text/html' href='http://rodison.blogspot.com/2010/07/java-isbigdecimalnaovazio.html' title='[java] isBigDecimalNaoVazio'/><author><name>Rodison Ferreira</name><uri>https://profiles.google.com/116042571911434716678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-z9EVRh3jVHE/AAAAAAAAAAI/AAAAAAAAARA/dON2G5kV-qY/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8514344970732460488.post-7580027576356450251</id><published>2010-07-25T19:41:00.000-07:00</published><updated>2010-07-26T20:32:55.276-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='javautils'/><title type='text'>[java] convertStringArrayToIntArray</title><content type='html'>convertendo um array de strings de em um array de int:&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;blockquote&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;/**&lt;br /&gt;* The function stringArrayToIntArray takes as input a String array which is assumed to&lt;br /&gt;* contain Strings that represent ints. It returns an int array containing the ints&lt;br /&gt;* represented by each String from the String array.&lt;br /&gt;*&lt;br /&gt;* @param s&lt;br /&gt;* @return int[]&lt;br /&gt;*/&lt;br /&gt;public static int[] convertStringArrayToIntArray(String[] s) {&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;try {&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;int[] intArray;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;try {&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;intArray = new int[s.length];&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;} catch (NullPointerException e2) {&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;return null;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;}&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;for (int i = 0; i &amp;lt; s.length; i++) { &lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;try {&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;    &lt;/span&gt;intArray[i] = Integer.parseInt(s[i]);&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;} catch (Throwable e) {&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;    &lt;/span&gt;try {&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;     &lt;/span&gt;if (s[i].equals("")) {&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;      &lt;/span&gt;intArray[i] = 0;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;      &lt;/span&gt;continue;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;     &lt;/span&gt;}&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;    &lt;/span&gt;} catch (NullPointerException e1) {&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;     &lt;/span&gt;intArray[i] = 0;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;     &lt;/span&gt;continue;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;    &lt;/span&gt;}&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;    &lt;/span&gt;throw e;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;}&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;}&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;return intArray;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;} catch (Throwable e) {&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;throw new RuntimeException(&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;"JavaUtils.convertStringArrayToIntArray() - Error on convert the String array \"" +&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;s + "\" to an int array. Error details: " + e);&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;}&lt;br /&gt;}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8514344970732460488-7580027576356450251?l=rodison.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rodison.blogspot.com/feeds/7580027576356450251/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8514344970732460488&amp;postID=7580027576356450251&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8514344970732460488/posts/default/7580027576356450251'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8514344970732460488/posts/default/7580027576356450251'/><link rel='alternate' type='text/html' href='http://rodison.blogspot.com/2010/07/java-convertstringarraytointarray.html' title='[java] convertStringArrayToIntArray'/><author><name>Rodison Ferreira</name><uri>https://profiles.google.com/116042571911434716678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-z9EVRh3jVHE/AAAAAAAAAAI/AAAAAAAAARA/dON2G5kV-qY/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8514344970732460488.post-6381885873682245336</id><published>2010-05-02T14:57:00.000-07:00</published><updated>2010-07-26T20:35:02.819-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='javautils'/><title type='text'>Java - Convertendo um String pra Date</title><content type='html'>Método Java para converter um String para Date.&lt;br /&gt;&lt;br /&gt;A vantagem deste método é que se o padrão for dd/MM/yyyy e se o usuário digitar 17/10/10, o método converte o "10" para "2010" automaticamente.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; public Date stringToDate(String string, String pattern)&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;throws Throwable {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;Date data = null;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;if (&lt;a href="http://rodison.blogspot.com/2010/05/java-metodo-que-verifica-se-uma-string.html"&gt;JavaUtils.isStringNaoVazia&lt;/a&gt;(string)) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Caso o padrão seja dia/mês/ano e o usuário tenha digitado o ano&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // com dois dígitos. (Ex.: 07)&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // o ano deve ser 2007&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (&lt;a href="http://rodison.blogspot.com/2010/05/java-metodos-para-verificar-se-dois.html"&gt;JavaUtils.isObjectsIguais&lt;/a&gt;("dd/MM/yyyy", pattern) &amp;amp;&amp;amp; string.length() == 8) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;StringBuffer stringBuffer = new StringBuffer();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;stringBuffer.append(string.substring(0, 6));&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;stringBuffer.append("20");&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;stringBuffer.append(string.substring(6));&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;string = stringBuffer.toString();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Caso o padrão seja mês/ano e o usuário tenha digitado o ano com dois&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // dígitos. (Ex.: 07)&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // o ano deve ser 2007&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (&lt;a href="http://rodison.blogspot.com/2010/05/java-metodos-para-verificar-se-dois.html"&gt;JavaUtils.isObjectsIguais&lt;/a&gt;("MM/yyyy", pattern) &amp;amp;&amp;amp; string.length() == 5) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;StringBuffer stringBuffer = new StringBuffer();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;stringBuffer.append(string.substring(0, 3));&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;stringBuffer.append("20");&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;stringBuffer.append(string.substring(3));&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;string = stringBuffer.toString();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Caso o padrão seja dia/mês/ano HH:mm e o usuário tenha digitado o ano&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // com dois dígitos. (Ex.: 07)&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // o ano deve ser 2007&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (&lt;a href="http://rodison.blogspot.com/2010/05/java-metodos-para-verificar-se-dois.html"&gt;JavaUtils.isObjectsIguais&lt;/a&gt;("dd/MM/yyyy HH:mm", pattern) &amp;amp;&amp;amp; string.length() == 14) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;StringBuffer stringBuffer = new StringBuffer();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;stringBuffer.append(string.substring(0, 6));&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;stringBuffer.append("20");&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;stringBuffer.append(string.substring(6));&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;string = stringBuffer.toString();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // Caso o padrão seja mês/ano HH:mm e o usuário tenha digitado o ano&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // com dois dígitos. (Ex.: 07)&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // o ano deve ser 2007&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (&lt;a href="http://rodison.blogspot.com/2010/05/java-metodos-para-verificar-se-dois.html"&gt;JavaUtils.isObjectsIguais&lt;/a&gt;("MM/yyyy HH:mm", pattern) &amp;amp;&amp;amp; string.length() == 11) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;StringBuffer stringBuffer = new StringBuffer();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;stringBuffer.append(string.substring(0, 3));&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;stringBuffer.append("20");&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;stringBuffer.append(string.substring(3));&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;string = stringBuffer.toString();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; SimpleDateFormat sdf = new SimpleDateFormat(pattern);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; sdf.setLenient(false);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; data = sdf.parse(string);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;return data;&lt;br /&gt;&amp;nbsp;&amp;nbsp; }&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8514344970732460488-6381885873682245336?l=rodison.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rodison.blogspot.com/feeds/6381885873682245336/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8514344970732460488&amp;postID=6381885873682245336&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8514344970732460488/posts/default/6381885873682245336'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8514344970732460488/posts/default/6381885873682245336'/><link rel='alternate' type='text/html' href='http://rodison.blogspot.com/2010/05/java-convertendo-um-string-pra-date.html' title='Java - Convertendo um String pra Date'/><author><name>Rodison Ferreira</name><uri>https://profiles.google.com/116042571911434716678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-z9EVRh3jVHE/AAAAAAAAAAI/AAAAAAAAARA/dON2G5kV-qY/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8514344970732460488.post-9211187905724538876</id><published>2010-05-02T14:43:00.000-07:00</published><updated>2010-07-26T20:37:13.120-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='javautils'/><title type='text'>Java - Métodos para verificar se dois objetos são diferentes e se são iguais</title><content type='html'>Dois métodos: um para verificar se dois objetos são diferentes ou não e outro para verificar se dois objetos são iguais:&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;public boolean isObjectsDiferentes(Object objeto1, Object objeto2) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;try {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (objeto1.equals(objeto2)) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return false;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;} catch (NullPointerException e) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; try {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;objeto2.toString();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; } catch (NullPointerException e1) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return false;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;return true;&lt;br /&gt;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&amp;nbsp;&amp;nbsp; public boolean isObjectsIguais(Object objeto1, Object objeto2) {&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;return !&amp;nbsp;isObjectsDiferentes;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&amp;nbsp;&amp;nbsp; }&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8514344970732460488-9211187905724538876?l=rodison.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rodison.blogspot.com/feeds/9211187905724538876/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8514344970732460488&amp;postID=9211187905724538876&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8514344970732460488/posts/default/9211187905724538876'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8514344970732460488/posts/default/9211187905724538876'/><link rel='alternate' type='text/html' href='http://rodison.blogspot.com/2010/05/java-metodos-para-verificar-se-dois.html' title='Java - Métodos para verificar se dois objetos são diferentes e se são iguais'/><author><name>Rodison Ferreira</name><uri>https://profiles.google.com/116042571911434716678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-z9EVRh3jVHE/AAAAAAAAAAI/AAAAAAAAARA/dON2G5kV-qY/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8514344970732460488.post-5964410641350834367</id><published>2010-05-02T14:21:00.000-07:00</published><updated>2010-07-26T20:37:35.890-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='javautils'/><title type='text'>Java - Método que verifica se uma String está vazia</title><content type='html'>Método que verifica se uma String está vazia ou se é null:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; public boolean stringVazia(String texto) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;try {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // pega a primeira letra da palavra. se conseguir, eh porque a string não tah vazia.&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // nesse caso retorna false.&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; texto.charAt(0);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return false;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;} catch (NullPointerException e) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // se o texto eh null, retorna true&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return true;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;} catch (StringIndexOutOfBoundsException e) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // se o texto eh "", retorna true&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return true;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp; }&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8514344970732460488-5964410641350834367?l=rodison.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rodison.blogspot.com/feeds/5964410641350834367/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8514344970732460488&amp;postID=5964410641350834367&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8514344970732460488/posts/default/5964410641350834367'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8514344970732460488/posts/default/5964410641350834367'/><link rel='alternate' type='text/html' href='http://rodison.blogspot.com/2010/05/java-metodo-que-verifica-se-uma-string.html' title='Java - Método que verifica se uma String está vazia'/><author><name>Rodison Ferreira</name><uri>https://profiles.google.com/116042571911434716678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-z9EVRh3jVHE/AAAAAAAAAAI/AAAAAAAAARA/dON2G5kV-qY/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8514344970732460488.post-1337334869064650397</id><published>2010-05-02T13:56:00.000-07:00</published><updated>2010-07-26T20:37:57.446-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='javautils'/><title type='text'>Java - Convertendo um Date para String</title><content type='html'>Método para converter um java.util.Date do Java para String:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; public String dateToString(Date date, String pattern) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;String formatado;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;try {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; SimpleDateFormat sdf = new SimpleDateFormat(pattern);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; formatado = sdf.format(date);&lt;br /&gt;&lt;br /&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;} catch (NullPointerException e) { &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return "";&lt;/div&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;} catch (Throwable e) { &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; throw e;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp; } &lt;br /&gt;&lt;br /&gt;Sendo que o parâmetro "pattern" deve ser de acordo com o que está escrito em&amp;nbsp;&lt;a href="http://java.sun.com/j2se/1.5.0/docs/api/java/text/SimpleDateFormat.html"&gt;http://java.sun.com/j2se/1.5.0/docs/api/java/text/SimpleDateFormat.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Até mais&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8514344970732460488-1337334869064650397?l=rodison.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rodison.blogspot.com/feeds/1337334869064650397/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8514344970732460488&amp;postID=1337334869064650397&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8514344970732460488/posts/default/1337334869064650397'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8514344970732460488/posts/default/1337334869064650397'/><link rel='alternate' type='text/html' href='http://rodison.blogspot.com/2010/05/java-convertendo-um-date-para-string.html' title='Java - Convertendo um Date para String'/><author><name>Rodison Ferreira</name><uri>https://profiles.google.com/116042571911434716678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-z9EVRh3jVHE/AAAAAAAAAAI/AAAAAAAAARA/dON2G5kV-qY/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8514344970732460488.post-206072748062603567</id><published>2010-05-01T17:33:00.000-07:00</published><updated>2010-07-26T20:38:23.007-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='chrome extensions'/><title type='text'>Chrome Extensions - Web Developer</title><content type='html'>Web Developer&lt;br /&gt;&lt;br /&gt;Extensão pro Chrome que fornece várias informações para programadores web. Muito bom. É a versão do Web Developer do Firefox, só que agora pra Chrome. Muito bom:&lt;br /&gt;&lt;br /&gt;&lt;a href="https://chrome.google.com/extensions/detail/bfbameneiokkgbdmiekhjnmfkcnldhhm"&gt;https://chrome.google.com/extensions/detail/bfbameneiokkgbdmiekhjnmfkcnldhhm&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8514344970732460488-206072748062603567?l=rodison.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rodison.blogspot.com/feeds/206072748062603567/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8514344970732460488&amp;postID=206072748062603567&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8514344970732460488/posts/default/206072748062603567'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8514344970732460488/posts/default/206072748062603567'/><link rel='alternate' type='text/html' href='http://rodison.blogspot.com/2010/05/chrome-extensions-web-developer.html' title='Chrome Extensions - Web Developer'/><author><name>Rodison Ferreira</name><uri>https://profiles.google.com/116042571911434716678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-z9EVRh3jVHE/AAAAAAAAAAI/AAAAAAAAARA/dON2G5kV-qY/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8514344970732460488.post-1320086825178939447</id><published>2010-05-01T07:18:00.000-07:00</published><updated>2010-07-26T20:38:44.530-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='chrome extensions'/><title type='text'>Chrome Extensions - Flash Video Download</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: Arial; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px;"&gt;Flash Video Download&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Extensão do Chrome para baixar vídeos do youtube, dailymotion, etc.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://bitbucket.org/m.23/flv_download/wiki/Home"&gt;http://bitbucket.org/m.23/flv_download/wiki/Home&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8514344970732460488-1320086825178939447?l=rodison.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rodison.blogspot.com/feeds/1320086825178939447/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8514344970732460488&amp;postID=1320086825178939447&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8514344970732460488/posts/default/1320086825178939447'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8514344970732460488/posts/default/1320086825178939447'/><link rel='alternate' type='text/html' href='http://rodison.blogspot.com/2010/05/chrome-extensions-flash-video-download.html' title='Chrome Extensions - Flash Video Download'/><author><name>Rodison Ferreira</name><uri>https://profiles.google.com/116042571911434716678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-z9EVRh3jVHE/AAAAAAAAAAI/AAAAAAAAARA/dON2G5kV-qY/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8514344970732460488.post-1608924173027284506</id><published>2010-05-01T07:11:00.000-07:00</published><updated>2010-07-26T20:39:04.956-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='chrome extensions'/><title type='text'>Chrome Extensions - Smooth Gesture</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: Arial, sans-serif; font-size: 13px;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;h2 style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-size: 1.3em; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 2px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;Smooth Gesture&lt;/h2&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Extensão do Chrome que permitem que você controle e navegue entre as abas do seu navegador através de movimentos do mouse. Muito bom e prático :)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="https://chrome.google.com/extensions/detail/lfkgmnnajiljnolcgolmmgnecgldgeld"&gt;https://chrome.google.com/extensions/detail/lfkgmnnajiljnolcgolmmgnecgldgeld&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/8514344970732460488-1608924173027284506?l=rodison.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rodison.blogspot.com/feeds/1608924173027284506/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8514344970732460488&amp;postID=1608924173027284506&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8514344970732460488/posts/default/1608924173027284506'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8514344970732460488/posts/default/1608924173027284506'/><link rel='alternate' type='text/html' href='http://rodison.blogspot.com/2010/05/chrome-extensions-smooth-gesture.html' title='Chrome Extensions - Smooth Gesture'/><author><name>Rodison Ferreira</name><uri>https://profiles.google.com/116042571911434716678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-z9EVRh3jVHE/AAAAAAAAAAI/AAAAAAAAARA/dON2G5kV-qY/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8514344970732460488.post-6762632931440854218</id><published>2010-05-01T07:02:00.000-07:00</published><updated>2010-07-26T20:36:21.298-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='chrome extensions'/><title type='text'>Chrome Extensions - goo.gl URL Shortener</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: Arial; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px;"&gt;goo.gl URL Shortener&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;Extensão do Chrome para "encurtar" URLs. Muito útil, rápido e prático. Principalmente pra quem usa twitter.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://chrome.google.com/extensions/detail/iblijlcdoidgdpfknkckljiocdbnlagk"&gt;https://chrome.google.com/extensions/detail/iblijlcdoidgdpfknkckljiocdbnlagk&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8514344970732460488-6762632931440854218?l=rodison.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rodison.blogspot.com/feeds/6762632931440854218/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8514344970732460488&amp;postID=6762632931440854218&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8514344970732460488/posts/default/6762632931440854218'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8514344970732460488/posts/default/6762632931440854218'/><link rel='alternate' type='text/html' href='http://rodison.blogspot.com/2010/05/chrome-extensions-googl-url-shortener.html' title='Chrome Extensions - goo.gl URL Shortener'/><author><name>Rodison Ferreira</name><uri>https://profiles.google.com/116042571911434716678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-z9EVRh3jVHE/AAAAAAAAAAI/AAAAAAAAARA/dON2G5kV-qY/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8514344970732460488.post-1115812023069933523</id><published>2010-05-01T06:35:00.000-07:00</published><updated>2010-07-26T20:40:36.852-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='javautils'/><title type='text'>Java - Convertendo um array de String para um array de Int</title><content type='html'>Digamos que você tem um array de Strings, só que este array de String na verdade só tem números no formato String dentro dele. Você pode converter este array de Strings em um array de int de forma fácil. É só usar este método abaixo:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; public static int[] convertStringArrayToIntArray(String[] s) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;try {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; int[] intArray;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; try {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;intArray = new int[s.length];&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; } catch (NullPointerException e2) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return null;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; for (int i = 0; i &amp;lt; s.length; i++) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;try {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; intArray[i] = Integer.parseInt(s[i]);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} catch (Throwable e) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; try {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (s[i].equals("")) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; intArray[i] = 0;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; continue;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; } catch (NullPointerException e1) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;intArray[i] = 0;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;continue;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; throw e;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return intArray;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;} catch (Throwable e) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; throw new RuntimeException(&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;"JavaUtils.convertStringArrayToIntArray() - Error on convert the String array \"" +&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; s + "\" to an int array. Error details: " + e);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp; }&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8514344970732460488-1115812023069933523?l=rodison.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rodison.blogspot.com/feeds/1115812023069933523/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8514344970732460488&amp;postID=1115812023069933523&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8514344970732460488/posts/default/1115812023069933523'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8514344970732460488/posts/default/1115812023069933523'/><link rel='alternate' type='text/html' href='http://rodison.blogspot.com/2010/05/java-convertendo-um-array-de-string.html' title='Java - Convertendo um array de String para um array de Int'/><author><name>Rodison Ferreira</name><uri>https://profiles.google.com/116042571911434716678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-z9EVRh3jVHE/AAAAAAAAAAI/AAAAAAAAARA/dON2G5kV-qY/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8514344970732460488.post-1266104062791958528</id><published>2010-04-29T19:53:00.000-07:00</published><updated>2010-07-26T20:41:19.259-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='chrome extensions'/><title type='text'>XMarks - Sincronizador de bookmarks (favoritos)</title><content type='html'>XMarks - ótima ferramenta que serve para sincronizar bookmarks (favoritos).&lt;br /&gt;&lt;br /&gt;O XMarks é uma ferramenta que pode ser instalada no firefox, internet explorer ou chrome.&lt;br /&gt;&lt;br /&gt;Com ela, todos os seus bookmarks são sincronizados de um navegador pra outro, ou seja, você tem todos os seus favoritos à sua disposição independente do navegador que estiver usando!!! muito bom :)&lt;br /&gt;&lt;br /&gt;E o melhor de tudo, você também pode acessar seus favoritos a partir da internet, a partir do site do XMarks, ou seja, você pode acessar seus favoritos onde quer que você esteja! muito bom mesmo.&lt;br /&gt;&lt;br /&gt;Este é o site do XMarks:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.xmarks.com/"&gt;http://www.xmarks.com&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8514344970732460488-1266104062791958528?l=rodison.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rodison.blogspot.com/feeds/1266104062791958528/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8514344970732460488&amp;postID=1266104062791958528&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8514344970732460488/posts/default/1266104062791958528'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8514344970732460488/posts/default/1266104062791958528'/><link rel='alternate' type='text/html' href='http://rodison.blogspot.com/2010/04/xmarks-sincronizador-de-bookmarks.html' title='XMarks - Sincronizador de bookmarks (favoritos)'/><author><name>Rodison Ferreira</name><uri>https://profiles.google.com/116042571911434716678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-z9EVRh3jVHE/AAAAAAAAAAI/AAAAAAAAARA/dON2G5kV-qY/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8514344970732460488.post-1496124985071133017</id><published>2010-04-29T17:41:00.000-07:00</published><updated>2010-07-26T20:41:42.173-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><title type='text'>Java - Pegar uma conexão Oracle (OracleConnection) real do Tomcat</title><content type='html'>Geralmente, precisamos pegar a Connection do banco de dados em que estamos trabalhando para uma porção de coisas: para pegar alguma informação do banco de dados, para chamar alguma stored procedure, para executar algum código específico do banco de dados, etc.&lt;br /&gt;&lt;br /&gt;Em alguns casos, quando se está trabalhando com Java e Oracle, se formos utilizar alguns recursos avançados exclusivos do Oracle, veremos que algumas bibliotecas exigem que seja utilizado uma instância de OracleConnection (que seria o resultado normal quando você pega uma conexão com o Oracle via java).&lt;br /&gt;&lt;br /&gt;No entanto, quando estamos utilizando o Tomcat e pegamos uma conexão do Oracle, percebemos que não pegamos uma instância de OracleConnection, mas sim uma instância de org.apache.tomcat.dbcp.dbcp.PoolableConnection.&lt;br /&gt;&lt;br /&gt;Para conseguirmos pegar o OracleConnection a partir deste org.apache.tomcat.dbcp.dbcp.PoolableConnection retornado, devemos fazer dois passos:&lt;br /&gt;&lt;br /&gt;1º) Primeiro devemos alterar o arquivo XML de conexão com o banco de dados do Tomcat. Este arquivo pode ser o context.xml ou o server.xml (ou ainda alguma outra configuração), depende de como você usa o Tomcat para se conectar ao banco de dados.&lt;br /&gt;&lt;br /&gt;Este é um exemplo de arquivo de conexão ao banco de dados do Tomcat:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;Context docBase="c:\workspace\MinhaApp\WebContent" path="/minhaapp" reloadable="true"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;Resource auth="Container"&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;driverClassName="oracle.jdbc.driver.OracleDriver"                   &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;maxActive="-1" maxIdle="30" maxWait="10000" &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;name="jdbc/minhaapp" type="javax.sql.DataSource"                  &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;username="minhaapp" password="minhaapp" &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;url="jdbc:oracle:thin:@localhost:1521:xe"&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/&amp;gt;&lt;br /&gt;&amp;lt;/Context&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Neste caso, estou usando o Tomcat para me conectar a um banco de dados Oracle XE.&lt;br /&gt;&lt;br /&gt;O que devemos fazer aqui é - na tag Resource - que devemos adicionar o atributo "accessToUnderlyingConnectionAllowed" como true.&lt;br /&gt;&lt;br /&gt;Dessa forma, o arquivo ficaria assim:&lt;br /&gt;&lt;br /&gt;&amp;lt;Context docBase="c:\workspace\MinhaApp\WebContent" path="/minhaapp" reloadable="true"&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;Resource auth="Container"&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;driverClassName="oracle.jdbc.driver.OracleDriver"                   &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;maxActive="-1" maxIdle="30" maxWait="10000" &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;name="jdbc/minhaapp" type="javax.sql.DataSource"                  &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;username="minhaapp" password="minhaapp" &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;url="jdbc:oracle:thin:@localhost:1521:xe"&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;b&gt;accessToUnderlyingConnectionAllowed="true"&lt;/b&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/&amp;gt;&lt;br /&gt;&amp;lt;/Context&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Pronto, esta é a primeira parte da alteração que precisamos fazer.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;2º) A segunda parte da alteração é no próprio código que pega a conexão com o banco de dados.&lt;br /&gt;&lt;br /&gt;Digamos que este é o código que você usa para pegar uma conexão com o banco de dados:&lt;br /&gt;&lt;br /&gt;InitialContext ic = new InitialContext();&lt;br /&gt;DataSource dataSource = (DataSource) ic.lookup("java:comp/env/XXX"); &lt;br /&gt;Connection con = dataSource.getConnection();&lt;br /&gt;&lt;br /&gt;Pronto, pegamos a conexão com o banco de dados. Só que, na verdade, pegamos uma instância de org.apache.tomcat.dbcp.dbcp.PoolableConnection.&lt;br /&gt;&lt;br /&gt;Para pegar o OracleConnection, devemos utilizar o método "getInnermostDelegate()" da conexão recebida.&lt;br /&gt;&lt;br /&gt;Desta forma, o nosso código completo para pegar o OracleConnection seria este:&lt;br /&gt;&lt;br /&gt;InitialContext ic = new InitialContext();&lt;br /&gt;DataSource dataSource = (DataSource) ic.lookup("java:comp/env/XXX"); &lt;br /&gt;Connection con = dataSource.getConnection();&lt;br /&gt;&lt;br /&gt;&lt;b&gt;OracleConnection oracleConnection;&lt;br /&gt;if (connection instanceof org.apache.tomcat.dbcp.dbcp.DelegatingConnection) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; oracleConnection = (OracleConnection) ((org.apache.tomcat.dbcp.dbcp.DelegatingConnection) connection).getInnermostDelegate();&lt;br /&gt;} else {&lt;br /&gt;&amp;nbsp;&amp;nbsp; oracleConnection = (OracleConnection)connection;&lt;br /&gt;}&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Pronto, desta forma conseguimos pegar o OracleConnection a partir do PoolableConnection.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Atenção: a classe DelegatingConnection é de um .jar do Tomcat. Esta classe está no .jar chamado "naming-factory-dbcp.jar".&lt;br /&gt;&lt;br /&gt;Como este .jar está dentro do Tomcat, você não precisa colocar ela dentro do .war do seu projeto. Mas você precisa colocar ela no classpath do seu projeto (build path do projeto no Eclipse, classpath da aplicação, etc.) senão você não irá conseguir compilar este código, ok?&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Bem, é isso. Até mais, pessoal.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8514344970732460488-1496124985071133017?l=rodison.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rodison.blogspot.com/feeds/1496124985071133017/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8514344970732460488&amp;postID=1496124985071133017&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8514344970732460488/posts/default/1496124985071133017'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8514344970732460488/posts/default/1496124985071133017'/><link rel='alternate' type='text/html' href='http://rodison.blogspot.com/2010/04/java-pegar-conexao-connection-real-do.html' title='Java - Pegar uma conexão Oracle (OracleConnection) real do Tomcat'/><author><name>Rodison Ferreira</name><uri>https://profiles.google.com/116042571911434716678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-z9EVRh3jVHE/AAAAAAAAAAI/AAAAAAAAARA/dON2G5kV-qY/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8514344970732460488.post-6875047998326036665</id><published>2010-04-29T17:15:00.000-07:00</published><updated>2010-04-29T17:15:51.160-07:00</updated><title type='text'>Sem doutorado? Então fora!</title><content type='html'>&lt;span class="Apple-style-span" style="color: #4b4b4b; font-family: verdana; font-size: 12px; line-height: 20px;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;h2 style="color: #005695; font-family: tahoma; font-size: 18px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 10px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;Sem doutorado? Então fora!&lt;/h2&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Texto interessante que fala que as universidades brasileiras não aceitam profissionais super conceituados como professores universitários enquanto que no exterior este problema não existe.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Segundo o autor: "no Brasil, vigora o 'quem sabe faz e quem não sabe ensina'".&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Texto interessante... Questionável? ... deixo as conclusões para cada um. Particularmente não tenho uma opinião 100% formada sobre o assunto. Mas é um assunto interessante.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.ordemlivre.org/node/970"&gt;http://www.ordemlivre.org/node/970&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8514344970732460488-6875047998326036665?l=rodison.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rodison.blogspot.com/feeds/6875047998326036665/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8514344970732460488&amp;postID=6875047998326036665&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8514344970732460488/posts/default/6875047998326036665'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8514344970732460488/posts/default/6875047998326036665'/><link rel='alternate' type='text/html' href='http://rodison.blogspot.com/2010/04/sem-doutorado-entao-fora.html' title='Sem doutorado? Então fora!'/><author><name>Rodison Ferreira</name><uri>https://profiles.google.com/116042571911434716678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-z9EVRh3jVHE/AAAAAAAAAAI/AAAAAAAAARA/dON2G5kV-qY/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8514344970732460488.post-4059003215131176246</id><published>2010-04-29T16:39:00.000-07:00</published><updated>2010-07-26T20:42:17.919-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='TI - Geral'/><title type='text'>Usabilidade na Web - Jakob Nielsen</title><content type='html'>Jakob Nielsen é considerado o pai da usabilidade na web.&lt;br /&gt;&lt;br /&gt;Ele tem vários livros sobre usabilidade na web. Vale a pena conhecer o trabalho dele e os seus livros. Procurem no google pelos livros dele.&lt;br /&gt;&lt;br /&gt;Além disso, ele mantém um site que fala sobre usabilidade na web. O site é o&amp;nbsp;&lt;a href="http://www.useit.com/"&gt;http://www.useit.com/&lt;/a&gt;&amp;nbsp;(particularmente achei o site dele bem feinho... acho que é o tipo "faça o que digo, mas não faça o que eu faço". mas as idéias dele são muito boas) :)&lt;br /&gt;&lt;br /&gt;Abraços&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8514344970732460488-4059003215131176246?l=rodison.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rodison.blogspot.com/feeds/4059003215131176246/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8514344970732460488&amp;postID=4059003215131176246&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8514344970732460488/posts/default/4059003215131176246'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8514344970732460488/posts/default/4059003215131176246'/><link rel='alternate' type='text/html' href='http://rodison.blogspot.com/2010/04/usabilidade-na-web-jakob-nielsen.html' title='Usabilidade na Web - Jakob Nielsen'/><author><name>Rodison Ferreira</name><uri>https://profiles.google.com/116042571911434716678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-z9EVRh3jVHE/AAAAAAAAAAI/AAAAAAAAARA/dON2G5kV-qY/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8514344970732460488.post-6606941762785460842</id><published>2010-04-29T16:17:00.000-07:00</published><updated>2010-07-26T20:42:33.279-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='TI - Geral'/><title type='text'>6 Teorias que todo Marketeiro Digital deveria saber</title><content type='html'>&lt;div&gt;6 Teorias que todo Marketeiro Digital deveria saber&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Texto bem interessante sobre teorias sobre a internet, seus usuários e marketing.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;a href="http://www.muitolegal.net/2010/04/6-teorias-que-todo-marketeiro-digital.html"&gt;muitolegal blog :: sua overdose diária de inspiração: 6 Teorias que todo Marketeiro Digital deveria saber&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8514344970732460488-6606941762785460842?l=rodison.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rodison.blogspot.com/feeds/6606941762785460842/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8514344970732460488&amp;postID=6606941762785460842&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8514344970732460488/posts/default/6606941762785460842'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8514344970732460488/posts/default/6606941762785460842'/><link rel='alternate' type='text/html' href='http://rodison.blogspot.com/2010/04/6-teorias-que-todo-marketeiro-digital.html' title='6 Teorias que todo Marketeiro Digital deveria saber'/><author><name>Rodison Ferreira</name><uri>https://profiles.google.com/116042571911434716678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-z9EVRh3jVHE/AAAAAAAAAAI/AAAAAAAAARA/dON2G5kV-qY/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8514344970732460488.post-8964679425344818755</id><published>2010-02-07T05:45:00.000-08:00</published><updated>2010-02-07T05:45:02.085-08:00</updated><title type='text'>O homem que Se Endereçou - Ignácio de Loyola Brandão</title><content type='html'>"O homem que Se Endereçou.&lt;br /&gt;&lt;br /&gt;Apanhou o envelope e na sua letra cuidadosa subscritou a si mesmo:&lt;br /&gt;&lt;br /&gt;Narciso, rua Treze, nº 21.&lt;br /&gt;&lt;br /&gt;Passou cola nas bordas do papel, mergulhou no envelope e fechou-se. Horas mais tarde a empregada colocou-o no correio. Um dia depois sentiu-se na mala do carteiro. Diante de uma casa, percebeu que o funcionário tinha parado indeciso, consultara o envelope e prosseguira. Voltou ao DCT, foi colocado numa prateleira.Dias depois, um novo carteiro procurou seu endereço. Não achou, devia ter saído algo errado. A carta voltou à prateleira, no meio de muitas outras, amareladas, empoeiradas. Sentiu, então, com terror, que a carta se extraviara. E Narciso nunca mais encontrou a si mesmo." Em O Homem do furo na mão e outras histórias de Ignácio de Loyola Brandão.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8514344970732460488-8964679425344818755?l=rodison.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rodison.blogspot.com/feeds/8964679425344818755/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8514344970732460488&amp;postID=8964679425344818755&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8514344970732460488/posts/default/8964679425344818755'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8514344970732460488/posts/default/8964679425344818755'/><link rel='alternate' type='text/html' href='http://rodison.blogspot.com/2010/02/o-homem-que-se-enderecou-ignacio-de.html' title='O homem que Se Endereçou - Ignácio de Loyola Brandão'/><author><name>Rodison Ferreira</name><uri>https://profiles.google.com/116042571911434716678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-z9EVRh3jVHE/AAAAAAAAAAI/AAAAAAAAARA/dON2G5kV-qY/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8514344970732460488.post-7212606707505488618</id><published>2009-11-07T11:27:00.000-08:00</published><updated>2010-07-26T20:43:55.561-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='flex'/><category scheme='http://www.blogger.com/atom/ns#' term='flexutils'/><title type='text'>IsaDateField - Componente de DateField customizado em Flex já formatado para o padrão Português-Brasileiro</title><content type='html'>Abaixo segue o código de um componente extendido do DateField que formata o campo já no padrão Português-Brasileiro.&lt;br /&gt;&lt;br /&gt;A diferença desse código é que nele o usuário pode digitar a data desejada no campo e o componente formata a data digitada no formato Brasileiro.&lt;br /&gt;&lt;br /&gt;&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;mx:DateField xmlns:mx="http://www.adobe.com/2006/mxml" editable="true"&lt;br /&gt;formatString="DD/MM/YYYY"&lt;br /&gt;labelFunction="formatIsaDateField" dayNames="['D','S','T','Q','Q','S','S']"&lt;br /&gt;parseFunction="parseIsaDateField"               monthNames="['Janeiro','Fevereiro','Março','Abril','Maio','Junho','Julho','Agosto','Setembro','Outubro','Novembro','Dezembro']"&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;mx:Script&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;![CDATA[&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public function formatIsaDateField(currentDate:Date):String {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;var textoResult:String=DateField.dateToString(currentDate, this.formatString);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return textoResult;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public function parseIsaDateField(valueString:String, inputFormat:String):Date {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;var stringDataFormatada:String=IsaDateField.format(valueString, inputFormat);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;var dateResult:Date=DateField.stringToDate(stringDataFormatada, "DD/MM/YYYY");&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return dateResult;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; public static function format(value:String, inputFormat:String):String {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (value == null) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return "";&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;var stringDataOriginal:String=value as String;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;stringDataOriginal=stringDataOriginal.replace(/(\/)/g, "");&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;var dia:String="";&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;var mes:String="";&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;var ano:String="";&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;var dataFormatada:String=""; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (inputFormat == 'MM/YYYY') {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; stringDataOriginal = "01" + stringDataOriginal; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (stringDataOriginal.length &amp;gt;= 1) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;dia=stringDataOriginal.substring(0, 2);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (stringDataOriginal.length &amp;gt;= 3) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;mes=stringDataOriginal.substring(2, 4);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (stringDataOriginal.length &amp;gt;= 5) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;ano=(stringDataOriginal.length == 6) ? stringDataOriginal.substring(4, 6) : stringDataOriginal.substring(4,&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 8);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (dia.length == 2) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;dataFormatada+=dia + "/";&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; } else {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return value as String;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (mes.length == 2) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;dataFormatada+=mes + "/";&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; } else {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return dataFormatada + mes;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (ano.length == 2) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; var tempNumber:Number=new Number(ano);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (tempNumber &amp;gt;= 20) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;ano="19" + ano;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; } else {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;ano="20" + ano;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return dataFormatada + ano; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;br /&gt;]]&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&amp;lt;/mx:Script&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/mx:DateField&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Exemplo do componente funcionando:&lt;br /&gt;&lt;br /&gt;&lt;object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://fpdownload.macromedia.com/get/flashplayer/current/swflash.cab" height="218" id="IsaDateFieldApp" width="361"&gt;    &lt;param name="movie" value="http://www.inf.ufsc.br/~rodsafer/blog_exemplos/isadatefield/IsaDateFieldApp.swf" /&gt;&lt;param name="quality" value="high" /&gt;&lt;param name="bgcolor" value="#869ca7" /&gt;&lt;param name="allowScriptAccess" value="sameDomain" /&gt;&lt;embed src="http://www.inf.ufsc.br/~rodsafer/blog_exemplos/isadatefield/IsaDateFieldApp.swf" quality="high" bgcolor="#869ca7"    width="361" height="218" name="IsaDateFieldApp" align="middle"    play="true"    loop="false"    quality="high"    allowScriptAccess="sameDomain"    type="application/x-shockwave-flash"    pluginspage="http://www.adobe.com/go/getflashplayer"&gt;    &lt;/embed&gt;  &lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.inf.ufsc.br/~rodsafer/blog_exemplos/isadatefield/IsaDateFieldApp.html" target="_blank"&gt;&lt;b&gt;Ou clique aqui para ver a aplicação com código-fonte;&lt;/b&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.inf.ufsc.br/~rodsafer/blog_exemplos/isadatefield/srcview/index.html" target="_blank"&gt;&lt;b&gt;Ou aqui pra ver código-fonte diretamente;&lt;/b&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Cortesia &lt;b&gt;Inside System - Negócios em Tecnologia&lt;/b&gt;&lt;br /&gt;&lt;a href="http://www.insidesystem.com.br/" target="_blank"&gt;http://www.insidesystem.com.br&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8514344970732460488-7212606707505488618?l=rodison.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rodison.blogspot.com/feeds/7212606707505488618/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8514344970732460488&amp;postID=7212606707505488618&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8514344970732460488/posts/default/7212606707505488618'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8514344970732460488/posts/default/7212606707505488618'/><link rel='alternate' type='text/html' href='http://rodison.blogspot.com/2009/11/daynamesdstqqss-abra-o-cdata-aqui-diz.html' title='IsaDateField - Componente de DateField customizado em Flex já formatado para o padrão Português-Brasileiro'/><author><name>Rodison Ferreira</name><uri>https://profiles.google.com/116042571911434716678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-z9EVRh3jVHE/AAAAAAAAAAI/AAAAAAAAARA/dON2G5kV-qY/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8514344970732460488.post-8770013613495672200</id><published>2009-11-06T18:58:00.000-08:00</published><updated>2010-07-26T20:44:14.623-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='flex'/><category scheme='http://www.blogger.com/atom/ns#' term='flexutils'/><title type='text'>Componente botão em flex que tem o evento "enter"</title><content type='html'>&lt;b&gt;componente botão em flex que tem o evento "enter"&lt;/b&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;(na verdade esse é um componente que extende o botão padrão do flex e adiciona o evento "enter", ou seja, ao teclar o enter, o botão será acionado):&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;package com.inside.hctissflex.util.component&lt;/div&gt;&lt;div&gt;{&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;import flash.events.KeyboardEvent;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;import flash.ui.Keyboard;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;import mx.controls.Button;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;import mx.events.FlexEvent;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;[Event(name="enter", type="mx.events.FlexEvent")]&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;public class IsaButton extends Button&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;{&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;public function IsaButton()&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;{&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;//TODO: implement function&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;   &lt;/span&gt;super();&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;}&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;&lt;/div&gt;&lt;div&gt;/**&lt;/div&gt;&lt;div&gt;*  @private&lt;/div&gt;&lt;div&gt;*/&lt;/div&gt;&lt;div&gt;override protected function keyDownHandler(event:KeyboardEvent):void&lt;/div&gt;&lt;div&gt;{&lt;/div&gt;&lt;div&gt;switch (event.keyCode)&lt;/div&gt;&lt;div&gt;{&lt;/div&gt;&lt;div&gt;case Keyboard.ENTER:&lt;/div&gt;&lt;div&gt;{&lt;/div&gt;&lt;div&gt;dispatchEvent(new FlexEvent(FlexEvent.ENTER));&lt;/div&gt;&lt;div&gt;break;&lt;/div&gt;&lt;div&gt;}&lt;/div&gt;&lt;div&gt;}&lt;/div&gt;&lt;div&gt;}&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;}&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;&lt;/div&gt;&lt;div&gt;}&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;cortesia Inside System - Negócios em Tecnologia&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.insidesystem.com.br/"&gt;http://www.insidesystem.com.br&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8514344970732460488-8770013613495672200?l=rodison.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rodison.blogspot.com/feeds/8770013613495672200/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8514344970732460488&amp;postID=8770013613495672200&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8514344970732460488/posts/default/8770013613495672200'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8514344970732460488/posts/default/8770013613495672200'/><link rel='alternate' type='text/html' href='http://rodison.blogspot.com/2009/11/componente-botao-em-flex-que-tem-o.html' title='Componente botão em flex que tem o evento &quot;enter&quot;'/><author><name>Rodison Ferreira</name><uri>https://profiles.google.com/116042571911434716678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-z9EVRh3jVHE/AAAAAAAAAAI/AAAAAAAAARA/dON2G5kV-qY/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8514344970732460488.post-4913685201679081641</id><published>2009-06-28T13:39:00.000-07:00</published><updated>2009-06-28T13:40:39.061-07:00</updated><title type='text'>Relatos de colorados</title><content type='html'>&lt;span class="Apple-style-span" style="color: rgb(102, 102, 102); font-family: 'Trebuchet MS'; font-size: 13px; line-height: 23px; "&gt;&lt;strong&gt;&lt;span style="color:#ff0000;"&gt;Luciano Pontes&lt;/span&gt;&lt;/strong&gt;, lá do Nordeste, com um relato emocionante (leia tudo) - &lt;em style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;"Daqui da Bahia serão 50 Colorados embarcando para POA no dia 01.07.2009. Dia para entrar para história e mostrar a CBF, Globo, Rubem Aprobato, Heber Roberto Lopes e tantos outros que querem impor o título ao Corinthians. Pode parecer um número reduzido, apenas 50 Colorados saindo de Salvador. Mas como Cônsul de Lauro de Freitas acompanhei o sofrimento de muitos destes sofridos torcedores. Alguns são garçons em churrascarias e tiveram que trabalhar dia e noite, fazendo hora extra para pagar as passagens na promoção, com cartão de crédito emprestado, carteirinha de sócio emprestada para gritar pelo Inter no nosso templo sagrado. Aqui fizemos a campanha Sócio Colorado é Solidário. Quem não iria para Porto Alegre, emprestaria a carteirinha e ainda colaboraria com a caixinha daqueles que não tem nem dinheiro para beber uma latinha de cerveja. Irão naquele tradicional bate-e-volta. Mesmo depois do jogo em São Paulo, uma coisa me chamou a atenção. O grupo não desuniu! Agora os 50 Guerreiros que sairão da Bahia, representarão os 10.000 Colorados que residem em território baiano. Agora os 50 Guerreiros se unirão aos 11 Guerreiros em campo, aos Guerreiros do banco de reservas, aos Guerreiros da Comissão Técnica e aos Guerreiros da Diretoria. Cada um destes 50 Colorados que aterrisarão na nossa Pátria Gaudéria, na República dos Pampas e no Território Sagrado do Beira-Rio tem uma só expressão escrita em suas testas: Eu acredito! Um olha para o outro, não fala uma só palavra, mas a expressão facial e o olhar diz aquela célebre frase Eu acredito!"&lt;/em&gt;&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span"    style="font-family:'Trebuchet MS';font-size:100%;color:#666666;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; line-height: 23px;"&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"    style="font-family:'Trebuchet MS';font-size:100%;color:#666666;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; line-height: 23px;"&gt;&lt;i&gt;&lt;a href="http://www.clicrbs.com.br/blog/jsp/default.jsp?source=DYNAMIC,blog.BlogDataServer,getBlog&amp;amp;uf=1&amp;amp;local=1&amp;amp;template=3948.dwt&amp;amp;section=Blogs&amp;amp;post=196135&amp;amp;blog=131&amp;amp;coldir=1&amp;amp;topo=3994.dwt"&gt;http://www.clicrbs.com.br/blog/jsp/default.jsp?source=DYNAMIC,blog.BlogDataServer,getBlog&amp;amp;uf=1&amp;amp;local=1&amp;amp;template=3948.dwt&amp;amp;section=Blogs&amp;amp;post=196135&amp;amp;blog=131&amp;amp;coldir=1&amp;amp;topo=3994.dwt&lt;/a&gt;&lt;/i&gt;&lt;/span&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/8514344970732460488-4913685201679081641?l=rodison.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rodison.blogspot.com/feeds/4913685201679081641/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8514344970732460488&amp;postID=4913685201679081641&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8514344970732460488/posts/default/4913685201679081641'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8514344970732460488/posts/default/4913685201679081641'/><link rel='alternate' type='text/html' href='http://rodison.blogspot.com/2009/06/relatos-de-colorados.html' title='Relatos de colorados'/><author><name>Rodison Ferreira</name><uri>https://profiles.google.com/116042571911434716678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-z9EVRh3jVHE/AAAAAAAAAAI/AAAAAAAAARA/dON2G5kV-qY/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8514344970732460488.post-4107454391841106727</id><published>2009-04-05T07:39:00.000-07:00</published><updated>2009-04-05T07:43:33.341-07:00</updated><title type='text'></title><content type='html'>04/04/2009&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Inter - Centenário: a maior das festa&lt;/span&gt;s&lt;br /&gt;Por Alexandre Corrêa&lt;br /&gt;&lt;br /&gt;fonte: &lt;a href="http://www.internacional.com.br/pagina.php?modulo=2&amp;amp;setor=18&amp;amp;codigo=8562"&gt;http://www.internacional.com.br/pagina.php?modulo=2&amp;amp;setor=18&amp;amp;codigo=8562&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Uma grandiosa festa celebrou o Centenário do Internacional na noite deste sábado no Gigantinho. Mais de 3 mil pessoas estiveram presentes nesta que foi a maior e melhor das festas de aniversário já vistas no Clube. O evento teve música sinfônica, homenagens, surpresas e a presença de representantes de todos os segmentos da família colorada: torcedores, dirigentes, atletas, ex-atletas e conselheiros.&lt;br /&gt;&lt;br /&gt;As surpresas e atrações aos convidados começavam já na chegada. Todos entraram pelo vestiário profissional e puderam conhecer as instalações utilizadas pelos jogadores nos treinamentos e jogos. Do lado de fora do Beira-Rio, telas gigantes colocadas na parte superior dos muros do estádio reproduziam imagens históricas do Clube. Todos que passavam na Avenida Padre Cacique podiam acompanhar.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Festa dos 100 anos reuniu mais de 3 mil colorados no Gigantinho&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Depois de entrarem pelo vestiário, os convidados ingressavam no gramado pelo mesmo túnel que os atletas costumam entrar para as partidas. Em seguida, atravessaram o campo, pela lateral, e saiam para o pátio onde havia mais uma bela surpresa. Um túnel multimídia chamado “túnel das sensações”, onde havia imagens, fotos e narrações de jogos históricos dos 100 anos do Inter. Muitos torcedores se emocionaram e entravam na festa com os olhos marejados. O túnel levava direto à entrada do Gigantinho, local da grande celebração.&lt;br /&gt;&lt;br /&gt;Na recepção, pode-se conferir um visual deslumbrante. O Gigantinho estava decorado em vermelho e branco, com telões, imagens estilizadas de jogadores que ajudaram a construir a grandeza do Clube e um grande palco no fundo. As mesas eram dispostas em três pisos, um no chão e dois que avançavam por sobre as arquibancadas. Para receber os convidados, uma orquestra sinfônica tocava músicas clássicas e populares, enquanto os telões mostravam vídeos produzidos pela Assessoria de Comunicação do Clube.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Gigantinho foi totalmente remodelado para a antológica noite do dia 4 de abril de 2009&lt;br /&gt;&lt;br /&gt;Nos corredores de trânsito do Gigantinho foi montada uma grande exposição de fotos e jornais com manchetes dos principais feitos do Inter ao longo dos seus 100 anos. Vários craques colorados passaram por este corredor e concederam entrevista para a TV Inter, que transmitiu ao vivo a festa. Houve encontros históricos, como o de Valdomiro e Figueroa, os dois jogadores que construíram a jogada do gol do primeiro título nacional, em 1975. Houve também a presença de Adriano Gabiru, autor do gol mais importante da história do Clube: o gol do título mundial diante do Barcelona.&lt;br /&gt;&lt;br /&gt;A festa começou às 22h41min e durou quase duas horas. O evento abriu com os gritos de alegria do capitão Fernandão, regendo a torcida no dia da chegada do time depois da conquista do Mundial no Japão. Em seguida, a música tradicional cantada por todos “Colorado, Colorado, nada vai nos separar” e a apresentação da campanha de publicidade e do comercial que está sendo veiculado nas televisões de todo o Brasil em homenagem ao Centenário.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;O autor do gol do título do Mundial Fifa, Adriano Gabiru, marcou presença na festa&lt;br /&gt;&lt;br /&gt;Entraram em cena então os apresentadores do evento Rogério Amaral e Renata Fan, que deram as boas vindas. O palco tinha uma réplica da Taça do Mundial. Ao fundo, a frase “Campeão de Tudo” e os símbolos do Inter em 1909 e 2009. A dupla discorreu sobre os grandes feitos do Clube e é muito aplaudida pelo público. Daí foi a vez de Toshiro, o japonesinho que ficou famoso na época da disputa do Mundial, subir ao palco com os irmãos pra apresentar os hinos cantados pela torcida colorada ao longo dos tempos. O Gigantinho inteiro passou a cantar junto também. A cantoria continuou em seguida com a apresentação do hino colorado, criado por Nelson Silva, em 1957. Todos entoaram a melodia mais famosa do Inter acompanhada por palmas.&lt;br /&gt;&lt;br /&gt;O vice-presidente de Comunicação Social, Gelson Pires, subiu ao palco para discursar. “Como é bom ser colorado. Nada é mais alegre e mais feliz do que estar em um ambiente como esse todo de vermelho e branco”, saudou o dirigente, arrancando aplausos de todos. Os representantes do Nacional, de Montevidéu, e do Boca Juniors foram chamados pelo vice-presidente de Marketing, Jorge Avancini, para receberem homenagens do Inter e saudarem o Centenário.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Diretoria do Nacional, do Uruguai, prestou homenagem ao clube colorado&lt;br /&gt;&lt;br /&gt;Emocionante também foi quando, ao citar a nominata de autoridades presentes, o Gigantinho explodiu de alegria em dois momentos: na hora dos nomes de Fernando Carvalho e da esposa do ex-presidente Arthur Dallegrave. O Gigantinho gritou os nomes de Carvalho e Dallegrave. O técnico da Seleção Brasileira, Dunga, também foi muito aplaudido.&lt;br /&gt;&lt;br /&gt;O prefeito de Porto Alegre, José Fogaça, discursou também e festejou o aniversário: “Não haverá nenhum outro dia como esse. Este talvez seja o único dia do século inteiro em que os torcedores colorados não tenham o privilégio de festejarem. Este sentimento de orgulho pertence a todos os gaúchos hoje. Não bastasse o Internacional ter levado o nome da cidade de Porto Alegre há todos os lugares, ainda há um outro motivo pra celebrar: são as centenas de crianças em vulnerabilidade social que são atendidas pelos projetos sociais do Inter. Viva o Internacional. E apoiamos o Gigante Para Sempre que será a sede da Copa do Mundo de 2014 em Porto Alegre”.&lt;br /&gt;&lt;br /&gt;O presidente Vitorio Piffero recebeu, em seguida, uma homenagem da Confederação Sul-Americana de Futebol em uma placa assinada pelo presidente da CSF Nicolas Leoz. Na sequencia, o Ministro dos Esportes, Orlando Silva, foi quem falou aos convidados: “Quero cumprimentar a nação colorada pela festa de hoje. Nunca na minha vou esquecer pela vibração e emoção dessa festa do Centenário. Trago o abraço do presidente Lula e o meu testemunho da referência que o Inter é hoje no futebol brasileiro. O título de campeão de tudo já fala por si próprio. Quero registrar também a competência dessa direção do Internacional. Toda vez que falo com um dirigente de clube digo: vá a Porto Alegre e conheça a experiência de gestão do Internacional.”&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Presidente Vitorio Piffero fez um emocionante discurso&lt;br /&gt;&lt;br /&gt;Depois do ministro, o presidente Vitorio Piffero subiu ao palco para o seu discurso. “A festa começou com 30 mil colorados na avenida e vai se ampliar dia 17 de dezembro com 100 mil colorados em uma grande festa no Beira-Rio”, anunciou o presidente.&lt;br /&gt;&lt;br /&gt;A apresentação do DTG Colorado trouxe ao Gigantinho o tradicionalismo gaúcho. Um grupo de 12 bailarinos mostrou uma dança gaúcha para aplausos de todos. Em seguida, os apresentadores falaram sobre a importância dos projetos sociais do Inter, como o Interagir e o Saci Colorado, da Fundação de Educação e Cultura do Internacional.&lt;br /&gt;&lt;br /&gt;Houve uma homenagem ao ex-presidente Arthur Dallegrave, que foi o primeiro presidente da Comissão do Centenário, mas que, infelizmente, faleceu no ano passado. Imagens de Dallegrave foram veiculadas pelos telões ao som da música “My Way”, interpretada por Frank Sinatra. Remy Susin, um dos nomes da comissão, recebeu uma placa das mãos dos vices Gelson Pires e Jorge Avancini. Em seguida, a Comissão do Centenário subiu ao palco para receber os aplausos. Gelson nomeou Renata Fan e Telmo Zanini, diretor da Rede Globo, cônsules culturais.&lt;br /&gt;&lt;br /&gt;Adriano Gabiru, autor do gol do título mundial, foi chamado ao palco e recebeu de Avancini a camisa dourada comemorativa ao Centenário do Inter com seu nome. “Valeu, Inteeeeer”, gritou Gabiru.&lt;br /&gt;&lt;br /&gt;Os organizadores convocaram, em um dos momentos mais emocionantes, a todos os ex-atletas presentes, sob muita festa. Entre eles estavam Dunga, Figueroa, Falcão, Valdomiro, Milton Vergara, Zangão, Larry, Sangaletti, Batista, Nilson, Maurício, Taffarel, Vacaria, Casemiro, André, Benitez, Claudiomiro, Fabiano, Jair e Nena. Cerca de 50 ex-atletas foram ao palco. E representando o grupo de hoje foi chamado Clemer, o mais vitorioso goleiro da história colorada. Os técnicos Dino Sani e Rubens Minelli, que tiveram grande participação dos anos 70, também foram homenageados.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Jogadores do passado: espectadores presentes no Gigantinho fizeram uma verdadeira viagem no tempo&lt;br /&gt;&lt;br /&gt;Foi um momento de confraternização entre todos os atletas. Muitos não se encontravam há um bom tempo e puderam relembrar os bons momentos. Foi também um festival de abraços entre eles gerando uma grande confraternização entre aqueles que ajudaram a formar a grandeza do Inter.&lt;br /&gt;&lt;br /&gt;Os apresentadores lembraram também dos presidentes do Clube e do Conselho Deliberativo já falecidos e chamaram os nomes das viúvas e dos filhos presentes. Também anunciaram os nomes dos ex-presidentes presentes, entre eles Fernando Carvalho, Eraldo Herrmann, José Asmuz e Pedro Paulo Zachia.&lt;br /&gt;&lt;br /&gt;O presidente Vitorio Piffero subiu então em um círculo colocado no meio do Gigantinho onde havia uma bola e um gramado. Piffero chutou a bola e surgiu um grande símbolo do Inter, sob efeito pirotécnico, no fundo do ginásio ao mesmo tempo que uma bandeira vermelha e branca descia enquanto todos cantaram o Parabéns a Você, encerrando o cerimonial. Sob o som de “We are the champions”, do Queen, o jantar começou a ser servido.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Ponto alto: Vitorio Piffero chuta a bola no último ato da cerimônia dos 100 anos&lt;br /&gt;&lt;br /&gt;Durante o jantar foi veiculado o comercial da grande festa do dia 17 de dezembro. Nele, Ivete Sangalo e Fafá de Belém chamam a torcida colorada para o evento. Zeca Pagodinho e Monobloco também estarão na grande festa colorada que será gratuita para os sócios do Clube.&lt;br /&gt;&lt;br /&gt;A festa encerrou-se com um grande baile com muita música e animação, fechando a noite histórica.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8514344970732460488-4107454391841106727?l=rodison.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rodison.blogspot.com/feeds/4107454391841106727/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8514344970732460488&amp;postID=4107454391841106727&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8514344970732460488/posts/default/4107454391841106727'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8514344970732460488/posts/default/4107454391841106727'/><link rel='alternate' type='text/html' href='http://rodison.blogspot.com/2009/04/04042009-centenario-maior-das-festas.html' title=''/><author><name>Rodison Ferreira</name><uri>https://profiles.google.com/116042571911434716678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-z9EVRh3jVHE/AAAAAAAAAAI/AAAAAAAAARA/dON2G5kV-qY/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8514344970732460488.post-3164619075705248123</id><published>2007-12-15T18:54:00.000-08:00</published><updated>2010-07-26T20:44:40.407-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='TI - Geral'/><title type='text'>O fabuloso mundo moderno da internet</title><content type='html'>Vídeo bem interessante para que não está muito por dentro do que é este novo mundo da internet e o que está acontecendo e as mudanças que a tecnologia traz para a vida das pessoas (também, na prática é uma aplicação do principio da Cauda longa - citado no ultimo post):&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;object height="355" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/JMRF_ZXms9E&amp;amp;rel=1"&gt;&lt;param name="wmode" value="transparent"&gt;&lt;embed src="http://www.youtube.com/v/JMRF_ZXms9E&amp;amp;rel=1" type="application/x-shockwave-flash" wmode="transparent" height="355" width="425"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8514344970732460488-3164619075705248123?l=rodison.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rodison.blogspot.com/feeds/3164619075705248123/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8514344970732460488&amp;postID=3164619075705248123&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8514344970732460488/posts/default/3164619075705248123'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8514344970732460488/posts/default/3164619075705248123'/><link rel='alternate' type='text/html' href='http://rodison.blogspot.com/2007/12/o-fabuloso-mundo-moderno-da-internet.html' title='O fabuloso mundo moderno da internet'/><author><name>Rodison Ferreira</name><uri>https://profiles.google.com/116042571911434716678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-z9EVRh3jVHE/AAAAAAAAAAI/AAAAAAAAARA/dON2G5kV-qY/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8514344970732460488.post-1143707559827499594</id><published>2007-12-15T18:12:00.000-08:00</published><updated>2010-07-26T20:45:01.118-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='TI - Geral'/><title type='text'>Princípio de Pareto</title><content type='html'>Descobri algo chamado de &lt;span style="font-weight: bold;"&gt;Princípio de Pareto&lt;/span&gt; (ver &lt;a href="http://pt.wikipedia.org/wiki/Princ%C3%ADpio_de_Pareto"&gt;http://pt.wikipedia.org/wiki/Princ%C3%ADpio_de_Pareto&lt;/a&gt;). É um princípio muito importante e muito utilizado. Dele se derivam alguns outros princípios como o Princípio 80/20, o Princípio do Menor Esforço e o Princípio da Cauda Longa.&lt;br /&gt;&lt;br /&gt;Segundo o principio de pareto, 80% dos problemas são causados por 20% das causas. Isso ele descobriu analisando a concentração de renda na época dele em que 20% da população detinha 80% da renda. Então, após descobrir que isso era verdade, ele descobriu que este princípio poderia ser utilizado para outras coisas na vida. Então surgiu o princípio 80/20, que utiliza essa afirmação.&lt;br /&gt;&lt;br /&gt;Alguns casos em que este princípio é utilizado:&lt;br /&gt;&lt;br /&gt;- os bancos estão utilizando este princípio. se 20% dos seus cliente garantem 80% dos seus lucros, dê um tratamento diferenciado para estes clientes. E assim nascem os bancos Prime, Personalité e outros do tipo.&lt;br /&gt;&lt;br /&gt;Este princípio pode muito bem ser utilizado em Gerenciamento de Projetos (como mostra a revista Mundo Java nº 26 na reportagem Entregue Software Funcionando! Gerenciamento de Projetos Ágil).&lt;br /&gt;&lt;br /&gt;Se 80% dos problemas dos teus clientes podem ser resolvidos com apenas 20% das funcionalidades de um sistema, ataque sempre estes 20% de funcionalidades primeiro. Assim, você resolve 80% dos problemas dos seus clientes em muito menos tempo. Afinal, você entregou só 20% do sistema primeiro.&lt;br /&gt;&lt;br /&gt;A identificação dessas 20% de funcionalidades vitais (vital few) é fundamental em um projeto. Sempre tente começar atacando essas vital few, o retorno do sistema chegará muito mais rápido tanto para você quanto para seu cliente.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Apenas para curiosidade:&lt;br /&gt;&lt;br /&gt;- Uma derivação deste princípio é a Lei do menor esforço. Isto porque, se apenas 20% do trabalho que tu faz resolve 80% dos problemas, não seria correto dizer que 80% do que você faz no trabalho é desperdício? E se tivesse uma forma dos funcionários se concentrar mais nestes 20% e não no resto? É a lei do menor esforço.&lt;br /&gt;&lt;br /&gt;- Outra derivação é o Princípio da cauda longa. Essa representação do principio de pareto (80/20) pode ser mostrada em um gráfico:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://upload.wikimedia.org/wikipedia/commons/1/13/Long_tail.PNG" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" src="http://upload.wikimedia.org/wikipedia/commons/1/13/Long_tail.PNG" style="cursor: pointer; width: 320px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Um exemplo é no caso de vendas. O que está na parte marrom são os produtos que são os mais vendidos e os amarelos os que são menos vendidos.&lt;br /&gt;&lt;br /&gt;No caso de vendas físicas, uma loja tem custos de transporte, de armazenamento, de manutenção etc, por isto uma loja sempre vai ter os produtos que são mais vendidos, pois ter produtos que têm pouca saída faz com que se tenha um custo de manutenção muito maior sobre este produtos.&lt;br /&gt;&lt;br /&gt;Já no caso de lojas virtuais este problema praticamente não existe pois não há custo de armazenamento e manutenção. Se um produto é vendido, você solicita ao fornecedor o produto na hora, você não precisa mantê-lo guardado no seu estoque para pronta-entrega.&lt;br /&gt;&lt;br /&gt;Por isso é que na internet é muito mais fácil encontrar produtos raros do que nas lojas físicas comuns. Existem até mesmo lojas na internet especializadas em vender raridades (ou produtos que têm pouca procura), afinal, se um produto têm pouca disponibilidade no mercado, você pode sobreviver vendendo poucos produtos mas cobrando preços bem altos por estes produtos tendo um custo bem baixo neles.&lt;br /&gt;&lt;br /&gt;Estes são os produtos que estão na parte amarela do gráfico, na chamada Cauda longa.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Bem, é isso. Achei interessante este princípio por isso estou postando ele aqui.&lt;br /&gt;&lt;br /&gt;Até mais.&lt;br /&gt;&lt;br /&gt;Referências:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://pt.wikipedia.org/wiki/Princ%C3%ADpio_de_Pareto"&gt;principio de pareto na wikipedia&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://en.wikipedia.org/wiki/Pareto_principle"&gt;principio de pareto na wikipedia (en)&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.notapositiva.com/dicionario_gestao/principio_pareto.htm"&gt;principio de pareto no site Nota Positiva&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.editoras.com/rocco/022345.htm"&gt;resumo do livro O Princípio 80/20&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.notapositiva.com/dicionario_gestao/diagrama_pareto.htm"&gt;diagrama de pareto no site Nota Positiva&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://pt.wikipedia.org/wiki/A_Cauda_Longa"&gt;a cauda longa na wikipedia&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;revista Mundo Java nº 26 - reportagem Entregue Software Funcionando! Gerenciamento de Projetos Ágil&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.youtube.com/watch?v=JMRF_ZXms9E"&gt;vídeo explicando na prática a Cauda Longa e o mundo moderno da tecnologia&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8514344970732460488-1143707559827499594?l=rodison.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rodison.blogspot.com/feeds/1143707559827499594/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8514344970732460488&amp;postID=1143707559827499594&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8514344970732460488/posts/default/1143707559827499594'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8514344970732460488/posts/default/1143707559827499594'/><link rel='alternate' type='text/html' href='http://rodison.blogspot.com/2007/12/princpio-de-pareto.html' title='Princípio de Pareto'/><author><name>Rodison Ferreira</name><uri>https://profiles.google.com/116042571911434716678</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-z9EVRh3jVHE/AAAAAAAAAAI/AAAAAAAAARA/dON2G5kV-qY/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry></feed>
