terça-feira, 8 de março de 2011

Criando Jar com as fontes do Jasperreports

Vou ensinar nesse post como criar um jar que contenham  as Fonts do jasper, evitando que eles fiquem espalhados na aplicação, com esse jar além de ser um meio mais elegante de ter as fonts no projeto, diminui também o tamanho do mesmo. Originalmente os fonts ficavam dispostos da seguinte maneira:


No caso precisava da fonte arial narrow para impressão em formato PDF, então era necessária a sua instalação na aplicação para ser reconhecida pelo jasper.

Primeira coisa que se deve fazer é instalar as fontes no Ireport, para isso vá em Ferramentas, depois Opções, irá abrir uma janela, clique na opção Font. Clique em instalar fonts, e escolha as que deseja utilizar na aplicação:

Após a instalação iremos criar o JAR para ser usado na aplicação. Clique no nome da font que acabou de criar e depois Export as extension, escolha o diretório que deseja salvar e pronto, está criado seu jar com as fonts necessarias para sua aplicação:

Pronto depois é só colocar o jar criado no Build Path da sua aplicação, como mencionei anteriormente essa solução é mais elegante pois não deixa as fonts soltas na pasta do projeto ela economiza espaço no meu exemplo o tamanho do projeto caiu em quase 2 megas com essa solução.

quinta-feira, 10 de fevereiro de 2011

Instalando o Git Gui

                 Ontem escrevi um post ensinando como instalar e configurar o Git Gui, e  hoje por coincidência vejo um tweet do JavaFree  falando sobre o ScrenCast do Adilson Carvalho, onde ele explica a instalação do Git, achei muito interessante e por isso tomei a liberdade de postar o link do ScreenCast para complementar o post anterior.

http://vimeo.com/17798986

quarta-feira, 9 de fevereiro de 2011

Configurando o Git Gui

               Bem resolvi mi aventurar pelo Git Hub, um pouco tarde eu sei mas antes tarde do que nunca  :) e mi deparei com alguns problemas na hora de configura-lo, por isso resolvi fazer esse post para ajudar a quem esteja passando pelo mesmo problema. 
              A primeira coisa que deve-se fazer é criar a sua conta no site acessando aqui  após isso baixe o aplicativo no endereço  http://git-scm.com/download existe versões para windows, Mac e Linux, no meu caso baixei a versão para windows após baixar instale-o.

               Ao executar o Git Gui pela primeira vez ele irá abrir a tela abaixo, você tem que criar o diretório que estará seu projeto "passo 1" no "passo 2" você irá indica o caminho. Obs: o projeto deve está dentro de um diretório pai.

            
             Após indicar o diretório onde fica seu projeto teremos que configurar a conexão, primeiro teremos que adquirir uma chave SSh, vá no menu help e click em Show SSH Key,  nesse momento irá abrir uma janela para gerar a chave, click em Generate Key, então irá abrir outra tela que irá pedir para que se insira uma senha (insira uma senha que seja fácil de lembrar)

   Será gerada uma chave copie toda ela e insira na sua conta do git hub, dê um titulo para ela, isso é importante por que essa chave é por computador então se for acessar através de outros computadores  precisará diferencia-las.

             Pronto inserida a chave vamos configurar a conexão, no menu Edit click em Options, iremos inserir o username e o email nos campos circulados.

          Agora adcionaremos uma conexão remota no menu vamos no Remote e clicar no Add, irá abrir uma janela e você terá que preencher o campo Nome: com o nome do projeto e o campo Location com a Url gerada pelo Git hub para seu projeto. Ex: git@github.com:tiagoribeirof/SPB_WEB.git.
          Para testar no mesmo menu Remote  vamos clicar no fetch from  irá abrir uma janela que perguntará se deseja sincronizar, então é só escrever "yes" após isso abrirá outra janela pedindo "passphrase"  que é justamente a senha que foi inserida para gerar a key, se tudo ocorrer direito irá informa-lo que foi sucesso. 

             Pronto está feita a configuração agora é só comitar seu projeto e partir para o abraço, espero que esse post tenha ajudado.






domingo, 16 de janeiro de 2011

Benchmark

             Como prometido começarei a falar de alguns assuntos abordados no meu TCC, no post de hoje falarei sobre Benchmark. 
             Benchmark é o processo de comparação de operações de uma maneira que produza resultados quantitativos, essa tecnica é muito util para medir desempenho de uma aplicação, e é usada tipicamente para medir o tempo que se leva para realizar determinada tarefa.
             Existem diversas ferramentas que podem ser usadas para realizar esses testes de desempenho, elas já possuem alguns testes pré-definidos e mais complexos, mas nesse post vou falar de  uma técnica simples que pode ser usada pelo desenvolvedor em qualquer tipo de linguagem ou programa para auxilia-lo na medição de desempenho de sua aplicação, trata-se do Cronômetro Benchmark, que nada mais é que o uso de um relógio para medir o tempo que se leva para concluir determinada tarefa, aqui mostro a sua implementação no Java.
             Abaixo o exemplo de uma classe desenvolvida para simular o comportamento de um relógio, onde tenho 4 métodos: O start() responsável por iniciar o tempo, stop() que  interrompe a contagem do tempo, getTempoDecorrido() como o próprio nome  diz retorna o tempo decorrido entre o inicio e o fim da contagem do tempo e por ultimo o reset() que zera o relogio.

       O cronômetro pode ser usado por exemplo para medir o tempo que se leva para percorrer um laço:

       O tempo foi iniciado fora do laço e após ser percorrido todo o laço o tempo é parado e é obtido o tempo decorrido, assim pode-se ter uma noção do tempo de processamento desse laço de repetição e verificar se está tendo alguma perca de performance.
       Esse simples benchmark  que acabo de demonstrar pode ser de grande utilidade na medição de desempenho, com ele pode-se descobrir se sua aplicação está demorando muito tempo para realizar determinada tarefa, é interessante para identificar o porque de determinada operação está consumindo muito tempo e assim podermos otimizar seu processamento. Espero que essa pequena explicação seja útel, mais a frente voltarei a falar sobre o assunto, mostrado o uso dessa técnica de cronômetro para medir o desempenho de diversas estruturas de dados do Java.


    

segunda-feira, 10 de janeiro de 2011

TCC Concluido

Pronto TCC concluído e apresentado, graças a Deus mi formei, o tema foi Entendendo a Performance em Aplicações Java, foi muito trabalhoso, mas mi agregou muitos conhecimentos, agora terei mais tempo para postar aqui, postarei alguns tópicos importantes sobre minha monografia, e voltarei a postar sobre o SCJP afinal, tive que dar uma parada mas não desisti de fazer a prova! Abraço  a todos e até mais.

quarta-feira, 21 de julho de 2010

SCJP - 5 Cap- 4 -Operadores

Vocês devem estar estranhando o porque de ta sendo postado o capitulo 4 se o 3 ainda não foi postado? explico: e porque o capitulo 3 e muito extenso e estou meio sem tempo para postar sobre ele, mas tentarei posta-lo antes de escrever sobre o cap-5.
Bem vamos a alguns pontos importantes do capitulo 4 que fala sobre operadores.

Operadores de atribuição compostos

No exame só caem 4 tipos de operadores de atribuição compostos que são +=,-=,*= e /= .e a ordem de precedência de um operador composto e que a expressão do lado direito do = sempre será avaliada primeiro. 
Ex= x *=5+5
(primeiro avalia o que esta ao lado direito do = ) então a expressão fica assim  x = x*(5+5)

Operadores de comparação

Java tem 4 operadores de comparação são eles >=,>,<=,<, eles podem ser usados para comparações com inteiros, ponto flutuante e caractere, no caso de caractere ele baseia-se pela tabela Unicode, e retornam um booleano. As variáveis de referencia podem ser testadas com o operador = = para sabermos se elas referenciam ao mesmo objeto.(verifica se os bits são idênticos) o operador = =  não testa se os objetos são significamente equivalentes , para isso usa-se o equals(). Quando se trata de constantes , exemplo o Enum, nos podemos usar tanto o operador = = como o equals() para saber se referem a mesma constante.

Operador de comparação instanceof

E usado somente com variáveis de referencia e pode-se usa-lo para verificar se o objeto e de um tipo especifico, ou seja se ele passa no teste do E-UM.
Ex: cachorro.instanceof(animal).
Esse resultado retorna um true, pois o cachorro e um animal.


Operador de concatenação de Strings

O sinal de “+” pode ser usado para concatenar duas strings, quando a concatenação combina números inteiros com strings ele transforma o inteiro em string e concatena com a String propriamente dita.
Ex: int a = “teste”; int b = 23; int c =3;
System.out.println(a+b+c);
os valores ints viram caracteres e são adicionados á String , produzindo o resultado “teste233”;

Acréscimo e decréscimo

O Java possui 2 operadores que fazem o papel de acréscimo (++) e decréscimo (--) em uma unidade a variável , a diferença e que se o operador vier na frente da variável ex: ++x o X será incrementado e antes de seu valor ser usado na expressão, já quando o operador vem após variável ex: x++ o incremento só ocorre após a variável usada na expressão.

Operador condicional ternário

Usado para substituir um bloco if  na avaliação de expressões booleanas, ele ao invés de executar um bloco de código se o resultado do teste for true atribui um valor a uma variável. Sua estrutura e a seguinte
X=(expressão booleana) ? valor a atribuir se true : valor a atribuir se for false;
Ex: int x =5;
String status = (x>5) ? ”maior que cinco” : ”menor que cinco”;
Que daria o mesmo que:
if(x>5){
Status = “maior que cinco”;
}else{
Status = “menor que cinco”;
}
Ele e um pouco menos legível, mas economiza linha de código.

sábado, 15 de maio de 2010

SCJP - 5 Cap- 2 -Orientação a Objetos

Bom voltei meus estudos para certificação, terminei o segundo capitulo, muito bom o livro recomendo que leiam (mesmo os que não pretendem fazer a prova). Vamos ao resumo do capítulo.
Encapsulamento- para um bom encapsulamento e necessário que se use variáveis de instancia privadas com seus métodos de acesso publico.
Herança-Relacionamento É-UM: é baseado na herança de classes ou implementação de interfaces, o conceito de É-UM e o mesmo que dizer esse item é-um tipo desse outro. e feito quando uma subclasse estende outra classe, ou seja ela assume o mesmo comportamento da classe mais acima na arvore de herança.
Herança-Relacionamento TEM-UM: são utilizados na utilização em vez de na herança, ou seja A tem-um B os relacionamentos tem-um permite que você projete classes que sigam as boas praticas de OO sem que sejam necessárias classes monolíticas que executem milhares de coisas diferentes.
Polimorfismo:embora o tipo de uma variável de referencia não possa ser modificado ele pode ser usado para se referir a um objeto cujo tipo seja um subtipo do seu próprio.
Métodos sobrescritos: quando uma subclasse herda um método da superclasse e o reimplementa para adicionar um comportamento mais especializado.No tempo de execução a jvm chama a versão da subclasse em uma instância da subclasse, e um instancia da superclasse em uma instancia da superclasse.
O método novo não deve lançar nenhuma exceção verificada nova ou mais abrangente que a declarada no método sobrescrito.
Métodos sobrecarregados: permite que se utilize o mesmo nome do metodo da superclasse só com argumentos e (opcionalmente tipos de retornos) diferentes.
O tipo de retorno pode ser de qualquer valor ou variável que possa ser implicitamente convertido no tipo do retorno declarado.
Ex: short pode ser retornado quando o tipo de retorno declarado for um int.
Construtores:Se o desenvolvedor não criar seu construtor o compilador ir criar um construtor padrão sem argumentos. Um construtor padrão nunca será gerado se você ja tiver implementado um, portanto é aconselhável se você criar um construtor com argumentos que implemente um construtor sem argumentos também.
Construtores também não são herdados
Variáveis e métodos static:Variáveis e métodos staticos pertencem a classe em vez de qualquer instancia especifica.(ou seja , você pode usá-los sem ter nenhuma instancia da classe).
Acoplamento e Coesão: Um dos pontos principais da OO e tentar manter um fraco acoplamento e uma alta coesão na hora de desenvolver suas classes.
Acoplamento e o grau em que uma classe conhece outra, Se o único conhecimento que a classe B tem sobre a classe A e o que a classe A expôs através de sua interface então diz-se que as classes A e B tem acoplamento fraco.
Coesão e o grau de especialização de uma classe, ou seja, e o quanto aquela classe e especialista em algo, isso facilita a manutenbilidade outro beneficio e que ela tende a ser mais reutilizável.