<?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-2528339186033885182</id><updated>2012-01-11T14:01:05.044-03:00</updated><category term='Algoritmos'/><category term='Bematech'/><category term='Tomcat'/><category term='PostgreSQL'/><category term='inutilidades'/><category term='Linux'/><category term='Serial'/><category term='Adaptador'/><category term='DP20'/><category term='JavaScript'/><category term='NetBeans'/><category term='Java'/><category term='Apple/Mac'/><category term='USB'/><category term='geral'/><category term='Subversion/SVN'/><title type='text'>Informações essenciais (ou nem tanto...)</title><subtitle type='html'>Informações essenciais no mundo da informática...</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://infoessencial.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2528339186033885182/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://infoessencial.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Fernando Pinheiro</name><uri>http://www.blogger.com/profile/17774225062873046024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://lh3.ggpht.com/_fR0a187auhk/SaJawlRiowI/AAAAAAAAEW4/EAU0bu9beIs/Photo%25203.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>54</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-2528339186033885182.post-3815150303190128359</id><published>2012-01-11T13:11:00.002-03:00</published><updated>2012-01-11T14:01:05.067-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Bematech'/><category scheme='http://www.blogger.com/atom/ns#' term='USB'/><category scheme='http://www.blogger.com/atom/ns#' term='Adaptador'/><category scheme='http://www.blogger.com/atom/ns#' term='DP20'/><category scheme='http://www.blogger.com/atom/ns#' term='Serial'/><title type='text'>Impressora Bematech DP20 com USB</title><content type='html'>&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;Frustração:&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre; "&gt; &lt;/span&gt;Não dá para negar que já deu tempo suficiente para os fabricantes como a Bematech vender o estoque de impressoras com saída Serial e atualizar para USB né? &lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;Mas agora imagina a frustração de ter adquirido uma impressora de cheques novinha e não conseguir ligá-la nas máquinas mais novas.&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;Decepção:&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;Mas para contornar o problema, é só adquirir um adaptador Serial/USB. Correto? &lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;Não, segundo o suporte da Bematech, para eles só tem 2 saídas: &lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre; "&gt; &lt;/span&gt;1. Comprar uma placa de serial pra ligar no seu computador novo, isso claro se você tiver com um que de para anexar. &lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre; "&gt; &lt;/span&gt;2. Desembalsamar um PC velho e aposentado para cumprir mais esse trabalho.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;Indignação:&lt;br class="Apple-interchange-newline"&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;Mas não pude acreditar no suporte e fui atrás de alguém que tivesse passado por esse problema no Google. E não encontrei... rs&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;Então, usei meus instintos e achei a solução sozinho. É mais simples do que se imagina.&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;Solução:&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;Como o Windows não identifica a impressora sozinho é preciso acrescentar uma manualmente usando o tipo de impressora Generics e o modelo Text Only. A porta dela terá que ser mesma COM que o adaptador criou. E depois nas configurações da Bematech é só mudar para essa COM também.&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;Conclusão:&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre; "&gt; &lt;/span&gt;Impressora de Cheques DP20 da Bematech com adaptador USB funciona sim. &lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre; "&gt; &lt;/span&gt;O adaptador que usei foi um tal de PL2303 de mais ou menos 38,00. Com a impressora que é quase 1000,00 o prejuízo aumenta ainda mais, mas é melhor que chamar o velhinho feio e barulhento, deixa ele lá curtir a aposentaria dele. Pelo menos até a próxima... rs &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;Tenho dito, Sorte a todos!&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 class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2528339186033885182-3815150303190128359?l=infoessencial.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoessencial.blogspot.com/feeds/3815150303190128359/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2528339186033885182&amp;postID=3815150303190128359' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2528339186033885182/posts/default/3815150303190128359'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2528339186033885182/posts/default/3815150303190128359'/><link rel='alternate' type='text/html' href='http://infoessencial.blogspot.com/2012/01/impressora-bematech-dp20-com-usb.html' title='Impressora Bematech DP20 com USB'/><author><name>Mario</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2528339186033885182.post-5480020014017598900</id><published>2010-08-25T16:30:00.003-03:00</published><updated>2010-08-25T16:38:01.152-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Apple/Mac'/><title type='text'>iTerm: Substituto para o Terminal do Mac OS X</title><content type='html'>Não funcionar as telas home e end no terminal sempre me irritaram, além dos Page Ups e Downs dentro de um nano via ssh...&lt;br /&gt;Neste ponto entra o iTerm. Ele é bastante simples (afinal: é um terminal pessoal!!) e faz justamente isto que preciso. Ponto.&lt;br /&gt;&lt;br /&gt;Pra quem achar útil: http://iterm.sourceforge.net/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2528339186033885182-5480020014017598900?l=infoessencial.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoessencial.blogspot.com/feeds/5480020014017598900/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2528339186033885182&amp;postID=5480020014017598900' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2528339186033885182/posts/default/5480020014017598900'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2528339186033885182/posts/default/5480020014017598900'/><link rel='alternate' type='text/html' href='http://infoessencial.blogspot.com/2010/08/iterm-substituto-para-o-terminal-do-mac.html' title='iTerm: Substituto para o Terminal do Mac OS X'/><author><name>Fernando Pinheiro</name><uri>http://www.blogger.com/profile/17774225062873046024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://lh3.ggpht.com/_fR0a187auhk/SaJawlRiowI/AAAAAAAAEW4/EAU0bu9beIs/Photo%25203.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2528339186033885182.post-8066744880165453845</id><published>2010-05-10T21:32:00.001-03:00</published><updated>2010-05-10T21:32:50.243-03:00</updated><title type='text'>Você tem escrito bons códigos?</title><content type='html'>Muitas vezes j&amp;#225; me deparei conversando comigo mesmo e pensando sobre&lt;br&gt;como eu poderia escrever c&amp;#243;digos melhores. E isso &amp;#233; um c&amp;#237;rculo vicioso&lt;br&gt;pois, quanto mais literatura eu consumo, mais pr&amp;#225;ticas tiro do papel,&lt;br&gt;mais vontade eu tenho de aprimorar meu trabalho di&amp;#225;rio.&lt;p&gt;Hoje eu tenho o privil&amp;#233;gio de trabalhar com uma equipe muito pequena,&lt;br&gt;por&amp;#233;m muito eficaz e que busca, diariamente, aplicar melhorias nos&lt;br&gt;c&amp;#243;digos e compartilh&amp;#225;-las entre os demais. Ter uma equipe pequena e&lt;br&gt;geograficamente agrupada (em nosso caso, trabalhamos todos em um mesmo&lt;br&gt;ambiente) facilita muito e agiliza a comunica&amp;#231;&amp;#227;o, o compartilhamento&lt;br&gt;do conhecimento e o di&amp;#225;logo entre todos os setores que comp&amp;#245;e o nosso&lt;br&gt;trabalho di&amp;#225;rio, que &amp;#233; o setor de infraestrutura, o desenvolvimento e&lt;br&gt;o design.&lt;p&gt;H&amp;#225; alguns minutos, dando uma lida r&amp;#225;pida nos meus feeds, me deparei&lt;br&gt;com uma excelente reflex&amp;#227;o sobre a qualidade do c&amp;#243;digo que escrevemos&lt;br&gt;e como isso afeta a equipe que nos cerca. O artigo original, em&lt;br&gt;ingl&amp;#234;s, pode ser lido em&lt;br&gt;&lt;a href="http://www.codeanthem.com/blog/2010/05/bad-code-is-viral/"&gt;http://www.codeanthem.com/blog/2010/05/bad-code-is-viral/&lt;/a&gt; e uma&lt;br&gt;tradu&amp;#231;&amp;#227;o para o portugu&amp;#234;s est&amp;#225; dispon&amp;#237;vel em&lt;br&gt;&lt;a href="http://blog.brunoborges.com.br/2010/05/codigo-ruim-e-viral.html"&gt;http://blog.brunoborges.com.br/2010/05/codigo-ruim-e-viral.html&lt;/a&gt;.&lt;p&gt;Recomendo &amp;#224; todos que trabalham com desenvolvimento (e at&amp;#233; as demais&lt;br&gt;&amp;#225;reas, porque n&amp;#227;o?) a leitura desse excelente artigo. E que possamos,&lt;br&gt;cada vez mais, nos orgulhar do trabalho que desenvolvemos!&lt;p&gt;At&amp;#233; mais!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2528339186033885182-8066744880165453845?l=infoessencial.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoessencial.blogspot.com/feeds/8066744880165453845/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2528339186033885182&amp;postID=8066744880165453845' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2528339186033885182/posts/default/8066744880165453845'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2528339186033885182/posts/default/8066744880165453845'/><link rel='alternate' type='text/html' href='http://infoessencial.blogspot.com/2010/05/voce-tem-escrito-bons-codigos.html' title='Você tem escrito bons códigos?'/><author><name>Diego Fincatto</name><uri>http://www.blogger.com/profile/09407500247276167622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2528339186033885182.post-4016111119140357779</id><published>2010-04-30T16:18:00.002-03:00</published><updated>2010-04-30T16:34:49.187-03:00</updated><title type='text'>e-commerce com wicket</title><content type='html'>Recentemente tive o privilégio de participar de um projeto de comércio&lt;br /&gt;eletrônico, o qual consistia em desenvolver todo um sistema para uma&lt;br /&gt;empresa, que permitiria integração completa com o&lt;br /&gt;sistema de gestão da mesma.&lt;br /&gt;Utilizamos, para isto, o framework &lt;a href="http://wicket.apache.org/"&gt;http://wicket.apache.org&lt;/a&gt; e tivemos&lt;br /&gt;uma satisfação acima da esperada com o framework.&lt;br /&gt;Em breve postarei mais detalhes sobre o desenvolvimento do projeto,&lt;br /&gt;bem como os problemas enfrentados com o wicket+jetty+postgres.&lt;br /&gt;Para quem estiver curioso, o site é &lt;a href="http://ewmix.com/"&gt;http://ewmix.com&lt;/a&gt;.&lt;br /&gt;Até breve!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2528339186033885182-4016111119140357779?l=infoessencial.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoessencial.blogspot.com/feeds/4016111119140357779/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2528339186033885182&amp;postID=4016111119140357779' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2528339186033885182/posts/default/4016111119140357779'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2528339186033885182/posts/default/4016111119140357779'/><link rel='alternate' type='text/html' href='http://infoessencial.blogspot.com/2010/04/e-commerce-com-wicket.html' title='e-commerce com wicket'/><author><name>Diego Fincatto</name><uri>http://www.blogger.com/profile/09407500247276167622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2528339186033885182.post-5035674696937318374</id><published>2009-06-05T11:03:00.005-03:00</published><updated>2009-06-05T11:06:02.654-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PostgreSQL'/><title type='text'>PostgreSQL: restringir estados brasileiros</title><content type='html'>Precisei restringir as UFs no banco de dados e, ao invés de criar CHECKs em cada uma das tabelas, preferi criar um ENUM e não achei nenhum pronto, então disponibilizo:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;CREATE TYPE estados_brasil AS ENUM('AC', 'AL', 'AP', 'AM', 'BA', 'CE', 'DF', 'GO', 'ES', 'MA', 'MT', 'MS', 'MG', 'PA', 'PB', 'PR', 'PE', 'PI', 'RJ', 'RN', 'RS', 'RO', 'RR', 'SP', 'SC', 'SE', 'TO');&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;A outra opção seria criar um DOMAIN e restringir no CHECK, mas acho que neste caso o TYPE é mais indicado.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2528339186033885182-5035674696937318374?l=infoessencial.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoessencial.blogspot.com/feeds/5035674696937318374/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2528339186033885182&amp;postID=5035674696937318374' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2528339186033885182/posts/default/5035674696937318374'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2528339186033885182/posts/default/5035674696937318374'/><link rel='alternate' type='text/html' href='http://infoessencial.blogspot.com/2009/06/postgresql-restringir-estados.html' title='PostgreSQL: restringir estados brasileiros'/><author><name>Fernando Pinheiro</name><uri>http://www.blogger.com/profile/17774225062873046024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://lh3.ggpht.com/_fR0a187auhk/SaJawlRiowI/AAAAAAAAEW4/EAU0bu9beIs/Photo%25203.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2528339186033885182.post-1572633951112023462</id><published>2009-02-24T18:43:00.001-03:00</published><updated>2009-02-24T18:43:27.967-03:00</updated><title type='text'>Netbeans 7!</title><content type='html'>Acabo de ver no site que um novo netbeans se aproxima! Acabei de&lt;br&gt;instalar o bichinho e gostei. Vou tentar rodar minhas apps em wicket&lt;br&gt;para ver como ele se comporta.&lt;br&gt;De qualquer maneira, vale o download:&lt;br&gt;&lt;a href="http://www.netbeans.org"&gt;www.netbeans.org&lt;/a&gt;&lt;br&gt;&lt;a href="http://blogs.sun.com/bblfish/entry/i_netbeans_7"&gt;http://blogs.sun.com/bblfish/entry/i_netbeans_7&lt;/a&gt;&lt;br&gt;&lt;a href="http://wiki.netbeans.org/PostSixOhPerformanceTopics"&gt;http://wiki.netbeans.org/PostSixOhPerformanceTopics&lt;/a&gt;&lt;p&gt;[]s&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2528339186033885182-1572633951112023462?l=infoessencial.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoessencial.blogspot.com/feeds/1572633951112023462/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2528339186033885182&amp;postID=1572633951112023462' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2528339186033885182/posts/default/1572633951112023462'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2528339186033885182/posts/default/1572633951112023462'/><link rel='alternate' type='text/html' href='http://infoessencial.blogspot.com/2009/02/netbeans-7.html' title='Netbeans 7!'/><author><name>Diego Fincatto</name><uri>http://www.blogger.com/profile/09407500247276167622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2528339186033885182.post-2282530520339979015</id><published>2008-10-03T14:47:00.001-03:00</published><updated>2008-10-03T14:47:58.183-03:00</updated><title type='text'>Boot Completo em 5s</title><content type='html'>Essa semana saiu um artigo no LWN sobre o boot completo de linux em&lt;br&gt;5s. Completo mesmo, com o X rodando e tudo.&lt;br&gt;Veja mais detalhes em &lt;a href="http://lwn.net/Articles/299088/"&gt;http://lwn.net/Articles/299088/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2528339186033885182-2282530520339979015?l=infoessencial.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoessencial.blogspot.com/feeds/2282530520339979015/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2528339186033885182&amp;postID=2282530520339979015' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2528339186033885182/posts/default/2282530520339979015'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2528339186033885182/posts/default/2282530520339979015'/><link rel='alternate' type='text/html' href='http://infoessencial.blogspot.com/2008/10/boot-completo-em-5s.html' title='Boot Completo em 5s'/><author><name>Diego Fincatto</name><uri>http://www.blogger.com/profile/09407500247276167622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2528339186033885182.post-1611047937484114405</id><published>2008-09-13T16:33:00.001-03:00</published><updated>2008-09-13T16:33:26.525-03:00</updated><title type='text'>Video NVidia no Debian 64</title><content type='html'>Para acelerar meu video no Debian64, precisei instalar (como de&lt;br&gt;costume) o driver da NVidia. O Lenny nao possui meta-packages ou&lt;br&gt;facilitadores para esta operacao. Sendo assim, ou vc baixa o .run do&lt;br&gt;site deles ou segue algumas dicas, como esta:&lt;br&gt;&lt;a href="http://positionrelative.blogspot.com/2008/05/installing-nvidia-driver-on-debian.html"&gt;http://positionrelative.blogspot.com/2008/05/installing-nvidia-driver-on-debian.html&lt;/a&gt;&lt;p&gt;Agora meu video esta acelerado, porem, como vcs devem ter notado, meu&lt;br&gt;teclado abnt2 nao acentua mais. Ja corrigi o xorg.conf, gracas ao&lt;br&gt;backup que o proprio instalador faz do xorg.conf, mas ainda nao&lt;br&gt;reiniciei o X.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2528339186033885182-1611047937484114405?l=infoessencial.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoessencial.blogspot.com/feeds/1611047937484114405/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2528339186033885182&amp;postID=1611047937484114405' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2528339186033885182/posts/default/1611047937484114405'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2528339186033885182/posts/default/1611047937484114405'/><link rel='alternate' type='text/html' href='http://infoessencial.blogspot.com/2008/09/video-nvidia-no-debian-64.html' title='Video NVidia no Debian 64'/><author><name>Diego Fincatto</name><uri>http://www.blogger.com/profile/09407500247276167622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2528339186033885182.post-8811621785091395164</id><published>2008-09-13T14:16:00.001-03:00</published><updated>2008-09-13T14:16:58.759-03:00</updated><title type='text'>Nitidez em fontes do Linux</title><content type='html'>Microsoft, Apple e Linux. Ambos tem excelentes configura&amp;#231;&amp;#245;es de&lt;br&gt;fontes, embora o Windows e o Linux insistem em n&amp;#227;o habilit&amp;#225;-las por&lt;br&gt;padr&amp;#227;o. Bom, o windows deve faz&amp;#234;-lo por alguma falha no&lt;br&gt;desenvolvimento e o linux porque ele imita a Microsoft, e j&amp;#225; que o&lt;br&gt;windows por padr&amp;#227;o n&amp;#227;o tem, ele tb n&amp;#227;o deve ter. Ok ok, sarcasmos a&lt;br&gt;parte, achei um tutorialzinho que d&amp;#225; a dica de como fazer no linux.&lt;br&gt;Ele est&amp;#225; em: &lt;a href="http://www.viamais.net/blog/?p=284"&gt;http://www.viamais.net/blog/?p=284&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2528339186033885182-8811621785091395164?l=infoessencial.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoessencial.blogspot.com/feeds/8811621785091395164/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2528339186033885182&amp;postID=8811621785091395164' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2528339186033885182/posts/default/8811621785091395164'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2528339186033885182/posts/default/8811621785091395164'/><link rel='alternate' type='text/html' href='http://infoessencial.blogspot.com/2008/09/nitidez-em-fontes-do-linux.html' title='Nitidez em fontes do Linux'/><author><name>Diego Fincatto</name><uri>http://www.blogger.com/profile/09407500247276167622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2528339186033885182.post-586646401714216872</id><published>2008-09-13T14:07:00.001-03:00</published><updated>2008-09-13T14:07:10.997-03:00</updated><title type='text'>Multimidia no Debian 64 bits</title><content type='html'>Hello World!&lt;p&gt;Estou h&amp;#225; alguns dias usando o beta2 do Debian Lenny e as impress&amp;#245;es&lt;br&gt;n&amp;#227;o podiam ser melhores. Tudo funcionou no meu hardware de primeira e&lt;br&gt;tudo muito r&amp;#225;pido. R&amp;#225;pido mesmo!!!&lt;br&gt;Ent&amp;#227;o, me deparei com um problema comum com os 64 bits... Multimidia.&lt;br&gt;Sempre &amp;#233; um saco, mas surpreendentemente deste vez n&amp;#227;o o foi. Achei um&lt;br&gt;tuto na web que resolveu 100% dos meus problemas:&lt;br&gt;&lt;a href="http://wiki.forumdebian.com.br/index.php/Multim%C3%ADdia_no_Debian#multim.C3.ADdia_em_AMD64"&gt;http://wiki.forumdebian.com.br/index.php/Multim%C3%ADdia_no_Debian#multim.C3.ADdia_em_AMD64&lt;/a&gt;&lt;p&gt;Apos seguir estes passos, tudo funciona perfeitamente no meu Debian.&lt;br&gt;At&amp;#233; alguns videos que inexplicavelmente travam o QuickTime no OSX,&lt;br&gt;rodam perfeitamente nele. Ali&amp;#225;s, ultimamente s&amp;#243; tenho me incomodado&lt;br&gt;com o OSX. Acho que ele n&amp;#227;o vai com a minha cara.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2528339186033885182-586646401714216872?l=infoessencial.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoessencial.blogspot.com/feeds/586646401714216872/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2528339186033885182&amp;postID=586646401714216872' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2528339186033885182/posts/default/586646401714216872'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2528339186033885182/posts/default/586646401714216872'/><link rel='alternate' type='text/html' href='http://infoessencial.blogspot.com/2008/09/multimidia-no-debian-64-bits.html' title='Multimidia no Debian 64 bits'/><author><name>Diego Fincatto</name><uri>http://www.blogger.com/profile/09407500247276167622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2528339186033885182.post-7832527949030269018</id><published>2008-08-06T14:55:00.001-03:00</published><updated>2008-08-06T14:55:07.736-03:00</updated><title type='text'>Descobrindo em que tabela está determinado campo no Postgres</title><content type='html'>&lt;div dir="ltr"&gt;Hoje, tive que procurar em qual tabela estava determinado campo. No postgres, consegui rapidinho com a seguinte query:&lt;br&gt;&lt;br&gt;SELECT pg_class.relname&lt;br&gt;&amp;nbsp;&amp;nbsp; FROM pg_attribute JOIN pg_class&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ON (pg_attribute.attrelid = pg_class.relfilenode)&lt;br&gt; &amp;nbsp;&amp;nbsp; WHERE attname = &amp;#39;texto&amp;#39;;&lt;br&gt;&lt;br&gt;Sendo que o campo pesquisado eh &amp;#39;texto&amp;#39;!&lt;br&gt;&lt;br&gt;&lt;br&gt;É isso aí pessoal! []`s&lt;br&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/2528339186033885182-7832527949030269018?l=infoessencial.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoessencial.blogspot.com/feeds/7832527949030269018/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2528339186033885182&amp;postID=7832527949030269018' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2528339186033885182/posts/default/7832527949030269018'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2528339186033885182/posts/default/7832527949030269018'/><link rel='alternate' type='text/html' href='http://infoessencial.blogspot.com/2008/08/descobrindo-em-que-tabela-est.html' title='Descobrindo em que tabela está determinado campo no Postgres'/><author><name>Diego Fincatto</name><uri>http://www.blogger.com/profile/09407500247276167622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2528339186033885182.post-1358733192592509619</id><published>2008-07-17T15:55:00.001-03:00</published><updated>2008-08-25T10:46:23.305-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='geral'/><title type='text'>Mais wallpapers de alta resolução!</title><content type='html'>Gosto muito do feed do &lt;a href="http://favoritos.wordpress.com/" target="_blank"&gt;favoritos&lt;/a&gt;, e o &lt;a href="http://favoritos.wordpress.com/2008/07/17/fundos-de-tela-de-natureza/" target="_blank"&gt;link dos 50 wallpapers de natureza&lt;/a&gt;, de hoje, é muito bom.&lt;br /&gt;&lt;br /&gt;Só para registrar o link...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2528339186033885182-1358733192592509619?l=infoessencial.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoessencial.blogspot.com/feeds/1358733192592509619/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2528339186033885182&amp;postID=1358733192592509619' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2528339186033885182/posts/default/1358733192592509619'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2528339186033885182/posts/default/1358733192592509619'/><link rel='alternate' type='text/html' href='http://infoessencial.blogspot.com/2008/07/mais-wallpapers-de-alta-resoluo.html' title='Mais wallpapers de alta resolução!'/><author><name>Fernando Pinheiro</name><uri>http://www.blogger.com/profile/17774225062873046024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://lh3.ggpht.com/_fR0a187auhk/SaJawlRiowI/AAAAAAAAEW4/EAU0bu9beIs/Photo%25203.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2528339186033885182.post-4262482038694725757</id><published>2008-05-01T20:47:00.003-03:00</published><updated>2008-05-01T20:50:55.870-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='NetBeans'/><title type='text'>Threaddumps em Java e como reportar bugs do NetBeans</title><content type='html'>Um recurso muito interessante do Java é o Threaddump. Em algumas situações, pode ser interessante saber o quê cada thread está executando (ou o que não está executando, se está esperando ;) ), e isto é possível através do comando:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;font-size:85%;" &gt; kill -3 &lt;pid&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Importante: se você mandar -9, killa mesmo!&lt;br /&gt;&lt;br /&gt;O output será algo assim:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: courier new;"&gt; Full thread dump Java HotSpot(TM) Client VM (1.5.0_13-119 mixed mode, sharing):&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt; "JSP Parsing" daemon prio=1 tid=0x42c04100 nid=0x94c600 in&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt; Object.wait() [0xb383d000..0xb383dd90]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;         at java.lang.Object.wait(Native Method)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;         - waiting on &lt;0x0f3dbdc0&gt; (a org.openide.windows.CloneableOpenSupport$Listener)&lt;/span&gt;&lt;br /&gt;&lt;/span&gt; &lt;div id="1etl" class="ArwC7c ckChnd"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: courier new;"&gt;         at java.lang.Object.wait(Object&lt;/span&gt;&lt;/span&gt;&lt;wbr style="font-family: courier new;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: courier new;"&gt;.java:474)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;         at org.openide.text.CloneableEdit&lt;/span&gt;&lt;/span&gt;&lt;wbr style="font-family: courier new;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: courier new;"&gt;orSupport.openDocumentImpl(CloneableEditorSupport.java&lt;/span&gt;&lt;/span&gt;&lt;wbr style="font-family: courier new;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: courier new;"&gt;:744)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;         at org.openide.text.CloneableEdit&lt;/span&gt;&lt;/span&gt;&lt;wbr style="font-family: courier new;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: courier new;"&gt;orSupport.openDocumentCheckIOE(CloneableEditorSupport.java&lt;/span&gt;&lt;/span&gt;&lt;wbr style="font-family: courier new;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: courier new;"&gt;:715)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;         at org.openide.text.CloneableEdit&lt;/span&gt;&lt;/span&gt;&lt;wbr style="font-family: courier new;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: courier new;"&gt;orSupport.getDocument(Cloneabl&lt;/span&gt;&lt;/span&gt;&lt;wbr style="font-family: courier new;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: courier new;"&gt;eEditorSupport.java:788)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;         - locked &lt;0x0f3dbdc0&gt; (a org.openide.windows.CloneableO&lt;/span&gt;&lt;/span&gt;&lt;wbr style="font-family: courier new;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: courier new;"&gt;penSupport$Listener)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;         at org.openide.text.CloneableEdit&lt;/span&gt;&lt;/span&gt;&lt;wbr style="font-family: courier new;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: courier new;"&gt;orSupport.getInputStream&lt;/span&gt;&lt;/span&gt;&lt;wbr style="font-family: courier new;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: courier new;"&gt;(CloneableEditorSupport.java&lt;/span&gt;&lt;/span&gt;&lt;wbr style="font-family: courier new;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: courier new;"&gt;:1349)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;         at org.netbeans.modules.web&lt;/span&gt;&lt;/span&gt;&lt;wbr style="font-family: courier new;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: courier new;"&gt;.jspparser.ParserServletContext.getEditorInputStream(ParserS&lt;/span&gt;&lt;/span&gt;&lt;wbr style="font-family: courier new;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: courier new;"&gt;ervletContext.java:363)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;         at org.netbeans.modules.web&lt;/span&gt;&lt;/span&gt;&lt;wbr style="font-family: courier new;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: courier new;"&gt;.jspparser.ParserServletContext.getResourceAsStream(ParserSe&lt;/span&gt;&lt;/span&gt;&lt;wbr style="font-family: courier new;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: courier new;"&gt;rvletContext.java:326)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;         at org.apache.jasper.JspCompilati&lt;/span&gt;&lt;/span&gt;&lt;wbr style="font-family: courier new;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: courier new;"&gt;onContext.getResourceAsStream&lt;/span&gt;&lt;/span&gt;&lt;wbr style="font-family: courier new;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: courier new;"&gt;(JspCompilationContext.java&lt;/span&gt;&lt;/span&gt;&lt;wbr style="font-family: courier new;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: courier new;"&gt;:304)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;         at org.apache.jasper.compiler&lt;/span&gt;&lt;/span&gt;&lt;wbr style="font-family: courier new;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: courier new;"&gt;.JspUtil.getInputStream&lt;/span&gt;&lt;/span&gt;&lt;wbr style="font-family: courier new;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: courier new;"&gt;(JspUtil.java:890)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;         at org.apache.jasper.xmlparser&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: courier new;"&gt;.XMLEncodingDetector.getEncoding(XMLEncodingDetector.java&lt;/span&gt;&lt;/span&gt;&lt;wbr style="font-family: courier new;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: courier new;"&gt;:127)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;         at org.apache.jasper.compiler&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: courier new;"&gt;.ParserController.determineSyntaxAndEncoding(ParserControlle&lt;/span&gt;&lt;/span&gt;&lt;wbr style="font-family: courier new;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: courier new;"&gt;r.java:360)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;         at org.apache.jasper.compiler&lt;/span&gt;&lt;/span&gt;&lt;wbr style="font-family: courier new;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: courier new;"&gt;.ParserController.doParse&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: courier new;"&gt;(ParserController.java:194)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;         at org.apache.jasper.compiler&lt;/span&gt;&lt;/span&gt;&lt;wbr style="font-family: courier new;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: courier new;"&gt;.ParserController.parse&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: courier new;"&gt;(ParserController.java:140)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;         at org.apache.jasper.compiler&lt;/span&gt;&lt;/span&gt;&lt;wbr style="font-family: courier new;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: courier new;"&gt;.Parser.processIncludeDirectiv&lt;/span&gt;&lt;/span&gt;&lt;wbr style="font-family: courier new;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: courier new;"&gt;e(Parser.java:374)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;         at org.apache.jasper.compiler&lt;/span&gt;&lt;/span&gt;&lt;wbr style="font-family: courier new;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: courier new;"&gt;.Parser.parseIncludeDirective&lt;/span&gt;&lt;/span&gt;&lt;wbr style="font-family: courier new;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: courier new;"&gt;(Parser.java:411)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;         at org.apache.jasper.compiler&lt;/span&gt;&lt;/span&gt;&lt;wbr style="font-family: courier new;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: courier new;"&gt;.Parser.parseDirective(Parser&lt;/span&gt;&lt;/span&gt;&lt;wbr style="font-family: courier new;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: courier new;"&gt;.java:554)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;         at org.apache.jasper.compiler&lt;/span&gt;&lt;/span&gt;&lt;wbr style="font-family: courier new;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: courier new;"&gt;.Parser.parseElements(Parser&lt;/span&gt;&lt;/span&gt;&lt;wbr style="font-family: courier new;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: courier new;"&gt;.java:1626)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;         at org.apache.jasper.compiler&lt;/span&gt;&lt;/span&gt;&lt;wbr style="font-family: courier new;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: courier new;"&gt;.Parser.parseBody(Parser.java&lt;/span&gt;&lt;/span&gt;&lt;wbr style="font-family: courier new;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: courier new;"&gt;:1880)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;         at org.apache.jasper.compiler&lt;/span&gt;&lt;/span&gt;&lt;wbr style="font-family: courier new;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: courier new;"&gt;.Parser.parseOptionalBody&lt;/span&gt;&lt;/span&gt;&lt;wbr style="font-family: courier new;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: courier new;"&gt;(Parser.java:1139)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;         at org.apache.jasper.compiler&lt;/span&gt;&lt;/span&gt;&lt;wbr style="font-family: courier new;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: courier new;"&gt;.Parser.parseCustomTag(Parser&lt;/span&gt;&lt;/span&gt;&lt;wbr style="font-family: courier new;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: courier new;"&gt;.java:1450)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;         at org.apache.jasper.compiler&lt;/span&gt;&lt;/span&gt;&lt;wbr style="font-family: courier new;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: courier new;"&gt;.Parser.parseElements(Parser&lt;/span&gt;&lt;/span&gt;&lt;wbr style="font-family: courier new;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: courier new;"&gt;.java:1649)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;         at org.apache.jasper.compiler&lt;/span&gt;&lt;/span&gt;&lt;wbr style="font-family: courier new;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: courier new;"&gt;.Parser.parse(Parser.java:165)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;         at org.apache.jasper.compiler&lt;/span&gt;&lt;/span&gt;&lt;wbr style="font-family: courier new;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: courier new;"&gt;.ParserController.doParse&lt;/span&gt;&lt;/span&gt;&lt;wbr style="font-family: courier new;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: courier new;"&gt;(ParserController.java:223)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;         at org.apache.jasper.compiler&lt;/span&gt;&lt;/span&gt;&lt;wbr style="font-family: courier new;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: courier new;"&gt;.ParserController.parse&lt;/span&gt;&lt;/span&gt;&lt;wbr style="font-family: courier new;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: courier new;"&gt;(ParserController.java:124)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;         at org.apache.jasper.compiler&lt;/span&gt;&lt;/span&gt;&lt;wbr style="font-family: courier new;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: courier new;"&gt;.GetParseData.parse(GetParseDa&lt;/span&gt;&lt;/span&gt;&lt;wbr style="font-family: courier new;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: courier new;"&gt;ta.java:164)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;         at org.netbeans.modules.web&lt;/span&gt;&lt;/span&gt;&lt;wbr style="font-family: courier new;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: courier new;"&gt;.jspparser_ext.WebAppParseSupport$1.run(WebAppParseSupport&lt;/span&gt;&lt;/span&gt;&lt;wbr style="font-family: courier new;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: courier new;"&gt;.java:482)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt; "Inactive RequestProcessor thread [Was:Default RequestProcessor/null]"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt; daemon prio=1 tid=0x010f8e60 nid=0x91c000 in Object.wait()&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt; [0xb8262000..0xb8262d90]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;         at java.lang.Object.wait(Native Method)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;         at org.openide.util.RequestProces&lt;/span&gt;&lt;/span&gt; &lt;wbr style="font-family: courier new;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: courier new;"&gt;sor$Processor.run(RequestProce&lt;/span&gt;&lt;/span&gt;&lt;wbr style="font-family: courier new;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: courier new;"&gt;ssor.java:939)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;         - locked &lt;0x0ef58008&gt; (a java.lang.Object)&lt;/span&gt;&lt;br /&gt;&lt;/span&gt; ... e por aí vai&lt;br /&gt;&lt;br /&gt;Este output será feito no console que iniciou a aplicação, então se você utilizou um atalho do sistema para iniciar e não tiver o console, tente ver no seu sistema onde isto será escrito (no Mac, utilize o Console).&lt;br /&gt;Isto pode ajudar muito desenvolvedor a achar onde está o gargalo de uma aplicação.&lt;br /&gt;&lt;br /&gt;Aí que entra como reportar bugs do NetBeans, e foi como descobri a existência dos threaddumps.&lt;br /&gt;Ao reportar um bug, e este sendo de lentidão ou travamento, sempre que possível inclua o threaddump do netbeans.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2528339186033885182-4262482038694725757?l=infoessencial.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoessencial.blogspot.com/feeds/4262482038694725757/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2528339186033885182&amp;postID=4262482038694725757' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2528339186033885182/posts/default/4262482038694725757'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2528339186033885182/posts/default/4262482038694725757'/><link rel='alternate' type='text/html' href='http://infoessencial.blogspot.com/2008/05/threaddumps-em-java-e-como-reportar.html' title='Threaddumps em Java e como reportar bugs do NetBeans'/><author><name>Fernando Pinheiro</name><uri>http://www.blogger.com/profile/17774225062873046024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://lh3.ggpht.com/_fR0a187auhk/SaJawlRiowI/AAAAAAAAEW4/EAU0bu9beIs/Photo%25203.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2528339186033885182.post-6242493843923289915</id><published>2008-04-28T08:03:00.002-03:00</published><updated>2008-04-28T08:06:52.738-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='NetBeans'/><title type='text'>NetBeans 6.1</title><content type='html'>Lançado o &lt;a href="http://download.netbeans.org/netbeans/6.1/final/"&gt;NetBeans 6.1&lt;/a&gt;!&lt;br /&gt;&lt;br /&gt;Espero que nesta versão tenham melhorado alguns bugzinhos feios, como a indexação constante dos fontes e perca das referências (é, vc não consegue corrigir imports, ir para a classe...) e algumas lentidões.&lt;br /&gt;&lt;br /&gt;Ah, o que mais me chamou atenção foi ter uma versão "Early access for PHP"...&lt;br /&gt;&lt;br /&gt;P.S.: li primeiro no &lt;a href="http://blog.brunoborges.com.br/2008/04/netbeans-61-lanado.html"&gt;blog do Bruno Borges&lt;/a&gt;...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2528339186033885182-6242493843923289915?l=infoessencial.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoessencial.blogspot.com/feeds/6242493843923289915/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2528339186033885182&amp;postID=6242493843923289915' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2528339186033885182/posts/default/6242493843923289915'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2528339186033885182/posts/default/6242493843923289915'/><link rel='alternate' type='text/html' href='http://infoessencial.blogspot.com/2008/04/netbeans-61.html' title='NetBeans 6.1'/><author><name>Fernando Pinheiro</name><uri>http://www.blogger.com/profile/17774225062873046024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://lh3.ggpht.com/_fR0a187auhk/SaJawlRiowI/AAAAAAAAEW4/EAU0bu9beIs/Photo%25203.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2528339186033885182.post-3293428553815018955</id><published>2008-02-08T21:36:00.000-03:00</published><updated>2008-02-08T21:38:34.058-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='geral'/><title type='text'>Leitura interessante (online): A Catedral e o Bazar</title><content type='html'>Hoje, percorrendo pelas páginas do &lt;a href="http://trac.edgewall.org/" target="_blank"&gt;Trac&lt;/a&gt;, achei um link muito legal, para quase todo o conteúdo do livro "&lt;a href="http://www.geocities.com/CollegePark/Union/3590/pt-cathedral-bazaar.html" target="_blank"&gt;A Catedral e o Bazar&lt;/a&gt;", de Eric S. Raymond.&lt;br /&gt;Do próprio site:&lt;br /&gt;&lt;br /&gt;&lt;blockquote style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;" class="gmail_quote"&gt;&lt;span style="font-family:Verdana;"&gt;Eu analiso um projeto bem sucedido de código livre, o fetchmail, que foi executado como um teste deliberado de algumas teorias surpreendentes sobre a tecnologia de programação sugerida pela história do Linux. Eu discuto estas teorias nos termos de dois estilos fundamentais diferentes de desenvolvimento, o modelo ``catedral'' da maior parte do mundo comercial contra o modelo ``bazar'' do mundo do Linux. Eu mostro que estes modelos derivam de suposições opostas sobre a natureza da tarefa de depurar o software. Eu faço então um argumento sustentado na experiência do Linux para a proposição que ``Dados bastante olhos, todos os erros são triviais'', sugiro analogias produtivas com outros sistemas auto-corrigíveis de agentes egoístas, e concluo com alguma exploração das implicações desta introspecção para o futuro do software.&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;Tá, eu sei que está um pouco desatualizado (data de 1998), mas achei interessante, por dar alguns pontos de vista de como tratar a equipe de desenvolvedores, beta-testers...&lt;br /&gt;&lt;br /&gt;Ah, nas &lt;a href="http://trac.edgewall.org/wiki/TracProject" target="_blank"&gt;informações do projeto Trac&lt;/a&gt; consta que o objetivo é desenvolver e melhorar o próprio Trac, de forma colaborativa, no estilo bazaar...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2528339186033885182-3293428553815018955?l=infoessencial.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoessencial.blogspot.com/feeds/3293428553815018955/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2528339186033885182&amp;postID=3293428553815018955' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2528339186033885182/posts/default/3293428553815018955'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2528339186033885182/posts/default/3293428553815018955'/><link rel='alternate' type='text/html' href='http://infoessencial.blogspot.com/2008/02/leitura-interessante-online-catedral-e.html' title='Leitura interessante (online): A Catedral e o Bazar'/><author><name>Fernando Pinheiro</name><uri>http://www.blogger.com/profile/17774225062873046024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://lh3.ggpht.com/_fR0a187auhk/SaJawlRiowI/AAAAAAAAEW4/EAU0bu9beIs/Photo%25203.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2528339186033885182.post-3086304380831186408</id><published>2007-12-04T21:49:00.001-03:00</published><updated>2007-12-04T21:49:59.507-03:00</updated><title type='text'>Gmail + Talk + ICQ + AIM + ?</title><content type='html'>Post r&amp;#225;pido para novidade excelente: o google (eles v&amp;#227;o dominar o&lt;br&gt;mundo) acaba de integrar o AIM ao gmail. Eu, velho usuario do ICQ,&lt;br&gt;entrei na onda, j&amp;#225; que ICQ e AIM &amp;#233; quase que a mesma coisa.&lt;br&gt;N&amp;#227;o deixem de conferir a novidade em:&lt;p&gt;&lt;a href="http://gmailblog.blogspot.com/2007/12/gmail-chat-aim-crazy-delicious.html"&gt;http://gmailblog.blogspot.com/2007/12/gmail-chat-aim-crazy-delicious.html&lt;/a&gt;&lt;br&gt;&lt;a href="http://www.undergoogle.com/blog/2007/12/google-talk-se-integra-ao-aim.html"&gt;http://www.undergoogle.com/blog/2007/12/google-talk-se-integra-ao-aim.html&lt;/a&gt;&lt;p&gt;e no seu email, claro!!! :D&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2528339186033885182-3086304380831186408?l=infoessencial.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoessencial.blogspot.com/feeds/3086304380831186408/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2528339186033885182&amp;postID=3086304380831186408' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2528339186033885182/posts/default/3086304380831186408'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2528339186033885182/posts/default/3086304380831186408'/><link rel='alternate' type='text/html' href='http://infoessencial.blogspot.com/2007/12/gmail-talk-icq-aim.html' title='Gmail + Talk + ICQ + AIM + ?'/><author><name>Diego Fincatto</name><uri>http://www.blogger.com/profile/09407500247276167622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2528339186033885182.post-1299763079351028490</id><published>2007-11-29T06:55:00.000-03:00</published><updated>2007-11-29T07:24:17.254-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='NetBeans'/><title type='text'>Ando devagar porque já tive pressa...</title><content type='html'>&lt;blockquote style="font-style: italic;"&gt;Ando devagar porque já tive pressa&lt;br /&gt;e levo esse sorriso, porque já chorei demais&lt;br /&gt;Hoje me sinto mais forte, mais feliz quem sabe&lt;br /&gt;eu só levo a certeza de que muito pouco eu sei, eu nada sei...&lt;/blockquote&gt;&lt;div style="text-align: justify;"&gt;Parafraseando Almir Sater, o NetBeans 6 parece se encaixar perfeitamente.&lt;br /&gt;&lt;br /&gt;Em muitos casos estou achando mais lento que a versão 5.5, e não é &lt;span style="font-style: italic;"&gt;um pouco&lt;/span&gt; mais lento... editar arquivos XML que sejam um pouco extensos -- estamos falando de 600 linhas -- &lt;a href="http://www.netbeans.org/issues/show_bug.cgi?id=122840"&gt;é impossível&lt;/a&gt;.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Eu, sinceramente, esperava mais. Não estou desmerecendo o empenho da equipe, acho que as novas funcionalidades ficaram fantásticas, até me adaptei ao novo formato de cores!&lt;br /&gt;Mas, como na 5.5, eu sou mais rápido para completar um /h:outputText do que 2.16GHz! :-) Estou me referindo ao editor em situações para editar JSP/JSF e XML. Em Java ficou (como já era) rápido, mas agora mais organizado. Contudo, experimente ir no início do seu JSP e substituir html por htm:html ou mesmo aguardar as opções de h:datatable.&lt;br /&gt;&lt;/div&gt;Sem querer me gabar, mas preferiria não precisar digitar... e pelo jeito vou continuar.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Parece que nem todos estão preocupados com desempenho. No anúncio dos resultados da pesquisa de aceitação do RC2 do NetBeans, no &lt;a href="http://blogs.sun.com/roumen/"&gt;blog do Roumen&lt;/a&gt;, 93% dos usuários acham que está pronto para a versão final. Inclusive há um &lt;a href="http://blogs.sun.com/roumen/entry/community_acceptance_survey_results_published#comment-1196187034000"&gt;comentário&lt;/a&gt; dizendo que o desempenho é importante, mas inserir mais funcionalidades é principal?!?! Desempenho que venha no 6.1...&lt;br /&gt;&lt;br /&gt;Bom, para editar meu XML vou ter que apelar para a concorrência. Mas vou continuar relatando meus problemas para a equipe...&lt;br /&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-style: italic;"&gt;Cada um de nós compõe a sua história,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;e cada ser em si, carrega o dom de ser capaz, e ser feliz.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2528339186033885182-1299763079351028490?l=infoessencial.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoessencial.blogspot.com/feeds/1299763079351028490/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2528339186033885182&amp;postID=1299763079351028490' title='2 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2528339186033885182/posts/default/1299763079351028490'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2528339186033885182/posts/default/1299763079351028490'/><link rel='alternate' type='text/html' href='http://infoessencial.blogspot.com/2007/11/ando-devagar-porque-j-tive-pressa.html' title='Ando devagar porque já tive pressa...'/><author><name>Fernando Pinheiro</name><uri>http://www.blogger.com/profile/17774225062873046024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://lh3.ggpht.com/_fR0a187auhk/SaJawlRiowI/AAAAAAAAEW4/EAU0bu9beIs/Photo%25203.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2528339186033885182.post-9033371277591245183</id><published>2007-11-23T13:31:00.000-03:00</published><updated>2007-11-23T14:48:25.528-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Subversion/SVN'/><category scheme='http://www.blogger.com/atom/ns#' term='NetBeans'/><title type='text'>NetBeans 6.0 não permite acentuar commits no Subversion</title><content type='html'>No NetBeans 6, mesmo o RC2, ainda não é possível acentuar commits.&lt;br /&gt;Ao tentar comitar a mensagem &lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;Test: á é í ó ú ç ã  (a e i o u c a)&lt;/span&gt;&lt;/span&gt;, retorna o seguinte erro:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;svn: Commit failed (details follow):&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;svn: Can't convert string from native encoding to 'UTF-8':&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;svn: Test: ?\135 ?\142 ?\146 ?\151 ?\156 ?\141 ?\139  (a e i o u c a)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Achei já o &lt;a href="http://www.netbeans.org/issues/show_bug.cgi?id=122284"&gt;bug relatado&lt;/a&gt; e convido a todos para votarem :)&lt;br /&gt;&lt;br /&gt;Ah, a dica &lt;a href="http://infoessencial.blogspot.com/2007/05/netbeans-com-svn-em-portugus.html"&gt;anterior&lt;/a&gt; não funciona no NB6.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2528339186033885182-9033371277591245183?l=infoessencial.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoessencial.blogspot.com/feeds/9033371277591245183/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2528339186033885182&amp;postID=9033371277591245183' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2528339186033885182/posts/default/9033371277591245183'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2528339186033885182/posts/default/9033371277591245183'/><link rel='alternate' type='text/html' href='http://infoessencial.blogspot.com/2007/11/netbeans-60-no-permite-acentuar-commits.html' title='NetBeans 6.0 não permite acentuar commits no Subversion'/><author><name>Fernando Pinheiro</name><uri>http://www.blogger.com/profile/17774225062873046024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://lh3.ggpht.com/_fR0a187auhk/SaJawlRiowI/AAAAAAAAEW4/EAU0bu9beIs/Photo%25203.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2528339186033885182.post-338440762128727050</id><published>2007-11-23T12:37:00.000-03:00</published><updated>2007-11-23T12:47:22.862-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='inutilidades'/><title type='text'>Não é mais possível navegar com MS Explorer!</title><content type='html'>Não, não é o internet explorer...&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_fR0a187auhk/R0b1C1-X1FI/AAAAAAAAAWw/wOW-ox4FWxY/s1600-h/Imagem1.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 318px; height: 237px;" src="http://3.bp.blogspot.com/_fR0a187auhk/R0b1C1-X1FI/AAAAAAAAAWw/wOW-ox4FWxY/s320/Imagem1.png" alt="" id="BLOGGER_PHOTO_ID_5136061854259860562" border="0" /&gt;&lt;/a&gt;... mas também, quem será que foi o estagiário que botou o nome neste navio?&lt;br /&gt;&lt;br /&gt;Tomara que não tenha sido um &lt;span style="font-style: italic;"&gt;Access violation&lt;/span&gt;!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Pode até ser humor negro, mas não pude deixar de postar...&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Notícia do &lt;a href="http://www.terra.com.br"&gt;terra&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2528339186033885182-338440762128727050?l=infoessencial.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoessencial.blogspot.com/feeds/338440762128727050/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2528339186033885182&amp;postID=338440762128727050' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2528339186033885182/posts/default/338440762128727050'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2528339186033885182/posts/default/338440762128727050'/><link rel='alternate' type='text/html' href='http://infoessencial.blogspot.com/2007/11/no-mais-possvel-navegar-com-ms-explorer.html' title='Não é mais possível navegar com MS Explorer!'/><author><name>Fernando Pinheiro</name><uri>http://www.blogger.com/profile/17774225062873046024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://lh3.ggpht.com/_fR0a187auhk/SaJawlRiowI/AAAAAAAAEW4/EAU0bu9beIs/Photo%25203.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_fR0a187auhk/R0b1C1-X1FI/AAAAAAAAAWw/wOW-ox4FWxY/s72-c/Imagem1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2528339186033885182.post-6942949219579439232</id><published>2007-11-14T14:44:00.001-03:00</published><updated>2007-11-14T15:06:39.457-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='NetBeans'/><title type='text'>NetBeans 6.0 rc1 oficialmente lançado</title><content type='html'>O NetBeans 6.0 release candidate 1 &lt;a href="http://www.netbeans.org/community/releases/60/index.html"&gt;foi oficialmente lançado&lt;/a&gt;. A versão 6.0, que já venho usando há mais de 2 semanas, têm apresentado ainda alguns problemas (os quais já submitamos &lt;a href="http://www.netbeans.org/issues/show_bug.cgi?id=121404"&gt;aqui&lt;/a&gt; e &lt;a href="http://www.netbeans.org/issues/show_bug.cgi?id=121406"&gt;aqui&lt;/a&gt;), mas está bastante interessante.&lt;div&gt;O editor realmente ficou mais agradável e está mais "inteligente"... Já estou baixando a nova versão para ver se houveram melhorias significativas.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;A dúvida é: conseguirão resolver todos os problemas até o lançamento? Só de bugs, há uma lista de &lt;a href="http://www.netbeans.org/issues/buglist.cgi?Submit+query=Submit+query&amp;amp;issue_type=DEFECT&amp;amp;issue_status=NEW&amp;amp;issue_status=STARTED&amp;amp;issue_status=REOPENED&amp;amp;target_milestone=6.0&amp;amp;email1=&amp;amp;emailtype1=exact&amp;amp;emailassigned_to1=1&amp;amp;email2=&amp;amp;emailtype2=exact&amp;amp;emailreporter2=1&amp;amp;issueidtype=include&amp;amp;issue_id=&amp;amp;changedin=&amp;amp;votes=&amp;amp;chfieldfrom=&amp;amp;chfieldto=Now&amp;amp;chfieldvalue=&amp;amp;short_desc=&amp;amp;short_desc_type=substring&amp;amp;long_desc=&amp;amp;long_desc_type=substring&amp;amp;issue_file_loc=&amp;amp;issue_file_loc_type=substring&amp;amp;status_whiteboard=&amp;amp;status_whiteboard_type=substring&amp;amp;keywords=&amp;amp;keywords_type=anytokens&amp;amp;field0-0-0=noop&amp;amp;type0-0-0=noop&amp;amp;value0-0-0=&amp;amp;cmdtype=doit&amp;amp;order=Issue+Number"&gt;mais de 1.600 ítens em aberto&lt;/a&gt;, programados para o 6.0...&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2528339186033885182-6942949219579439232?l=infoessencial.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoessencial.blogspot.com/feeds/6942949219579439232/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2528339186033885182&amp;postID=6942949219579439232' title='3 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2528339186033885182/posts/default/6942949219579439232'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2528339186033885182/posts/default/6942949219579439232'/><link rel='alternate' type='text/html' href='http://infoessencial.blogspot.com/2007/11/netbeans-60-rc1-oficialmente-lanado.html' title='NetBeans 6.0 rc1 oficialmente lançado'/><author><name>Fernando Pinheiro</name><uri>http://www.blogger.com/profile/17774225062873046024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://lh3.ggpht.com/_fR0a187auhk/SaJawlRiowI/AAAAAAAAEW4/EAU0bu9beIs/Photo%25203.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2528339186033885182.post-1384023229682468312</id><published>2007-11-14T13:34:00.000-03:00</published><updated>2007-11-14T12:34:38.855-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><title type='text'>Chamadas dinâmicas de funções em JavaScript</title><content type='html'>Em alguns casos precisamos que um evento execute uma função, como definir o onclick, por exemplo. Nestes casos, você não pode fazer:&lt;br /&gt;&lt;blockquote style="font-family: courier new;"&gt;&lt;span style="font-size:85%;"&gt;  elemento.onclick = funcao();&lt;/span&gt;&lt;/blockquote&gt;Pois ele tentará executar a chamada de &lt;span style="font-family: courier new;font-size:85%;" &gt;funcao()&lt;/span&gt; nao hora.&lt;br /&gt;Colocar entre aspas simplesmente não efetuará chamada alguma. O correto é:&lt;br /&gt;&lt;blockquote style="font-family: courier new;"&gt;&lt;span style="font-size:85%;"&gt;  elemento.onclick = funcao;&lt;br /&gt;function funcao() {&lt;br /&gt;  ...&lt;br /&gt;};&lt;/span&gt;&lt;/blockquote&gt;Funciona perfeitamente, e atendeu às minhas necessidades. Contudo, desta forma não permite passar parâmetros.&lt;br /&gt;A idéia então passa a ser criar uma nova função a ser executada nesta chamada que repasse os parâmetros. Como criar uma segunda função e utilizar conforme acima fica "feio", dá para criar diretamente uma função na variável do evento onclick.&lt;br /&gt;Não testei a parte abaixo, mas a lógica acho que é adequada:&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-size:85%;"&gt;elemento.onclick = function() { funcao('param1'); }&lt;br /&gt;function funcao(parametro) {    ...  }&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;:)&lt;div&gt;&lt;div style="margin: 0px;"&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/2528339186033885182-1384023229682468312?l=infoessencial.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoessencial.blogspot.com/feeds/1384023229682468312/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2528339186033885182&amp;postID=1384023229682468312' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2528339186033885182/posts/default/1384023229682468312'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2528339186033885182/posts/default/1384023229682468312'/><link rel='alternate' type='text/html' href='http://infoessencial.blogspot.com/2007/11/chamadas-dinmicas-de-funes-em.html' title='Chamadas dinâmicas de funções em JavaScript'/><author><name>Fernando Pinheiro</name><uri>http://www.blogger.com/profile/17774225062873046024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://lh3.ggpht.com/_fR0a187auhk/SaJawlRiowI/AAAAAAAAEW4/EAU0bu9beIs/Photo%25203.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2528339186033885182.post-1725138586683142642</id><published>2007-11-12T14:07:00.001-03:00</published><updated>2007-11-12T14:07:12.983-03:00</updated><title type='text'>Explanação visual de consultas SQL (Joins)</title><content type='html'>Buenas,&lt;br&gt;Hoje somente repassando um link do Coding Horror sobre joins. Muito&lt;br&gt;legal, apesar de ser basico. O visual ajuda a simplificar. Vale a&lt;br&gt;lida. Abra&amp;#231;os.&lt;p&gt;&lt;a href="http://www.codinghorror.com/blog/archives/000976.html"&gt;http://www.codinghorror.com/blog/archives/000976.html&lt;/a&gt;&lt;p&gt;Mais sobre joins em:&lt;br&gt;&lt;a href="http://www.postgresql.org/docs/8.2/static/tutorial-join.html"&gt;http://www.postgresql.org/docs/8.2/static/tutorial-join.html&lt;/a&gt;&lt;br&gt;&lt;a href="http://en.wikipedia.org/wiki/Join_(SQL"&gt;http://en.wikipedia.org/wiki/Join_(SQL&lt;/a&gt;)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2528339186033885182-1725138586683142642?l=infoessencial.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoessencial.blogspot.com/feeds/1725138586683142642/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2528339186033885182&amp;postID=1725138586683142642' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2528339186033885182/posts/default/1725138586683142642'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2528339186033885182/posts/default/1725138586683142642'/><link rel='alternate' type='text/html' href='http://infoessencial.blogspot.com/2007/11/explanao-visual-de-consultas-sql-joins.html' title='Explanação visual de consultas SQL (Joins)'/><author><name>Diego Fincatto</name><uri>http://www.blogger.com/profile/09407500247276167622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2528339186033885182.post-4022109307647937545</id><published>2007-11-06T16:32:00.000-03:00</published><updated>2007-11-06T16:49:29.169-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Tomcat'/><title type='text'>Acertando o relogio do Tomcat</title><content type='html'>Buenas pessoal,&lt;br /&gt;&lt;br /&gt;Apos um pequeno quebra-cabeças para acertar os ponteiros do meu tomcat, acabo de fazê-lo funcionar. De forma bem fácil, visto as alternativas...&lt;br /&gt;&lt;br /&gt;Escrevi esse pequeno passo-a-passo, caso alguem tenha a mesma duvida, pra nao perder tempo.&lt;br /&gt;&lt;br /&gt;Mas antes, quero registrar minha crítica ao horario de verão no Brasil. Li uma frase (nao me recordo o autor) que dizia: "Em todos os lugares do mundo, o horario de verão segue uma fórmula. No Brasil, segue uma lei". Esta frase explica o quão f****** sao os pobres analistas brasileiros. Choramingos a parte, vamos ao tuto:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Primeiramente, editando o catalina.sh, eh preciso declarar o JAVA_HOME (atenção para os caminhos!!!):&lt;br /&gt;&lt;span style="font-style: italic;"&gt;JAVA_HOME="/usr/lib/jvm/java-1.5.0-sun/"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Depois, deve-se adicionar a palavra timefix antes da chamada do bootstrap, em todos os casos, como a seguir:&lt;br /&gt;&lt;span style="font-style: italic;"&gt;timefix org.apache.catalina.startup.Bootstrap&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;A seguinte biblioteca deve ser posta no &lt;catalina_home&gt;/common/lib&lt;span style="font-style: italic;"&gt;:&lt;br /&gt;http://code.google.com/p/timefix/downloads/list&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;Por último, no arquivo setclasspath.sh, na linha que zera o CLASSPATH, deixe-a assim:&lt;br /&gt;&lt;span style="font-style: italic;"&gt;CLASSPATH="$CATALINA_HOME"/common/lib/timefix-1.0.jar&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;E voilà! Se tudo ocorreu bem (difícil), seu tomcat irá iniciar sabendo que horas são! Mas se não der certo, mande um email pra lula@brasil.gov.br e pergunta porque diabos ele bota o horário de verão quando ele quer. As vezes ele demora pra responder, pois, dizem as más línguas, o "aerolula" nao tem internet.&lt;br /&gt;&lt;br /&gt;[]'s&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2528339186033885182-4022109307647937545?l=infoessencial.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoessencial.blogspot.com/feeds/4022109307647937545/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2528339186033885182&amp;postID=4022109307647937545' title='4 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2528339186033885182/posts/default/4022109307647937545'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2528339186033885182/posts/default/4022109307647937545'/><link rel='alternate' type='text/html' href='http://infoessencial.blogspot.com/2007/11/acertando-o-relogio-do-tomcat.html' title='Acertando o relogio do Tomcat'/><author><name>Diego Fincatto</name><uri>http://www.blogger.com/profile/09407500247276167622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2528339186033885182.post-8784517094797419592</id><published>2007-10-26T17:14:00.001-03:00</published><updated>2007-10-26T17:14:44.256-03:00</updated><title type='text'>Horario de verao no java / tomcat</title><content type='html'>Bom, se voc&amp;#234; chegou aqui porque est&amp;#225; realmente com problemas de&lt;br&gt;horario de verao no tomcat, voc&amp;#234; t&amp;#225; na m****. Passei por esse problema&lt;br&gt;hoje e achei um post que supostamente resolve o problema. Levarei at&amp;#233;&lt;br&gt;o final do horario de verao pra conseguir fazer funcionar o esquema,&lt;br&gt;mas estou postando mesmo assim, hehehe.&lt;p&gt;&lt;a href="http://www.javafree.org/javabb/viewtopic.jbb?t=12070"&gt;http://www.javafree.org/javabb/viewtopic.jbb?t=12070&lt;/a&gt;&lt;p&gt;[]&amp;#39;s&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2528339186033885182-8784517094797419592?l=infoessencial.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoessencial.blogspot.com/feeds/8784517094797419592/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2528339186033885182&amp;postID=8784517094797419592' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2528339186033885182/posts/default/8784517094797419592'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2528339186033885182/posts/default/8784517094797419592'/><link rel='alternate' type='text/html' href='http://infoessencial.blogspot.com/2007/10/horario-de-verao-no-java-tomcat.html' title='Horario de verao no java / tomcat'/><author><name>Diego Fincatto</name><uri>http://www.blogger.com/profile/09407500247276167622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2528339186033885182.post-8131116264006678665</id><published>2007-10-26T07:46:00.001-03:00</published><updated>2007-10-26T07:52:41.908-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><title type='text'>Compilando pacotes no Debian/Ubuntu com apt-build</title><content type='html'>Buenas pessoal,&lt;br /&gt;Para os chatos de plantao, como eu, a performance do sistema é&lt;br /&gt;essencial. Mas temos que convir que baixar codigo fonte, resolver&lt;br /&gt;dependencias, somente para ganhar alguns milissegundos na&lt;br /&gt;inicializacao, e alguns Kb de memoria, nao tem lá um custo-beneficio&lt;br /&gt;razoavel. Eis que, navegando pela net despretenciosamente, achei um&lt;br /&gt;post no "Viva o Linux" do Fabio Maran sobre a ferramenta apt-build.&lt;br /&gt;Estou usando-a desde entao e tenho gostado muito! É bastante facil de&lt;br /&gt;usar.&lt;p&gt;Inicie instalando o dito:&lt;br /&gt;sudo apt-get install apt-build&lt;/p&gt;&lt;p&gt;Depois, use-o sem dó:&lt;br /&gt;sudo apt-build install &amp;lt;pacote&amp;gt;&lt;/p&gt;&lt;p&gt;E voilà!&lt;/p&gt;&lt;p&gt;Dica original: &lt;a href="http://www.vivaolinux.com.br/dicas/verDica.php?codigo=9429"&gt;http://www.vivaolinux.com.br/dicas/verDica.php?codigo=9429&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2528339186033885182-8131116264006678665?l=infoessencial.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoessencial.blogspot.com/feeds/8131116264006678665/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2528339186033885182&amp;postID=8131116264006678665' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2528339186033885182/posts/default/8131116264006678665'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2528339186033885182/posts/default/8131116264006678665'/><link rel='alternate' type='text/html' href='http://infoessencial.blogspot.com/2007/10/compilando-pacotes-no-debianubuntu-com.html' title='Compilando pacotes no Debian/Ubuntu com apt-build'/><author><name>Diego Fincatto</name><uri>http://www.blogger.com/profile/09407500247276167622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2528339186033885182.post-264757187122816321</id><published>2007-10-24T10:34:00.000-03:00</published><updated>2007-10-24T11:09:19.926-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Apple/Mac'/><title type='text'>Horário de verão no Mac!</title><content type='html'>Para quem está alterando manualmente o horário de verão no Mac, há&lt;br /&gt;uma solução blog &lt;a href="http://right-it.blogspot.com/2007/10/horrio-de-vero-brasil-mac-os-x.html"&gt;Right-it&lt;/a&gt; que trata justamente disto!&lt;p&gt;Gracias, Google!&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2528339186033885182-264757187122816321?l=infoessencial.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoessencial.blogspot.com/feeds/264757187122816321/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2528339186033885182&amp;postID=264757187122816321' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2528339186033885182/posts/default/264757187122816321'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2528339186033885182/posts/default/264757187122816321'/><link rel='alternate' type='text/html' href='http://infoessencial.blogspot.com/2007/10/horrio-de-vero-no-mac.html' title='Horário de verão no Mac!'/><author><name>Fernando Pinheiro</name><uri>http://www.blogger.com/profile/17774225062873046024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://lh3.ggpht.com/_fR0a187auhk/SaJawlRiowI/AAAAAAAAEW4/EAU0bu9beIs/Photo%25203.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2528339186033885182.post-5660181090635009778</id><published>2007-10-19T08:41:00.001-03:00</published><updated>2007-10-26T07:51:29.353-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='inutilidades'/><title type='text'>Codigo Java do BOPE</title><content type='html'>Depois de bastante tempo sem nada interessante para postar (lançamento&lt;br /&gt;do Ubuntu e coisinhas pequenas assim nao me chamaram muito a atençao&lt;br /&gt;ultimamente... só a oktoberfest, mas...) recebi por email o codigo&lt;br /&gt;JAVA do treinamento do pessoal do BOPE, que segue abaixo:&lt;p&gt;   /**&lt;br /&gt;  * O Bope foi criado para atuar quando a policia perde o controle&lt;br /&gt;  * E no rio de janeiro isso acontece com bastante frequencia&lt;br /&gt;  */&lt;/p&gt;&lt;p&gt;   class Bope{&lt;/p&gt;&lt;p&gt;   private String nome;&lt;br /&gt;  private int qtdeVitimas = 1; // ja começa bem!&lt;br /&gt;  public Bope(String nome){&lt;br /&gt;  this.nome = nome;&lt;/p&gt;&lt;p&gt;   }&lt;/p&gt;&lt;p&gt;   // sobrecarga do método ondeTaOBaiano&lt;br /&gt;  public void ondeTaOBaiano(Estudante e){&lt;br /&gt;  e.sabeVoarEstudante();&lt;br /&gt;  }&lt;/p&gt;&lt;p&gt;   public void ondeTaOBaiano(Traficante t){&lt;br /&gt;  t.levaSacoNaCabeca();&lt;br /&gt;  }&lt;/p&gt;&lt;p&gt;   // exemplo de método final!&lt;/p&gt;&lt;p&gt;   public final Doze encontreiOBaiano(Baiano b){&lt;br /&gt;  return b.naCaraNaoQueEhPraNaoEstragarVelorio();&lt;br /&gt;  }&lt;/p&gt;&lt;p&gt;   }&lt;/p&gt;&lt;p&gt;   public class Treinamento{&lt;br /&gt;  public static void main(String [] xxx){&lt;br /&gt;  // Apresento o capitão nascimento&lt;/p&gt;&lt;p&gt;   Bope instrutor = new Bope("01?); //Capitao Nascimento&lt;br /&gt;  try{&lt;/p&gt;&lt;p&gt;   // de cada 100 policiais que fazem o curso do Bope,&lt;br /&gt;  // so se formam 5, e eu, quando me formei parceiro,&lt;br /&gt;  // eramos apenas 3.&lt;/p&gt;&lt;p&gt;   Turma.tentaFazerCursoBopeCom(capitao);&lt;/p&gt;&lt;p&gt;   while(aluno.count &amp;gt;= 3){&lt;br /&gt;  aluno.pedePraSair();&lt;/p&gt;&lt;p&gt;   if(aluno istanceof Cafetao){&lt;br /&gt;  capitao.say("Pede pra sair!");&lt;br /&gt;  capitao.say("Seu Lugar Eh Com Puta!");&lt;br /&gt;  }&lt;br /&gt;  if(aluno istanceof PorraLoka){&lt;br /&gt;  capitao.say("Tira essa farda preta!");&lt;br /&gt;  capitao.say("Voce nao eh cavera. voce eh MULEQUE!");&lt;br /&gt;  }&lt;br /&gt;  if( aluno.isXerife() ) aluno.desiste();&lt;br /&gt;  }&lt;/p&gt;&lt;p&gt;   } catch (PolicialCorruptoEncontrado pce){&lt;br /&gt;  } catch (PolicialFracoEncontrado pfe){&lt;br /&gt;  } catch (PolicialSemABandoleiraNessaAlturadoCampeonato e) {&lt;br /&gt;  }&lt;/p&gt;&lt;p&gt;   }&lt;/p&gt;&lt;p&gt;   }&lt;/p&gt;&lt;p&gt;&lt;br /&gt;Não recebi o autor do dito, então nao há créditos essa vez!&lt;br /&gt;:)&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2528339186033885182-5660181090635009778?l=infoessencial.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoessencial.blogspot.com/feeds/5660181090635009778/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2528339186033885182&amp;postID=5660181090635009778' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2528339186033885182/posts/default/5660181090635009778'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2528339186033885182/posts/default/5660181090635009778'/><link rel='alternate' type='text/html' href='http://infoessencial.blogspot.com/2007/10/codigo-java-do-bope.html' title='Codigo Java do BOPE'/><author><name>Diego Fincatto</name><uri>http://www.blogger.com/profile/09407500247276167622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2528339186033885182.post-1578625487612839149</id><published>2007-10-03T14:05:00.000-03:00</published><updated>2007-10-04T09:41:29.505-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PostgreSQL'/><title type='text'>PG Conference Brasil 2007</title><content type='html'>Como um bom &lt;span class="Apple-style-span" style="text-decoration: line-through;"&gt;evangelista&lt;/span&gt; desenvolvedor Postgres, fiquei empolgado em ver que estão confirmadas presenças internacionais na conferência nacional (Josh Berkus e Bruce Momjian).&lt;br /&gt;&lt;br /&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;Parabéns à equipe de organização, farei o possível para participar.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;Os que tiverem interesse, há mais detalhes em &lt;a href="http://www.temporealeventos.com.br/?area=80"&gt;http://www.temporealeventos.com.br/?area=80&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/2528339186033885182-1578625487612839149?l=infoessencial.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoessencial.blogspot.com/feeds/1578625487612839149/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2528339186033885182&amp;postID=1578625487612839149' title='2 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2528339186033885182/posts/default/1578625487612839149'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2528339186033885182/posts/default/1578625487612839149'/><link rel='alternate' type='text/html' href='http://infoessencial.blogspot.com/2007/10/pg-conference-brasil-2007.html' title='PG Conference Brasil 2007'/><author><name>Fernando Pinheiro</name><uri>http://www.blogger.com/profile/17774225062873046024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://lh3.ggpht.com/_fR0a187auhk/SaJawlRiowI/AAAAAAAAEW4/EAU0bu9beIs/Photo%25203.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2528339186033885182.post-4219364405127658601</id><published>2007-09-09T16:04:00.000-03:00</published><updated>2007-09-09T16:08:57.809-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='geral'/><title type='text'>Anti-vírus (open source) para Windows</title><content type='html'>Resolvi melhorar o desempenho de uma máquina Windows e, claro, a primeira coisa que mais consome memória e deve ser revista, é o anti-vírus.&lt;br /&gt;Um colega de trabalho (valeu Fern) comentou estes dias sobre o ClamWin, um anti-vírus open source que é baseado no famoso ClamAV, utilizado largamente em servidores.&lt;br /&gt;Minha aposta é que seja mais leve (é meio difícil confirmar agora, já que mexi em outras coisas também), mas o fato de ser com código livre, licença GNU GPL, já vale a pena.&lt;br /&gt;&lt;br /&gt;Para baixar, acesse &lt;a href="http://www.clamwin.com/"&gt;http://www.clamwin.com/&lt;/a&gt;!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2528339186033885182-4219364405127658601?l=infoessencial.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoessencial.blogspot.com/feeds/4219364405127658601/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2528339186033885182&amp;postID=4219364405127658601' title='2 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2528339186033885182/posts/default/4219364405127658601'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2528339186033885182/posts/default/4219364405127658601'/><link rel='alternate' type='text/html' href='http://infoessencial.blogspot.com/2007/09/anti-vrus-open-sourcepara-windows.html' title='Anti-vírus (open source) para Windows'/><author><name>Fernando Pinheiro</name><uri>http://www.blogger.com/profile/17774225062873046024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://lh3.ggpht.com/_fR0a187auhk/SaJawlRiowI/AAAAAAAAEW4/EAU0bu9beIs/Photo%25203.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2528339186033885182.post-7200209618254345024</id><published>2007-08-29T10:45:00.000-03:00</published><updated>2007-08-29T10:48:07.933-03:00</updated><title type='text'>Virtualizacao de Desktops no Mac</title><content type='html'>Para quem tem problema de falta de espa&amp;#231;o em tela, e/ou nao gosta de  &lt;br&gt;ficar minimizando e maximizando.&lt;br&gt;Uma boa opcao para Mac OS X 10.4 &amp;#233; o VirtueDesktop no endereco http:// &lt;br&gt;virtuedesktops.info/&lt;br&gt;Apesar do criador parar o desenvolvimento, esta numa versao bem estavel.&lt;br&gt;Ah! Funciona em PowerPC e Intel-based.&lt;br&gt;Fui...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2528339186033885182-7200209618254345024?l=infoessencial.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoessencial.blogspot.com/feeds/7200209618254345024/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2528339186033885182&amp;postID=7200209618254345024' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2528339186033885182/posts/default/7200209618254345024'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2528339186033885182/posts/default/7200209618254345024'/><link rel='alternate' type='text/html' href='http://infoessencial.blogspot.com/2007/08/virtualizacao-de-desktops-no-mac.html' title='Virtualizacao de Desktops no Mac'/><author><name>Mario</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2528339186033885182.post-6801177532762985982</id><published>2007-08-24T14:58:00.000-03:00</published><updated>2007-08-24T15:01:17.359-03:00</updated><title type='text'>Trocando Icones no Mac</title><content type='html'>Ap&amp;#243;s pegar o jeito, fica bem f&amp;#225;cil e o interessante &amp;#233; que dessa forma  &lt;br&gt;podemos pegar o icone facilmente de qualquer aplicativo.&lt;p&gt;Para Copiar:&lt;br&gt;1 - Selecione o arquivo que contem a imagem (icone) desejada (clicar  &lt;br&gt;uma unica vez)&lt;br&gt;2 - Tecle Apple + i (Teclas de Atalho para Obter Informacoes)&lt;br&gt;3 - Selecione (Clicando uma unica vez o desenho do Icone que aparece  &lt;br&gt;no canto superior esquerdo)&lt;br&gt;4 - Tecle Apple + c (Teclas de atalho para copiar)&lt;p&gt;Para Colar:&lt;br&gt;1 - Selecione o arquivo que deseja trocar de icone (clicar uma unica  &lt;br&gt;vez)&lt;br&gt;2 - Tecle Apple + i (Teclas de Atalho para Obter Informacoes)&lt;br&gt;3 - Selecione (Clicando uma unica vez o desenho do Icone que aparece  &lt;br&gt;no canto superior esquerdo)&lt;br&gt;4 - Tecle Apple + v (Teclas de atalho para colar)&lt;p&gt;&amp;#201; isso, at&amp;#233; a pr&amp;#243;xima.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2528339186033885182-6801177532762985982?l=infoessencial.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoessencial.blogspot.com/feeds/6801177532762985982/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2528339186033885182&amp;postID=6801177532762985982' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2528339186033885182/posts/default/6801177532762985982'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2528339186033885182/posts/default/6801177532762985982'/><link rel='alternate' type='text/html' href='http://infoessencial.blogspot.com/2007/08/trocando-icones-no-mac.html' title='Trocando Icones no Mac'/><author><name>Mario</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2528339186033885182.post-8410484219018151419</id><published>2007-08-24T14:01:00.000-03:00</published><updated>2007-08-24T14:36:33.048-03:00</updated><title type='text'>CepNet/PostNet no iReport/Jasper</title><content type='html'>Na plataforma de desenvolvimento:&lt;br /&gt;&lt;br /&gt;1 - Criar um Jar com o codigo abaixo...&lt;br /&gt;&lt;br /&gt;package meuPostNet;&lt;br /&gt;import java.awt.Color;&lt;br /&gt;import java.awt.Image;&lt;br /&gt;import com.lowagie.text.pdf.BarcodePostnet;&lt;br /&gt;public class Postnet {&lt;br /&gt;    public static Image getImage(String _codigo) {&lt;br /&gt;        Image image = null;&lt;br /&gt;        try {&lt;br /&gt;            BarcodePostnet iTextPostnet = new BarcodePostnet();&lt;br /&gt;            iTextPostnet.setCode(_codigo);&lt;br /&gt;            image = iTextPostnet.createAwtImage(Color.BLACK, Color.WHITE);&lt;br /&gt;            image = new javax.swing.ImageIcon(image).getImage();&lt;br /&gt;        } catch (Exception ex) {&lt;br /&gt;            ex.printStackTrace();&lt;br /&gt;        }&lt;br /&gt;        return image;&lt;br /&gt;    }  &lt;br /&gt;}&lt;br /&gt;2 - Incluir esse Jar  na biblioteca (lib) da aplicacao.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;No iReport:&lt;br /&gt;1 - Incluir uma imagem com os atributos:&lt;br /&gt;Expressao da imagem = meuPostNet.Postnet.getImage('99999999') &lt;br /&gt;               onde '99999999' pode ser a variavel com o cep de 8 digitos desejado.&lt;br /&gt;&lt;br /&gt;Classe da expressao = java.awt.Image&lt;br /&gt;&lt;br /&gt;E é só... Até a proxima!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2528339186033885182-8410484219018151419?l=infoessencial.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoessencial.blogspot.com/feeds/8410484219018151419/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2528339186033885182&amp;postID=8410484219018151419' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2528339186033885182/posts/default/8410484219018151419'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2528339186033885182/posts/default/8410484219018151419'/><link rel='alternate' type='text/html' href='http://infoessencial.blogspot.com/2007/08/cepnetpostnet-no-ireportjasper.html' title='CepNet/PostNet no iReport/Jasper'/><author><name>Mario</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2528339186033885182.post-1519647966549542045</id><published>2007-08-23T14:45:00.001-03:00</published><updated>2007-08-23T14:45:17.689-03:00</updated><title type='text'>Recuperação de Arquivos Free</title><content type='html'>Post r&amp;#225;pido, sem mais delongas. Um amigo estava com problemas&lt;br&gt;(formatou o HD) e achamos este programa, free, para recupera&amp;#231;&amp;#227;o dos&lt;br&gt;dados:&lt;br&gt;&lt;a href="http://www.officerecovery.com/freeundelete/"&gt;http://www.officerecovery.com/freeundelete/&lt;/a&gt;&lt;p&gt;Apesar de ja ter usado o Easy Recovery Pro, ele &amp;#233; pago (e muito bem&lt;br&gt;pago). Este programa &amp;#233; pequeno e mostra a que veio.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2528339186033885182-1519647966549542045?l=infoessencial.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoessencial.blogspot.com/feeds/1519647966549542045/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2528339186033885182&amp;postID=1519647966549542045' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2528339186033885182/posts/default/1519647966549542045'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2528339186033885182/posts/default/1519647966549542045'/><link rel='alternate' type='text/html' href='http://infoessencial.blogspot.com/2007/08/recuperao-de-arquivos-free.html' title='Recuperação de Arquivos Free'/><author><name>Diego Fincatto</name><uri>http://www.blogger.com/profile/09407500247276167622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2528339186033885182.post-1350349813423790539</id><published>2007-08-21T18:07:00.000-03:00</published><updated>2007-08-21T18:08:29.360-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Apple/Mac'/><title type='text'>Criando assinaturas HTML no Apple Mail</title><content type='html'>O Apple Mail, por padrão, não permite criar assinaturas formatadas. &lt;br /&gt;Mas há como contornar...&lt;p&gt;1. Crie uma assinatura no Mail (texto mesmo);&lt;br /&gt;2. Saia do Mail;&lt;br /&gt;3. Crie a página web com qualquer editor;&lt;br /&gt;4. Abra a mesma com o Safari;&lt;br /&gt;5. Salve-a no formato webarchive;&lt;br /&gt;6. Coloque este webarchive em &lt;span style="font-family: courier new;"&gt;~Library/Mail/Signatures&lt;/span&gt;, com o nome da &lt;br /&gt;assinatura que você quer substituir.&lt;/p&gt;&lt;p&gt;&lt;span style="font-weight: bold;"&gt;Importante:&lt;/span&gt; ~ significa seu diretório home (normalmente &lt;span style="font-family: courier new;"&gt;/users/ &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;SEUUSUARIO&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-weight: bold;"&gt;Importante 2:&lt;/span&gt; Você precisa saber qual é a assinatura que você quer &lt;br /&gt;sobrescrever (há um arquivo .webarchive já), porém se você tiver mais &lt;br /&gt;de uma assinatura isto não é trivial. Para descobrir, veja no arquivo &lt;br /&gt;&lt;span style="font-family: courier new;"&gt;SignaturesByAccount.plist&lt;/span&gt; existente no diretório de assinaturas.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2528339186033885182-1350349813423790539?l=infoessencial.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoessencial.blogspot.com/feeds/1350349813423790539/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2528339186033885182&amp;postID=1350349813423790539' title='2 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2528339186033885182/posts/default/1350349813423790539'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2528339186033885182/posts/default/1350349813423790539'/><link rel='alternate' type='text/html' href='http://infoessencial.blogspot.com/2007/08/criando-assinaturas-html-no-apple-mail.html' title='Criando assinaturas HTML no Apple Mail'/><author><name>Fernando Pinheiro</name><uri>http://www.blogger.com/profile/17774225062873046024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://lh3.ggpht.com/_fR0a187auhk/SaJawlRiowI/AAAAAAAAEW4/EAU0bu9beIs/Photo%25203.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2528339186033885182.post-4050596094338034403</id><published>2007-08-07T15:10:00.001-03:00</published><updated>2007-08-07T15:10:19.850-03:00</updated><title type='text'>Abrindo arquivos do Microsoft Oficce 2007 no OpenOffice e Linux</title><content type='html'>Bom, me deparei com um problema hoja, que era abrir um arquivo do&lt;br&gt;office 2007 (docx) no meu openoffice.  Achei a dica e compartilho:&lt;br&gt;&lt;a href="http://www.sigmundvoid.com/?p=81"&gt;http://www.sigmundvoid.com/?p=81&lt;/a&gt;&lt;p&gt;[]&amp;#39;s&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2528339186033885182-4050596094338034403?l=infoessencial.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoessencial.blogspot.com/feeds/4050596094338034403/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2528339186033885182&amp;postID=4050596094338034403' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2528339186033885182/posts/default/4050596094338034403'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2528339186033885182/posts/default/4050596094338034403'/><link rel='alternate' type='text/html' href='http://infoessencial.blogspot.com/2007/08/abrindo-arquivos-do-microsoft-oficce.html' title='Abrindo arquivos do Microsoft Oficce 2007 no OpenOffice e Linux'/><author><name>Diego Fincatto</name><uri>http://www.blogger.com/profile/09407500247276167622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2528339186033885182.post-1556529227871590985</id><published>2007-08-07T10:48:00.000-03:00</published><updated>2007-08-07T10:49:31.995-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Apple/Mac'/><title type='text'>Comparação de arquivos (diff) no OS X</title><content type='html'>Para quem precisa comparar arquivos e prefere uma interface mais &lt;br /&gt;amigável que o velho e bom diff (ou o abominável subversion, quando &lt;br /&gt;conflita o merge), a Apple disponibiliza o FileMerge (&lt;a href="http://en.wikipedia.org/wiki/Apple_Developer_Tools#FileMerge"&gt;http://&lt;br /&gt;en.wikipedia.org/wiki/Apple_Developer_Tools#FileMerge&lt;/a&gt;).&lt;br /&gt;Faz parte do Developer Tools, e vale a pena dar uma testada...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2528339186033885182-1556529227871590985?l=infoessencial.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoessencial.blogspot.com/feeds/1556529227871590985/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2528339186033885182&amp;postID=1556529227871590985' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2528339186033885182/posts/default/1556529227871590985'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2528339186033885182/posts/default/1556529227871590985'/><link rel='alternate' type='text/html' href='http://infoessencial.blogspot.com/2007/08/comparao-de-arquivos-diff-no-os-x.html' title='Comparação de arquivos (diff) no OS X'/><author><name>Fernando Pinheiro</name><uri>http://www.blogger.com/profile/17774225062873046024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://lh3.ggpht.com/_fR0a187auhk/SaJawlRiowI/AAAAAAAAEW4/EAU0bu9beIs/Photo%25203.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2528339186033885182.post-2773826678683013249</id><published>2007-07-25T09:05:00.000-03:00</published><updated>2007-07-25T09:05:24.792-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Apple/Mac'/><title type='text'>Removendo aplicativos do OS X por completo!</title><content type='html'>Embora seja muito simples adicionar/remover aplicativos no OS X (basta arrastá-los para a pasta aplicativos ou para a lixeira!), alguns arquivos podem ficar perdidos em pastas do usuário ou similares. Normalmente são arquivos de preferências ou configurações, mas ficam perdidos!&lt;div&gt; &lt;/div&gt;&lt;div&gt;Porém, nem tudo está perdido!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Neste &lt;a href="http://www.simplehelp.net/2007/07/23/how-to-use-apptrap-to-completely-uninstall-applications-in-os-x/"&gt;post&lt;/a&gt; exemplifica como instalar o &lt;a href="http://konstochvanligasaker.se/apptrap/"&gt;AppTrap&lt;/a&gt;, que faz este milagre!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;Ahhhhhh, e o software é free :), mas não é open source :(&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2528339186033885182-2773826678683013249?l=infoessencial.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoessencial.blogspot.com/feeds/2773826678683013249/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2528339186033885182&amp;postID=2773826678683013249' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2528339186033885182/posts/default/2773826678683013249'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2528339186033885182/posts/default/2773826678683013249'/><link rel='alternate' type='text/html' href='http://infoessencial.blogspot.com/2007/07/removendo-aplicativos-do-os-x-por.html' title='Removendo aplicativos do OS X por completo!'/><author><name>Fernando Pinheiro</name><uri>http://www.blogger.com/profile/17774225062873046024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://lh3.ggpht.com/_fR0a187auhk/SaJawlRiowI/AAAAAAAAEW4/EAU0bu9beIs/Photo%25203.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2528339186033885182.post-3653282265042236650</id><published>2007-07-24T14:12:00.000-03:00</published><updated>2007-07-24T14:13:11.933-03:00</updated><title type='text'>Continuations</title><content type='html'>Buenas,&lt;br&gt;Passando rapidinho pelo developerWorks, acabei me deparando com um&lt;br&gt;software que eu admiro bastante: o Jetty. Apesar de sempre ter usado o&lt;br&gt;Tomcat para produ&amp;#231;&amp;#227;o, esse servlet container sempre chamou minha&lt;br&gt;aten&amp;#231;&amp;#227;o, principalemente pela simplicidade, rapidez e robustez. Agora,&lt;br&gt;Philip McCarthy trouxe novos detalhes sobre o Comet, novo paradigma&lt;br&gt;que vem surgindo e que, brevemente, fara parte do nosso cotidiano.&lt;br&gt;Esperem at&amp;#233; o Google come&amp;#231;ar a usar, hehehe...&lt;br&gt;O DWR tamb&amp;#233;m &amp;#233; um framework/facilitador para programa&amp;#231;&amp;#227;o em ajax que&lt;br&gt;eu uso cotidianamente e gosto muito. Ainda nao trabalhei com &amp;quot;reverse&lt;br&gt;ajax&amp;quot;, mas acho que ser&amp;#225; o novo hype da net.&lt;p&gt;O excelente artigo pode ser lido em:&lt;br&gt;&lt;a href="http://www.ibm.com/developerworks/java/library/j-jettydwr/index.html?ca=drs"&gt;http://www.ibm.com/developerworks/java/library/j-jettydwr/index.html?ca=drs&lt;/a&gt;-&lt;p&gt;Recomendo!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2528339186033885182-3653282265042236650?l=infoessencial.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoessencial.blogspot.com/feeds/3653282265042236650/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2528339186033885182&amp;postID=3653282265042236650' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2528339186033885182/posts/default/3653282265042236650'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2528339186033885182/posts/default/3653282265042236650'/><link rel='alternate' type='text/html' href='http://infoessencial.blogspot.com/2007/07/continuations.html' title='Continuations'/><author><name>Diego Fincatto</name><uri>http://www.blogger.com/profile/09407500247276167622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2528339186033885182.post-9021787058806816604</id><published>2007-07-06T09:20:00.001-03:00</published><updated>2007-07-06T09:20:52.503-03:00</updated><title type='text'>Wallpapers de alta resolucao</title><content type='html'>Para quem gosta de wallpapers, uma sugest&amp;#227;o de um site muito legal:&lt;p&gt;&lt;a href="http://interfacelift.com/wallpaper/index.php?w=1280&amp;amp;h=1024&amp;amp;sort=ratings&amp;amp;id=&amp;amp;page=21"&gt;http://interfacelift.com/wallpaper/index.php?w=1280&amp;amp;h=1024&amp;amp;sort=ratings&amp;amp;id=&amp;amp;page=21&lt;/a&gt;&lt;p&gt;Dica do Fernando ;)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2528339186033885182-9021787058806816604?l=infoessencial.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoessencial.blogspot.com/feeds/9021787058806816604/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2528339186033885182&amp;postID=9021787058806816604' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2528339186033885182/posts/default/9021787058806816604'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2528339186033885182/posts/default/9021787058806816604'/><link rel='alternate' type='text/html' href='http://infoessencial.blogspot.com/2007/07/wallpapers-de-alta-resolucao.html' title='Wallpapers de alta resolucao'/><author><name>Diego Fincatto</name><uri>http://www.blogger.com/profile/09407500247276167622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2528339186033885182.post-4942119906598897577</id><published>2007-06-28T14:46:00.001-03:00</published><updated>2007-07-25T09:06:04.097-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Apple/Mac'/><title type='text'>Itens duplicados e quadrado preto ao redor do finder?</title><content type='html'>Depois de instalar um programa no mac, meu micro ficou um tanto quanto estranho.&lt;br /&gt;&lt;br /&gt;Botões de reiniciar e desligar ficaram duplicados e no finder sempre ficava um quadrado preto ao redor do que estava selecionado. Sei que isto tem relação com a instalação de programas, mas não de um específico. Depois de algumas pesquisas, encontrei a solução para tal.&lt;br /&gt;&lt;br /&gt;Abra o terminal e digite: "sudo chmod 757 ~/" digita a senha e ok. &lt;span style="font-style: italic;"&gt;(isto forçará uma permissão incorreta).&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Depois, no utilitário de disco, repare as permissões do disco.&lt;br /&gt;&lt;br /&gt;pronto, problema resolvido!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2528339186033885182-4942119906598897577?l=infoessencial.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoessencial.blogspot.com/feeds/4942119906598897577/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2528339186033885182&amp;postID=4942119906598897577' title='4 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2528339186033885182/posts/default/4942119906598897577'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2528339186033885182/posts/default/4942119906598897577'/><link rel='alternate' type='text/html' href='http://infoessencial.blogspot.com/2007/06/itens-duplicados-e-quadrado-preto-ao.html' title='Itens duplicados e quadrado preto ao redor do finder?'/><author><name>Edio Farias</name><uri>http://www.blogger.com/profile/13392501974569603027</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2528339186033885182.post-1079667226878153133</id><published>2007-06-27T08:54:00.000-03:00</published><updated>2007-06-27T09:01:53.607-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='geral'/><title type='text'>Google sugerindo sites?</title><content type='html'>Pois é... quem sabe até tenha demorado um pouco para sair isto, mas  há um novo "serviço", que na verdade é mais um adendo ao iGoogle,  onde, com base numa análise de suas buscas anteriores, são sugeridos  links para notícias, buscas, páginas, grupos, gadgets e vídeos.&lt;br /&gt;O interessante é que, além disto, ele diz porquê fez aquela sugestão.&lt;p&gt;Bom, para ativar isto basta incluir uma nova guia e o nome dela deve  ser "Recommendations". Deixe a opção estou com sorte marcada... e  pronto! O conteúdo será adicionado e atualizado diariamente.&lt;/p&gt;&lt;p&gt;Fonte: &lt;a href="http://googleblog.blogspot.com/2007/04/searching-without-query.html"&gt;http://googleblog.blogspot.com/2007/04/searching-without&lt;/a&gt;&lt;a href="http://googleblog.blogspot.com/2007/04/searching-without-query.html"&gt;-query.html&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2528339186033885182-1079667226878153133?l=infoessencial.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoessencial.blogspot.com/feeds/1079667226878153133/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2528339186033885182&amp;postID=1079667226878153133' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2528339186033885182/posts/default/1079667226878153133'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2528339186033885182/posts/default/1079667226878153133'/><link rel='alternate' type='text/html' href='http://infoessencial.blogspot.com/2007/06/google-sugerindo-sites.html' title='Google sugerindo sites?'/><author><name>Fernando Pinheiro</name><uri>http://www.blogger.com/profile/17774225062873046024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://lh3.ggpht.com/_fR0a187auhk/SaJawlRiowI/AAAAAAAAEW4/EAU0bu9beIs/Photo%25203.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2528339186033885182.post-985265022464006571</id><published>2007-06-26T14:16:00.001-03:00</published><updated>2007-06-26T14:16:12.846-03:00</updated><title type='text'>Icones em tela no gnome</title><content type='html'>Para remover (ou selecionar) os &amp;#237;cones que aparecem na tela do gnome,&lt;br&gt;proceda da seguinte maneira:&lt;br&gt;-No terminal, digite:&lt;br&gt;gconf-editor&lt;p&gt;Na janela que abra, no menu a esquerda, selecione&lt;br&gt;&amp;quot;apps&amp;gt;nautilus&amp;gt;desktop&amp;quot;. A direita aparecer&amp;#225; a lista de itens a serem&lt;br&gt;exibidos.&lt;p&gt;Dica do pessoal da Tux Masters, acess&amp;#237;vel em:&lt;br&gt;&lt;a href="http://tuxmasters.blogspot.com/2007/06/retirando-os-cones-do-sistema-no-gnome.html"&gt;http://tuxmasters.blogspot.com/2007/06/retirando-os-cones-do-sistema-no-gnome.html&lt;/a&gt;&lt;br&gt;O blog tem umas dicas bem legais. Recomendo uma navega&amp;#231;&amp;#227;o por ele ;)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2528339186033885182-985265022464006571?l=infoessencial.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoessencial.blogspot.com/feeds/985265022464006571/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2528339186033885182&amp;postID=985265022464006571' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2528339186033885182/posts/default/985265022464006571'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2528339186033885182/posts/default/985265022464006571'/><link rel='alternate' type='text/html' href='http://infoessencial.blogspot.com/2007/06/icones-em-tela-no-gnome.html' title='Icones em tela no gnome'/><author><name>Diego Fincatto</name><uri>http://www.blogger.com/profile/09407500247276167622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2528339186033885182.post-4052624642620347562</id><published>2007-06-22T10:02:00.000-03:00</published><updated>2007-06-22T10:02:55.285-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Apple/Mac'/><title type='text'>Enfim um MP3 player para Mac!</title><content type='html'>Após muita busca e dores de cabeça... um MP3 player para Mac! Cog -- &lt;a href="http://cogx.org/"&gt;http://cogx.org/&lt;/a&gt; -- é simples e rápido. O que ele faz? Toca música. E só!&lt;br /&gt;&lt;p&gt;Não fica tentando copiar para seu HD, tampouco buscar informações  sobre a música ou me oferecer o álbum para a compra. Eu só quero  escutar a música.&lt;/p&gt;&lt;p&gt;iTunes, seus dias estão contados...&lt;/p&gt;&lt;p&gt;Valeu Mário pela dica.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2528339186033885182-4052624642620347562?l=infoessencial.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoessencial.blogspot.com/feeds/4052624642620347562/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2528339186033885182&amp;postID=4052624642620347562' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2528339186033885182/posts/default/4052624642620347562'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2528339186033885182/posts/default/4052624642620347562'/><link rel='alternate' type='text/html' href='http://infoessencial.blogspot.com/2007/06/enfim-um-mp3-player-para-mac.html' title='Enfim um MP3 player para Mac!'/><author><name>Fernando Pinheiro</name><uri>http://www.blogger.com/profile/17774225062873046024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://lh3.ggpht.com/_fR0a187auhk/SaJawlRiowI/AAAAAAAAEW4/EAU0bu9beIs/Photo%25203.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2528339186033885182.post-326654342640015027</id><published>2007-06-04T01:37:00.001-03:00</published><updated>2007-06-04T01:37:19.364-03:00</updated><title type='text'>Partições no Ubuntu Feisty</title><content type='html'>Bom, creio que todo mundo ja viu que o ubuntu usa um raio de UUID para&lt;br&gt;identificar os discos. Entao, agora a pouco tive que reformatar uma&lt;br&gt;particao com outro sistema de arquivos, e eis que ela nao monta mais&lt;br&gt;como deveria (como antigamente, diga-se de passagem). Eis que o google&lt;br&gt;me deu a solu&amp;#231;&amp;#227;o: o comando ls -l /dev/disk/by-uuid/ exibe os&lt;br&gt;discos/particoes com seu devido(maldito) UUID. Entao &amp;#233; soh alterar no&lt;br&gt;fstab e rodar um &amp;quot;sudo mount -a&amp;quot; e pronto, sistema &amp;quot;nos conforme&amp;quot;&lt;br&gt;novamente!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2528339186033885182-326654342640015027?l=infoessencial.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoessencial.blogspot.com/feeds/326654342640015027/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2528339186033885182&amp;postID=326654342640015027' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2528339186033885182/posts/default/326654342640015027'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2528339186033885182/posts/default/326654342640015027'/><link rel='alternate' type='text/html' href='http://infoessencial.blogspot.com/2007/06/parties-no-ubuntu-feisty.html' title='Partições no Ubuntu Feisty'/><author><name>Diego Fincatto</name><uri>http://www.blogger.com/profile/09407500247276167622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2528339186033885182.post-7546901661487540725</id><published>2007-05-29T17:39:00.001-03:00</published><updated>2007-05-29T17:41:01.565-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><title type='text'>Incrementando a performance do seu Debian/Ubuntu</title><content type='html'>Buenas tch&amp;#234;, depois de algum tempo brigando com a quantidade de&lt;br&gt;memoria que o novo Ubuntu Feisty devora (e j&amp;#225; ter mudado pro Debian&lt;br&gt;Etch em definitivo em casa), posto aqui algumas dicas que ajudam quem&lt;br&gt;usa o seu SO ao extremo.&lt;p&gt;A primeira dica &amp;#233; para o boot concorrente e se aplica a quem tem&lt;br&gt;processadores multi-cores.&lt;br&gt;Editando o arquivo /etc/init.d/rc, procure pela string CONCURRENCY que&lt;br&gt;deve estar assim: CONCURRENCY=none. Altere ela pra CONCURRENCY=shell.&lt;br&gt;Pronto, mais f&amp;#225;cil que tirar doce da boca de pi&amp;#225; pan&amp;#231;udo.&lt;p&gt;A segunda, esta sim violenta, principalmente pra quem passa o dia com&lt;br&gt;o Tomcat recebendo hot-deploys (pra quem nao sabe, o infame nao libera&lt;br&gt;a memoria que usa). O sistema, apos algum tempo de uso, insiste em&lt;br&gt;jogar coisas pro swap, mesmo ainda tendo alguns MB de memoria livres.&lt;br&gt;Pra acabar com a palha&amp;#231;ada, edite o arquivo /etc/sysctl.conf e&lt;br&gt;adicione a seguinte linha ao final:&lt;br&gt;vm.swappiness=0&lt;p&gt;Isso far&amp;#225; com que o sistema nao jogue dados pra swap, e evite ao&lt;br&gt;m&amp;#225;ximo usa-la. Mas, como nem tudo sao flores, se vc nao tem muita&lt;br&gt;memoria (tem apenas uma vaga lembran&amp;#231;a) nao seja t&amp;#227;o agressivo com o&lt;br&gt;sistema: Ele aceita valores entre 0 e 100. D&amp;#234; alguma alegria pra ele!&lt;br&gt;;)&lt;p&gt;&lt;br&gt;As dicas postadas aqui foram retiradas do artigo &amp;quot;Tweak ubuntu for&lt;br&gt;speed&amp;quot;, que contem, alem dessas dicas, dicas que sao um pouco mais&lt;br&gt;arriscadas, que afetam o sistema de arquivos do seu sistema. Se vc for&lt;br&gt;corajoso (eu fiz, me ferrei e voltei) pode mandar bala.&lt;br&gt;Veja o artigo completo em:&lt;br&gt;&lt;a href="http://tvease.net/wiki/index.php?title=Tweak_ubuntu_for_speed"&gt;http://tvease.net/wiki/index.php?title=Tweak_ubuntu_for_speed&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2528339186033885182-7546901661487540725?l=infoessencial.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoessencial.blogspot.com/feeds/7546901661487540725/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2528339186033885182&amp;postID=7546901661487540725' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2528339186033885182/posts/default/7546901661487540725'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2528339186033885182/posts/default/7546901661487540725'/><link rel='alternate' type='text/html' href='http://infoessencial.blogspot.com/2007/05/incrementando-performance-do-seu.html' title='Incrementando a performance do seu Debian/Ubuntu'/><author><name>Diego Fincatto</name><uri>http://www.blogger.com/profile/09407500247276167622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2528339186033885182.post-3925232698712791812</id><published>2007-05-15T15:24:00.000-03:00</published><updated>2007-05-15T15:37:59.100-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Apple/Mac'/><title type='text'>Montando unidades de rede Windows (samba) no Mac OS X</title><content type='html'>Por vários dias tive problemas para acessar a rede, pois o PC o qual  eu queria conectar não aparecia em rede (nem o grupo do mesmo, sendo  que ele era o único). Alterar o grupo não era a melhor opção, pois  outras máquinas acessavam o mesmo perfeitamente!&lt;p&gt;Por burrice minha, não vi o menu do Finder: Ir e então Conectar ao  servidor... igual ao do Ubuntu! As vezes me mato de vergonha...&lt;/p&gt;&lt;p&gt;Bom, a página &lt;a href="http://lifehacker.com/software/mac-os-x/how-to-mount-a-windows-shared-folder-on-your-mac-247148.php"&gt;http://lifehacker.com/software/mac-os-x/how-to-mount-a&lt;/a&gt;&lt;a href="http://lifehacker.com/software/mac-os-x/how-to-mount-a-windows-shared-folder-on-your-mac-247148.php"&gt;-windows-shared-folder-on-your-mac-247148.php&lt;/a&gt;, além de me resolver  isto, ainda deu a dica para auto montar ao iniciar, a qual foi muito  bem vinda!&lt;/p&gt;&lt;p&gt;É, as vezes tendemos a complicar o que está simples...&lt;/p&gt;&lt;p&gt;(P.S.: algum dia já falei que odeio alguns programas da Apple? O  iTunes é o pior player que já vi, desde a época de windows até agora  no Mac, e o Safari, enquanto fazia este post, simplesmente travou!)&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2528339186033885182-3925232698712791812?l=infoessencial.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoessencial.blogspot.com/feeds/3925232698712791812/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2528339186033885182&amp;postID=3925232698712791812' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2528339186033885182/posts/default/3925232698712791812'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2528339186033885182/posts/default/3925232698712791812'/><link rel='alternate' type='text/html' href='http://infoessencial.blogspot.com/2007/05/montando-unidades-de-rede-windows-samba.html' title='Montando unidades de rede Windows (samba) no Mac OS X'/><author><name>Fernando Pinheiro</name><uri>http://www.blogger.com/profile/17774225062873046024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://lh3.ggpht.com/_fR0a187auhk/SaJawlRiowI/AAAAAAAAEW4/EAU0bu9beIs/Photo%25203.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2528339186033885182.post-4445655941322178593</id><published>2007-05-14T15:23:00.001-03:00</published><updated>2007-05-29T17:41:15.799-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><title type='text'>Beryl + Netbeans</title><content type='html'>Ultimamente tenho perdido a paciencia com o beryl, pois, toda a vez&lt;br&gt;que eu abria o netbeans, uma tela cinza aparecia, me obrigando a&lt;br&gt;iniciar o gerenciador de janelas Metacity e depois o beryl novamente.&lt;br&gt;Como quase tudo na vida de um usuario linux sao flores (ficou meio&lt;br&gt;gay, mas tudo bem), h&amp;#225; uma solu&amp;#231;&amp;#227;o, e &amp;#233; simples como tirar uma chuleta&lt;br&gt;da boca de um pittbul com um dente cariado.&lt;br&gt;Simplesmente adicione a linha abaixo no final do arquivo /etc/environment:&lt;br&gt;AWT_TOOLKIT=&amp;quot;MToolkit&amp;quot;&lt;p&gt;&lt;br&gt;E voil&amp;#224;!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2528339186033885182-4445655941322178593?l=infoessencial.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoessencial.blogspot.com/feeds/4445655941322178593/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2528339186033885182&amp;postID=4445655941322178593' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2528339186033885182/posts/default/4445655941322178593'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2528339186033885182/posts/default/4445655941322178593'/><link rel='alternate' type='text/html' href='http://infoessencial.blogspot.com/2007/05/beryl-netbeans.html' title='Beryl + Netbeans'/><author><name>Diego Fincatto</name><uri>http://www.blogger.com/profile/09407500247276167622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2528339186033885182.post-867300103379103477</id><published>2007-05-09T10:22:00.001-03:00</published><updated>2007-05-29T17:41:24.451-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><title type='text'>Reinstalação completa no Debian (Ubuntu)</title><content type='html'>Esta dica serve, principalmente, para quando precisarmos atualizar o sistema.&lt;br&gt;Fazendo uma atualiza&amp;#231;&amp;#227;o limpa, perde-se os softwares instalados (as&lt;br&gt;configura&amp;#231;&amp;#245;es presume-se que o usuario tenha numa parti&amp;#231;&amp;#227;o&lt;br&gt;(/home/usuario) a parte. Mas h&amp;#225; uma maneira de guardarmos a lista de&lt;br&gt;sofwares que temos instalados para posterior reinstala&amp;#231;&amp;#227;o&lt;br&gt;automatizada, seguindo os dois simples passos abaixo.&lt;p&gt;No seu sistema condenado, rode o seguinde comando:&lt;br&gt;dpkg --get-selections | grep -v deinstall &amp;gt; ProgramasInstalados.bkp&lt;p&gt;Apos a reinstala&amp;#231;&amp;#227;o do sistema, restaure seus programas com o comando:&lt;br&gt;dpkg --set-selections &amp;lt; ProgramasInstalados.bkp&lt;p&gt;E pronto! Sistema novo!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2528339186033885182-867300103379103477?l=infoessencial.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoessencial.blogspot.com/feeds/867300103379103477/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2528339186033885182&amp;postID=867300103379103477' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2528339186033885182/posts/default/867300103379103477'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2528339186033885182/posts/default/867300103379103477'/><link rel='alternate' type='text/html' href='http://infoessencial.blogspot.com/2007/05/reinstalao-completa-no-debian-ubuntu.html' title='Reinstalação completa no Debian (Ubuntu)'/><author><name>Diego Fincatto</name><uri>http://www.blogger.com/profile/09407500247276167622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2528339186033885182.post-447205916053620191</id><published>2007-05-08T18:42:00.000-03:00</published><updated>2007-05-09T09:05:19.630-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='NetBeans'/><title type='text'>Reformatar código não funcionando</title><content type='html'>Hoje estava trabalhando em um fonte e necessitei reformatá-lo, quando me deparei que esta função não estava fazendo nada, mesmo quando ia pelo menu (achei inicialmente que existia algum conflito com meus atalhos).&lt;br /&gt;&lt;br /&gt;A dica veio do Diego, onde o plugin "JavaScript Editor", versão 0.2, causa esta incompatibilidade.&lt;br /&gt;&lt;br /&gt;Apenas desabilitá-lo e o problema foi resolvido. Interessante foi não localizar problemas similares com outros usuários... fica aqui o registro.&lt;br /&gt;&lt;br /&gt;Já tive este plugin funcionando outras vezes, provavelmente deve ser alguma compatibilidade com o idioma português... irei testar em outro momento.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Alteração:&lt;/span&gt; precisei mexer em um JS e então habilitei o plugin. Agora ambos funcionam... vai entender...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2528339186033885182-447205916053620191?l=infoessencial.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoessencial.blogspot.com/feeds/447205916053620191/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2528339186033885182&amp;postID=447205916053620191' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2528339186033885182/posts/default/447205916053620191'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2528339186033885182/posts/default/447205916053620191'/><link rel='alternate' type='text/html' href='http://infoessencial.blogspot.com/2007/05/reformatar-cdigo-no-funcionando.html' title='Reformatar código não funcionando'/><author><name>Fernando Pinheiro</name><uri>http://www.blogger.com/profile/17774225062873046024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://lh3.ggpht.com/_fR0a187auhk/SaJawlRiowI/AAAAAAAAEW4/EAU0bu9beIs/Photo%25203.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2528339186033885182.post-5869703490854258646</id><published>2007-05-04T00:39:00.000-03:00</published><updated>2007-05-04T00:43:29.719-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><title type='text'>tirando beep do terminal linux (tty)</title><content type='html'>Para silenciar o seu terminal (ele faz um barulhinho chato quando usamos tab) edite o arquivo /etc/inputrc e adicione a seguinte linha:&lt;br /&gt;&lt;blockquote&gt;&lt;strong&gt; set bell-style none&lt;br /&gt;&lt;blockquote&gt;&lt;/blockquote&gt;&lt;/strong&gt;&lt;/blockquote&gt;É possivel que ela esteja comentada, necessitando somente descomentá-la.&lt;br /&gt;Reinicie o terminal e voilá!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2528339186033885182-5869703490854258646?l=infoessencial.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoessencial.blogspot.com/feeds/5869703490854258646/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2528339186033885182&amp;postID=5869703490854258646' title='2 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2528339186033885182/posts/default/5869703490854258646'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2528339186033885182/posts/default/5869703490854258646'/><link rel='alternate' type='text/html' href='http://infoessencial.blogspot.com/2007/05/tirando-beep-do-terminal-linux-tty.html' title='tirando beep do terminal linux (tty)'/><author><name>Diego Fincatto</name><uri>http://www.blogger.com/profile/09407500247276167622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2528339186033885182.post-4946966157686878168</id><published>2007-05-03T18:21:00.000-03:00</published><updated>2007-07-11T08:32:10.478-03:00</updated><title type='text'>Implementando um sistema de login com JAAS no Tomcat</title><content type='html'>&lt;span style="font-weight: bold;font-size:180%;" &gt;O que é?&lt;/span&gt;&lt;br /&gt;O JAAS (Java Authentication and Authorization Service) é uma API para login e controle de acesso de usuários.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:180%;" &gt;Proposta&lt;/span&gt;&lt;br /&gt;Implementar um sistema de autenticação personalizado, pois os oferecidos não se adequavam a proposta inicial do sistema.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:180%;" &gt;Problemas Encontrados&lt;/span&gt;&lt;br /&gt;Como fazer a comunicação entre o sistema, que está rodando na web com o módulo de login, que está rodando por baixo do Tomcat.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:180%;" &gt;Implementação&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:180%;"&gt;&lt;span style="font-size:100%;"&gt;O módulo de login foi organizando com a seguinte estrutura:&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size:180%;"&gt;&lt;span style="font-size:100%;"&gt;imagemfilmes.auth -&gt; Pacote que contém meu módulo de login&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:180%;"&gt;&lt;span style="font-size:100%;"&gt;imagemfilmes.auth.obj -&gt; Pacote que contém meus objetos auxiliares&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:180%;"&gt;&lt;span style="font-size:100%;"&gt;imagemfilmes.auth.principals -&gt; Pacote que contém as classes extendidas de Principals&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-size:180%;"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-size:130%;"&gt;IFLoginModule.java&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;/**&lt;br /&gt;* Modulo de login da ImagemFilmes.&lt;br /&gt;* @author Diego Fincatto&lt;br /&gt;* @since 1.0&lt;br /&gt;*/&lt;br /&gt;public class IFLoginModule implements LoginModule {&lt;br /&gt;&lt;br /&gt;  private boolean commitSucedido = false;&lt;br /&gt;  private boolean operacaoSucedida = false;&lt;br /&gt;&lt;br /&gt;  private User usuario;&lt;br /&gt;  private Connection connection;&lt;br /&gt;  private Banco banco;&lt;br /&gt;&lt;br /&gt;  protected Subject subject;&lt;br /&gt;  protected CallbackHandler callbackHandler;&lt;br /&gt;  protected Map sharedState;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  /**&lt;br /&gt;   * Metodo que faz a leitura dos parametros passados.&lt;br /&gt;   * @param subject Subject.&lt;br /&gt;   * @param callbackHandler CallbackHandler.&lt;br /&gt;   * @param sharedState SharedState.&lt;br /&gt;   * @param options Mapa com as opcoes definidas no login.conf.&lt;br /&gt;   */&lt;br /&gt;  public void initialize(Subject subject, CallbackHandler callbackHandler, Map sharedState, Map options) {&lt;br /&gt;      this.subject = subject;&lt;br /&gt;      this.callbackHandler = callbackHandler;&lt;br /&gt;      this.sharedState = sharedState;&lt;br /&gt;   &lt;br /&gt;      //cria um novo banco&lt;br /&gt;      Banco banco = new Banco();&lt;br /&gt;      banco.setSqlUser((String) options.get("sqlUser"));&lt;br /&gt;      banco.setSqlRoles((String) options.get("sqlRoles"));&lt;br /&gt;      banco.setBdDriver((String) options.get("bdDriver"));&lt;br /&gt;      banco.setBdUser((String) options.get("bdUser"));&lt;br /&gt;      banco.setBdPass((String) options.get("bdPass"));&lt;br /&gt;      banco.setBdURL((String) options.get("bdURL"));&lt;br /&gt;      this.setBanco(banco);&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  /**&lt;br /&gt;   * Metodo que efetua o login do usuario.&lt;br /&gt;   * @throws javax.security.auth.login.LoginException Caso nao pode efetuar o&lt;br /&gt;   * login.&lt;br /&gt;   * @return true.&lt;br /&gt;   */&lt;br /&gt;  public boolean login() throws LoginException {&lt;br /&gt;      Connection conn = null;&lt;br /&gt;      try {&lt;br /&gt;          conn = this.getConnection();&lt;br /&gt;       &lt;br /&gt;          // recupera o login e senha informados no form&lt;br /&gt;          Usuario usrCallBack = this.buscaUsuarioCallback(this.callbackHandler);&lt;br /&gt;       &lt;br /&gt;          // valida o usuario&lt;br /&gt;          this.usuario = this.validaUsuario(conn, banco, usrCallBack);&lt;br /&gt;      } catch (ClassNotFoundException cnfe) {&lt;br /&gt;          this.operacaoSucedida = false;&lt;br /&gt;          throw new LoginException("Erro ao conectar com o banco: " + cnfe.getMessage());&lt;br /&gt;      } catch (SQLException e) {&lt;br /&gt;          this.operacaoSucedida = false;&lt;br /&gt;          throw new LoginException("Erro ao obter conexao: " + e.getClass().getName() + ": " + e.getMessage());&lt;br /&gt;      } finally {&lt;br /&gt;          try {conn.close();} catch (SQLException e) {}&lt;br /&gt;      }&lt;br /&gt;   &lt;br /&gt;      // acidiona o usuario e roles no mapa de compartilhamento&lt;br /&gt;      this.sharedState.put("javax.security.auth.principal", this.usuario);&lt;br /&gt;      this.sharedState.put("javax.security.auth.roles", this.usuario.getRoles());&lt;br /&gt;   &lt;br /&gt;      //remove mensagem de erro&lt;br /&gt;      this.setMensagem(this.usuario.getName(), "");&lt;br /&gt;   &lt;br /&gt;      //retorna ok&lt;br /&gt;      return true;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  /**&lt;br /&gt;   * Metodo executado depois das funcoes de login e logout.&lt;br /&gt;   * @throws javax.security.auth.login.LoginException  Caso erro.&lt;br /&gt;   * @return true.&lt;br /&gt;   */&lt;br /&gt;  public boolean commit() throws LoginException {&lt;br /&gt;      // adiciona o usuario no principals&lt;br /&gt;      if (this.usuario != null &amp;&amp;amp; !subject.getPrincipals().contains(this.usuario)) {&lt;br /&gt;          subject.getPrincipals().add(this.usuario);&lt;br /&gt;      }&lt;br /&gt;   &lt;br /&gt;      // adiciona as roles no principals&lt;br /&gt;      if ( (this.usuario!=null) &amp;&amp;amp; (this.usuario.getRoles() != null) ){&lt;br /&gt;          for(Role role : this.usuario.getRoles()){&lt;br /&gt;              if (!subject.getPrincipals().contains(role)) {&lt;br /&gt;                  subject.getPrincipals().add(role);&lt;br /&gt;              }&lt;br /&gt;          }&lt;br /&gt;      }&lt;br /&gt;   &lt;br /&gt;      //seta o commit como feito&lt;br /&gt;      this.commitSucedido = true;&lt;br /&gt;   &lt;br /&gt;      //retorna ok&lt;br /&gt;      return true;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  /**&lt;br /&gt;   * Aborta alguma operacao.&lt;br /&gt;   * @throws javax.security.auth.login.LoginException Caso erro.&lt;br /&gt;   * @return true.&lt;br /&gt;   */&lt;br /&gt;  public boolean abort() throws LoginException {&lt;br /&gt;      if (!this.operacaoSucedida) {&lt;br /&gt;          return false;&lt;br /&gt;      } else if (this.operacaoSucedida &amp;&amp;amp; !this.commitSucedido) {&lt;br /&gt;          this.operacaoSucedida = false;&lt;br /&gt;      } else {&lt;br /&gt;          this.operacaoSucedida = false;&lt;br /&gt;          this.logout();&lt;br /&gt;      }&lt;br /&gt;   &lt;br /&gt;      //limpa os dados da autenticacao&lt;br /&gt;      this.subject = null;&lt;br /&gt;      this.callbackHandler = null;&lt;br /&gt;      this.sharedState = null;&lt;br /&gt;      this.usuario.setRoles(new HashSet());&lt;br /&gt;   &lt;br /&gt;      //retorna o estado da operacao&lt;br /&gt;      return this.operacaoSucedida;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  /**&lt;br /&gt;   * Metodo que executa logout no sistema.&lt;br /&gt;   * @throws javax.security.auth.login.LoginException Caso erro.&lt;br /&gt;   * @return true.&lt;br /&gt;   */&lt;br /&gt;  public boolean logout() throws LoginException {&lt;br /&gt;      // remove o usuario e as roles do principals&lt;br /&gt;      subject.getPrincipals().clear();&lt;br /&gt;   &lt;br /&gt;      //retorna ok&lt;br /&gt;      return true;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  /**&lt;br /&gt;   * Este eh o metodo responsavel por validar o usuario no logon.&lt;br /&gt;   * Se conseguir validar, ja busca as Roles associadas a ele.&lt;br /&gt;   * @param conn Conexao com banco.&lt;br /&gt;   * @param _usuario Usuario a ser validado.&lt;br /&gt;   * @throws javax.security.auth.login.LoginException Caso nao consiga validar&lt;br /&gt;   * o usuário.&lt;br /&gt;   * @return true.&lt;br /&gt;   */&lt;br /&gt;  private User validaUsuario(Connection conn, Banco _banco, Usuario _usuario) throws LoginException {&lt;br /&gt;      User retValue = null;&lt;br /&gt;      PreparedStatement pstmt = null;&lt;br /&gt;      ResultSet rs = null;&lt;br /&gt;      try {&lt;br /&gt;          pstmt = conn.prepareStatement(_banco.getSqlUser());&lt;br /&gt;          pstmt.setString(1, _usuario.getLogin());&lt;br /&gt;       &lt;br /&gt;          //executa a query&lt;br /&gt;          rs = pstmt.executeQuery();&lt;br /&gt;       &lt;br /&gt;          //verifica se o usuario existe na tabela&lt;br /&gt;          if (rs.next()) {&lt;br /&gt;              String senhaBanco = rs.getString(1);&lt;br /&gt;           &lt;br /&gt;              //verifica se as senhas batem&lt;br /&gt;              if (senhaBanco.equals(this.geraMD5(_usuario.getSenha()))){&lt;br /&gt;                  retValue = new User(_usuario.getLogin());&lt;br /&gt;                  retValue.setRoles(this.recuperaRoles(conn, _banco, _usuario));&lt;br /&gt;              } else {&lt;br /&gt;                  this.setMensagem(_usuario.getLogin(), "Senha Invalida!");&lt;br /&gt;                  throw new LoginException("Senha Invalida!");&lt;br /&gt;              }&lt;br /&gt;          } else {&lt;br /&gt;              this.operacaoSucedida = false;&lt;br /&gt;              this.setMensagem(_usuario.getLogin(), "Usuario nao localizado!");&lt;br /&gt;              throw new LoginException("Usuario nao localizado!");&lt;br /&gt;          }&lt;br /&gt;       &lt;br /&gt;          //atualiza o numero de logins efetuados&lt;br /&gt;          StringBuilder sql = new StringBuilder();&lt;br /&gt;          sql.append("UPDATE usuario_site ");&lt;br /&gt;          sql.append("SET acessonum = acessonum+1 ");&lt;br /&gt;          sql.append("WHERE email = ? ");&lt;br /&gt;       &lt;br /&gt;          pstmt = conn.prepareStatement(sql.toString());&lt;br /&gt;          pstmt.setString(1, _usuario.getLogin());&lt;br /&gt;          pstmt.executeUpdate();&lt;br /&gt;       &lt;br /&gt;          //retorna o usuario&lt;br /&gt;          return retValue;&lt;br /&gt;      } catch (SQLException e) {&lt;br /&gt;          this.operacaoSucedida = false;&lt;br /&gt;          throw new LoginException("Erro de SQL");&lt;br /&gt;      } finally {&lt;br /&gt;          try {rs.close();} catch (Exception e) {}&lt;br /&gt;          try {pstmt.close();} catch (Exception e) {}&lt;br /&gt;      }&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  /**&lt;br /&gt;   * Metodo que recupera as roles do usuario.&lt;br /&gt;   *&lt;br /&gt;   * @return true.&lt;br /&gt;   * @param _banco Banco a ser utilizado.&lt;br /&gt;   * @param conn Conexao com o banco.&lt;br /&gt;   * @param _usuario Usuario a ser pesquisado.&lt;br /&gt;   * @throws javax.security.auth.login.LoginException Caso erro.&lt;br /&gt;   */&lt;br /&gt;  public Set&lt;role&gt; recuperaRoles(Connection conn, Banco _banco, Usuario _usuario) throws LoginException {&lt;br /&gt;      Set&lt;role&gt; retValue = new HashSet&lt;role&gt;();&lt;br /&gt;      PreparedStatement statement = null;&lt;br /&gt;      ResultSet rs = null;&lt;br /&gt;      try {&lt;br /&gt;          statement = conn.prepareStatement(_banco.getSqlRoles());&lt;br /&gt;          statement.setString(1, _usuario.getLogin());&lt;br /&gt;          rs = statement.executeQuery();&lt;br /&gt;       &lt;br /&gt;          //percorre os resultados&lt;br /&gt;          while (rs.next()) {&lt;br /&gt;              retValue.add(new Role(rs.getString(1)));&lt;br /&gt;          }&lt;br /&gt;       &lt;br /&gt;          //adiciona roles estaticas&lt;br /&gt;      } catch (SQLException e) {&lt;br /&gt;          this.operacaoSucedida = false;&lt;br /&gt;          this.setMensagem(_usuario.getLogin(), "Erro ao recuperar roles!");&lt;br /&gt;          throw new LoginException("Erro ao recuperar roles!");&lt;br /&gt;      } finally {&lt;br /&gt;          try {rs.close();} catch (Exception e) {}&lt;br /&gt;          try {statement.close();} catch (Exception e) {}&lt;br /&gt;      }&lt;br /&gt;   &lt;br /&gt;      //retorna&lt;br /&gt;      return retValue;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  /**&lt;br /&gt;   * Este eh o metodo que pega o login e senha informados, independente do&lt;br /&gt;   * metodo usado para a autenticacao.&lt;br /&gt;   *&lt;br /&gt;   * @param _callback Callback de onde virao as informacoes.&lt;br /&gt;   * @throws javax.security.auth.login.LoginException Caso erro.&lt;br /&gt;   * @return Usuario.&lt;br /&gt;   */&lt;br /&gt;  protected  Usuario buscaUsuarioCallback(CallbackHandler _callback) throws LoginException {&lt;br /&gt;      Usuario retValue = null;&lt;br /&gt;      if (_callback == null){&lt;br /&gt;          throw new LoginException("Nao foi encontrado um CallbackHandler!");&lt;br /&gt;      }&lt;br /&gt;   &lt;br /&gt;      //cria um array de calback para pegar nome de usuario e senha&lt;br /&gt;      Callback[] callbacks = new Callback[2];&lt;br /&gt;      callbacks[0] = new NameCallback("Login");&lt;br /&gt;      callbacks[1] = new PasswordCallback("Senha", false);&lt;br /&gt;   &lt;br /&gt;      try {&lt;br /&gt;          //pega o callback&lt;br /&gt;          _callback.handle(callbacks);&lt;br /&gt;          //cria um usuario&lt;br /&gt;          retValue = new Usuario();&lt;br /&gt;          retValue.setLogin(((NameCallback) callbacks[0]).getName());&lt;br /&gt;          retValue.setSenha(new String(((PasswordCallback) callbacks[1]).getPassword()));&lt;br /&gt;       &lt;br /&gt;          //limpa a senha&lt;br /&gt;          ((PasswordCallback) callbacks[1]).clearPassword();&lt;br /&gt;      } catch (java.io.IOException ioe) {&lt;br /&gt;          throw new LoginException(ioe.toString());&lt;br /&gt;      } catch (UnsupportedCallbackException uce) {&lt;br /&gt;          throw new LoginException(uce.getCallback().toString() + " nao disponivel!");&lt;br /&gt;      }&lt;br /&gt;   &lt;br /&gt;      //retorna o usuario&lt;br /&gt;      return retValue;&lt;br /&gt;  }&lt;br /&gt; /**&lt;br /&gt;    * Funcao que gera MD5&lt;br /&gt;    * @param _str String que queremos gerar a md5&lt;br /&gt;    * @return retorna o md5 do parametro passado&lt;br /&gt;    */&lt;br /&gt;   public static String geraMD5(String _str){&lt;br /&gt;       String retValue = "";&lt;br /&gt;       try{&lt;br /&gt;           //cria uma instancia de Messagedigest&lt;br /&gt;           MessageDigest md5 = MessageDigest.getInstance("MD5");&lt;br /&gt;           //gera md5&lt;br /&gt;           md5.update(_str.getBytes());&lt;br /&gt;           byte[] hash = md5.digest();&lt;br /&gt;           StringBuffer hexString = new StringBuffer();&lt;br /&gt;           for (int i = 0; i &lt; retvalue =" hexString.toString();" connection ="="" connection =" DriverManager.getConnection(this.getBanco().getBdURL()," banco =" banco;"&gt;&lt;/role&gt;&lt;/role&gt;&lt;blockquote&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;role&gt;&lt;role&gt;&lt;role&gt;&lt;span style="font-size:130%;"&gt;Banco.java&lt;/span&gt;&lt;br /&gt;&lt;/role&gt;&lt;/role&gt;&lt;/role&gt;&lt;blockquote&gt;**&lt;br /&gt;* Classe que carrega as informacoes do banco de dados.&lt;br /&gt;* @author Diego Fincatto&lt;br /&gt;* @since 1.0&lt;br /&gt;*/&lt;br /&gt;public class Banco {&lt;br /&gt; &lt;br /&gt;   private String sqlUser;&lt;br /&gt;   private String sqlRoles;&lt;br /&gt;   private String bdDriver;&lt;br /&gt;   private String bdUser;&lt;br /&gt;   private String bdPass ;&lt;br /&gt;   private String bdURL;&lt;br /&gt; &lt;br /&gt;   /** Creates a new instance of Banco */&lt;br /&gt;   public Banco() {&lt;br /&gt;       this.setSqlUser("");&lt;br /&gt;       this.setSqlRoles("");&lt;br /&gt;       this.setBdDriver("");&lt;br /&gt;       this.setBdUser("");&lt;br /&gt;       this.setBdPass("");&lt;br /&gt;       this.setBdURL("");&lt;br /&gt;   }&lt;br /&gt; &lt;br /&gt;   public String getSqlUser() {&lt;br /&gt;       return sqlUser;&lt;br /&gt;   }&lt;br /&gt; &lt;br /&gt;   public void setSqlUser(String sqlUser) {&lt;br /&gt;       this.sqlUser = sqlUser;&lt;br /&gt;   }&lt;br /&gt; &lt;br /&gt;   public String getSqlRoles() {&lt;br /&gt;       return sqlRoles;&lt;br /&gt;   }&lt;br /&gt; &lt;br /&gt;   public void setSqlRoles(String sqlRoles) {&lt;br /&gt;       this.sqlRoles = sqlRoles;&lt;br /&gt;   }&lt;br /&gt; &lt;br /&gt;   public String getBdDriver() {&lt;br /&gt;       return bdDriver;&lt;br /&gt;   }&lt;br /&gt; &lt;br /&gt;   public void setBdDriver(String bdDriver) {&lt;br /&gt;       this.bdDriver = bdDriver;&lt;br /&gt;   }&lt;br /&gt; &lt;br /&gt;   public String getBdUser() {&lt;br /&gt;       return bdUser;&lt;br /&gt;   }&lt;br /&gt; &lt;br /&gt;   public void setBdUser(String bdUser) {&lt;br /&gt;       this.bdUser = bdUser;&lt;br /&gt;   }&lt;br /&gt; &lt;br /&gt;   public String getBdPass() {&lt;br /&gt;       return bdPass;&lt;br /&gt;   }&lt;br /&gt; &lt;br /&gt;   public void setBdPass(String bdPass) {&lt;br /&gt;       this.bdPass = bdPass;&lt;br /&gt;   }&lt;br /&gt; &lt;br /&gt;   public String getBdURL() {&lt;br /&gt;       return bdURL;&lt;br /&gt;   }&lt;br /&gt; &lt;br /&gt;   public void setBdURL(String bdURL) {&lt;br /&gt;       this.bdURL = bdURL;&lt;br /&gt;   }&lt;br /&gt; &lt;br /&gt;}&lt;/blockquote&gt;&lt;span style="font-size:130%;"&gt;Usuario.java&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-size:78%;"&gt;/**&lt;br /&gt;* Classe que representa um usuario.&lt;br /&gt;* @author Diego Fincatto&lt;br /&gt;* @since 1.0&lt;br /&gt;*/&lt;br /&gt;public class Usuario {&lt;br /&gt;   private String login;&lt;br /&gt;   private String senha;&lt;br /&gt; &lt;br /&gt;   /** Creates a new instance of Usuario */&lt;br /&gt;   public Usuario() {&lt;br /&gt;       this.setLogin("");&lt;br /&gt;       this.setSenha("");&lt;br /&gt;   }&lt;br /&gt; &lt;br /&gt;   public String getLogin() {&lt;br /&gt;       return login;&lt;br /&gt;   }&lt;br /&gt; &lt;br /&gt;   public void setLogin(String login) {&lt;br /&gt;       this.login = login;&lt;br /&gt;   }&lt;br /&gt; &lt;br /&gt;   public String getSenha() {&lt;br /&gt;       return senha;&lt;br /&gt;   }&lt;br /&gt; &lt;br /&gt;   public void setSenha(String senha) {&lt;br /&gt;       this.senha = senha;&lt;br /&gt;   }&lt;br /&gt; &lt;br /&gt;}&lt;/span&gt;&lt;/blockquote&gt;&lt;span style="font-size:130%;"&gt;Role.java&lt;/span&gt;&lt;br /&gt;&lt;blockquote  style="font-family:courier new;"&gt;&lt;span style="font-size:85%;"&gt;/**&lt;br /&gt;* Classe que representa uma role.&lt;br /&gt;* @author Diego Fincatto&lt;br /&gt;* @since 1.0&lt;br /&gt;*/&lt;br /&gt;public class Role implements Principal{&lt;br /&gt; &lt;br /&gt;   private String name;&lt;br /&gt; &lt;br /&gt;   public Role(String name){&lt;br /&gt;       this.name = name;&lt;br /&gt;   }&lt;br /&gt; &lt;br /&gt;   public String getName() {&lt;br /&gt;       return name;&lt;br /&gt;   }&lt;br /&gt;}&lt;/span&gt;&lt;/blockquote&gt;&lt;span style="font-size:130%;"&gt;User.java&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-size:78%;"&gt;&lt;span style="font-family:verdana;"&gt;/**&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt; * Classe que representa um usuario.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt; * @author Diego Fincatto&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt; * @since 1.0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt; */&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;public class User implements Principal {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;    private St&lt;span style="font-family:verdana;"&gt;ring name;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-family:verdana;"&gt;    private Set&lt;/span&gt;&lt;role&gt; roles;&lt;/role&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;    &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;    public User(String name){&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;        this.setName(name);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;    }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;    &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;    private void setName(String name) {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;        this.name = name;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;    }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;    &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;    public String getName() {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;        return name;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;    }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;    &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;    public Set&lt;role&gt; getRoles() {&lt;/role&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;        return roles;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;    }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;    &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;    public void setRoles(Set&lt;role&gt; roles) {&lt;/role&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;        this.roles = roles;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;    }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;&lt;span style="font-weight: bold;"&gt;Configurações Necessárias&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;Primeiramente, precisamos criar um arquivo onde dizemos para a API de autenticação do Java que dispomos de um sistema de login personalizado. O mesmo é feito criando o seguinte arquivo, chamado login.config:&lt;br /&gt;&lt;blockquote&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;/blockquote&gt;&lt;blockquote&gt;IF {&lt;br /&gt;      imagemfilmes.auth.IFLoginModule required&lt;br /&gt;              dataSourceName="imagem"&lt;br /&gt;              sqlUser="select senha from usuario where login=? and ativo = true"&lt;br /&gt;              sqlRoles="select role from usuario_roles where login=?"&lt;br /&gt;              bdDriver="org.postgresql.Driver"&lt;br /&gt;              bdUser="usuario"&lt;br /&gt;              bdPass="senha"&lt;br /&gt;              bdURL="jdbc:postgresql://ipdoservidor/banco"&lt;br /&gt;         ;&lt;br /&gt;};&lt;br /&gt;&lt;/blockquote&gt;Explicando rapidamente as opções do arquivo, o IF é o "nome" do modulo.  imagemfilmes.auth.IFLoginModule são, respectivamente, o nome do pacote e da classe que fará a autenticação. Daí pra baixo são opções que serão passadas para o modulo de login para podermos trabalhar la dentro, como veremos mais adiante. Nada disso é necessário, embora seja interessante usar, pois, caso algum desses parametros mude, é só mudar as configurações desses arquivo e tudo volta a funcionar. Caso o desenvolvedor optasse por fixar dentro do código, a cada mudança seria necessário uma nova compilação e um novo deploy do arquivo.&lt;br /&gt;OBS: Percebam que implementei no &lt;a href="http://www.portgresql.org/"&gt;PostgreSQL&lt;/a&gt;&lt;span style="font-weight: bold;"&gt;.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Após a criação do arquivo, devemos dizer ao java que ele existe (pois o java não é pai de santo pra adivinhar né?). Fazemos isso editando o arquivo $JAVA_HOME/jre/lib/security/java.security. Adicionamos o nosso modulo de login ao arquivo de configuração, como na linha que segue login.config.url.1=file:/lugarondevocecriouoarquivo/login.config.&lt;br /&gt;&lt;br /&gt;E para que a aplicação possa usar o modulo, dizemos pra ela que o faça, modificando seu contexto como segue:&lt;br /&gt;&lt;blockquote&gt;&lt;context path="/imagemfilmes"&gt;&lt;br /&gt;  &lt;realm classname="org.apache.catalina.realm.JAASRealm" appname="IF" userclassnames="imagemfilmes.auth.principals.User" roleclassnames="imagemfilmes.auth.principals.Role"&gt;&lt;br /&gt;&lt;/realm&gt;&lt;/context&gt;&lt;/blockquote&gt;Basicamente, adicionamos um Realm ao contexto, informando o tipo (classname), o nome da aplicacao, definido lá no login.config, e as classes de User e Role que foram implementadas (Vide capitulo da implementacao).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:180%;" &gt;Socorro&lt;/span&gt;&lt;br /&gt;Alguma coisa não está saindo como o esperado? Não se desespere!!! Para tudo nessa vida há alguma solução(embora na maioria das vezes nós não saibamos qual é a merda da solução!!!).&lt;br /&gt;Você poderá debugar o seu módulo iniciando seu tomcat com os seguintes parametros:&lt;br /&gt;&lt;blockquote&gt;-Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n&lt;br /&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;span style="font-weight: bold;font-size:180%;" &gt;Finalizando&lt;/span&gt;&lt;br /&gt;E é isso pessoal, muita coisa pode ser feita para que se ajuste as nossas necessidades. O JAAS é uma API excelente, embora poucos desenvolvedores a usam (pelo menos como deveriam).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:180%;" &gt;Créditos&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:180%;"&gt;&lt;span style="font-size:100%;"&gt;Abaixo cito as fontes onde busquei inspiração para a resolução dos problemas de percurso encontrados. &lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:180%;" &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:180%;"&gt;&lt;span style="font-size:100%;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;ol&gt;&lt;li&gt;http://java.sun.com/products/jaas/&lt;/li&gt;&lt;li&gt;http://www.guj.com.br/posts/list/38988.java&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2528339186033885182-4946966157686878168?l=infoessencial.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoessencial.blogspot.com/feeds/4946966157686878168/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2528339186033885182&amp;postID=4946966157686878168' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2528339186033885182/posts/default/4946966157686878168'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2528339186033885182/posts/default/4946966157686878168'/><link rel='alternate' type='text/html' href='http://infoessencial.blogspot.com/2007/05/implementando-um-sistema-de-login-com.html' title='Implementando um sistema de login com JAAS no Tomcat'/><author><name>Diego Fincatto</name><uri>http://www.blogger.com/profile/09407500247276167622</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2528339186033885182.post-4215476526920479435</id><published>2007-05-03T18:05:00.000-03:00</published><updated>2007-05-04T10:03:12.288-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Apple/Mac'/><category scheme='http://www.blogger.com/atom/ns#' term='Subversion/SVN'/><category scheme='http://www.blogger.com/atom/ns#' term='NetBeans'/><title type='text'>NetBeans com SVN em português</title><content type='html'>Há alguns dias estou trabalhando com um iMac (em outro post conto detalhes desta migração...) e estou ainda me adaptando.&lt;br /&gt;&lt;br /&gt;Um problema encontrado, após a configuração do SVN, para utilização no NetBeans (que foi resolvida com esta &lt;a href="http://www.codex.org/2006/06/06/netbeans-55-w-subversion-on-a-mac/"&gt;dica&lt;/a&gt;) foram as mensagens de commit, que não podiam ter acentuação!&lt;br /&gt;Sempre que colocava uma mensagem com acentuação, retornava uma mensagem de erro de commit "&lt;span style="font-family:courier new;"&gt;Can't convert string from native encoding to 'UTF-8'&lt;/span&gt;"...&lt;br /&gt;&lt;br /&gt;Com algumas buscas, encontrei uma ajuda no &lt;a href="http://svnbook.red-bean.com/"&gt;livro do subversion&lt;/a&gt;, no &lt;a href="http://svnbook.red-bean.com/nightly/pt_BR/svn.advanced.l10n.html"&gt;capítulo de internacionalização&lt;/a&gt;, confirmei que o locale estava como C.&lt;br /&gt;Ao definir o mesmo para &lt;span style="font-family:courier new;"&gt;pt_BR.UTF-8&lt;/span&gt;, com o comando &lt;span style="font-family:courier new;"&gt;export LC_ALL=pt_BR.UTF-8&lt;/span&gt;, esta definição ficava apenas para o terminal aberto.&lt;br /&gt;&lt;br /&gt;A solução? Incluí esta linha no lançador do NetBeans, &lt;span style="font-family:courier new;"&gt;nano -w /Applications/NetBeans.app/Contents/Resources/NetBeans/bin/netbeans&lt;/span&gt;, e, voilà! Acentuação funcionando!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Alteração no post:&lt;/span&gt; apesar de ter baixado NetBeans em português, o mesmo sempre ficou em inglês... isto não era um problema, mas era, no mínimo, curioso. Com esta linha, agora o mesmo também ficou em português!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Segunda alteração:&lt;/span&gt; a idéia inicial era não afetar o sistema, apenas no NetBeans. Porém várias vezes uso o SVN no terminal, então colocar esta linha diretamente no &lt;span style="font-family: courier new;"&gt;/etc/profile&lt;/span&gt; é mais adequado...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2528339186033885182-4215476526920479435?l=infoessencial.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoessencial.blogspot.com/feeds/4215476526920479435/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2528339186033885182&amp;postID=4215476526920479435' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2528339186033885182/posts/default/4215476526920479435'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2528339186033885182/posts/default/4215476526920479435'/><link rel='alternate' type='text/html' href='http://infoessencial.blogspot.com/2007/05/netbeans-com-svn-em-portugus.html' title='NetBeans com SVN em português'/><author><name>Fernando Pinheiro</name><uri>http://www.blogger.com/profile/17774225062873046024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://lh3.ggpht.com/_fR0a187auhk/SaJawlRiowI/AAAAAAAAEW4/EAU0bu9beIs/Photo%25203.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2528339186033885182.post-3065120921506394944</id><published>2007-04-10T16:00:00.000-03:00</published><updated>2007-04-10T16:56:56.539-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PostgreSQL'/><category scheme='http://www.blogger.com/atom/ns#' term='Algoritmos'/><title type='text'>Calculando dígito verificador (DV) para contas da Caixa Econômica Federal (CEF)</title><content type='html'>Hoje me deparei com uma situação: estou fazendo uma integração com a CEF e muitas vezes tenho registros rejeitados pois o DV da conta está incorreto.&lt;br /&gt;&lt;br /&gt;Minha primeira pergunta: como calculo o dígito verificador? Descobri, por contato telefônico, que é pelo módulo 11.&lt;br /&gt;Desta forma, encontrei uma referência no &lt;a href="http://pt.wikipedia.org/wiki/D%C3%ADgito_verificador"&gt;Wikipedia&lt;/a&gt;. Porém, ao calcular, não batia (eu possuo poupança na CEF e serviu para testes...).&lt;span class="on down" style="display: block;" id="formatbar_CreateLink" title="Link" onmouseover="ButtonHoverOn(this);" onmouseout="ButtonHoverOff(this);" onmouseup="" onmousedown="CheckFormatting(event);FormatbarButton('richeditorframe', this, 8);ButtonMouseDown(this);"&gt;&lt;/span&gt;&lt;br /&gt;Após mais alguns passos no Google, achei uma &lt;a href="http://www.google.com/url?sa=t&amp;ct=res&amp;amp;cd=1&amp;url=http%3A%2F%2Fwww.receita.fazenda.gov.br%2Fpublico%2FLegislacao%2Fatos%2FAtosConjuntos%2FAnexoIADEConjuntoCoratCotec0012002.doc&amp;amp;ei=CeAbRpSZAYKSgASdtZWqDQ&amp;usg=__6bnrZRXm2se-p4RZHESszQBuiUo=&amp;amp;sig2=DjudjbNO-zcvnsGBY0OG-g"&gt;referência interessante&lt;/a&gt; (role direto para a página 3). É necessário considerar, também, a &lt;span style="font-weight: bold;"&gt;agência e operação de conta&lt;/span&gt;!&lt;br /&gt;&lt;br /&gt;Agora, com o algoritmo claramente definido, implementei a função em PostgreSQL (pl/pgsql), que ficou assim (a formatação foi perdida quando colei... mais tarde tento aprender a fazer isto):&lt;br /&gt;&lt;code&gt;&lt;br /&gt;CREATE OR REPLACE FUNCTION calculaDigitoCaixa(_dados varchar) RETURNS int2 AS $$&lt;br /&gt;DECLARE&lt;br /&gt; i integer;&lt;br /&gt;   peso integer;&lt;br /&gt;   base integer;&lt;br /&gt;   total integer;&lt;br /&gt;   resto integer;&lt;br /&gt;   dados varchar;&lt;br /&gt;BEGIN&lt;br /&gt;   -- Verificar a consistência dos dados!&lt;br /&gt;   dados := COALESCE(_dados, '');&lt;br /&gt;   IF (LENGTH(COALESCE(_dados, '')) != 15) THEN&lt;br /&gt;       RAISE WARNING 'Dados não contém um tamanho válido! Tamanho: % Nulo: % Entrada: %', LENGTH(dados), _dados IS NULL, dados;&lt;br /&gt;   END IF;&lt;br /&gt;&lt;br /&gt;   peso := null;&lt;br /&gt;   total := 0;&lt;br /&gt;   -- Iniciar cálculo...&lt;br /&gt;   FOR i IN REVERSE LENGTH(dados)..1 LOOP&lt;br /&gt;       -- Qual peso?&lt;br /&gt;       IF (COALESCE(peso, 10) &gt;= 9) THEN&lt;br /&gt;           peso := 2;&lt;br /&gt;       ELSE&lt;br /&gt;           peso := peso + 1;END IF;&lt;br /&gt;       -- Qual base?&lt;br /&gt;       base := SUBSTR(dados, i, 1)::int;&lt;br /&gt; &lt;br /&gt;       RAISE NOTICE 'Peso % * Base %', peso, base;&lt;br /&gt;       -- multiplica base * peso e acumula total&lt;br /&gt;       total := total + base * peso;&lt;br /&gt;   END LOOP;&lt;br /&gt;   RAISE NOTICE 'Total: %', total;&lt;br /&gt;   -- Multiplicar total por 10&lt;br /&gt;   total := total * 10;&lt;br /&gt;&lt;br /&gt;   -- O resultado então é o resto da divisão por 11. Caso seja 10, então é 0.&lt;br /&gt;   resto := total % 11;&lt;br /&gt;&lt;br /&gt;   RAISE NOTICE 'Resto: %', resto;&lt;br /&gt;   IF (resto = 10) THEN&lt;br /&gt;       resto := 0;&lt;br /&gt;   END IF;&lt;br /&gt;&lt;br /&gt;   RETURN resto;&lt;br /&gt;END;&lt;br /&gt;$$ LANGUAGE plpgsql IMMUTABLE;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;Coloquei a mesma IMMUTABLE, pois sempre haverá o mesmo retorno para uma mesma entrada (&lt;a href="http://www.postgresql.org/docs/8.1/interactive/xfunc-volatility.html"&gt;documentação&lt;/a&gt;)...&lt;br /&gt;&lt;br /&gt;Agora basta validar, por exemplo:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;SELECT calculaDigitoCaixa(agencia, operacao_conta, conta) FROM fornecedor ...&lt;br /&gt;&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2528339186033885182-3065120921506394944?l=infoessencial.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoessencial.blogspot.com/feeds/3065120921506394944/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2528339186033885182&amp;postID=3065120921506394944' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2528339186033885182/posts/default/3065120921506394944'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2528339186033885182/posts/default/3065120921506394944'/><link rel='alternate' type='text/html' href='http://infoessencial.blogspot.com/2007/04/calculando-dgito-verificador-dv-para.html' title='Calculando dígito verificador (DV) para contas da Caixa Econômica Federal (CEF)'/><author><name>Fernando Pinheiro</name><uri>http://www.blogger.com/profile/17774225062873046024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://lh3.ggpht.com/_fR0a187auhk/SaJawlRiowI/AAAAAAAAEW4/EAU0bu9beIs/Photo%25203.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2528339186033885182.post-127848652242782766</id><published>2007-04-10T14:49:00.000-03:00</published><updated>2007-04-10T14:50:43.055-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='geral'/><title type='text'></title><content type='html'>Primeiro post...&lt;br /&gt;&lt;br /&gt;Nunca tive um blog, portanto esta será uma experiência interessante.&lt;br /&gt;Vamos ver se conseguimos colocar à disposição de outros usuários soluções (ou problemas) que encontramos no dia-a-dia!&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/2528339186033885182-127848652242782766?l=infoessencial.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://infoessencial.blogspot.com/feeds/127848652242782766/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2528339186033885182&amp;postID=127848652242782766' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2528339186033885182/posts/default/127848652242782766'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2528339186033885182/posts/default/127848652242782766'/><link rel='alternate' type='text/html' href='http://infoessencial.blogspot.com/2007/04/primeiro-post.html' title=''/><author><name>Fernando Pinheiro</name><uri>http://www.blogger.com/profile/17774225062873046024</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://lh3.ggpht.com/_fR0a187auhk/SaJawlRiowI/AAAAAAAAEW4/EAU0bu9beIs/Photo%25203.jpg'/></author><thr:total>0</thr:total></entry></feed>
