Quinta-feira, 26 Fevereiro 2009

Reunião SouJava em São Paulo, dia 26/02

Hoje tem reunião do SouJava na cidade de São Paulo.

Veja a mensagem do anúncio

=======================================================

Nossa primeira reunião de 2009 irá acontecer HOJE.

Programação:

18:30 - Meeting
19:00 - Domain Driven Design (Sergio Lopes)
20:15 - Coffee-Break(Patrocínio da Caelum)
20:45 - JRuby on Rails: pronto para o prime time? (Fabio Kung)
22:00 - Encerramento

Local: Rua Tabapuã, 627, Itaim Bibi, São Paulo (no auditório da
Sucesu-SP, andar térreo).
http://www.sucesusp.org.br/site1/geral/localizacao.html

Por favor, enquanto o site do SouJava estiver sendo atualizado peço
que todos confirmem sua presença enviando um email para mim com o
título "CONFIRMAÇÃO REUNIÃO SOUJAVA - 26/02" e no corpo do email o
nome completo para o endereço:

jailton@soujava.org.br

Sua confirmação nos ajudará a organizar uma reunião muito melhor para
todos!! Obrigado.

Escrito por claudio at 3:12 PM categorizado por SouJava

Tags: soujava noticias

Terça-feira, 24 Fevereiro 2009

Voltei e algumas dicas

Apenas avisando que não morri, apenas fiquei preguiçoso para escrever.

Idéias não faltam, então para você não perder mais tempo, vou colocar algumas dicas e outras coisas que tenho feito

O projeto ainda precisa de algumas melhorias, que vou escrever aqui, com alguns screenshots e explicações.

  • Em um projeto passado, usei o Oracle SQL Plus, e cansado de pressionar a tecla para cima, na esperança de ter o histórico de comandos e o sqplus não suportar, então arrumei uma solução que funciona para qualquer aplicação console com prompt. É o rlwrap, veja a sintaxe do comando

rlwrap /usr/local/instantclient_10_2/sqlplus $*

Onde o histórico fica armazenado em ~/.sqlplus_history e a tecla para cima funciona.

O rlwrap é facilmente encontrado em qualquer distribuição linux.

 

  • Tenho instalado o mysql 5.0.51 instalado pelo apt-get no ubuntu. Precisei instalar a versão mais recente 5.1.31. Não queria perder muito tempo instalando e configurando arquivos de configuração com paths, portas, etc. Então encontrei um projeto mysql_sandbox, que consegue instalar várias versões do mysql em diferentes configurações e isoladas uma das outras.
./make_sandbox /usr/local/mysql_bits/unpacked/mysql-5.1.31-linux-i686-glibc23.tar.gz 
--db_user=claudio --db_password=blah123 --sandbox_port=3310

Pronto, tudo funcionando.
 

  • Ajudo a moderar algumas listas do SouJava, e no sistema atual do ezmlm (gerenciador de listas de email) cada mensagem moderada é enviada um email com um cabeçalho gigante para o meu email, então se eu tivesse 15 mensagens para moderar, é um pé no saco entrar em cada mensagem, rolar ao final para ver o conteúdo, copiar o endereço de aceite/rejeição, depois agregar tudo e enviar. Então cansado disso, gastei algumas horas e criei um sistema de moderação, ezmod.

Usei Wicket, JPA e Jetty, e está funcionando muito bem. Se alguém precisar fazer um test-drive posso enviar o link para moderar alguma lista. Por falar em Wicket, já lançaram o 1.4 RC2.
 

  • Quando pesquiso no google, algum resultados de outros mecanismos de pesquisa aparecem (tel3listas, etc.), outro comportamento foi o google adicionar uma espécie de customização de resultados, não gostei, e aproveitei para adicionar um parâmetro de busca por data. Coloquei isso nas configurações de pesquisa do firefox, no caminho
/usr/local/firefox/searchplugins/google.xml

Como está hoje

<Param name="q" value="{searchTerms}+-site:site.que.nao.quero.net+-site:outrosite.que.nao.quero.com.br"/>
<Param name="ie" value="utf-8"/>
<Param name="as_qdr" value="y5"/>
<Param name="hl" value="all"/>
<Param name="oe" value="utf-8"/>
<Param name="aq" value="t"/>

Basicamente alterei os parametros hl e as_qdr, que significam respectivamente o idioma e o resultado será direcionado para o idioma inglês (default); o as_qdr informa o uma faixa de tempo em meses ou anos.

Maiores informações sobre o significado dos parametros.

Escrito por claudio at 7:27 PM categorizado por Dicas e Scripts

Tags: dicas

Quinta-feira, 2 Outubro 2008

Geração de heap dump no linux 64 bits

Estou em um trabalho para um cliente envolvendo melhorias de performance na aplicação e no ambiente operacional (appserver, sistema operacional, jvm).

O ambiente é Linux 64 bits (RedHat, kernel 2.6.18 SMP), JDK 5 e Glassfish v2 ur2.

Em um dado momento, precisei gerar um heap dump, mas ocorreu um erro  sun.jvm.hotspot.debugger.UnmappedAddressException.

# /usr/local/jdk/jdk1.6.0_07/bin/jmap -J-d64 -F -dump:file=java_dump_10791.hprof  10791
Attaching to process ID 10791, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 10.0-b23
Dumping heap to java_dump_10791.hprof ...
Exception in thread "main" java.lang.reflect.InvocationTargetException
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at sun.tools.jmap.JMap.runTool(JMap.java:178)
        at sun.tools.jmap.JMap.main(JMap.java:110)
Caused by: sun.jvm.hotspot.debugger.UnmappedAddressException
        at sun.jvm.hotspot.debugger.PageCache.checkPage(PageCache.java:208)
        at sun.jvm.hotspot.debugger.PageCache.getData(PageCache.java:63)
        at sun.jvm.hotspot.debugger.DebuggerBase.readBytes(DebuggerBase.java:205)
        at sun.jvm.hotspot.debugger.linux.LinuxDebuggerLocal.readCInteger(LinuxDebuggerLocal.java:471)
        at sun.jvm.hotspot.debugger.DebuggerBase.readAddressValue(DebuggerBase.java:442)
        at sun.jvm.hotspot.debugger.linux.LinuxDebuggerLocal.readOopHandle(LinuxDebuggerLocal.java:431)
        at sun.jvm.hotspot.debugger.linux.LinuxAddress.getOopHandleAt(LinuxAddress.java:115)
        at sun.jvm.hotspot.oops.Oop.getKlassForOopHandle(Oop.java:222)
        at sun.jvm.hotspot.oops.ObjectHeap.newOop(ObjectHeap.java:348)
        at sun.jvm.hotspot.utilities.HashtableEntry.literal(HashtableEntry.java:53)
        at sun.jvm.hotspot.memory.SymbolTable.symbolsDo(SymbolTable.java:106)
        at sun.jvm.hotspot.utilities.HeapHprofBinWriter.writeSymbols(HeapHprofBinWriter.java:830)
        at sun.jvm.hotspot.utilities.HeapHprofBinWriter.write(HeapHprofBinWriter.java:396)
        at sun.jvm.hotspot.tools.HeapDumper.run(HeapDumper.java:56)
        at sun.jvm.hotspot.tools.Tool.start(Tool.java:221)
        at sun.jvm.hotspot.tools.HeapDumper.main(HeapDumper.java:77)

Tentei gerar o dump através de:

  • -XX:+HeapDumpOnCtrlBreak and kill -3
  • jmap -heap:format=b
  • gcore utility

Com isso decidi usar o JDK 6 u7 (changelog), mas ocorreu o mesmo problema.

UPDATE: A stacktrace mostrada acima, mostra a invocação de um comando jmap do JDK 6 u7, para uma VM 6 u7.
UPDATE: Anteriormente, quando estava com JDK 5 u12, tentei rodar o jmap a partir de uma VM 5 u12, mas o mesmo erro ocorreu
UPDATE: A VM não está com a opção -Xrs option.
UPDATE: O usuário que iniciou o processo é o mesmo que usei para invocar o comando jmap, root.

UPDATE: Alan Bateman, explicou sobre o uso da opção -F "A opção -F faz como que a ferramenta se conecte no processo de uma maneira não colaborativa e pode causa a geração de um dump inconsistente. Em outras palavras, não há garantia de que será um bom heap dump ao usar a opção -F", veja este comentário em inglês na seção de comentários abaixo.

Então encontrei um bug corrigido "Throws UnmappedAddressException while reading address from core file in shared area.", entao decidi usar o JDK 6 u10 RC.

Coloquei a opção -Xshare:off

E funcionou muito bem,o processo não foi derrubado e a aplicação funcionou normalmente.

Não esqueça que no momento do heap a JVM paralisa todas as threads e o arquivo gerado será tão grande (ou um pouco menor) como a memória RSS usada pelo processo.

Então, se for gerar heap dump em linux 64 bits, use o JDK 6 u10 RC com a opção -Xshare:off.

Ao final da geração do heap dump, as mensagens abaixo foram impressas

"Finding object size using Printezis bits and skipping over..."

Obrigado Tony, pelo seu trabalho no HotSpot.

Escrito por claudio at 1:28 AM categorizado por Java

Tags: java performance linux

Terça-feira, 9 Setembro 2008

Ferramentas de diagnóstico em performance na prática

3

Tenho efetuado a palestra sobre diagnóstico em problemas de performance, desde 2006 em diversos eventos.

Pelo feedback que recebo, percebo que este é um assunto de interesse para um numeroso grupo de profissionais.

Então, é por isso que você que é interessado em entender mais sobre performance, garbage collector, thread pools, thread dumps e memory dumps, deve comparecer no próximo dia 12 (sexta-feira) as 9h no Senac, onde ocorre o JustJava. Pois irei realizar um workshop na prática sobre este assunto.

O nome é "Diagnóstico e Resolução de Problemas de Performance em Java", é requerido trazer o laptop para máximo aproveitamento.

O workshop (hands-on lab), será um misto de palestra com exercícios sobre o tema. Será seguido (tentativa) o seguinte roteiro:

  • Explicação sobre um tópico
  • Demonstração
  • Fazer com que os atendentes resolvem um exercício

Os tópicos serão

  • Gerenciamento de memória do Java
  • Ferramentas para diagnóstico
  • Thread Dumps
  • Memory Dumps
  • Ferramentas para profiling

Para um máximo rendimento para o atendente, é necessário seguir alguns pontos:

Configurem as variáveis JAVA_HOME e PATH=$JAVA_HOME/bin

O uso do Linux não é obrigatório, mas facilita muito, e irei basear meus exemplos nele.

Note, que o tempo do workshop não será prejudicado, por aqueles que não possuem os sistemas instalados. Pois o tempo é curto para muito conteúdo de não fácil absorção.

Não posso esperar pela próxima sexta, para divertir com thread dumps, pools estourando e memória escorrendo pelos buracos do laptop.

Escrito por claudio at 2:57 AM categorizado por Java

Tags: eventos java noticias palestra justjava performance

Sábado, 6 Setembro 2008

Só Java

Só Java

Começou praticamente nesta semana o mês do Java no Brasil, uma iniciativa de diversos JUGs liderado pelo SouJava, onde teremos a participação de importantes membros da comunidade Java brasileira, pessoas experientes na tecnologia Java e que tem muito a compartilhar.

Teremos também a participação de diversos palestrantes internacionais, que irão a várias cidades do Brasil.

Confira quais são as cidades onde irá acontecer os eventos.

Serão muitas palestras onde as pessoas, vão ter acesso a informações sobre as novidades do mundo Java, melhores práticas, dicas, técnicas, ferramentas, frameworks, etc. Mostrando Java no lado servidor, em telefones celulares e pequenos dispositivos, no lado desktop/cliente.

Você simplesmente não pode perder esta oportunidade, é um investimento em sua carreira. Aprender com as palestras, fazer novos contatos, enriquecer o seu curriculo, tenho certeza que irá conseguir aproveitar muito bem.

O que sinto extremo orgulho de participar de uma comunidade como esta, é a capacidade de organização, comprometimento e realização de diversas pessoas dispersas geograficamente, para fazer um evento deste tipo.


JustJava 2008

O JustJava já está em sua 7a edição, isso mostra a tradição do evento em trazer boas palestras técnicas e informativas.

Eu participei de todos os JustJava e para mim foi muito bom, participar como palestrante e participante, assisti diversas palestras e aprendi muita coisa interessante.

E neste evento, você ainda pode ter a oportunidade de ganhar uma entrada gratuita.

O SouJava oferece uma entrada gratuita para, colaboradores que possam participar como Coordenador de Mesa.

O que faz um coordenador de mesa ?

- Anuncia o título e autor da palestra
- Ajuda ao palestrante se necessário;
- Controla o tempo da sessão
- Controla perguntas.

Quais as vantagens ?

- Entrada gratuita para o evento
- Visão privilegiada da palestra
- Interação com o palestrante
- Uma forma de contribuir com a comunidade, através do evento

Você quer ser um coordenador de mesa ? então preencha o formulário
abaixo, pois as vagas são limitadas.

http://soujava.org.br/display/v/Coordenador+de+Mesa

Mês de Java

O mês de Java, conta com a participação de diversos JUGs em várias cidades, vejam o mapa das cidades e datas que ocorrerão os eventos.

Eu já havia escrito sobre o mês de Java antes.

A atualização sobre o blog anterior, é a confirmação de diversos palestrantes internacionais que irão falar e demonstrar sobre Glassfish, Hudson, Sun Spot, NetBeans, Java ServerFaces.

Para quem não poderá ir nos principais eventos em São Paulo (JustJava e Sun Tech Days), poderá ir até alguma das cidades onde irá ocorrer o evento.


Escrito por claudio at 6:43 PM categorizado por Java

Tags: eventos java noticias palestra justjava

Quinta-feira, 21 Agosto 2008

HotSpot Internals

Encontrei um tempo atrás, um site wiki no endereço da Sun.com com informações interessantes para quem quer entender mais sobre HotSpot, mas não tem tempo para ler o código fonte, é o HotSpot Internals.

Como exemplo cito uma página sobre otimizações em código java, onde o HotSpot consegue tirar melhor proveito.

Escrito por claudio at 12:55 AM categorizado por Java

Tags: dicas java performance

Quinta-feira, 14 Agosto 2008

Reunião SouJava, Hoje 14/agosto/2008

Hoje (quinta-feira, 14 de agosto de 2008) terá uma reunião do SouJava.

Veja no link acima o anúncio completo e como fazer inscrições. Irá ter sorteio de assinaturas de revistas WebMobile, JavaMagazine e SQLMagazine.


IBM open source and Web 2.0 strategies (Estratégias IBM para open source e Web 2.0)

Palestrante: Steven Calello - IBM

Esta palestra será ministrada em inglês, porém disponibilizaremos um recurso de tradução simultânea que poderá ser utilizado por QUEM TROUXER UM RÁDIO FM!!! (celular ou walkman)


Escrito por claudio at 3:04 PM categorizado por SouJava

Tags: soujava noticias java

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