Terça-feira, 1 Abril 2008

Novos desafios, consultor em C#

É com satisfação que enfrento um novo desafio, que é expandir meus conhecimentos em tecnologias Microsoft. Tenho trabalhado há muito tempo com Java, mas vejo que é hora de aumentar meus conhecimentos com as tecnologias do futuro. Microsoft C#

Por conta disso, já instalei o windows vista com visual studio em meu computador. Infelizmente tive de remover o Kubuntu. Agora que tenho um ambiente windows em plena funcionalidade, posso usar todo o potencial da plataforma Microsoft para desenvolvimento, aplicar as últimas tecnologias para web 2.0.

Desisti de Java ? ainda não, pois tenho de criar um método de migrar aplicações Java para a plataforma Microsoft DotNet, então ainda tenho um percurso considerável nos próximos meses.

Considerando que hoje é 1o de abril, alguns amigos fazem aniversário então fica meu recado, feliz aniversário, saúde e sucesso.

Escrito por claudio at 10:30 AM categorizado por Java

Quarta-feira, 20 Fevereiro 2008

Ir trabalhar de bicicleta

Dicas

Esta dica é para o pessoal que quer ir de bicicleta ao trabalho, mostro aqui a minha experiência de iniciante neste modelo de transporte. 

Desde o fim de janeiro decidi que quero ir de bicicleta ao meu trabalho, então houve várias considerações que tive de fazer, entre custos, segurança, tempo, etc. Então escrevo as minhas recomendações pelo que já passei até agora.

Custos

Se você pensa em usar a bicicleta para economizar no carro ou transporte coletivo, é relativo. É necessário pensar em longo prazo, para gerar economia no uso do carro. Já no transporte coletivo, a bicicleta vai ter um custo igual ou maior.

Veja quais são os custos:

  • Aquisição de uma bicicleta boa => R$ 800
    Tem de ser uma bicicleta boa, para não te dar dor de cabeça com cambio porcaria; os equipamentos devem ser de boa qualidade, para aguentar o trajeto

  • Itens de segurança => R$ 50
    É importante o capacete, refletores (dianteiro e traseiro)

  • Mochila para carregar os cacarecos => R$ 70
    Uma mochila grande de 60 litros, impermeável e com vários bolsos, e amarras na cintura. De fato elas não são 100% impermeável, pois pode entrar água pelo zíper, pelo que entendi as mochilas completamente impermeáveis somente a de mergulho.

  • Bagageiro de transporte => R$ 20
    Este preço pode variar muito, até R$ 120 (nos modelos que são presos no canote do banco). O que tenho é o tradicional que é parafusado no quadro (perto do eixo traseiro)

  • Cadeados e correntes => R$ 40
    3 ou 3 cadeados com 2 correntes de 1 metro cada, para proteger o quadro e as 2 rodas.

  • Local para banho (opcional) => R$ 20
    Pode ocorrer que o seu local de trabalho não tenha chuveiros, então é necessário pagar em alguma academia próxima para usar o banheiro.

  • Medidores (opcional) => R$ 60
    Ter um medidor de velocidade, tempo médio, distância percorrida, cronometro, timer, etc. é muito bom pois permite acompanhar a tua evolução no uso da magrela.

  • Equipamento de manutenção (opcional) => R$ 50
    Imprevistos acontecem, pode ser um pneu furado, parafuso solto, etc., então é importante estar preparado para isso. No meu caso não carrego estes equipamentos, pois aumenta o peso. Mas tenho em casa, quando for percorrer algum trecho maior e em lugar afastado.

Isso totaliza R$ 1110

Perceba que esse é o custo inicial. Ainda existe o custo de manutenção da bicicleta.

Geralmente o custo da bicicleta está associado ao quadro e agrupamento de cambio (passador de marcha, coroa e cambio dianteiro, catraca e cambio traseiro e pé de vela), pelas minhas pesquisas o agrupamento Shimano Altus ou Alívio são muito bons.

A qualidade da bicicleta é proporcional ao tipo de terreno onde ela vai passar e seus obstáculos, e o quanto de dor de cabeça é possível aguentar com algo de qualidade inferior. E lembre-se que você irá confiar sua vida e seus pertences nela, quando estiver em alta velocidade, tudo tem de funcionar muito bem.

Tempo

Veja em antecipação qual o trajeto a ser percorrido e percorra este trajeto para ter uma estimativa de tempo. Note que deve ser considerado o peso da bagagem e o tráfego de veículos que pode diminuir o seu tempo. Com isso fica fácil criar uma agenda para não chegar atrasado naquela reunião às 9h da manhã.

Também considere o tempo usado para tomar um banho, trocar de roupa e guardar a bicicleta e mochila apropriadamente, no meu caso esse tempo demora uns 20 minutos.

Use o Google Maps para criar o trajeto (tem uma opção no gmaps que permite criar o trajeto com setas e pontos).

Segurança

Na criaçao do seu trajeto evite as ruas movimentadas, principalmente onde existem retornos, entradas de carros que entram e saem da avenida principal. Isso pode causar grande demora para encontrar uma brecha e atravessar. Outro problema em pedalar por ruas movimentadas, são as necessidades de se desviar de algum obstáculo (buraco, elevações, objetos, etc.), neste desvio repentino pode ocorrer um acidente.

Tente usar ruas de pouco movimento ou parques, mesmo que demore um pouco mais, pois diminui o risco de ser acidente.

No local de trabalho verifique com antecedência, quem são os seguranças que trabalham lá, verifique se existe alguma norma para estacionamento de bicicletas e informe-os que você vai estacionar a bicicleta em lugar adequado.

Fique esperto quando andar de bicicleta, pois sempre existem malandros esperando o momento certo para te derrubar da bicicleta e roubá-la.

Conveniência

Entenda que sempre haverá situações de inconveniência:

  • Ao usar a mochila para guardar sua roupa de trabalho, irá dar uma boa amassada nela.
  • Pode ser que o banheiro onde irá tomar banho e trocar de roupa, não tenha o seu padrão costumeiro.
  • Ao chover muito e não tiver abrigo, tem o risco de entrar água na mochila. Ou um carro te dar um banho de água suja.

Benefícios

  • Os benefícios de andar de bicicleta contribuem para sua saúde física e mental
  • Insignificantemente reduz a poluição por gás carbonico
  • Contribui para diminuir tráfego de veículos
  • Reduz os custos de transporte do seu veículo

No meu caso, é um trajeto de 40 km diários, no tempo total demoro 1h aproximadamente para percorrer os 20 km de ida ou volta.

Como eu também pratico corridas de atletismo, já percebi que minha performance melhorou, pois no ciclismo outro grupo de musculos foram fortalecidos, melhorando o desempenho no atletismo.

Se essa dica foi importante para você, deixe um comentário.

Segue outras referências:
http://z004.ig.com.br/ig/22/22/112022/blig/freeride/2006_06.html
http://www1.folha.uol.com.br/folha/equilibrio/noticias/ult263u3822.shtml
http://pedaleiro.wordpress.com/2007/08/25/40-benefcios-vantagens-das-bicicletas/

Escrito por claudio at 11:38 AM categorizado por Diversos

Tags: dicas

Resolvendo memory leak - Identificando o comedor de memória

Resolvendo memory leak - Procurando o devorador de memória - parte 1


Algo que vejo recorrente em fóruns e listas de discussão, colegas que perguntam para mim, é "como detectar e resolver o memory leak ?"

Começarei uma série de dicas voltados a encontrar e resolver o problema de retenção de memória (memory leak) em aplicações Java. Posteriomente, será feito um tutorial para resolver problemas de CPU.

Estas dicas podem ser úteis para programadores que ainda não passaram por este problema ou não conhecem as ferramentas. Mesmo para profissionais experientes, espero que possa contribuir.

Isso é baseado em minha experiência, em ambiente linux e solaris. Será dado ênfase no uso de ferramentas gratuitas ou de código livre, para ajudar neste processo. Para ambiente windows, onde possível colocarei as dicas aplicáveis para este SO, mas devo dizer que não tenho especialidade neste SO, portanto desconheço as ferramentas mais adequadas.

Ambiente de produção e desenvolvimento

Também será mostrado como resolver esse problema, tanto em ambiente de produção como em ambiente de desenvolvimento, com as ferramentas disponíveis em cada amviente (exemplo: invocar profiler ou debug em ambiente de produção é bastante caro em termos de performance).

É importante endender que a aplicação pode sofrer monitoramento de maneira intrusiva e não intrusiva.

  • Intrusivo: quando é necessário modificar as configurações de inicialização da aplicação para permitir uma introspecção de suas chamadas de sistemas e quando ocorre uma interceptação destas chamadas de sistemas pelo esquema de monitoramento intrusivo. Um exemplo disso são os profilers e debuggers. Isso gera penalidade em performance, modificação da configuração do ambiente e instalação de ferramentas, o que em ambiente de produção pode ser um grande problema
  • Não intrusivo: Quando é usado ferramentas de monitoramento, que não geram interceptação das chamadas do sistema, não geram impacto negativo em desempenho e não precisam de instalação de software adicional.

Existem uma série de passos, começando por descobrir onde ocorre problema de retenção, até sua resoluçao.

Qual processo do sistema operacional consome memória em demasiado ?


Este é o 1o passo, para identificar se o programa (desktop ou servidor) consome memória sem manter estável.

É importante entender que a aplicação deve ter passado por todas as etapas de criação de objetos e recursos, que já tenha passado por um ciclo de vida. Isso pode ser alcançado, navegando pela aplicação, consultando relatórios, etc.

É necessário usar apenas o SO e suas ferramentas, para descobir qual o processo está neste estado.

Ferramentas:

  • Linux: top, htop, ps
  • Solaris: prstat, ps
  • Windows: gerenciador de tarefas

Segue um exemplo de um programa que consome memória (propositadamente), e sua medição pelos respectivos utilitários do SO.

Vejam que existe um processo java que consome muita memória. O que neste caso interessa saber o PID (process ID) e a linha de comando.

Linux top

Percebe-se uma visualização com cores, linha de comando completa e ordenação diferentes, isso pode ser alcançado por atalhos

z => modifica o esquema de cores

c => mostra a linha de comando completa

shit M => ordena pelo consumo de memória

W => Torna esta configuração o padrão nas próximas invocações do comando top

O top tem uma vantagem, que ele já vem instalado em qualquer linux, então não é necessário efetuar download e instalá-lo. Já o htop, fornece uma visualização melhorada, mas é necessário efetuar download e instalar.

Para saber o consumo da memória por processo, veja na coluna RSS (ou RES), este é o valor de memória física consumido pelo processo (de fato, existem algumas discussões em fórums sobre o comando RSS ser bem uma aproximação do valor real, mas fico devendo uma explicação melhorada sobre isso em outro blog)

Linux htop

Este utilitário, fornece uma visualização melhorada sobre os processos e os recursos.

Linux ps

$ ps -eo pid,user,%cpu,rss,vsz,etime,nlwp,args
  PID USER     %CPU   RSS    VSZ     ELAPSED NLWP COMMAND
 7642 claudio   0.7 343536 658804      05:23   12 java TestReferences

A diferença do comando ps e top, é apenas a visualização, já que o ps recupera um snapshot do sistema.

O diferencial deste comando, é que mostra também a quantidade de threads por processo, na coluna NLWP.

Solaris prstat

$ prstat -s rss
   PID USERNAME  SIZE   RSS STATE  PRI NICE      TIME  CPU PROCESS/NLWP
   617 claudio   102M   78M sleep   59    0   0:00:01 2.1% java/9
   554 root      106M   32M sleep   59    0   0:00:01 0.2% ns-httpd/71
     7 root       11M   10M sleep   59    0   0:00:03 0.0% svc.startd/12
     9 root       11M 9384K sleep   59    0   0:00:07 0.0% svc.configd/17
   308 root       12M 8528K sleep   59    0   0:00:01 0.0% fmd/16
   553 root       27M 8088K sleep   59    0   0:00:00 0.0% ns-httpd/2
   618 root     8936K 4416K sleep   59    0   0:00:00 0.0% sshd/1

Foi usada a opção prstat -s rss para ordenar a apresentação baseada no consumo de memória. Outra informação é a quantidade de threads por processo, na coluna NLWP

Windows task manager


Então foi identificado qual é o sistema que consome mais memória. Com isso é possível ter um ponto de partida na análise do processo.

No próximo blog, que pretendo escrever em dois dias (espero), será mostrado como detectar se existe memory leak.

Escrito por claudio at 12:45 AM categorizado por Java

Tags: dicas java linux performance solaris

Quarta-feira, 16 Janeiro 2008

Livros Java e Revistas JavaMagazine de graça

Tenho alguns livros sobre Java e UML e algumas revistas JavaMagazine, que estou disposto a doar. Não vou ler eles novamente. O único custo é o frete.

Vou copiar uma sugestão do Urubatan, e vou doar o livro para quem escrever algum artigo sobre Java.

Veja as regras logo abaixo:

Os livros (todos em inglês), estão em ótimo estado.

Atualização: os livros marcados com um traço horizontal, não estão mais disponíveis.

As edições da JavaMagazine que tenho são as seguintes abaixo, os números entre parenteses significa a quantidade que possuo de cada edição, quando estiver sem parenteses, então possuo apenas uma.

1 (3)
2 (2)
3
4 (3)
5 (4)
6 (2)
7 (4)
8 (3)
9
11
12
13

Regras:

  • Escrever no comentário desta página, o seu nome, email e livro ou edição da JavaMagazine deseja.
  • Escrever um artigo técnico sobre Java (escolha um tópico), e informe o link para o meu site. O formato do artigo não vale notícia.
    Se você não tiver site, tudo bem. Eu publico o artigo em meu site com os devidos créditos para o autor.
  • Depositar em uma conta fornecida por mim, o valor do frete.
  • O critério de desempate, quando duas pessoas solicitarem o mesmo livro/revista, será o de quem disponibilizar o artigo primeiro e me avisar.
  • Limite de 1 livro ou 2 revistas por pessoa.
  • Se você tiver um blog ou site, colocar um link permanente para o meu site.

 


Escrito por claudio at 11:30 PM categorizado por Java

Tags: java netbeans

Sexta-feira, 16 Novembro 2007

Ler arquivos do office com Java

Dicas

No passado existiu uma situação no projeto, em que existiam vários documentos de projeto (guia, arquitetura, requisitos, manual, etc.), vindo de diferentes fontes (diretório de backup, cdrom), e são documentos office (doc, xls, ppt), e vários documentos repetidos, mas de origens diferentes.

Então como saber qual é o último arquivo e remover os antigos ?

Uma maneira é abrir cada arquivo e olhar nas propriedades do mesmo, mas fazer isso manualmente com cerca de 300 arquivos, poxa não sou mais estagiário para isso :-D (nada contra os estagiários).

Então fiz um programa em java, que usa a API SDK do OpenOffice para ler estas propriedades e mostrar as datas da última modificação e o autor.

Claro que é possível usá-lo para ler qualquer outra propriedade ou expandir para outros usos.

Atualmente a pesquisa é efetuada nos seguintes arquivos com extensão: sxw doc xls odt ods pps odt odp ppt 

Altere o DocViewer.java para adicionar outras extensões. 

Faça o download do código fonte: DocViewer.java
(remova a extensão .txt)

Requerimentos: 

Em tempo de compilação é necessário as seguintes bibliotecas:

$OO_HOME/program/classes/juh.jar
$OO_HOME/program/classes/jurt.jar
$OO_HOME/program/classes/jut.jar
$OO_HOME/program/classes/ridl.jar
$OO_HOME/program/classes/unoil.jar

A variável OO_HOME aponta para o diretório de instalação do OpenOffice. No meu caso uso o BrOffice, que está instalado em /opt/broffice.org2.3

Em runtime:

  • Instalação do OpenOffice
  • X Virtual Frame Buffer (Xvfb)
  • Java (testei com a versão 5)

Compilação

Essa parte é simples, use sua IDE favorita ou o javac

javac -classpath /opt/broffice.org2.3/program/classes/\* src/claudius/DocViewer.java

Usei o classpath wildcards, válido apenas para o Java 6

Uso

Para colocar o openoffice em modo servidor, usei um servidor X virtual, isso é para ambiente servidor, onde não é necessário ter um monitor nem interface gráfica. No caso foi instalado o X Virtual Frame Buffer.

Se não puder instalar um servidor X virtual e iniciar a aplicação openoffice manualmente, tudo bem, basta não informar qual o servidor X a ser usado. Veja o exemplo abaixo:

Com servidor X virtual 

Xvfb :5 -screen 0 800x600x16 & 
/opt/broffice.org2.2/program/soffice -accept="socket,host=127.0.0.1,port=8100;urp;" -display :5 -headless -norestore -invisible &

Sem servidor X virtual

/opt/broffice.org2.2/program/soffice -accept="socket,host=127.0.0.1,port=8100;urp;" -headless -norestore -invisible &

Invocar o programa Java

A sintaxe para invocar é

java -classpath $CP claudius.DocViewer <path do arquivo ou diretório>

O classpath $CP é o mesmo usado na compilação, em adição ao diretório da classe DocViewer compilada.
O path, pode ser um arquivo único ou diretório, que neste último caso irá pesquisar nos subdiretórios também. 

Exemplo 

java -classpath build/classes/:/opt/broffice.org2.3/program/classes/\* claudius/DocViewer arquivo-projeto.odt

O resultado:

dir  = /home/claudio/resources/palestras/2007/10_justjava
file = diagnostico2.odp
Modified by: Claudio Miranda 5/10/2007 17:46:8

Se essa dica foi útil para você, deixe uma mensagem comentando como isso lhe ajudou.

Escrito por claudio at 3:36 PM categorizado por Java

Tags: dicas java linux

Quarta-feira, 14 Novembro 2007

Palestra "Performance em Aplicações Java" disponível

A palestra que ministrei no evento Conexão Java 2007 está disponível para download. Ou você pode assistir on-line à apresentação.

Nesta palestra coloquei mais algumas dicas de performance em Java, bem como houve uma sessão de QA ao final.

Quero agradecer à organização do evento pela oportunidade e à galera que aguentou firme 1,5h de assunto um tanto pesado.

Escrito por claudio at 5:20 AM categorizado por Java

Tags: java noticias palestra performance

Sábado, 10 Novembro 2007

450 GB de HEAP

Conversei com alguns colegas sobre um artigo que li há um tempo, onde mostrava que o BEA JRockit foi usado em um heap da ordem de terabytes.

Pois eu confundi, e o heap é de 450 GB. Vejam o artigo

Escrito por claudio at 8:14 PM categorizado por Java

Tags: java performance

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