sexta-feira, 21 de fevereiro de 2014

Installing Jekins and the JMeter plugin (Performance plugin)

Jekins
1. The installation procedure can be found at:

https://wiki.jenkins-ci.org/display/JENKINS/Installing+Jenkins+on+Red+Hat+distributions

2. Check if it is working:
[root@spike ~]# sudo service jenkins start
Starting Jenkins                                           [  OK  ]
The logs of Jekins run will be placed at:
/var/log/jenkins/jenkins.log
Find something like:
INFO: Jenkins is fully up and running
3. Accessing Jekins:

The general information can be found on:
https://wiki.jenkins-ci.org/display/JENKINS/Starting+and+Accessing+Jenkins
However, it is necessary to create a tunnel in the port 8080.
ssh -f root@spike -L 8080:127.0.0.1:8080 -N
Jekins must be available at:
http://127.0.0.1:8080/

JMeter plugins

The Jekins pages recommends using the Performance plugin instead of JMeter plugin.

https://wiki.jenkins-ci.org/display/JENKINS/Performance+Plugin
  1. The easiest way to install Jekins is by the Plugin Manager interface: http://127.0.0.1:8080/pluginManager/
  2. Go in the tab "Available" and find "Performance plugin" (figure below) 
  3. Go in "Download now and install after restart"
  4. After finish the donwload, restart jekins service: "sudo service jenkins restart"
  5. Install JMeter
    1. Download it:
      wget http://apache.mirror.iphh.net//jmeter/binaries/apache-jmeter-2.11.tgz
    2. Extract the files to :/var/lib/jenkins
    3. Rename (mv) apache-jmeter-2.11 as jmeter
  6. To check if it is installed it is necessary to create a new job.
    1. New Job
    2. Free-style software project
    3. Under Build, select Invoke Ant
    4. Select Advanced
    5. Target : all
      Path Build : /var/lib/jenkins/jobs/MY_PROJECT_NAME/build.xml
      Properties : jmeter.dir=/var/lib/jenkins/jmeter (reference to step 5.c)
    6. Down in Post-build Actions check the Publish Performance test result report checkbox
    7. Add a new report box and choose JMeter
    8. Set the branch to build to JMeter
      For Report files specify **/*.jtl
  7. Add the build.xml at the root of the job folder (/var/lib/jenkins/jobs/MY_PROJECT_NAME/). At the end I added a build.xml file.
  8. Under the job folder (/var/lib/jenkins/jobs/MY_PROJECT_NAME/), create the following directory structure (the workspace folder and all it subfolder have to be in chmod 777 "chmod -R 0777 ./*").
    +scripts
    +workspace
    ++results
    ++++jtl
    ++++html
  9. In the scripts folder upload the JMeter scripts files *.jmx





Usefull references

http://www.theserverlabs.com/blog/2009/04/23/performance-tests-with-jmeter-maven-and-hudson/
http://jlorenzen.blogspot.de/2008/03/automated-performance-tests-using.html
http://neyto.blogspot.de/2013/02/install-jenkins-with-jmeter-performance_2208.html


Build xml:









   
       
   

    name="jmeter"
    classname="org.programmerplanet.ant.taskdefs.jmeter.JMeterTask"
    classpathref="ant.jmeter.classpath" >


   
   
   
   


             jmeterhome="${jmeter-home}"
         resultlogdir="workspace/results/jtl">
        
   




   
   



            classpathref="xslt.classpath"
        basedir="workspace/results/jtl"
        destdir="workspace/results/html"
        includes="*.jtl"
        style="${jmeter-home}/extras/jmeter-results-detail-report_21.xsl">
       
   

   
   
   



terça-feira, 11 de fevereiro de 2014

Ótimo Webinar sobre Elastic Search 0.90.

http://info.elasticsearch.com/Recorded_0.90_Webinar.html
Como tornar-se um expert em Garbage Collector:

http://www.cubrid.org/blog/dev-platform/understanding-java-garbage-collection/
http://www.cubrid.org/blog/dev-platform/how-to-monitor-java-garbage-collection/
http://www.cubrid.org/blog/textyle/428187


Esses 3 artigos sao muito interessantes e completos.

segunda-feira, 9 de agosto de 2010

Exercícios POO

Exercícios

---------------------------------------
Descrição geral: Desenvolver um software para gerenciamento de uma Universidade.

1. Criar as seguintes classes:
Pessoa
Estudante
Professor
Classe

2. Criar atributos, comportamentos e relacionamentos para as classes.
3. Fazer uma classe principal para receber as entradas de dados e apresentar a saída.
4. Na classe principal, adicione um comportamento para receber as notas, calcular a média e escrever na tela se o estudante está aprovado ou reprovado.

---------------------------------------

Descrição geral: Desenvolver um software para gerenciamento de contas bancárias


1. Criar as seguintes classes:
Pessoa física
Pessoa Jurídica
Conta corrente
Poupança

2. Criar atributos, comportamentos e relacionamentos para as classes.
3. Fazer uma classe principal para receber as entradas de dados e apresentar a saída.
4. Na classe principal, adicione um comportamento para impedir saques de Contas Correntes e Poupanças, abaixo do limite.

---------------------------------------
 
Descrição geral: Desenvolver um software para gerenciamento de uma Loja de computadores.


1. Criar as seguintes classes:
Pessoa
Comprador
Vendedor
Produto

2. Criar atributos, comportamentos e relacionamentos para as classes.
3. Fazer uma classe principal para receber as entradas de dados e apresentar a saída.

Programação Orientada a Objetos

http://www.guiadohardware.net/artigos/programacao-orientada-objetos/

sábado, 5 de junho de 2010

Os padrões de projeto do SCWCD

Um dos tópicos mais interessantes do estudo para o SCWCD são os padrões de projetos. Para o exame, são cobrados conhecimentos nos seguintes padrões:
  • Model-View-Controller: padrão de facto, é possívelmente o mais  em aplicações Web. Ele define que uma aplicação deve ser dividida em lógica de negócios (Model), apresentação ao usuário (View) e a interação entre essas duas camadas (Controller).
  • Intercepting Filter: define um elemento intermediário entre o navegador e o Servlet, sem que esses saibam da sua existência. 
  • Front Controller: define um único componente (Servlet ou JSP) para controle da camada de visão.
  • Service Locator: lidam com o serviço de buscas, particularmente interessante para JNDI e o uso do padrão Business Delegate, evitando a repetição de código.
  • Business Delegate: refere-se à criação de uma classe intermediária que irá encapsular a lógica de acesso à camada de negócios, mesmo que a mesma seja remota.
  • Transfer Object: utilizado quando há a necessidade de que as propriedades de um objeto sejam transmitidas em conjunto, evitando que partes da informação estejam desatualizadas em relação à outras. Nesse caso, o objeto dos é transmitido (serealizado/deserealizado)
Existem vários outros padrões de projetos, tão ou mais importantes quanto esses, porém sendo bastante pragmático: esses são suficientes para passar no exame. :)

terça-feira, 25 de maio de 2010

10 Sinais que seu projeto está vindo abaixo


Achei muito interessante (cômico, se não fosse trágico) esse texto (http://www.codeanthem.com/blog/2010/05/signs-your-software-project-is-going-down/) sobre projetos de software. Por isso, fiz uma tradução livre do mesmo:
Como você sabe se seu projeto de software está indo por água abaixo?
  1. O desenvolvimento começou com cascata e, em seguida, assim que entrou em queda livre, a equipe começou a chamá-lo "qualquer coisa" ágil. Isso também é conhecido como ágil falso, ou "frÁGIL".
  2. Corrigir um bug sempre expõe outros bugs. O software está tão bugado que você não pode sequer chegar a certas partes sem esbarrar num problema. Não é tão ruim quanto causar seus próprios bugs, mesmo assim não é bom.
  3. Uma ou mais das tecnologias centrais deixou de ser suportada pelo fabricante antes mesmo do projeto começar. Melhor ainda se a linha de tecnologia foi totalmente interrompida.
  4. Você está utilizando PowerBuilder ou qualquer outra "ferramenta de desenvolvimento rápido" na qual o código tenha sido abstraía em checkboxes e drop downs. Bibliotecas, ferramentas e APIs são ótimas, mas estas ferramentas são como jogar Twister com o código.
  5. O líder tecnológico não sabe usar corretamente o e-mail ou navegador. Como alguém que não consegue nem mesmo usar o básico de software, pode conduzir adequadamente uma equipe de programadores?
  6. O Gerente de Projeto está escrevendo código e um desenvolvedor está gerenciando a equipe. Tenho visto isso com mais freqüência do que eu gostaria de admitir.
  7. Há mais pessoas de negócios ou de domínio do que na equipe de técnica. 1 programador + alta rotatividade + código grande + sistema crítico + enorme lista de bugs = sem problema?
  8. Há um conjunto de testes de um programador anterior, mas metade deles estão falhando ou não compilam. Para um divertimento extra, verifique se os erros relatados teriam sido evitados se o conjunto de testes fossem utilizados.
  9. Adicionar uma única linha de código requer várias linhas de comentário. Um comentário na linha indicando o motivo e o seu nome. Um comentário no topo do arquivo colocando o seu nome e data de atualização. Um por comit de arquivo, com a mensagem descritiva. Atualização no software de bug-tracking/PM. Etc, etc
  10. A frase "não é um bug, é uma característica" se aplica a maioria das características "do produto. "O sistema não foi projetado para isso"