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.

sexta-feira, 2 de abril de 2010

Mentira ou Verdade??

The Apache Software Foundation Blog

Thursday Apr 01, 2010

The Apache Software Foundation Receives Approval for Sale to Oracle Corporation

Today, the Apache Software Foundation announced it has agreed to sell all IP and assets of the foundation to Oracle. The agreement is a $1.5 billion all cash deal. The ASF board agreed to the terms after vigorous discussions last evening.

"We never considered the possibility of selling the ASF," said Jim Jagielski, Chairman of the ASF, "but Oracle made us a simply fantastic offer. Larry himself flew out last week to meet with us to address our concerns."

As part of the agreement, Oracle obtains even more of the crucial LAMP-stack software products.

"It was Oracle's admission that the Web is more than 'just' Java or databases that finalized the decision for us," said Justin Erenkrantz, Director and President of the ASF.

2009 marked the 10th Anniversary of the ASF.

We will be communicating updates about the status of our projects and our license in the near future. As a community based organization, we want to ensure the best experience for our existing committers, contributors, and users, under our new arrangement.


Noticia publicada no blog da Apache Software Foundation no dia 1 de abril.

http://blogs.apache.org/foundation/date/20100401

RUP é uma metodologia lenta?

Bem a uns dias atrás andei discutindo com um colega de faculdade a respeito de metodologias, ele mi questionou se eu achava o RUP uma metodologia lenta porque no seu trabalho estavam demorando demais a começar o desenvolvimento por conta dos artefatos que eram muitos, essa pequena discussão mi fez escrever esse post.
O RUP apesar de ser um framework da Rational que enfoca muito nos artefatos do projeto, é flexível quanto a ciclo de vida do projeto, o que a meu ver pode fazer o desenvolvimento ser um pouco mais acelerado, dependendo do ciclo que o gerente vá escolher, outro fator que pode contribuir para diminuir o gargalo nos artefatos é a proximidade com o cliente e o grau de detalhamento de informações sobre o negocio, o que facilita a vida do analista na hora de escrever os casos de uso.
Trabalhei um ano em um projeto que baseava-se no RUP , usávamos o ciclo de vida iterativo e não tivemos problemas com demora no desenvolvimento porque quando estávamos desenvolvendo uma iteração a posterior já estava sendo projetada, o que
fez que não criássemos nenhum tipo de gargalo, em fase nenhuma. Credito isso ao cliente sempre presente ajudando muito no fornecimento dos requisitos, e ao ciclo iterativo.
Acho que o RUP tem suas vantagens assim como metodologias ágeis também, cabe a equipe saber a necessidade do projeto e decidir o melhor caminho a seguir. Gosto muito de metodologias ágeis, mas vejo que uma equipe que saiba adequar o RUP ao projeto pode conseguir grandes benefícios muito vantajosos também