Quarta-feira, 18 Agosto 2010

Bolo da Deliciane na Comunidade VIP

Alguém já notou um link dos bichinhos cor de rosa, logo abaixo, esse é o link para o site www.deliciane.com.br

Esse é o site da minha esposa Eliane, que adora fazer as mais deliciosas artes em bolos decorados. 

Recentemente ela criou um bolo de chá de panela, que foi fotografado no site da comunidade vip. Veja a foto completa e o link abaixo.

O site dela sofre tantos acessos que já é está perto do top list do resultado por bolos artisticos df, só tenho orgulho sobre o site e as artes que ela faz.

Se alguém em Brasília precisar de bolos artísticos, faça um orçamento com ela.

Veja no site www.deliciane.com.br  as fotos dos bolos temáticos dos mais variados tipos.


Escrito por claudio at 12:02 AM categorizado por Diversos

Sábado, 10 Julho 2010

Arrombamento e Roubo de Bicicleta

Há duas semanas comprei uma bicicleta para poder ir pedalando ao trabalho. Já escrevi sobre isso no passado, que inclusive é top no google results.

Comprei uma bicicleta nova, quadro pro-shock, grupo de cambio shimano altus/acera, 24 marchas. Uma bicicleta muito boa para meus propósitos, de pedalar 16 KM diários (ida/volta ao trabalho).

Mas essa vontade de ir pedalando ao trabalho, vai ter de esperar um pouco mais, pois minha casa foi arrombada nesta madrugada e levaram 2 bicicletas aro 26, minha e da minha esposa.

Fiquei acordado até as 2:30, assisti o 5o capítulo de "The Pacific", e fui dormir, minha esposa ficou acordada até as 3:00, fazendo o que ela adora. As 3:30 ela me acordou dizendo que escutou barulhos de estalos de ferro, que poderia ser em nosso portão eletrônico da garagem (é um portão vertical). Meio sonolento levantei-me, então escutei um estampido mais forte de metal sendo forçado, corri até a sala onde estava tudo escuro e pela claridade da rua, percebi um vulto (FDP, para ser exato) DENTRO DE MINHA VARANDA. Neste momento senti uma raiva como dificilmente lembro de sentir antes. Se eu tivesse super-poderes iria transformar aquele indivíduo em vácuo.

Neste momento não tem plano B, tratei de trancar as portas, fui até o fundo, peguei meu facão de mato e outro punhal de cortar peixe, lembrei-me de quando era faixa-marrom de kung-fu e aos gritos de polícia, FDP, disque 190, fiquei na espera. A Eliane e as crianças ficaram no quarto.

Felizmente os deliquentes foram embora, fui até a frente de casa e percebi a ausência das duas bicicletas. Raiva total. Dali a pouco surge a polícia e diz para fazer um B.O. e fazem algumas perguntas e vão embora.

Ficou eu, desmoralizado total, impossibilitado de fazer nada, sem correr algum risco de vida.

Neste momento surge o sentimento de raiva, o que poderia ter sido feito para evitar, etc. Depois de um tempo, é o sentimento de tristeza, sobre um bem que nem terminei de pagar.

Felizmente minha família, a casa e o carro não foram tocados, mas o sentimento de raiva e desmoralização é terrível.

Pesquisei sobre roubo de bicicletas e verifiquei que no DF é alarmante a quantidade de casos deste crime.

Fica a recomendação, se você guarda sua linda bike, guarde-a bem, e tranque todos os portões com cadeados, fique espero ao chegar em casa.

Eu estava com um rascunho de um 2o posto sobre usar a bicicleta como meio de transporte, mas agora vou ter de esperar até conseguir ter outra bike e ter os desafios de ir trabalhar de bicicleta.

Obrigado por lerem até aqui e sensibilizado-se com este problema.

Vejam um vídeo que mostra um pouco do dia a dia com bicicletas na cidade de Utrecht, Holanda. Interessante, não ?

Escrito por claudio at 5:48 PM categorizado por

Quarta-feira, 7 Julho 2010

Dicas Thunderbird

Duas dicas sobre o cliente de email thunderbird

Mensagens de notificação em preto

Fiz o upgrade para a versão 3.1 e as mensagens de alerta do thunderbird no linux, aparecem sem conteúdo, tudo preto, como abaixo.


Vi que é um bug do thunderbird, onde o problema é enviar mensagens de notificação sem um título.

Para corrigir, abra o arquivo thunderbird-3.1/modules/activity/alertHook.js e altere a linha abaixo, para incluir a palavra "Alert" (2o argumento)

this.alertService.showAlertNotification("chrome://branding/content/icon48.png", "Alert",aMessage);

Reinicie o thunderbird, para valer a alteração.

Então as mensagens irão aparecer corretamente.


Indexação de mensagens

O thunderbird tem uma opção que realiza a indexação de todas as mensagens, onde é possível efetuar buscas nos textos de todas as mensagens e exibir de uma maneira mais organizada em uma tela  só.

No entanto o arquivo de índice vai ficando bem grande e percebi que o thunderbird dá um crash toda vez que saio dele. Seguindo uma recomendação que vi em alguns fórums, desabilitei esta indexação e não ocorreu mais crash e o arquivo de índice não é usado mais.

Note que isso não prejudica em nada a pesquisa que o thunderbird já faz.

Para desabilitar vá na opção abaixo e desative-a.

Preferências -> Avançado -> Geral -> Ativar pesquisa global e indexação

Escrito por claudio at 11:20 PM categorizado por

Tags: linux dicas

Travamentos na conexão SSH

Recentemente instalei um Red Hat Enterprise Linux 5.5 (RHEL) headless, um servidor para servir de experimentos.

Este é um servidor headless, keyboardless, mouseless, a única maneira de trabalhar com ele é pela rede, onde uso o SSH.

Logo após a instalação percebi que as conexões ora congelavam, o terminal travava, qualquer output de dados maior do que um pagedown, já travava, não era possível que um problema deste tipo ocorria com o RHEL, mas me irritava muito, isso era tanto para conexões SSH, como para HTTP, etc.

As configurações do SSH, rede, sem firewall, sem SELinux, o que poderia ser...

Nas investigações, percebi que o driver da placa de rede estava incorreto.

A minha placa de rede é uma "Realtek Semiconductor Co., Ltd. RTL8111/8168B" e a versão do driver instalado pelo RHEL era para outro modelo.

Então a solução foi copiar o driver do fabricante, compilar e instalar.

Dicas adicionais podem ser vista no website do CentOS.

Fica a dica, se o seu servidor linux remoto começar a congelar no resultado dos comandos, após uma instalação ou atualização, verifique se o driver da placa de rede confere com a placa real.


Cortesia de XKCD.com

Escrito por claudio at 11:06 PM categorizado por

Tags: linux dicas

Quinta-feira, 17 Junho 2010

RedHatter convicto

Estou de casa nova !

Vejam meu novo email



Estou no time JBoss / Red Hat do Brasil com um super time, e para mim isso representa uma viagem que começou há mais de 12 anos, quando peguei o cd de incríveis 650 MB para instalar no meu Pentium (comprado com muito suor), o Sistema Operacional Red Hat Linux Marumbi da Conectiva. Depois comprava CDs na cheapbytes.com, tempos interessantes.

E foi em 1998 que começei a estudar e trabalhar com Java e Linux, tudo linha de comando, aquele programa gerenciador gráfico X, uau que fantástico, tinha o xeyes de entretenimento. E isso era um UNIX servidor rodando no meu Pentium. Opa, claro que tinha o windows NT server, que é acompanhado por alguns virus e falhas de segurança homéricas. E eu com meu linux, compilando meu próprio kernel, altos desafios para fazer o winmodem funcionar no linux. Isso após migrar serviços de FTP, SMTP, POP, etc de clientes que usavam novell para linux. Yeah !

Em 2000 em um projeto com EJB precisava testar o projeto, mas não tinham licença do weblogic 5 na época, então achei um tal de EJBoss com um logo de ET no site, que depois de muita configuração de xml funcionou na minha maquininha. Esse EJBoss (Coding the future) é bom mesmo.

E agora estou nesta companhia, fundada com os princípios de código livre e com tecnologias que uso há muito tempo (I am NOT the Mac guy).

O estado atual, a Red Hat é uma das empresas de TI no mundo que mais crescem, com 18% em 2008, 46% em 2009 e neste 1o trimestre cresceu mais do que no 1o trimestre de 2009.

Jim Whitehurst (Red Hat CEO) escreveu "Show me the money" onde diz que uma das maiores contribuições que a Red Hat fez é mostrar que é possível ganhar dinheiro com open source. Afinal de contas, todos temos contas para pagar.

Acredito que tenho um bom caminho a trilhar na Red Hat, com seus projetos e produtos líderes de mercado.

Tenho amigos com quem já trabalhei na Summa que estão na Red Hat como o Clebert Suconic, Edgar Silva, Bruno Rossetto e Rafael Benevides.

Falando em Summa, quero dizer o quanto particpar desta companhia foi gratificante para mim. Pude participar ativamente de trabalhos que hoje são projeção nacional e exemplos do uso de Java no mundo. Projetos como loterias (sistema de processamento de lotérico e financeiro), ADSL Brasil Telecom, DDA (Débito Direto Autorizado), entre outros.

Foram 8 anos onde trabalhei com um time de profissionais competentes e dedicados, onde fiz amigos e partilhei tantos bons momentos e happy hours :)

Digo muito obrigado por terem me aceitado a participar deste incrível time e acredito que consegui contribuir para alavancar não só novas oportunidades, mas também conquistar amigos.



Escrito por claudio at 3:17 AM categorizado por Linux e F/OSS

Tags: linux java

Segunda-feira, 5 Abril 2010

Análise e melhoria de um teste com GC

Motivado pela liberação do teste de threads, quiz fazer um pequeno teste, que ajude a analisar o funcionamento do Garbage Collector e como algumas alterações podem melhorar o desempenho.

Quando se fala em teste, existe muita discussão sobre a validade dos resultados.

Então já digo que este é um teste caseiro, para ter sua opinião, faça o teste em seu ambiente.

1) Teste

O teste de threads (NumThreads.java, projeto completo), lança todas as threads enumeradas no parametro, em que cada thread faz uma série de processamento matemático, cada thread pode repetir o processamento em uma quantidade determinada.

o fluxo de criaçao, coloca em um array, depois faz o start de cada thread, depois faz um join para esperar o processamento de todas as threads.

O start de cada thread não começa imediatamente, existe um barreira (CyclicBarrier) que aguarda o contador de todas as threads que foram iniciadas para que todas possam de fato entrar em operação juntas.

Em uma configuração default da JVM não consegui inicar com mais de 2700 threads, 2000 operações matemáticas por thread, ocorriam erros da JVM (OOME, ThreadDeath, Stackoverflow, etc.)

A minha máquina é um laptop toshiba, Core2 Duo T2400 1.83 GHz com 3 GB de RAM.

2) Monitoramento

O monitoramento foi feito usando o vmstat, jvisualvm, jmap
No caso do vmstat, coloquei a data como prefixo.

3) Resultado (1a bateria)

O teste foi iniciado com os seguintes parametros, que geralmente é o comum, onde configura-se apenas o tamanho máximo do heap. Depoi veremos o que se pode melhorar neste teste.

$ time java -Xmx2g -classpath build/WEB-INF/classes/:src/conf/:src/java/ br.com.claudius.threads.NumThreads 2700 5000 60

O tempo total, deve ser descontado 60s que usei como pausa antes das threads começarem de fato (3o parametro)

real 3m11.948s
user 2m14.612s
sys 1m40.354s

O tempo total foi de 2min11s ou 131s O que chama a atenção na configuração default é o tamanho do Stack de 320 kb, bem grande.

$ jinfo -flag ThreadStackSize 18610
-XX:ThreadStackSize=320

A configuração do heap (apenas a parte importante)

$ jmap -heap 18610
Server compiler detected.
JVM version is 16.0-b13

using thread-local object allocation.
Parallel GC with 2 thread(s)

Heap Configuration:
MinHeapFreeRatio = 40
MaxHeapFreeRatio = 70
MaxHeapSize = 2147483648 (2048.0MB)
NewSize = 4194304 (4.0MB)
MaxNewSize = 4294901760 (4095.9375MB)
OldSize = 4194304 (4.0MB)
NewRatio = 2
SurvivorRatio = 8
PermSize = 16777216 (16.0MB)
MaxPermSize = 67108864 (64.0MB)

Um pedaço do vmstat durante a execução

2010-04-02 20:47:16 procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
2010-04-02 20:47:16 r b swpd free buff cache si so bi bo in cs us sy id wa
...
2010-04-02 20:48:44 51 0 0 283440 81520 1825480 0 0 0 0 1131 934 61 36 3 0
2010-04-02 20:48:48 50 0 0 286032 81528 1811856 0 0 0 11 1230 1291 64 30 5 0
2010-04-02 20:48:52 109 0 0 259780 81528 1811324 0 0 0 5 1133 1579 58 36 5 0

Percebe-se que a "run queue" (coluna r) possui um alto número de tarefas aguardando um tempinho da CPU para processar alguma instrução.

Vejam um screenshot do visualgc ao fim do teste


<info>

O VisualGC é um plugin do VisualVM. Na versão atual do Java, o visualvm faz parte do download do java, mas é chamado de jvisualvm.

Durante o teste ocorreram 115 ações do GC na área YOUNG que duraram 3.306 ms, enquanto a área OLD com seus 1,3 GB ociosos.


VisualGC 1

4) Análise

O objetivo do teste é a JVM e não a aplicação, então nem vamos olhar na aplicação.

Sempre em uma análise do GC, é importante diminuir o impacto do tempo do GC na aplicação. Sempre que puder diminuir o tempo total do GC ajuda o throughput da aplicação.

Em uma análise óbvia, percebe-se que a área OLD está ociosa, enquanto existe atividade intensa na área YOUNG, então seria natural aumentar a área YOUNG para um tamanho grande. Aqui que costuma ocorrer um erro comum também, onde aumentar uma área é proporcional ao tempo de GC, pelo tamanho maior a ser varrido.

Por esta applicação ser orientada a CPU (muitas threads), processamento matemático, sem sincronização, sem rede, sem banco de dados, então é uma análise orientada para menor consumo de CPU e otimização do funcionamento do Garbage Collector.


5) Resultado (2a bateria)

Será feito uma otimização na invocação do comando java

$ time java -server -XX:+AlwaysTenure -XX:+UseConcMarkSweepGC -Xss64k -Xms2g -Xmx2g -classpath build/WEB-INF/classes/:src/conf/:src/java/ br.com.claudius.threads.NumThreads 2700 2000 10
Parametros adicionais:

Parametro
Explicação
-server Usa otimizações específicas para o modo de aplicações servidoras.
-XX:+AlwaysTenure Não usa espaços Survivors da área YOUNG, a promoção vai direto da YOUNG para OLD.
-XX:+UseConcMarkSweepGC Usa o algoritmo concorrente na área OLD e Paralelo na área YOUNG (-XX:+UseParNewGC)
-Xss64k Reserva 64 kb para o tamanho do stack de thread.
-Xms2g Aloca inicialmente o tamanho do heap para 2 GB
     
real 1m5.618s
user 0m51.967s
sys 0m38.598s

Percebe-se a melhoria no tempo de 66s.

Descontar 10s deste tempo final, pois na aplicação tem uma pausa de 10s antes de começar o teste.

O visualgc mostra uma melhoria significativa, onde ocorreram 86 ações do GC com duração da atividade de  GC em 836 ms.

VisualGC 2

Ao efetuar a mesma medição com o jstat, percebe-se uma melhoria marginal no tempo total do GC, mas com boa diminuição na quantidade de GC.

$ jstat -gcutil 1451 3s
S0 S1 E O P YGC YGCT FGC FGCT GCT
0,00 0,00 54,22 0,08 11,30 71 0,799 0 0,000 0,799
0,00 0,00 81,01 0,08 11,30 75 0,808 0 0,000 0,808
Ao diminuir o tamanho do stack para 48k (o mínimo aceito pela JVM), o tempo do GC melhorou bem.
Com -Xss48k
$ jstat -gcutil 4265 3s
S0 S1 E O P YGC YGCT FGC FGCT GCT
0,00 0,00 44,52 0,08 11,30 75 0,670 0 0,000 0,670
0,00 0,00 97,33 0,08 11,30 79 0,685 0 0,000 0,685

O comportamente da CPU mostrado pelo vmstat, mostra um uso bem mais modesto da CPU, veja a coluna r (run queue)

2010-04-05 00:40:14 procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
2010-04-05 00:40:14 r b swpd free buff cache si so bi bo in cs us sy id wa
...
2010-04-05 00:40:53 24 0 0 1386056 249416 953668 0 0 0 0 1190 631 52 32 16 0
2010-04-05 00:40:56 7 0 0 1390532 249424 953660 0 0 0 4 1199 645 59 32 10 0
2010-04-05 00:40:59 18 0 0 1395652 249424 953500 0 0 0 0 1196 609 54 34 12 0

Nota 2: o VisualGC é um plugin do VisualVM (Tools -> Plugins -> Available Plugins)

5) Conclusão

No 2o teste foi percebido uma melhoria significativa no tempo total e com menos impacto na utilização da CPU.

Não foi feito um super mega tunning para este exemplo, mas mostrar que com uma boa análise, alguns testes, é possível observar o comportamento da aplicação e aplicar as otimizações no lugar certo.

Tente executar um teste e análise em seu ambiente.

6) FAQ ?

6.1) Você usou o G1 ?

Usei o algorítimo G1 mas o resultado foi inferior ao concorrente, mas o pior neste caso foi que a ferramenta jstat não consegue exibir os resultados das áreas de memória.

Warning: Unresolved Symbol: sun.gc.generation.0.space.1.capacity substituted NaN
Warning: Unresolved Symbol: sun.gc.generation.0.space.1.used substituted NaN
...
Warning: Unresolved Symbol: sun.gc.collector.0.time substituted NaN
Warning: Unresolved Symbol: sun.gc.collector.1.time substituted NaN
S0 S1 E O P YGC YGCT FGC FGCT GCT
� � � � 30,33 � � � � �

6.2) Porque aumentar o stack size da aplicação de teste para monitorar ?

Parece que as ferramentas gráficas jconsole e visualvm exigem um stack de tamanho maior para monitorar, caso contrário ocorre um erro

*** java.lang.instrument ASSERTION FAILED ***: "!errorOutstanding" with message transform method call failed at ../../../src/share/instrument/JPLISAgent.c line: 806
Segmentation fault

isso é assunto para outro blog

6.3) Porque não aumentar o tamanho da área YOUNG (-XX:+NewSize)

Ao aumentar o tamanho da área YOUNG diminuiu a quantidade de GC, mas o tempo total do GC aumentou e isso trouxe uma performance inferior ao teste final. Nem sempre aumentar o tamanho da YOUNG beneficia a aplicação. Cada caso tem de ser analisado diferente.

Escrito por claudio at 11:23 AM categorizado por Java

Tags: java performance

Quinta-feira, 1 Abril 2010

Voltando para Brasilia + DOTNET Certified Instructor

Ahhh, finalmente posso dizer isso agora.

Depois de um ano na ponte aérea Brasília/São Paulo, estarei voltando a firmar meu trabalho em Brasília.

Nestas viagens frequentes a SP, aprendi muitas tecnologias e novas fronteiras para o potencial técnico. Mas o meu dever familiar falou mais alto e tenho de voltar para Brasília.

E veio ao encontro desta necessidade um desafio na minha carreira, onde vou participar de um novo time em Brasília de evangelistas DOTNET no time da Microsostet, onde irei atuar com clientes governamentais e com a comunidade FSF.

Fiquei contente de ver que tenho outros colegas com quem já trabalhei, que tenho certeza vão agregar muito no time do c# e tenho certeza que esse empreendimento tem tudo para dar certo.

Aproveitando, quero parabenizar neste primeiro de abril o aniversário de meus amigos Marcelo Ribeiro e Alexandre Jeong, saúde e sucesso.

Escrito por claudio at 12:14 AM categorizado por Diversos

Tags: java noticias

 
     Navegue no histórico de mensagens: « First  « Prev   1 2 3 4 5   Next »  Last »