tag:blogger.com,1999:blog-44236261178720817122024-03-12T21:59:53.871-03:00Nonsense... it´s life!Juliano D. Carniel blog´s<br>
Divagações sobre TIAnonymoushttp://www.blogger.com/profile/07613506182946725596noreply@blogger.comBlogger59125tag:blogger.com,1999:blog-4423626117872081712.post-75649820829548136982009-11-02T00:12:00.000-02:002009-11-02T00:12:22.699-02:00Melhor gerador de Chave ÉVAR!Me deparei com um código desse esses dias... achei demais e resolvi compartilhar =)<br />
<br />
Select <br />
'11_XXX_KEY_<b>ouviramdoipirangaasmargensplacidas</b>_' || TRIM(MB.ASSINANTE_A) || ''_<b>deumpovoheroicoumbradoretumbante</b>_KEY_XXX_11'' AS AUTENTICACAO <br />
<div class="ii gt" id=":126">from<br />
tabela ...</div><div class="ii gt" id=":126"> </div><div class="ii gt" id=":126">Achei também alguns comentários do tipo: "AQUI COMEÇA A GAMBIARRA", "<i>Alterado para funcionar as pressas</i>", e por ai vai.</div><div class="ii gt" id=":126"><br />
</div><div class="ii gt" id=":126">#MEDO<br />
</div><div class="ii gt" id=":126"> <br />
</div><div class="ii gt" id=":126"></div><div class="ii gt" id=":126"><br />
Demais! </div>Anonymoushttp://www.blogger.com/profile/07613506182946725596noreply@blogger.com1tag:blogger.com,1999:blog-4423626117872081712.post-63444203019244317392009-10-31T14:27:00.000-02:002009-10-31T14:27:55.136-02:00Upgrade Ubuntu 9.04 para o 9.10 - Problema Vídeo IntelBom... <br />
<br />
esse vale a pena postar, depois do problemão que tive hoje para conseguir fazer o meu ubuntu voltar a funcionar depois do Upgrade para a nova versão.<br />
<br />
Antes de mais nada, queria falar que apesar do problema, a nova versão está bem bacana, acho que vale a pena fazer o upgrade.<br />
<br />
Bom, meu problema era que deposi do Upgrade a interface gráfica ficou muito lenta, mas muito mesmo, levava em torno de 20-30 segundos para e mudar de uma tela para outra. Se esse é o seu problema, acho que chegamos a solução. Ao menos para mim funcionou, mas vi pessoas falando que não funcionou para elas.<br />
<br />
Meu computador é um Notebook Dell Inspiron 1525 com tudo intel onboard. E a essas placas Intel são bem conhecidas por incompatibilidade com linux, principalmente as de vídeo. Segue a configuração, caso queira comparar:<br />
<br />
<pre>juliano@juliano-laptop:/$ lspci
00:00.0 Host bridge: Intel Corporation Mobile PM965/GM965/GL960 Memory Controller Hub (rev 0c)
00:02.0 VGA compatible controller: Intel Corporation Mobile GM965/GL960 Integrated Graphics Controller (rev 0c)
00:02.1 Display controller: Intel Corporation Mobile GM965/GL960 Integrated Graphics Controller (rev 0c)
00:1a.0 USB Controller: Intel Corporation 82801H (ICH8 Family) USB UHCI Controller #4 (rev 02)
00:1a.1 USB Controller: Intel Corporation 82801H (ICH8 Family) USB UHCI Controller #5 (rev 02)
00:1a.7 USB Controller: Intel Corporation 82801H (ICH8 Family) USB2 EHCI Controller #2 (rev 02)
00:1b.0 Audio device: Intel Corporation 82801H (ICH8 Family) HD Audio Controller (rev 02)
00:1c.0 PCI bridge: Intel Corporation 82801H (ICH8 Family) PCI Express Port 1 (rev 02)
00:1c.1 PCI bridge: Intel Corporation 82801H (ICH8 Family) PCI Express Port 2 (rev 02)
00:1c.4 PCI bridge: Intel Corporation 82801H (ICH8 Family) PCI Express Port 5 (rev 02)
00:1d.0 USB Controller: Intel Corporation 82801H (ICH8 Family) USB UHCI Controller #1 (rev 02)
00:1d.1 USB Controller: Intel Corporation 82801H (ICH8 Family) USB UHCI Controller #2 (rev 02)
00:1d.2 USB Controller: Intel Corporation 82801H (ICH8 Family) USB UHCI Controller #3 (rev 02)
00:1d.7 USB Controller: Intel Corporation 82801H (ICH8 Family) USB2 EHCI Controller #1 (rev 02)
00:1e.0 PCI bridge: Intel Corporation 82801 Mobile PCI Bridge (rev f2)
00:1f.0 ISA bridge: Intel Corporation 82801HEM (ICH8M) LPC Interface Controller (rev 02)
00:1f.1 IDE interface: Intel Corporation 82801HBM/HEM (ICH8M/ICH8M-E) IDE Controller (rev 02)
00:1f.2 SATA controller: Intel Corporation 82801HBM/HEM (ICH8M/ICH8M-E) SATA AHCI Controller (rev 02)
00:1f.3 SMBus: Intel Corporation 82801H (ICH8 Family) SMBus Controller (rev 02)
02:09.0 FireWire (IEEE 1394): Ricoh Co Ltd R5C832 IEEE 1394 Controller (rev 05)
02:09.1 SD Host controller: Ricoh Co Ltd R5C822 SD/SDIO/MMC/MS/MSPro Host Adapter (rev 22)
02:09.2 System peripheral: Ricoh Co Ltd R5C592 Memory Stick Bus Host Adapter (rev 12)
02:09.3 System peripheral: Ricoh Co Ltd xD-Picture Card Controller (rev 12)
09:00.0 Ethernet controller: Marvell Technology Group Ltd. 88E8040 PCI-E Fast Ethernet Controller (rev 12)
0b:00.0 Network controller: Broadcom Corporation BCM4312 802.11a/b/g (rev 01)
</pre><br />
A solução é fazer o downgrade do Driver de Vídeo para a versão 2.4. Para créditos não vou reproduzir aqui, por isso <a href="http://www.webupd8.org/2009/05/reverting-xorg-video-intel-driver-of.html">Veja esse post aqui tem a solução completa</a><br />
<br />
Bom, agora só falta a solução para o Som. Espero resolver esse rapido.<br />
<br />
AbraçosAnonymoushttp://www.blogger.com/profile/07613506182946725596noreply@blogger.com1tag:blogger.com,1999:blog-4423626117872081712.post-83942853424350900172009-10-12T20:37:00.000-03:002009-10-12T20:37:12.232-03:00Ruby+Rails+MySQL+WindowsBuenas! <br />
Este vai ser outro post daqules "coisas que ainda vou precisar, novamente".<br />
<br />
Hoje, tive que, infelizmente, instalar RoR no windows aqui no trabalho, e como era de se esperar, não foi uma tarefa nada trivial.<br />
<br />
Me bati bastante com a instalação Ruby1.8.6 + GEM + Rails 2.3.4 + MySQL 5.1, se esse é o seu caso, e você chegou nesse post através do google procurando por um erro ao rodar a aplicação com mysql por causa de uma DLL (libmySQL.dll), fique feliz, vc chegou a solução.<br />
<br />
O erro que aparecia era algo assim:<br />
<pre>!!! The bundled mysql.rb driver has been removed from Rails 2.2.
Please install the mysql gem and try again: gem install mysql.
rake aborted!
126: The specified module could not be found. -
c:/ruby/lib/ruby/gems/1.8/gems/mysql-2.7.3-x86-mswin32/ext/mysql.so
(See full trace by running task with --trace)
</pre><br />
Para dar crédito a pessoa de quem <strike>roubei</strike> li essas informações (<a href="http://www.meupost.com/2009/03/10/problema-do-rails-222-com-o-mysql-em-windows/" target="_blank">http://www.meupost.com/2009/<wbr></wbr>03/10/problema-do-rails-222-<wbr></wbr>com-o-mysql-em-windows/</a>), vou reproduzir seu post aqui, apenas para quando eu precisar novamente eu consiga achá-lo bem facilmente, e pra não correr o risco de seu site sair do ar =)<br />
<br />
Resumindo, a resolução dos seus problemas é:<br />
<br />
Mesmo que você tenha o MySQL5.1, você precisa copiar a DLL libmySQL.dll do MySQL5.0 e colar no diretório: %RUBY_HOME%\bin. Sim, mesmo que seja o 5.1, você precisará da LIB do 5.0.<br />
<br />
Mas e agora tiu, onde eu encontro a DLL do 5.0, preciso baixar e instalar apenas para pegar a DLL? Calma, meu pequeno gafanhoto, aqui vai a URL:<br />
<a href="http://instantrails.rubyforge.org/svn/trunk/InstantRails-win/InstantRails/mysql/bin/libmySQL.dll" target="_blank">http://instantrails.rubyforge.<wbr></wbr>org/svn/trunk/InstantRails-<wbr></wbr>win/InstantRails/mysql/bin/<wbr></wbr>libmySQL.dll</a><br clear="all" /> <br />
Caso nada de certo, tente o <a href="http://rubyforge.org/projects/instantrails/">InstantRails</a> =)<br />
<br />
Abraços!Anonymoushttp://www.blogger.com/profile/07613506182946725596noreply@blogger.com0tag:blogger.com,1999:blog-4423626117872081712.post-60223435617826984972009-10-06T20:19:00.000-03:002009-10-06T20:43:00.453-03:00Campo Número DecimalBom, esse post vai ser outro daqueles "coisas que ainda vou precisar, novamente"!<br /><br />Esse script javascript serve para deixar o campo com uma máscara de campo decimal (ex: 99,00) conforme você vai digitando. Isso associado à CSS com text-align right, deixa bonitinho =)<br /><br />Normalmente eu utilizo o plugin <a href="http://plugins.jquery.com/project/maskedinput">maskedinput</a> para o jQuery, mas ele só trabalha com tamanhos fixos de campos, e por isso esse scritp abaixo:<br /><br />Segue o script utilizado:<br /><pre><br />// Parametros: campo, separador_de_milhar, separador_decimal, evento<br />function maskCurrency(fld, milSep, decSep, e) {<br /> var sep = 0;<br /> var key = '';<br /> var i = j = 0;<br /> var len = len2 = 0;<br /> var strCheck = '0123456789';<br /> var aux = aux2 = '';<br /> var whichCode = (window.Event) ? e.which : e.keyCode;<br /> if (whichCode == 13 || whichCode == 8 || whichCode == 0) return true;<br /> key = String.fromCharCode(whichCode);// Valor para o código da Chave<br /> if (strCheck.indexOf(key) == -1) return false; // Chave inválida<br /> len = fld.value.length;<br /> for(i = 0; i < aux =" '';" len =" aux.length;" len ="=" value =" '';" len ="=" value =" '0'+" len ="=" value =" '0'+"> 2) {<br /> aux2 = '';<br /> for (j = 0, i = len - 3; i >= 0; i--) {<br /> if (j == 3) {<br /> aux2 += milSep;<br /> j = 0;<br /> }<br /> aux2 += aux.charAt(i);<br /> j++;<br /> }<br /> fld.value = '';<br /> len2 = aux2.length;<br /> for (i = len2 - 1; i >= 0; i--)<br /> fld.value += aux2.charAt(i);<br /> fld.value += decSep + aux.substr(len - 2, len);<br /> }<br /> return false;<br />}<br /></pre><br />Quando quiser utilizar isso num campo, altere a tag alt com o valor monetario (ex: alt="monetario"), e utilize o seguinte script (em jquery) abaixo:<br /><br /><pre><br />$(document).ready(function(){<br /> $('input[alt="monetario"]')<br /> .bind('keypress', function(e) { return maskCurrency(this, '', '.', e)})<br /> .css("text-align", "right");<br />});<br /></pre><br /><br />E apenas para constar, esse scriptzinho que quebra um galho também (self-explanatory):<br /><pre><br />function sonumeros(e) {<br /> var whichCode = (window.Event) ? e.which : e.keyCode;<br /> if( whichCode!=8 && whichCode!=0 && (whichCode<48>57)) {<br /> return false;<br /> }<br />}<br /></pre>Anonymoushttp://www.blogger.com/profile/07613506182946725596noreply@blogger.com0tag:blogger.com,1999:blog-4423626117872081712.post-82975927137804373782009-10-06T20:10:00.000-03:002009-10-06T20:14:37.846-03:00Feliz aniversário InternetAntes de mais nada, escrevi esse post, a mais de um mês, só estou postando agora, pq fiquei sem tempo, e também porque o google classificou meu blog como um blog de SPAM =) Nice! Talvez por causa da inatividade... merecido =)<br /><br />Bom, esse é um post apenas para lembrar que a Internet fez mês passado (02/09) 40 anos. E muita evolução houve desde a primeira comunicação entre dois computadores, porém basicamente o que foi desenvolvido nos primórdios ainda são a base das redes de computadores hoje.<br /><br />Veja um resumo de fatos marcantes na história da internet aqui (<a href="http://www1.folha.uol.com.br/folha/informatica/ult124u617940.shtml" target="_blank">http://www1.folha.uol.com.br/<wbr>folha/informatica/<wbr>ult124u617940.shtml</a>)<br /><br />Vi um post no feed do HackaDay - <a href="http://hackaday.com/2009/09/02/internet-40th-birthday/" target="_blank">http://hackaday.com/2009/09/<wbr>02/internet-40th-birthday/</a> com 4 vídeos bem interessantes. Vale a pena assistir também.<br /><br />Eu acredito que todas as pessoas que trabalham com informática DEVEM conhecer como funciona internet, roteamento, protocolos tcp/ip, e ter uma idéia das camadas OSI. Bom, um vídeo muito legal que acho que todos devem ver, que explica resumidamente como isso tudo funciona é o vídeo Warriors of the Net (<a href="http://www.warriorsofthe.net/movie.html" target="_blank">http://www.warriorsofthe.net/<wbr>movie.html</a> ). Vi esse na facul, e sempre carrego comigo!<br /><br />Thats all folks! Conhecer a história é muito importante =)<span style="color:#888888;"><br /></span>Anonymoushttp://www.blogger.com/profile/07613506182946725596noreply@blogger.com0tag:blogger.com,1999:blog-4423626117872081712.post-18556171517165752852009-08-23T12:46:00.002-03:002009-08-23T13:01:04.943-03:00Ruby Gems on UbuntuEste post é apenas para informar (me lembrar) para não instalar o rubygems do repositório do ubuntu.<br /><br />Existem outras coisas também que não são muito boas instalar do repositório do ubuntu, principalmente quando você quer/precisa da ultima versão, porque sempre é desatualizado.<br /><br />Como não é sempre que instalamos todas as coisas novamente, eu não lembrava que o que vem no ubuntu é meio bugado, e que é melhor instalar o que está no site <a href="http://rubyforge.org/projects/rubygems/" rel="external">http://rubyforge.org/projects/rubygems/</a>. O problema é que instalando direto do rep do ubuntu (via apt-get) ele não cria os links simbólicos para rails e qualquer outro gem que vc pedir pra ele instalar.<br /><br />Então, baixe o pacote no site acima, descompacte e rode os seguintes comandos: <code><br />chmod 755 setup.rb<br />sudo ruby setup.rb</code><br /><br />Pronto, ele instalará tudo certo, com apenas um porém. No meu caso instalei o gem1.8 e foi assim que ficou o link. Para apenas melhorar, execute o seguinte comando:<br /><code>sudo ln -s /usr/bin/gem1.8<span style="font-family: Georgia,serif;"> /usr/bin/gem</span></code><br /><br />E agora sim, tudo certo.<br />Acho que agora não esqueço mais disso.<br /><br />Abraços.Anonymoushttp://www.blogger.com/profile/07613506182946725596noreply@blogger.com2tag:blogger.com,1999:blog-4423626117872081712.post-83995766493498120802009-07-14T21:47:00.003-03:002009-07-14T21:52:52.614-03:00Chefe, precisamos de um novo RecursoHoje de manhã abro meus feeds e encontro um post indicado pelo <a href="http://www.jeveaux.com">Jeveaux</a>, do <a href="http://gc.blog.br/2009/07/12/pessoas-nao-sao-recursos/">Guilherme Chapiewski</a>, vale a leitura. Este post me fez lembrar que queria a tempos já falar sobre isso, e também sobre liderança. Vou dar então meus centavos de contribuição.<br /><br />Concordo em número, gênero e grau com o post do Guilherme, e ainda acredito que uma empresa que trata pessoas como recursos está fadada ao fracasso. Pode até não ser no aspecto contratual, jurídico, comercial, mas com certeza no aspecto de que a empresa ou entregará produtos/serviços de má qualidade, como perderá pessoas muito boas.<br /><br />Quem nunca ouviu falar o seguinte:<br /><br />"Ninguém é insubstituível" e ainda "Precisamos de um novo Recurso" ou algo "bla bla bla... Recurso para substituir um Recurso que saiu bla bla bla..."<br /><br />Não sou tão radical ao ponto de achar que ouvir a palavra "recurso" me dá um "nó na barriga", porque muitas vezes as pessoas que dizem isso, apenas usam a palavra por que ela está na moda agora e não veem mal nisso. O que me preocupa, é uma equipe, uma pessoa, ser tratada como um recurso. Em uma linha de produção com um trabalho restrito, e totalmente guiado por regras e procedimentos é complicado você trocar um "recurso" e tudo continuar como antes, imagine em um ambiente de desenvolvimento de software, por exemplo, onde muitos aspectos devem ser levados em consideração e é impossível existir, e que o conhecimento em uma determinada tecnologia não diz muita coisa sobre o trabalho que a pessoa irá fazer. Com certeza trocar um "recurso" não é nada simples.<br /><br />Sobre a frase, "Ninguém é insubstituível", eu acho uma puta asneira. Se analisarmos do ponto de vista do que precisa ser feito, eu até posso concordar que várias pessoas podem criar uma mesma coisa. Agora, você nunca terá o mesmo trabalho feito por pessoas diferentes. Cada pessoa possui toda uma bagagem de conhecimento técnico e de vida, e isso influencia diretamente no que uma pessoa faz. Então, se uma pessoa está fazendo um ótimo trabalho, e você quer que seu produto continue com a mesma qualidade e eficiência, você precisa manter essa pessoa, principalmente se ela tiver um perfil bom, abaixo falo mais sobre o perfil. Você pode conseguir trocar uma pessoa, por outra, e esta substituta, ou fará um trabalho melhor, ou um pior, ou um trabalho semelhante, mas nunca igual. É dificil compreeender, e/ou visualizar a tênue diferença entre isso, pois isso envolve muitas questões, inclusive culturais e históricas.<br /><br />Para pincelar sobre o assunto, tome-se como contexto, a história da revolução industrial, e a invenção da linha de montagem de Ford. Depois disso J. W. Taylor, definiu um pouco melhor que deveria haver um investimento maior em pessoas, desde treinamento, até em uma possível participação dos lucros, transformando-se em estímulo. Porém, ainda assim, o modelo era meio engessado e tinha uma visão mecanisada do trabalho e processo. Este tipo de metodologia ainda vem sendo empregado, e tem-se notado que não tem muito sucesso. E se nos atentarmos aos estudos atuais, vê-se que um modelo dinâmico de administração e controle de processos, está substituindo modelos engessados e mecanistas, principalmente numa área onde não existe, e não se encaixa uma linha de montagem. Por isso afirma-se hoje, que uma "fabrica de software" não funciona e nunca funcionará em um modelo engessado. O desenvolvimento de software, principalmente, deve ser tratado como criação de projeto, e não como linha de produção.<br /><br />Outra grande influência é o fato de que cada vez mais empresas tem capital aberto, e são "dominadas" por acionistas que querem um lucro rápido, e por isso, querem fazer e vender logo, e não analisam que isso acaba gerando muitos problemas. Ao invés de se investir um pouco mais em tempo e treinamento, e principalmente no real capital que são as pessoas na empresa, e isso com certeza gerará um excelente resultado, desde o desenvolvimento humano, como lucro monetário efetivo.<br /><br />Contudo, muitos dos problemas que existem hoje neste aspecto, podem ser atribuidos a gerência da organização.<br /><br />Nem sempre uma pessoa que não está indo muito bem em determinada função, é um mal profissional. Cabe ao líder identificar isso, e tentar readequar a função da pessoa. Esta, sentido-se mais confortável fazendo um trabalho do qual gosta, produzirá mais e melhor. Com isso, não quero dizer que todas as pessoas são bons profissionais, e apenas não fazem o que gostam. Existe sim, pessoas que simplesmente não tem o perfil. Eu gosto dessa palavra perfil, ela diz muito mais do que, se "essa pessoa sabe isso, é formada em tal coisa, ou não sabe aquilo, então não serve". O perfil determina se uma pessoa estará apta a fazer tal coisa, independente do conhecimento que ela já tem.<br /><br />Usando de exemplo, aprender um instrumento musical, não importa o quanto uma pessoa estude e se aperfeiçoe em algo, se ela não tem o dom ela nunca será tão boa quanto uma pessoa que tem o perfil para tal coisa. Um exemplo pessoal, é que eu já dei aula por exemplo de aplicativos como CorelDraw, eu sabia todas as funcionalidades, e tudo mais, mas eu nunca fui criativo para fazer algo descente, não tenho o perfil para isso. Não tenho o dom. Por isso, eu gosto de trabalhar com pessoas que tem um perfil bom, e não que conhecem tal coisa, ou já fizeram tal coisa, pois independente do que essas pessoas saibam, e ninguem sabe tudo, elas aprenderão o que precisaram apender e tenho certeza que a tarefa será feita, e quase na totalidade das vezes da melhor maneira. Também por isso acho que entrevistas além de avaliar o aspecto técnico da pessoa, devem também avaliar o perfil dela, e se esse perfil se encaixa no perfil procurado. Nesta área técnica é bom analisar o que é mais importante também, como por exemplo um "<a href="http://java.dzone.com/articles/computer-engineer-vs-computer">Cientista ou um Engenheiro</a>".<br /><br />Contudo, gostaria de falar um pouco sobre um assunto de igual polêmica, que é a diferença entre um Líder e um Chefe. Gostaria de colar aqui um email que recebi a um tempo atrás da minha esposa, que resume muito bem esse assunto:<br /><br /><blockquote style="font-style: italic;">Os principais estudiosos de Liderança começam a identificar nítidas diferenças entre um Chefe e um Líder. Parece oportuno, traçarmos um paralelo entre estas duas posições:<br /><br />Os Chefes empurram - Os líderes puxam<br />Os Chefes comandam - Os líderes comunicam<br />Os Chefes são mestres - Os líderes são maestros<br />Os Chefes são comandantes - Oslíderes são treinadores<br />Os Chefes são os donos da voz mais alta - Os líderes dos ouvidos mais acurados<br />O Chefe administra - O líder inova<br />Os Chefes é um cópia - O líder é um original<br />O Chefe mantém - O líder desenvolve<br />O Chefe focaliza os sistemas e a estrutura - O líder inspira confiança<br />O Chefe pergunta "como" e "quando" - O líder pergunta "o quê" e "por quê?"<br /><br />O Chefe convive melhor no "status-quo" - O líder desafia, muda<br />O Chefe é um bom soldado - O líder é ele mesmo<br />O Chefe faz a coisa corretamente - O líder faz a coisa certa<br />O Chefe obtém resultados através das pessoas - O líder desenvolve pessoas e grupos<br />O Chefe quer segurança e estabilidade - O líder quer desafios<br />O Chefe busca "status" de vida - O líder privilegia qualidade<br />Os Chefes são obedientes - Os líderes contestadores<br />Os Chefes são fazedores - Os líderes criativos.<br /><br />O Chefe veste a camisa da empresa - Os líderes participam dos negócios da empresa<br /><br /><span style="font-weight: bold;">A genialidade dos líderes não está em obter conquistas pessoais, mas em libertar o talento de outras pessoas.</span></blockquote>Se eu pudesse resumir esse assunto todo, seria com essa última frase.<br /><br />Abraços.Anonymoushttp://www.blogger.com/profile/07613506182946725596noreply@blogger.com1tag:blogger.com,1999:blog-4423626117872081712.post-28930935276672749842009-07-12T20:47:00.002-03:002009-07-12T22:05:37.328-03:00Eclipse Galileo - Vale a pena fazer o updateMais um ano, e mais uma nova versão do Eclipse. Este agora é chamado de Galileo (<a href="http://www.eclipse.org/galileo">http://www.eclipse.org/galileo</a>).<br /><br />Eu gosto disso no Eclipse, o pessoal trabalha oraganizadamente em todas as versões, existe um roadmap definido para mudanças de versões (2->3->4), e a cada ano obrigatoriamente existe uma nova Release com melhorias e correções de Bugs que é denominado de "release train". E o melhor de tudo, se vc é do tempo do eclipse 2, vc lembra que a cada nova release, você tinha algumas incompatibilidades de plugins, ou nem todos saiam ao mesmo tempo para a nova versão do eclipse. Depois do eclipse 3 (se não me engano) tudo ficou muito mais organizado e "bonito". Muito bom isso =)<br /><br />Ahhh, e quem lembra que não tinha os pacotes pré-definidos (JavaEE, PHP, etc) do eclipse como existe hoje? Cada nova versão era um parto para instalar todos os plugins. Mas isso mudou já tem algum tempo. Excelente =)<br /><br />Bom, primeiro quero ressaltar sobre algumas coisas que não gostei da nova versão:<br /><ul><li>Continua vindo com CVS como padrão. Eles ainda não incluiram o plugin do SVN por default, vc precisa sempre instalar. Imagine então algo para o GIT...</li><li>Continua vindo aquela perspectiva Java EE como padrão. Ta bom, eu que prefiro usar a Java, mas enfim... não gostei =)</li><li>Ahhh e claro, mudou o icone. Eu gostava mais do outro ícone! =)</li><li>Não gosto de navegar nas abas via CTRL+PgUp/CTRL+PgDown, preferia algo mais intuitico como o CTRL+Tab e CTRL+SHIFT+TAB. Quem sabe um dia eles mudam.</li></ul><br />Algumas coisas que gostei no eclipse novo:<br /><ul><li>Ele ficou mais rapido. Já vi varias pessoas que repararam nisso tbm... acho que não é só impressão minha.</li><li>Parace que acabaram com o fator "Glutão" do eclipse. Trabalhando com ele o dia todo, vários restarts de server e ele continuou firme.</li><li>Mudaram a interface de Plugins. Ficou legal, porém acho que me adaptava melhor com a antiga. Talvez seja apenas uma questão de me acostumar.</li><li>Um item no Help -> Check for Updates</li><li>Melhoraram o eclipse.ini, definindo outros parametros de memória, como MaxPermSize</li><li>Melhoraram o Mylyn, com uma feature para wikiText.</li><li>Uma coisa que gostei bastante foi a view Terminal, permite fazer conexões para telnet e para ssh. Não sei se já existia, mas só vi nessa versão.</li><li>Está cada vez mais migrando a arquitetura para OSGi. Vários plugins e features já estão utilizando e migrando para a nova arquitetura.</li><li>E uma feature que parece ser bem interessante, mas ainda não usei, é o Memory analyser (<a href="http://eclipse.org/mat/">http://eclipse.org/mat/</a>) Mas vale a pena conferir.</li><li>Code completion, e OpenType (CTRL+Shift+T) parece que ficaram mais rapido. Eles devem ter trabalhado em algo na indexação.</li><li>O debug view ficou legal, ficou mais facil trocar entre as "suspended threads".</li><li>Finalmente foi adicionado o suporte para copy/paste entre o "project Explorer" e o Nautilus. Era foda ter que fazer tudo sempre pelo shell.</li><li>E umas das funcionalidades mais fodas que achei: Seleção de Bloco nos editores. Sabe aquela funcionalidade que existe no UltraEdit chamado "Column Mode", pois é, tem um icone na barra de ferramentas, ou basta digitar: CTRL+SHIFT+A</li></ul>Como não podia deixar de ressaltar, notei muito mais coisas boas do que coisas ruins.<br />E claro que não podia deixar de falar, que o import do meu workspace antigo foi bem tranquilo, como tem sido nas ultimas versões. Bem legal.<br /><br />É isso, nova versão ai. Aproveitem as dicas acima.Anonymoushttp://www.blogger.com/profile/07613506182946725596noreply@blogger.com0tag:blogger.com,1999:blog-4423626117872081712.post-72962908472108370802008-08-28T09:07:00.006-03:002008-08-28T09:27:54.370-03:00MiddleManagers podem salvar sua empresaEstava lendo o blog do <a href="http://www.joelonsoftware.com/">Joel on Software</a> e me deparei com artigo que ele escreveu para a Inc.com.<br /><br />O artigo, intitulado <a href="http://www.inc.com/magazine/20080901/how-hard-could-it-be-how-i-learned-to-love-middle-managers.html">How Hard Could It Be?: How I Learned to Love Middle Managers</a> mostra pela sua própria experiência que acreditar em tudo o que lê, e em todo o Hype sobre gerenciamento de projetos e empresas de software, pode ser desastroso. Ele empregou em sua empresa um modelo com o mínimo de hierarquia possível, pelo que entendi tem no máximo 3 níveis de hierarquia, e uma política de "portas abertas", e a equipe inteira é composta por profissionais com o título <span style="font-style: italic;">Member of Technical Staff</span>.<br /><br />Sobretudo, ele mostra que um modelo sem muita hierarquia é ótimo, porém este por sí só, não basta, é necessário empregar outras ferramentas para ajudar no gerenciamento, e uma delas é o <a href="http://en.wikipedia.org/wiki/Middle_management"><span style="font-style: italic;">MiddleManager</span></a>.<br /><br />Este "Middle Manager" pode ser interpretado como o "Homem do meio campo" =), que na verdade não vem a ser um gerente de projeto, mas aquela pessoa, eleita pela equipe ou pela gerência, como porta-voz, ou um meio de contato entre as duas partes, mas mesmo com isso, a possibilidade do nível mais baixo chegar direto para conversar com o nível mais alto existe, e é aplicada. Esta pessoa serve para falar coisas mais delicadas, ou para intermediar quando necessário pro alguém que não é muito bom com palavras.<br /><br />Efim, é um artigo bem interessante e atual. Quem puder leia.<br /><br />abraços.Anonymoushttp://www.blogger.com/profile/07613506182946725596noreply@blogger.com1tag:blogger.com,1999:blog-4423626117872081712.post-23720167158084399232008-08-24T21:35:00.005-03:002008-09-17T10:01:36.827-03:00Configuração WI-FI no Ubuntu BCM43xx (Broadcom)<span style="font-family:arial;">Bom, outro post feito advindo da reinstalação do note esses dias atrás.</span><br /><br /><span style="font-family:arial;">A configuração da rede Wireless é um saco neste note (Acer 5520-5142 - AMD 64 Dual-Core). Ele vem com uma placa wireless da Broadcom e utiliza o módulo bcm43xx. Ele até aparece na tela System -> Administration -> Hardware Drivers, mas você tenta habilitar ele, parece que habilita, baixa umas coisas da internet mas não funciona.Caso você não saiba se é este o seu caso, digite o comando "lshw" e procure por algo parecido com isso:</span><br /><blockquote style="font-family:courier new;">*-network<br /> description: Network controller<br /> product: <span style="font-weight: bold;">BCM4311</span> 802.11b/g WLAN<br /> vendor: Broadcom Corporation<br /> physical id: 0<br /> bus info: pci@0000:05:00.0<br /> version: 01<br /> width: 32 bits<br /> clock: 33MHz<br /> capabilities: bus_master cap_list<br /> configuration: <span style="font-weight: bold;">driver=b43-pci-bridge latency=0 module=ssb</span></blockquote><span style="font-family:arial;">Eu achei várias soluções para isso, uma que compila um o ndiswrapper e instala o driver da placa pra windows, etc, etc. Mas a mais clean que eu achei foi a seguinte.</span><br /><blockquote style="font-weight: bold; font-family: courier new;">sudo apt-get install bcm43xx-fwcutter<br />sudo /usr/share/b43-fwcutter/install_bcm43xx_firmware.sh</blockquote>Digite os comandos acima, ele instalará um aplicativo e executando ele, baixará o driver correto e compilará e pronto! Automagicamente sua wireless estará funcionando =)<br /><br />Caso não funcione para você, poste um comentário aqui, que tento te ajudar com algumas outras possíveis soluções.<br /><br />Abraços.Anonymoushttp://www.blogger.com/profile/07613506182946725596noreply@blogger.com2tag:blogger.com,1999:blog-4423626117872081712.post-41592780124266456782008-08-21T15:21:00.002-03:002008-08-21T15:39:54.918-03:00Problemas aplicativos Java no LinuxBom, esse é mais uma dica (lembrete) para mim, ou para quem mais achar interessante.<br />Bom, tive que reinstalar essa semana meu note com Ubuntu pq fiz uma cagada habilitando o repositório de desenvolvimento do Ubuntu <a href="http://julianocarniel.blogspot.com/2008/08/ubuntu-hardy-subversion-15.html">para baixar o Subversion 1.5</a>, e esqueci de comentá-lo novamente, e "sem querer" fiz um update =) Atualizou mais ou menos uns 800 pacotes!! Bem que achei meio estranho! =)<br /><br />Enfim, devido a este fato, tive que reinstalar o ubuntu e reconfigurar os aplicativos todos, que já é um saco, principalmente por ser um AMD 64 bits.<br /><br />Um dos aplicativos que uso é o SQLDeveloper da Oracle, e ele é feito em java. E não estava mais conseguindo iniciá-lo. Na verdade, ele iniciava, porém com uma "tela branca", parecia que não carregava os componentes. O erro que dava no console era esse:<br /><span style="font-size:85%;"><span style="font-family: courier new;"></span></span><blockquote><span style="font-size:85%;"><span style="font-family: courier new;">Locking assertion failure. Backtrace:</span><br /><span style="font-family: courier new;">#0 /usr/lib/libxcb-xlib.so.0 [0x7ff9fb8fa97c]</span><br /><span style="font-family: courier new;">#1 /usr/lib/libxcb-xlib.so.0(xcb_xlib_unlock+0x24) [0x7ff9fb8faa84]</span><br /><span style="font-family: courier new;">#2 /usr/lib/libX11.so.6(_XReply+0x10f) [0x7ff9fbd44f4f]</span><br /><span style="font-family: courier new;">#3 /usr/lib/jvm/java-1.5.0-sun-1.5.0.15/jre/lib/amd64/xawt/libmawt.so [0x7ffa00283d7b]</span><br /><span style="font-family: courier new;">#4 /usr/lib/jvm/java-1.5.0-sun-1.5.0.15/jre/lib/amd64/xawt/libmawt.so [0x7ffa00270e9c]</span><br /><span style="font-family: courier new;">#5 /usr/lib/jvm/java-1.5.0-sun-1.5.0.15/jre/lib/amd64/xawt/libmawt.so [0x7ffa00270ffe]</span><br /><span style="font-family: courier new;">#6 /usr/lib/jvm/java-1.5.0-sun-1.5.0.15/jre/lib/amd64/xawt/libmawt.so(Java_sun_awt_X11GraphicsEnvironment_initDisplay+0x9) [0x7ffa002711c9]</span><br /><span style="font-family: courier new;">#7 [0x7ffa27350f7b]</span></span></blockquote>O que fiz para resolver isso foi adicionar ao script de inicialização do aplicativo (<span style="font-weight: bold; font-style: italic;">sqldeveloper/sqldeveloper.sh</span>), a seguinte variável:<br /><span style="font-weight: bold; font-family: courier new;"></span><blockquote><span style="font-weight: bold; font-family: courier new;">export LIBXCB_ALLOW_SLOPPY_LOCK=1</span></blockquote>O que essa variável quer dizer não tenho a menor idéia, muito menos o que ela faz, nem sequer fui atrás, a única coisa que sei é que ela resolveu o meu problema.<br /><br />Talvez alguém saiba dizer o porque, ou tenha outra solução, ou quem sabe queira pesquisar pra saber o que essa variável faz. Comente ai!<br /><br />abraços!Anonymoushttp://www.blogger.com/profile/07613506182946725596noreply@blogger.com0tag:blogger.com,1999:blog-4423626117872081712.post-70012309734099612372008-08-18T09:10:00.004-03:002008-08-18T09:16:08.401-03:00Entendendo a JVM e Resolvendo problemas de PerformanceNa verdade este post é apenas para elogiar os posts do pessoal do JavaBahia, mais especificamente o Alexandre M. Lima, quem foi que fez os posts.<br /><br />Cada um tem informações muito úteis, segue os Links:<br /><a href="http://javabahia.blogspot.com/2008/08/resolvendo-problemas-de-performance.html">Parte 1</a><br /><a href="http://javabahia.blogspot.com/2008/08/resolvendo-problemas-de-performance_11.html">Parte 2</a><br /><a href="http://javabahia.blogspot.com/2008/08/resolvendo-problemas-de-performance_12.html">Parte 3</a><br /><a href="http://javabahia.blogspot.com/2008/08/resolvendo-problemas-de-performance_7715.html">Parte 4</a><br /><br />e apenas para linkar este post meu:<br /><div style="text-align: left;"><a href="http://julianocarniel.blogspot.com/2008/07/jvm-tuning.html">JVM Tuning</a><br /><br />Valeu, abraços.<br /></div>Anonymoushttp://www.blogger.com/profile/07613506182946725596noreply@blogger.com0tag:blogger.com,1999:blog-4423626117872081712.post-55549652860433064072008-08-12T17:23:00.003-03:002008-08-12T17:46:34.703-03:00POP e SMTP com Autenticação via TELNETComplementando um <a href="http://julianocarniel.blogspot.com/2007/08/testando-servidor-de-email-via-telnet.html">post antigo daqui</a>.<br /><br /><span style="font-weight: bold;font-size:130%;" >Lendo email via Telnet.</span><br /><br /><span style="font-weight: bold;font-family:courier new;" >telnet pop.meuservidor.com 110</span><br /><span style="font-weight: bold;font-family:courier new;" >USER meuemail@meuservidor.com</span><br /><span style="font-weight: bold;font-family:courier new;" >PASS minhaSenha</span><br /><br />Pronto, vc já deverá estar conectado. Segue uns comandos úteis.<br /><span style="font-weight: bold;">LIST</span> - mostra quantos emails existem na sua caixa.<br /><span style="font-weight: bold;">RETR</span> [id] <id> - mostra a mensagem com o ID digitado.<br /><span style="font-weight: bold;">DELE</span> <id> [id]- apaga a mensagem com o ID digitado.<br /><span style="font-weight: bold;">QUIT</span> - Sai da caixa de email.<br /><br /><span style="font-weight: bold;font-size:130%;" >Enviando email via Telnet com Autenticação</span><br /><br />Para autenticar você precisa transformar seu login e senha para base64. Para isso você pode usar <a href="http://www.webpan.com/customers/email/base64_conversion.htm">este site</a>.<br /><br /><span style="font-weight: bold;">telnet [smtp.meuservidor.com] <ip>25</ip></span><br /><span style="font-weight: bold;">AUTH LOGIN [enter]</span><br /><span style="font-weight: bold;">Y29tdWR57htUIo98t [enter]<enter> </enter></span><span><enter>(usuario em base64)</enter></span><br /><span style="font-weight: bold;">MTIzNDU2 </span></id></id><span style="font-weight: bold;">[enter]</span><id><id><span style="font-weight: bold;"> </span><span><enter> (senha em base64)</enter></span><br /><span style="font-weight: bold;">mail from: email@domain.com </span></id></id><span style="font-weight: bold;">[enter]</span><id><id><span style="font-weight: bold;"><enter></enter></span><br /><span style="font-weight: bold;">rcpt to: juliano.dc@gmail.com </span></id></id><span style="font-weight: bold;">[enter]</span><id><id><span style="font-weight: bold;"><enter></enter></span><br /><span style="font-weight: bold;">data </span></id></id><span style="font-weight: bold;">[enter]</span><id><id><span style="font-weight: bold;"><enter></enter></span><br /><span style="font-weight: bold;"><aqui></aqui></span>[aqui vai o corpo do email]<br /><span style="font-weight: bold;">. [enter]<enter></enter></span><br /><span style="font-weight: bold;">quit</span><br /><br /><br />Pronto, mais uma vez, só pra eu ter isso em um lugar que eu ache depois =)</id></id>Anonymoushttp://www.blogger.com/profile/07613506182946725596noreply@blogger.com3tag:blogger.com,1999:blog-4423626117872081712.post-1617183050145581262008-08-11T22:40:00.002-03:002008-08-11T22:52:24.790-03:00C cedilha no UbuntuBom, este post é só pra eu não precisar procurar novamente como configurar o Ubuntu para um teclado US International, para que ele apareça o ç ao invés de um C com acento.<br /><br />Então para isso, edite o arquivo:<br /><span style="font-family: courier new; font-weight: bold;">sudo vi /usr/lib/gtk-2.0/2.10.0/immodule-files.d/libgtk2.0-0.immodules</span><br /><br />e na linha que começa com “cedilla” adicione ao final da linha a lingua <span style="font-weight: bold;">en</span>.<br />Fica mais ou menos assim:<br />"cedilla" "Cedilla" "gtk20" "/usr/share/locale" "az:ca:co:fr:gv:oc:pt:sq:tr:wa:<span style="font-weight: bold;">en</span>"<br /><br />Pronto, problema resolvido. Basta restartar o XServer.Anonymoushttp://www.blogger.com/profile/07613506182946725596noreply@blogger.com1tag:blogger.com,1999:blog-4423626117872081712.post-1897602153578493542008-08-07T16:31:00.002-03:002008-08-07T16:37:30.361-03:00Ubuntu Hardy + Subversion 1.5Estava com problema para atualizar o subversion da minha máquina da versão 1.4.6 para a versão 1.5, pois ainda não está liberado nos repositórios padrões do Ubuntu.<br /><br />Mas para minha felicidade achei<a href="http://muriloq.com/blog/?p=49"> este post</a>, onde uma pessoa bacana mostrou o repositório para atualizar o subversion.<br /><br />Para uma quick reference, o repositório é:<br /><pre style="font-family: arial; font-weight: bold;">deb http://archive.ubuntu.com/ubuntu intrepid main restricted universe multiverse</pre><br />Obrigado ;)Anonymoushttp://www.blogger.com/profile/07613506182946725596noreply@blogger.com0tag:blogger.com,1999:blog-4423626117872081712.post-71858388059863347012008-07-29T20:23:00.002-03:002008-07-29T21:03:01.692-03:00Conhecimento vale mais que experiênciaEstava lendo um <a href="http://agilesoftwaredevelopment.com/blog/jurgenappelo/professionalism-knowledge-first">post que veio pela newsletter do javalobby</a>, que achei muito interessante e me fez pensar em algumas coisas.<br />Resumindo, a conclusão principal do post é: "Não adianta ter anos de experiência em [coloque-aqui-o-que-quiser] da forma errada.", ou seja, muitas vezes os anos de experiência são substituidos pela teoria (sem a prática), esta qual pode ser adquirida de várias maneiras.<br /><br />Meio confuso não?! Vou tentar explicar um pouco melhor. Nos post do Jurgen Appelo, ele cita a questão da <a href="http://en.wikipedia.org/wiki/Lobotomy">Lobotomia</a>, e cita as seguintes frases, que tentei achar no <a href="http://pt.wikipedia.org/wiki/Lobotomia">wikipedia em português</a>, porém as descrições não eram tão boas quanto as em inglês, então traduzo abaixo:<br /><blockquote style="font-style: italic;">A Lobotomia, ou Leucotomia, que envolve o corte das conexões do Cortex Frontal, foi usado em alguns milhares de pacientes por todo o mundo durante o século 20, o que ocasionava uma mudança de comportamento, com o intuito de "curar" pessoas com esquizofrenia, e depressão profunda. Hoje este procedimento é considerado como "um dos maiores e mais bárbaros erros praticados pela medicina"</blockquote>Jurgen faz uma pergunta após isso: "<span style="font-style: italic;">Você ainda ficaria impressionado com médico com mais de 20 anos de experiência em Lobotomia?</span>"<br /><br />O que me chamou atencão neste post foi justamente nunca ter parado para pensar sobre isso, e nunca ter feito uma comparação deste tipo. Realmente, 20 anos fazendo a coisa da maneira errada, vale mais que 1 mês fazendo da maneira certa? Isso nos remete também aquele outro post sobre <a href="http://julianocarniel.blogspot.com/2007/12/fbula-dos-porcos-desenvolvedores-de.html">A Fábula dos Porcos Assados</a>.<br /><br />O que ele ressalta ainda no post, é que a sua experiência como desenvolvedor não importa muito quanto aplicar a técnica ou tecnologia certa para resolver o problema, agora faz mais sentido aquela analogia de "Para quem só tem um martelo, tudo parece prego."<br /><br />Outra frase de grande impacto citada por Jurgen, é a seguinte:<br />"Professionals don't match problems with their experiences. They match them with their knowledge."<br />tradução livre:<br />"Profissionais não usam a experiência para resolver os problemas. Eles usam o conhecimento para resolver os problemas."<br /><br />Isso não quer dizer que você deva ficar em casa lendo livros sobre tudo que você saberá fazer tudo, mas diz que a experiência não diz muita coisa, se junto com ela não vier o conhecimento, e principalmente o conhecimento do correto.<br /><br />Sem dúvida uma opinião um pouco radical, mas sem dúvida cheia de verdades. O que acha você? Pronto para uma lobotomia? Conheço uma pessoa cheia de experiência! =)<br /><strong></strong>Anonymoushttp://www.blogger.com/profile/07613506182946725596noreply@blogger.com9tag:blogger.com,1999:blog-4423626117872081712.post-85236467846318883622008-07-29T07:51:00.005-03:002008-07-29T08:36:19.357-03:00Cuil - Fim do Google?<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhzx5LTWgrQWX5ADR30-763PZsBIRkgv2Hraxrc7u93ugOpB6OuqzgCgrHk6MJ1K-SBF0bGBsiANz3PIlPP7oEUxS76S7k6-yAydDyAcQZB3uVa1MqdKi1XMNqsnelYd5puTeqHmt9glRY9/s1600-h/screenshot2.png"><img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhzx5LTWgrQWX5ADR30-763PZsBIRkgv2Hraxrc7u93ugOpB6OuqzgCgrHk6MJ1K-SBF0bGBsiANz3PIlPP7oEUxS76S7k6-yAydDyAcQZB3uVa1MqdKi1XMNqsnelYd5puTeqHmt9glRY9/s320/screenshot2.png" alt="" id="BLOGGER_PHOTO_ID_5228390909779445906" border="0" /></a>Calma... o google não vai acabar! Depois do susto, agora você pode voltar a respirar. =)<br /><br />Eu estou falando de uma empresa que está tentando se levantar contra o google na hegemonia de Search Engines, uma empresa cheia de promessas chamada <a href="http://www.cuil.com/">Cuil</a> (lê-se <span style="font-style: italic;">cool</span>).<br /><br />Esta nova Engine promete ser melhor, e indexar mais páginas que o Google e que a engine da Microsoft, e com um diferencial, que uma engine de ranking de consultas, além de procurar o que vc digitou, ela tenta descobrir o que é mais relevante com context, etc etc... enfim, não há como saber exatamente o que tem de tão revolucionário nisso, porque também isso deve ser segredo de negócio.<br />Algumas notícias:<br /><a href="http://diario.iol.pt/tecnologia/cuil-google-internet-tecnologia/976135-4069.html">IOL</a><br /><a href="http://www.hurricanesoftwares.com/2008/07/28/ex-google-engineers-launched-cuil-a-better-search-engine/">MindTree</a><br /><br />Com alguns simples testes que fiz aqui, não fiquei nem um pouco contente com a search engine deles. Primeiro procurei por PortalJava e não achou o site do portal. Depois procurei por meu nome, e não achou as coisas que normalmente aparecem, como é o caso do portaljava deste blog e outras coisas. Enfim, se eles querem mesmo entrar nesta briga, estão deixando muito a desejar, ou melhor, precisam mostrar alguma coisa =)<br /><br />Mas enfim, fico no mínimo contente de ver alguém se levantando contra uma gigante sem ser outra gigante como é o caso da Microsoft com sua engine de buscas que, temos que concordar, já nasceu morta.<br /><br />Outra coisa importante é ver o quão dependente do Google estamos hoje, seja com o buscador, seja com email, google maps, google docs, chat, etc. Até por isso que derrubar o google não é uma tarefa tão fácil, sem contar nossos aplicativos (no caso dos desenvolvedores) que estão cada vez mais integrando serviços do google, o que realmente é o negócio deles hoje.<br /><br />Será que estamos vendo mais uma vez um ciclo sendo completado? Hegemonia Microsoft, deu lugar ao Google, que deu lugar... (mais no próximo capítulo =] )Anonymoushttp://www.blogger.com/profile/07613506182946725596noreply@blogger.com1tag:blogger.com,1999:blog-4423626117872081712.post-85824379558693761292008-07-25T08:48:00.000-03:002008-07-25T09:26:34.644-03:00JVM Tuning<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.grnconsulting.com/images/dashboard.jpg"><img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 320px; height: 436px;" src="http://www.grnconsulting.com/images/dashboard.jpg" alt="" border="0" /></a>Buenas!<br /><br />Devido ao longo tempo sem postar algo realmente decente e técnico, este post vai ser sobre o que estou fazendo atualmente, que é instalando e configurando os servidores de produção aqui da empresa juntamente com uma outra pessoa.<br /><br />O nosso ambiente compreende um cluster de Tomcats fazendo Session Replication. Nossos servidores são de arquitetura Intel e do modelo QuadCore (apesar de uma plataforma Sun ser bem mais performática ainda mais com Java), então algumas configurações são específicas para isso e para o nosso modelo de aplicação e talvez não sejam as melhores para o seu caso, mas de qualquer forma gostaria de compartilhar um pouco das coisas que aprendi e que estamos utilizando.<br /><br /><span style="font-weight: bold;font-size:130%;" >JDK - Porque a versão 6?</span><br /><br />Além de ser a última versão, <a href="http://java.sun.com/performance/reference/whitepapers/6_performance.html#2.3">ela é superior a versão 5 em questões de performance</a>, as configurações default da vm já vem otimizadas para uma melhor performance de runtime e um garbage colector mais eficiente.<br /><br />Esta versão, por ser mais recente, usa de uma maneira mais elevada o poder de multi-processadores ou multi-cores e da grande quantidade de memória existente. Exemplos disso são, o uso do GC em threads paralelas, podendo utilizar até 32 Threads (veja mais na tópico sobre Tuning), usa também do paralelismo para a promoção de objetos do Young para o Old (Permanent) conforme figura abaixo (caso queira aprender mais sobre como funciona o Heap Space do java <a href="http://java.sun.com/j2se/reference/whitepapers/memorymanagement_whitepaper.pdf">leia este documento</a> e <a href="http://java.sun.com/docs/hotspot/gc/">este documento</a>)<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://java.sun.com/docs/hotspot/gc/fig3.gif"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 496px; height: 237px;" src="http://java.sun.com/docs/hotspot/gc/fig3.gif" alt="" border="0" /></a><span style="font-weight: bold;font-size:130%;" >JVM Tuning</span><br /><br />Como muitos sabem, é possível mudar o comportamento da VM e parametrizar muitas coisas através das VM Options que são passadas na inicialização de um processo.<br />No nosso caso aqui, utilizamos alguns parâmetros, que vou listar abaixo com uma breve descrição:<br /><br /><span style="font-weight: bold;">[JVM Parameters]</span><br /><span style="font-weight: bold;">-server </span>- Para simplificar, este parâmetro te da uma melhor performance final do que inicial. Caso sua arquitetura seja 64bits, o server é o default, e para arquiteturas 32bits, o client é o default.<br /><span style="font-weight: bold;">-XX:+UseLargePages</span> - Se o seu SO permite Large Memory Pages habilite esta função e sete também outros parâmetros relacionados a isso. Para saber mais sobre LMP leia <a href="http://java.sun.com/javase/technologies/hotspot/largememory.jsp">este documento</a>.<br /><span style="font-weight: bold;">-XX:+AggressiveOpts</span> - Habilita algumas otimizações de código, que segundo a documentação, é pra estar habilitada como padrão nas versões futuras.<br /><span style="font-weight: bold;">-XX:+UseFastAccessorMethods</span> - Usa versões otimizadas para métodos get de tipos primitivos.<br /><span style="font-weight: bold;">-XX:+UseParallelGC</span> - Habilita o GC para abrir várias thread e atuar paralelamente.<br /><span style="font-weight: bold;">-XX:ParallelGCThreads=6</span> - Número de thread que serão abertas para GC. Por default é aberto uma Thread para cada processador existente.<br /><span style="font-weight: bold;">-XX:+UseParNewGC</span> - Igual ao parâmetro UseParallelGC, porém para a área Young do Heap.<br /><span style="font-weight: bold;">-XX:+UseTLAB</span> - Usa Thread-Local para alocação de objetos<br /><br /><span style="font-weight: bold;">[MEMORY]</span><br />-Xms 512M - Parâmetro de memória que define o mínimo de memória para a aplicação.<br />-Xmx 8G - Parâmetro de memória que define o máximo de memória para a aplicação<br /><br /><span style="font-weight: bold;">[YOUNG]</span><br /><span style="font-weight: bold;">-XX:NewSize=256M</span> - Tamanho mínimo para a área Young do Heap.<br /><span style="font-weight: bold;">-XX:MaxNewSize=1G</span> - Tamanho máximo para a área Young do Heap.<br /><br /><span style="font-weight: bold;">[OLD]</span><br /><span style="font-weight: bold;">-XX:PermSize=512M</span> - Tamanho mínimo da área de objetos permanentes em memória.<br /><span style="font-weight: bold;">-XX:MaxPermSize=2G</span> - Tamanho máximo da área de objetos permanentes em memória.<br /><br />Obs: não sete os valores máximos maiores que o -Xmx.<br /><br />Para ver oturos parâmetros para VM veja <a href="http://java.sun.com/javase/technologies/hotspot/vmoptions.jsp">esta página</a>.<br />Para ver alguns exemplos de tuning de aplicações veja <a href="http://java.sun.com/performance/reference/whitepapers/tuning.html">este link</a>.<br />Leia também a <a href="http://java.sun.com/docs/hotspot/gc1.4.2/faq.html">FAQ sobre GC</a>.<br /><br /><span style="font-size:130%;"><span style="font-weight: bold;">Ferramentas para Monitoramento de Aplicações</span></span><br /><br />Segue abaixo algumas ferramentas que podem te ajudar a entender melhor sua aplicação e te ajudar a chegar a valores para os parâmetros. Existem muitas outras, outra hora comento sobre algumas mais específicas, mas comentei sobre essas apenas porque já vem com o próprio JDK, e vc as encontra em <span style="font-weight: bold; font-style: italic;">$JAVA_HOME/bin</span>.<br /><ul><li><a style="font-weight: bold;" href="http://java.sun.com/j2se/1.5.0/docs/tooldocs/share/jps.html">jps</a><span style="font-weight: bold;"> </span>- Mostra os processos Java que estão rodando na máquina.</li><li><a style="font-weight: bold;" href="http://java.sun.com/j2se/1.5.0/docs/tooldocs/share/jinfo.html">jinfo</a><span style="font-weight: bold;"> </span>- Mostra informações sobre o processo java que está rodando, como bibliotecas que ele está usando, parametros de inicialização, parâmetros gerais da VM como aquelas que aparecem em System.getEnv().</li><li><a style="font-weight: bold;" href="http://java.sun.com/j2se/1.5.0/docs/tooldocs/share/jmap.html">jmap</a><span style="font-weight: bold;"> </span>- Mostra informações sobre o uso de memória por uma aplicação, uso de cada divisão da Heap como a Young, Old, Tenure, Perm, etc.</li><li><a style="font-weight: bold;" href="http://java.sun.com/j2se/1.5.0/docs/tooldocs/share/jsadebugd.html">jsadebugd</a><span style="font-weight: bold;"> </span>- Este processo se junta ao processo passado como parâmetro e adiciona propriedades de debug ao processo em questão.</li><li><a style="font-weight: bold;" href="http://java.sun.com/j2se/1.5.0/docs/tooldocs/share/jconsole.html">jconsole</a> - JConsole é uma ferramenta visual que monitora e mostra várias informações sobre um processo, como uso de memória, número de threads, processamento, etc.</li><li><a style="font-weight: bold;" href="http://java.sun.com/j2se/1.5.0/docs/tooldocs/share/jstat.html">jstat</a> - Coleta e loga informações estatísticas sobre performance.</li></ul><br /><span style="font-weight: bold;">Considerações</span><br /><br />Conforme dito acima essas configurações são específicas para cada caso, então se precisar de ajuda sobre algumas configurações para um caso específico comente aqui, que responderei assim qeu possível.<br />Como tuning é um trabalho constante, a monitoração e o profiling são coisas extremamente importantes para que você consiga entender sua aplicação e definir o que usar e o que não usar.<br />Conforme for otimizando a nossa aplicação estarei fazendo update neste post, ou escrevendo novos posts se for o caso.<br />Enfim, espero que isso possa ajudar algumas pessoas, e com certeza vai me ajudar futuramente como documentação.Anonymoushttp://www.blogger.com/profile/07613506182946725596noreply@blogger.com10tag:blogger.com,1999:blog-4423626117872081712.post-75283203026385311292008-07-21T14:41:00.004-03:002008-07-21T16:21:34.404-03:00Eleições nos Estados Unidos [fun]Pensando nas eleições dos estados unidos, eu achei um candidato impressionante, que vale muito a pena acompanharmos e até apoiarmos. Provavelmente você não ouviu falar muito dele, nem deve ter o visto, mas é um azarão que correndo por fora vem brigando pela preferência dos americanos nas eleições. Não se chama Barak Obama, muito menos Hillary Clinton, muito menos ainda John McCain, ele é simplesmente conhecido como Walter, e sempre acompanhado de seu "segurança" e fiel amigo Jeff Dunham.<br /><br /><a href="http://br.youtube.com/watch?v=HiqM2S-O1CQ">Veja o lançamento de sua candidatura.</a><br /><a href="http://br.youtube.com/watch?v=mV9F9CVT4Zw">Veja seu último discurso.</a><br /><a href="http://br.youtube.com/results?search_query=walter+jeff&search_type=&aq=f">Veja outros vídeos sobre Walter.</a><br /><br />pbs: para meu amigo pepe <a href="http://br.youtube.com/watch?v=1uwOL4rB-go">este vídeo</a>.Anonymoushttp://www.blogger.com/profile/07613506182946725596noreply@blogger.com0tag:blogger.com,1999:blog-4423626117872081712.post-31319637609546102442008-07-16T16:34:00.002-03:002008-07-16T16:38:08.369-03:00Nerd Test v2Só para constar o que já havia feito num <a href="http://julianocarniel.blogspot.com/2007/09/grupo-de-usurias-de-programadores.html">outro post</a>, mas este aqui é um pouco abrangente e o resultado é mais detalhado.<br />Confira meu resultado, e faça o seu também poste aqui depois um comment para eu ver o seu também.<br /><a href="http://www.nerdtests.com/nt2ref.html"><br /><img src="http://www.nerdtests.com/images/badge/nt2/b80bf677132bfcbb.png" alt="NerdTests.com says I'm a Dorky Nerd King. What are you? Click here!" /><br /></a>Anonymoushttp://www.blogger.com/profile/07613506182946725596noreply@blogger.com0tag:blogger.com,1999:blog-4423626117872081712.post-19203524620320771382008-07-04T13:37:00.004-03:002008-07-04T13:44:55.414-03:00Eclipse Ganymede - Server Start Timeout (Hint)Just a Hint, para pessoas que como eu, precisam alterar o Start timeout do servidor dentro do Eclipse, e estava acostumado a fazer isso no Preferences, noGanymede mudou.<br />Agora esta configuração fica nas propriedades do Server. Então, abra o Server (clique duplo no servidor), e na parte superior direita existe um dropdown chamado Timeout, e ali você consegue alterar o timeout do seu Server. Conforme figura abaixo:<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjeAh2PzHevzt9Tc2Arp7Q70Usi6jZObNwjuE23_-8pSfw1URoU3V7S92rR2VsHieu9dSuH9qyd0wgXtoVIKHBvt8SSKIi0czognJk9RQab65kXmqPqyp5vkg7i9EZz1KAXtHcDktLO0dbn/s1600-h/Screenshot-Java+-+Tomcat+v6.0+Server+at+localhost+-+Eclipse+Platform+.png"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 489px; height: 277px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjeAh2PzHevzt9Tc2Arp7Q70Usi6jZObNwjuE23_-8pSfw1URoU3V7S92rR2VsHieu9dSuH9qyd0wgXtoVIKHBvt8SSKIi0czognJk9RQab65kXmqPqyp5vkg7i9EZz1KAXtHcDktLO0dbn/s320/Screenshot-Java+-+Tomcat+v6.0+Server+at+localhost+-+Eclipse+Platform+.png" alt="" id="BLOGGER_PHOTO_ID_5219200101398388322" border="0" /></a>Anonymoushttp://www.blogger.com/profile/07613506182946725596noreply@blogger.com1tag:blogger.com,1999:blog-4423626117872081712.post-78993572058038326902008-07-04T09:12:00.003-03:002008-07-04T11:05:52.753-03:00Eclipse Ganymede - First ImpressionsPara quem ainda não sabe o Eclipse Ganymede, ou Eclipse 3.4 foi lançado há umas 2 ou 3 semanas atrás, com muitos bugfixes e novas features bem legais.<br />Para quem não sabe o porque do nome Ganymede, este nome vem de uma Lua (satélite) de Júpter, a maior delas. Para quem não sabia o porque dos nomes anteriores, Callisto e Europa, estas também são luas de júpter.<br /><br />Depois desta histórinha, quero elogiar o pessoal do Eclipse por uma feature principal, <a href="http://www.eclipse.org/downloads/download.php?file=/technology/epp/downloads/release/ganymede/R/eclipse-jee-ganymede-linux-gtk-x86_64.tar.gz">um download específico para Linux AMD 64</a>. Ieiii!<br />Outra coisinha bem legal e simples foi a alteração do arquivo eclipse.ini, coisinha simples e prática. A alteração dos parâmetros de memória, uma das coisas que sempre qeu baixava uma versão do eclipse tinha que alterar, agora não preciso mais =) ieeeiii².<br /><br />Bom, esta é mais uma versão sem muita alteração na plataforma em sí, mas em correção de bugs e novas funcionalidades, e "embelezamento".<br /><br />Bom, falando de coisas um pouco mais práticas e técnicas, o esquema de Install/Update do eclipse ficou um pouco diferente mas ficou melhor. Agora você consegue saber exatamente o que tem instalado no seu eclipse as versões e consegue fazer revert de instalações. Tá eu sei que isso já existia, mas era bem ruinzinho de se achar naquilo, hoje está bem melhor esta parte.<br /><br />Você também consegue pesquisar dentro dos "update sites" configurados por plugins, apenas digitando uma palavra chave. Ficou bem bacana. Porém, eles bem que podiam integrar o Plugin do Subclipse nativamente já. SVN já deve ser o controlador de versão mais usado, mas o eclipse só vem nativamente com CVS, e acredito eu, que o Subclipse deva ser o plugin mais usado para isso, porém eles tem um projeto incubado que é um plugin para SVN, mas pelo jeito ainda não está pronto.<br /><br />Bom, pelo que vi no site do eclipse, houve grandes melhorias em Regex dentro da IDE, em todas as opções de busca, Import/Export de Launch Configurations. Se você possuia aquelas configurações bizarras para algumas aplicações, agora vc não precisa mais abrir os dois eclipses (o velho e o novo) e ficar copiando uma para a outra, basta exportar e importar =)<br /><br />Outra feature bem bacaninha é o esquema de mostrar o caminho e pacote do arquivo que você está editando. Isso evita muitas merdas, principalmente se você é acostumado como eu a abrir arquivos através dos atalhos CTRL+SHIFT+R e CTRL+SHIFT+T. Bom, para abilitar esta feature use o atalho ALT+SHIFT+B.<br /><br />Outra feature bem bacana, é a Format Edited Lines on Save, que se encontra nas preferences no menu <b>Java > Editor > Save Actions</b>. Bem útil isso ai. Sem contar as diversas melhorias no editor de código, code assists, etc. Tem features novas pra caramba, quem quiser saber mais de uma olhada no revision notes.<br /><br />Infelizmente, apesar de existir já um download específico para Linux AMD 64bits, o velho problema conhecido desta plataforma com Java6 ainda existe, não sei bem de quem é a culpa, mas espero que isso se resolva no update 10 do JDK6 (que ainda está em Beta). Bom, não sei quantos sabem mas existe uma solução paleativa para isso que é adicionar um paramentro no arquivo eclipse.ini, logo abaixo do parâmetro -vmargs que é:<br /><code>-XX:CompileCommand=exclude,org/eclipse/core/internal/dtree/DataTreeNode,forwardDeltaWith</code><br /><br />Contudo, o que pude perceber mais uma vez, é que todo o processo de importação do antigo workspace continua bem clean. Bem bacana mesmo.<br /><br />Gostaria também de parabenizar o desenvolvedores do Eclipse, os quais mais uma vez entregaram o projeto dentro do prazo e com alta qualidade. E isso como todos sabemos é difícil hein...Anonymoushttp://www.blogger.com/profile/07613506182946725596noreply@blogger.com1tag:blogger.com,1999:blog-4423626117872081712.post-32201436681939169922008-06-15T09:22:00.002-03:002008-06-15T09:25:04.620-03:00Nerdson - Paródia de Eduardo e MônicaUm site que realmente acho legal é o tal do nerdson, não sei porque mas me identifico com ele =)<br /><br /><a href="http://nerdson.com/blog/os-nerds-tambem-amam-4/">Vejam esta tirinha!</a>Anonymoushttp://www.blogger.com/profile/07613506182946725596noreply@blogger.com0tag:blogger.com,1999:blog-4423626117872081712.post-61948512662475941692008-05-09T14:13:00.003-03:002008-05-09T14:30:05.916-03:00Cansou da cor das divisórias da sua baia? Forre-as com Refcardz!!Talvez alguem esteja se perguntando: WTF??!<br />Pronto, agora vc tem um monte de papelada de alta qualidade para colocar pregado nas paredes de sua baia, ou sala, ou o que for que vc use.<br /><br />Então, estou falando dos novos, bonitos e práticos Refcardz!<br />A idéia, dos caras foi comprimir as informações em um pequeno manual, feitas por pessoas que entendem do assunto, layoutado por profissionais de diagramação, e publicados gratuitamente =) quer coisa melhor? Agora você não precisa mais daqueles manuaisinhos (ruins) que nem lembro o nome, mas vc encontra em todo o lugar.<br /><br />Pra quem ainda não conhece, de uma olhada em <a href="http://www.refcardz.com">www.refcardz.com.</a><br />Hoje, há apenas 4 tipos diferentes:<br />- Spring Configuration (excelente!!!!)<br />- Getting Started with Eclipse (porra por que não tinha um troço destes no meu tempo?!)<br />- GWT Style, Configuration e JSNI Reference (não cheguei a ver ainda)<br />- Getting started with ajax (um quick reference de diversas bibliotecas e frameworks para se trabalhar com ajax)<br />Apesar de começar com apenas 4 refcardz (começaram bem pra caraleo), existe já o cronograma pronto para diversos outros.<br /><br />Então fique de olho, e vamos colorir nossas paredes! =)Anonymoushttp://www.blogger.com/profile/07613506182946725596noreply@blogger.com0tag:blogger.com,1999:blog-4423626117872081712.post-41140051672156259372008-04-12T15:25:00.000-03:002008-05-27T12:23:09.598-03:00Continuation - WTF?!?Neste post saberemos o que é essa tal de Continuation e pra que serve. Este post foi motivado por este <a href="http://julianocarniel.blogspot.com/2007/07/funcionalidade-de-threadtimer-em.html">post de javascript</a>, e quando comecei a pesquisar se não havia mesmo alguma implementação para Thread, ou alguma coisa parecida, em JavaScript, e me lembrei desta tal de Continuation.<br /><br /><span style="font-weight: bold;">Mas afinal, o que é Continuation?</span><br /><br />Uma boa definição, e de fácil entendimento eu achei no projeto <a href="http://cocoon.apache.org/">Cocoon</a> da Apache. Na <a href="http://cocoon.apache.org/2.1/userdocs/flow/continuations.html">documentação de pageflow</a> eles dizem o seguinte:<br /><blockquote>"<span style="font-style: italic;">...Think of a continuation as an object that, for a given point in your program, contains a snapshot of the stack trace, including all the local variables, and the program counter. You can not only store these things in the continuation object, but also restore the execution of the program from a continuation object. This means that the stack trace and the program counter of the running program become the ones stored in a continuation.</span>"</blockquote>Anonymoushttp://www.blogger.com/profile/07613506182946725596noreply@blogger.com0