logo
  • Home
  • Acerca
  • Autores
  • Faq
  • Rede
  Twitter   Feed-me! RSS!
Out 12

QA no dia-a-dia do desenvolvimento

Escrito por DClick Team em .NET, 1, 6, análise, AR, arte, auto, bar, bug, class, classe, classes, código, comunicação, comunidade, configuração, control, demo, Desenvolvedor, desenvolvedores, Desenvolvimento, Desenvolvimento de Software, Documentação, Eclipse, Emprego, err, erro, Estilo, exemplo, Ferramenta, Flex, for, Geral, ide, if, int, Java, O, on, Outros, padrão, Plugin, processo, programação, progress, Projetos, relatório, Relatórios, RIA, Ria’s Geral, site, Software, TAT, Tecnologia, Tema, Teste, Testes Automatizados, Twitter, UI, UX, Ved, XP @ 10 12th, 2010 | via http://blog.dclick.com.br/pt/ | Sem comentários
DClick Team
? X
  • Bookmarks

Blinkbits BlinkLists BlogLines Blogmarks Buddymarks CiteULike Co.mments Del.icio.us Digg Diigo

Fark Feed Me Links Furl Google Linkagogo ma.gnolia Mister Wong Newsvine Propeller Rawsugar

Reddit Rojo Simpy Sphinn Spurl Squidoo StumbleUpon Tailrank Technorati Yahoo

More »

Twitter!


Boas práticas e testes no nosso dia-a-dia de desenvolvimento

Testes unitários já foram vistos com maus olhos pela comunidade de desenvolvimento de software quando surgiram, e hoje em dia é uma das práticas obrigatórias no desenvolvimento da maioria dos sistemas. Mas afinal o que fez todo mundo mudar a maneira de pensar e trabalhar? O que motiva um desenvolvedor a “perder tempo” escrevendo testes unitários?

As respostas hoje em dia são bem claras na cabeça de muitos desenvolvedores, por isso vamos passar por temas que vão além dos testes unitários e abordar como nos beneficiamos a longo prazo com uma política de testes e boas práticas bem definida.

Testando sempre, corrigindo sempre

Já que todos concordam (a grande maioria pelo menos) que testes nos beneficiam, porque não testar em todo o processo de desenvolvimento? Uma dúvida que surge assim que a equipe resolve testar suas classes: devemos estimar também o tempo que levaremos para escrever os testes? A resposta é simples, sim e não. Sim porque com certeza o tempo para executar a tarefa será diferente quando resolvemos escrever testes para nossas classes, e não porque não devemos separar a estimativa, como se escrever testes fossem uma tarefa diferente. Inclusive deveríamos considerar que uma tarefa só é concluída se existem testes unitários que garantem o funcionamento da mesma, e que tais testes estejam passando.

Podemos pensar que se para cada funcionalidade que implementamos garantimos o funcionamento da mesma, estamos seguros para implementar uma nova funcionalidade sem interferir no progresso do sistema até então. A única maneira de garantirmos que toda funcionalidade nova estará de acordo com as já existentes é testando ao longo de todo o projeto. O mesmo vale para testes de uso, feitos por uma equipe de testes, pois se pensarmos que os testes unitários nos protegem de nossos próprios erros, ainda assim não estamos protegidos de erros de sistemas externos que serão usados par integração com o nosso projeto.

O fator mais crítico em se testar sempre, é que quando nos deparamos com um determinado erro, nossa cabeça ainda está no contexto da tarefa ao qual o teste falhou, e portanto está mais claro em nossas mentes como corrigi-la, acelerando a correção de erros e o desenvolvimento de novas tarefas mais futuramente.

Relatórios de Cobertura

Os relatórios de cobertura de testes a primeira vista parecem um ferramenta de controle sobre como estamos desenvolvendo. Muito pelo contrário, porque os relatórios de cobertura apenas expoem as linhas e blocos do código que são executados durante os testes, escondendo muitos outros fatores relevantes no desenvolvimento, além do que é bem fácil “roubar” no teste para obter uma cobertura alta.

O relatório de cobertura serve como ferramenta de alerta para a equipe como um todo, para que a qualquer momento, qualquer membro da equipe possa consultar o relatório e se certificar que dado a cobertura de testes, ele pode continuar o desenvolvimento de suas tarefas ou então, notificar toda a equipe que existem partes do código não testadas e que devem receber mais atenção para garantir uma evolução contínua do sistema.

FindBugs e PMD

O FindBugs é uma ferramenta que nos auxilia no desenvolvimento prevendo possíveis pontos problemáticos do sistema. O FindBugs funciona com o Java mas existem versões para diversas plataformas.

No mesmo espírito do relatório de cobertura, os possíveis bugs apontados pelo FindBugs servem como alerta para a equipe para pontos do sistema que talvez mereçam mais atenção, e da mesma forma é possível “roubar” e sempre deixar o FindBugs “contente”, por isso é essencial a consciência da equipe para manter o FindBugs dentro da linha.

O relatório gerado pelo PMD é mais um guia de boas práticas que deveriam ser seguidas durante a implementação do código. O PMD é bem menos intrusivo que o FindBugs no sentido de que a análise feita por ele é mais voltada a estilo de programação, e pode ser configurada e ajustada de acordo com o projeto e a equipe. O ideal seria que conseguíssemos estabelecer uma configuração do PMD e do FindBugs para a DClick, garantindo que se mudarmos algum desenvolvedor de equipe, o desenvolvedor iria estar familiarizado com as práticas e padrões do novo projeto, afinal seriam os mesmos padrões exigidos no projeto em que o desenvolvedor estava.

Site do FindBugs

Site do PMD

Checkstyle

Um dos principais objetivos de se empregar boas práticas de programação, é garantir uma linguagem comum entre equipes de desenvolvimento. Para facilitar tal compreensão, seria interessante que o código implementado independente da equipe, seguisse uma mesma identação e organização. Dessa forma um desenvolvedor novo no projeto consegueria “se encontrar” no código de maneira mais rápida, porque a estrutura adotada seria a mesma em todos os projetos.

Para facilitar e garantir que o padrão está sendo seguido, existe por exemplo, o plugin de ‘checkstyle’ do eclipse. O plugin nada mais faz do que colocar warnings no código, nos trechos em que o padrão de identação e organização definido não está sendo seguido. O plugin consegue ir um pouco mais longe do que meramente validar formatação de código, e consegue “cobrar” o emprego de algumas boas práticas mais básicas, como por exemplo encapsulamento e gerenciamento de variáveis.

Site Oficial do Checkstyle

Documentação

Se escrever código de maneira padronizada, organizada e compreensível é essencial para comunicação, o mesmo se aplica para a documentação das classes.

Por isso que existem ferramentas como o javadoc, que é uma das ferramentas mais difundidas na comunidade. Isso porque garante a geração de uma documentação livre de código de maneira automática e simples. O que deveríamos ter em nossas classes, é uma documentação na qual não seja necessário ler o código para entender o funcionamento da classe. A única maneira de garantir um nível de documentação desses, é sempre manter a documentação atualizada e constantemente mudá-la conforme desenvolvemos o sistema.

No Java existe o Javadoc que é tão difundido que já vem integrado com o Eclipse IDE, e existem versões disponíveis para todas as grandes plataformas, inclusive Flex.

De modo geral

Apesar de citar algumas tecnologias usadas no Java, o objetivo principal do post é mostrar que o emprego de tais ferramentas nos ajuda no dia-a-dia de desenvolvimento em geral, não importando a tecnologia utilizada. A idéia é atingir um nível de qualidade geral, independente de plataforma. Se atingirmos um nível aceitável e conseguirmos seguir um padrão, conseguiremos migrar entre projetos tendo que apenas entender a regra de negócio do projeto, já estando familiarizado com as práticas de desenvolvimento.

Out 1

Criando relatório com IReport

Escrito por DClick Team em 1, 4, 6, Access, app, AR, BI, blog, class, dados, Design, designer, Download, err, exemplo, Ferramenta, flash, Flex, fonte, for, FullScreen, Gráfico, Hibernate, html, if, image, imagens, Java, NaN, O, Office, on, Pessoal, programação, pt, relatório, Relatórios, RIA, Ria’s Geral, RTW, screen, Screencast, site, TAT, template, Tutorial, tv, Twitter, UI, Vários, wave, web, xhtml, XML, XP @ 10 1st, 2010 | via http://blog.dclick.com.br/pt/ | 1 comentário
DClick Team
? X
  • Bookmarks

Blinkbits BlinkLists BlogLines Blogmarks Buddymarks CiteULike Co.mments Del.icio.us Digg Diigo

Fark Feed Me Links Furl Google Linkagogo ma.gnolia Mister Wong Newsvine Propeller Rawsugar

Reddit Rojo Simpy Sphinn Spurl Squidoo StumbleUpon Tailrank Technorati Yahoo

More »

Twitter!

Olá Pessoal, vou mostrar a vocês como criar relatório com o IReport. Mas antes de mais nada o que é a IReport.

IReport

IReport é uma ferramenta de designer para relatórios, que utiliza a biblioteca Java para relatórios a JasperReports. Com ele é possível fazer layots sofisticados, contendo gráficos, imagens, sub-relatórios, tabelas de referência cruzada e muito mais. Os dados podem ser acessado via JDBC, TableModels, JavaBeans, XML, Hibernate e CSV. Depois podendo fazer relatórios em PDF, RTF, XML, XLS, CSV, HTML, XHTML, textos, DOCX ou OpenOffice.

É um projeto open-source da equipe JasperForge que possui ferramentas para produção de relatórios, elaboração de relatórios operacionais etc. Mais informações estão disponíveis no www.jasperforge.org.

Ciclo de Vida do Relatório

O arquivo criado pelo IReport é um jrxml, arquivo XML que contém a definição do relatório, como o relatório é desenhado completamente de uma forma visual não é necessário saber a estrutura desse arquivo XML. Depois o jrxml deve ser compilado em um objeto binário chamado Jasper, e é o que você precisa enviar para sua aplicação para executar os relatórios.

Na execução do relatório você precisará do arquivo Jasper e uma fonte de dados para o JasperReports. Há muitos tipos de fontes de dados como: arquivo XML, consulta SQL, arquivo CSV, uma HQL (Hibernate Query Language), uma consulta com JavaBeans, etc. O JasperReports é bem flexível proporcionando a você criar sua propria fonte de dados. Com o arquivo Jasper e a fonte dados o JasperReports é capaz de gerar o documento final em vários formatos.

Atualmente se encontra na versão 3.7.5 e pode ser baixado no site:
http://jasperforge.org//website/ireportwebsite/IR%20Website/ir_download.html?header=project&target=ireport

Fonte

http://jasperforge.org/projects/ireport

Exemplo

No screencast abaixo é explificado o uso do IReport, para fonte de dados utilizei um arquivo xml.

Arquivos Fontes

http://office-sp.dclick.com.br/devblog/wp-content/uploads/2010/arquivos-fontes-relatorio.zip

http://office-sp.dclick.com.br/devblog/wp-content/uploads/2010/lib-relatorio.zip

Templantes de relatórios

http://office-sp.dclick.com.br/devblog/wp-content/uploads/2010/templates-relatorios.zip



Set 15

O que é o Maven, e seus primeiros passos com a ferramenta

Escrito por DClick Team em 1, 4, 6, apache, AR, arte, auto, back, BI, busca, carregar, class, classe, classes, codec, código, código fonte, configuração, control, Curso, custom, dados, demo, Desenvolvedor, desenvolvedores, Desenvolvimento, Documentação, Eclipse, efeito, err, erro, exemplo, falha, Ferramenta, Flex, FlexBuilder, fonte, for, framework, futuro, html, ide, IE, if, int, internet, Java, NaN, O, object model, on, Outros, padrão, Partilha, Plugin, problema, problemas, produtividade, Projetos, pt, referencia, relatório, Relatórios, rest, RIA, Ria’s Geral, runtime, Sem categoria, site, Sun, tag, TAT, Tema, Teste, Twitter, UI, uint, Vários, Ved, XML, XP, zend @ 09 15th, 2010 | via http://blog.dclick.com.br/pt/ | Sem comentários
DClick Team
? X
  • Bookmarks

Blinkbits BlinkLists BlogLines Blogmarks Buddymarks CiteULike Co.mments Del.icio.us Digg Diigo

Fark Feed Me Links Furl Google Linkagogo ma.gnolia Mister Wong Newsvine Propeller Rawsugar

Reddit Rojo Simpy Sphinn Spurl Squidoo StumbleUpon Tailrank Technorati Yahoo

More »

Twitter!


Entendendo melhor Maven 2

O objetivo deste post é entender um pouco melhor o que é o Maven e como que o Maven lida com as fases do build, além de entender um pouco de como funciona a resolução de dependências.

O que é o Maven?

Um dos principais problemas desenvolvendo sistemas é como fazer com que toda a equipe construa o artefato final da mesma maneira com as bibliotecas e configurações corretas. Existem várias maneiras de tratar esse tipo de problema. Uma das maneiras mais comuns é usar alguma ferramenta que entenda alguma linguagem de script e copie as dependências e configurações para os lugares corretos e gere um pacote com a aplicação. Uma ferramenta comum muito usada no mundo Java é o Ant (http://ant.apache.org/). Com o Ant é possível escrever scripts de ‘build‘ para copiar bibliotecas de lugares específicos, arquivos de configurações e qualquer outro tipo de recurso para o artefato da aplicação. Com isso garantimos que qualquer desenvolvedor consiga gerar o artefato da aplicação localmente, sabendo que este artefato gerado é o mesmo que o resto da equipe irá usar e que possivelmente será usado em produção. Porém existem alguns problemas com essa abordagem. O primeiro problema que vem a cabeça é, onde guardamos as bibliotecas externas ao nosso projeto para que o Ant as encontre? A solução mais comum é guardá-las no repositório junto com o código fonte, assim todos os desenvolvedores compartilharão as mesmas dependências e os caminhos das pastas são mantidos.

Esse tipo de organização é muito adotada e funciona muito bem para projetos pequenos e com equipes bem pequenas. Quando começamos a prolongar um pouco a vida do projeto percebemos que o overhead de manutenção do mesmo começa a interferir no andamento do desenvolvimento. Isso porque o número de dependências começa a aumentar e com o tempo vão saindo versões novas de algumas dependências antigas(podemos entender dependências como sendo bibliotecas). Se todas as dependêcias estão na mesma pasta, fica muito difícil fazer o controle de versão e de transitividade das mesmas. Agora pense em um caso mais complicado: decidimos criar um novo módulo para o projeto. Nesse caso, todas as dependências que este novo módulo necessita e estão no módulo já existente, devem ser duplicadas no repositório. Deve-se fazer isso pois já que estamos falando de módulo, devemos ser capazes de construir o tal módulo independente da existência dos outros. Ou seja, duplicamos também o esforço para manter a organização das dependências.

Essa é uma das motivações pricipais pela qual a apache criou o Maven (http://maven.apache.org/).

O Maven é uma ferramenta de integração de projetos. É responsável por gerenciar dependências, controlar versão de artefatos, gerar relatórios de produtividade, garantir execução de testes, manter nível de qualidade do código dentre outras. Muitas pessoas confundem o maven como sendo uma alternativa para o Ant, ou para o Ivy (http://ant.apache.org/ivy/) o que não é verdade. O Maven inclusive disponibiliza a funcionalidade de rodar arquivos do Ant durante o build.

Voltando ao nosso problema citado anteriormente, com o Maven consiguimos isolar as bibliotecas usadas no projeto em um ‘repositório‘ compartilhado pela equipe, ou por toda internet no caso do repositório central do Maven. Dessa forma não nos preocupamos com duplicidade de dependências entre módulos do projeto e nem em disponibilidade das mesmas no repositório de código. Quanto a versão das dependências, estas ficam centralizadas em arquivos de configuração dos projetos de forma explícita e hierarquisada pelos módulos (POM). Com isso o Maven consegue se encarregar de fazer as devidas substituições de bibliotecas e identificar possíveis falhas no grafo de dependências.

O que torna o Maven muito poderoso é a facilidade que ele fornece para se trabalhar com vários módulos de um mesmo sistema e sua extensibilidade para novas funcionalidades com o uso de ‘plugins‘. Existem plugins de geração de código, de integração com plataformas de teste e inclusive suporte a IDEs como Eclipse e NetBeans. Isso torna o projeto muito mais flexível dentro da equipe, pois cada desenvolvedor pode escolher a IDE com que vai trabalhar sem se preocupar em atrapalhar o resto da equipe. Um outro plugin que será visto no post sobre Flex + Maven, é o flexmojos (http://flexmojos.sonatype.org/). Esse plugin é responável por integrar o Flex aos projetos do Maven de maneira transparente, executando o build da mesma forma que nos projetos Java. O plugin também disponibiliza a funcionalidade de preparar o projeto Flex para ser importado no FlexBuilder.

Vamos começar a entender melhor o Maven estudando seu funcionamento.

Fases do build

Algo interessante sobre este post é que o que será abordado é sempre referente a ‘um pouco’, ou ‘um pouco melhor’. Isso porque o maven é uma ferramenta bastante complexa dependendo do nível de customização e da necessidade que se tenha. A primeira parte do post cobre as fases executadas durante o build.

Uma fase nada mais é do que um estágio onde são executadas algumas regras sobre o projeto e se obtem algum resultado no final. Por exemplo, a fase de testes roda os testes da aplicação e obtém um ‘OK’ ou um ‘FAIL’, no segundo caso o build é interrompido. Tais fases são executadas dentro do ‘lifecycle‘ do build. O ‘lifecycle‘ é composto de ‘goals‘ e são estes:

  • Validate
  • Compile
  • Test
  • Package
  • Verify
  • Install
  • Deploy

Se você está lembrado do post anterior, usamos o comando do maven com os goals ‘clean‘ ‘install‘. Note que o goal ‘clean‘ não está presente no lifecycle do build, por isso tivemos que invocá-lo na linha de comando além do goal ‘install‘. O ‘clean‘ apenas apaga a pasta target, que como visto no post anterior contém os ‘.class‘ e os artefatos gerados pelo build. Os goals do lifecycle são executados nessa ordem mostrada acima. Um pouco sobre cada goal:

  • validate: valida que os ‘poms‘ dos projetos involvidos estão corretamente escritos e que todas as informações necessárias para o build estão presentes;
  • compile: compila todos os códigos do projeto, inclusive os códigos das classes de teste;
  • test: roda os testes que estão em ‘src/test/java‘, e certifica-se que todos estão passando, caso contrário o build é interrompido;
  • package: usa o código compilado e testado que está em ‘src/main/java‘ e cria um arquivo reusável, por exemplo jar;
  • integration-test: nesta fase serão rodados os testes que necessitam do jar do projeto ‘deploiado‘ para serem rodados;
  • verify: roda as verificações necessárias para se certificar que os pacotes gerados estão corretos e passam nos critérios de qualidade;
  • install: copia o arquivo gerado para o repositório local para que esteja disponível localmente para outros projetos;
  • deploy: copia o arquivo gerado para um repositório na rede ou remoto, para que esteja disponível para outros desenvolvedores.

Ainda lembrando o exemplo anterior, em um dos comandos executados possuia um goal que não está no lifecycle e que não foi citado: ‘eclipse:eclipse‘. Neste caso não se trata de um goal, mas sim da execução de um ‘plugin‘. ‘Plugins‘ no maven alteram o lifecycle adicionando novos goals em determinadas fases. No caso do ‘eclipse:eclipse‘, estamos invocando o método ‘eclipse‘ no plugin ‘eclipse‘, para isso usamos os ‘:‘. Esse plugin é responsável por criar os arquivos que o Eclipse entende e dessa forma consiga importar o projeto. Não está no objetivo deste post tratar de plugins, por isso se você se interessar pelo assunto existe uma boa documentação no site do próprio maven: http://mojo.codehaus.org/. Plugins do maven são chamados de ‘Mojos‘. Trataremos de ‘plugins‘ em um post futuro.

POM

Project Object Model – se trata do ponto de partida para o maven executar seu lifecycle. Nada mais é do que um arquivo XML que descreve propriedades e características do projeto, como por exemplo a versão do compilador que será usada (exemplo no post anterior):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<project xmlns=“http://maven.apache.org/POM/4.0.0″ xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance”
    xsi:schemaLocation=“http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd”>

    <modelVersion>4.0.0</modelVersion>
    <groupId>br.com.dclick</groupId>
    <artifactId>aprendendo-maven</artifactId>
    <packaging>jar</packaging>
    <version>1.0-SNAPSHOT</version>
    <name>aprendendo-maven</name>
    <url>http://maven.apache.org</url>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <compilerVersion>1.6</compilerVersion>
                    <source>1.6</source>
                    <target>1.6</target>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>
        </plugins>
    </build>

    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>3.8.1</version>
            <scope>test</scope>
        </dependency>
    </dependencies>
</project>

Repare que todas as propriedades que foram escolhidas no momento em que geramos o projeto estão definidas aqui, por isso se for preciso editar alguma delas, podemos fazer direto aqui no XML. Lembrando que para as modificações surtirem efeito, temos que executar ‘$ mvn install‘ e ‘$ mvn eclipse:eclipse‘ para refletir os resultados no Eclipse.
Além de guardar as informações mínimas necessárias para se executar o build, no pom definimos também os plugins que serão utilizados, os repositórios de artefatos que serão buscados, os relatórios que serão gerados, o pom que servirá como ‘parent‘, as dependências do projeto, dentre outras coisas.

Nesse post trataremos das dependências, as outras funcionalidades serão abordadas em outros posts.

Para definir um pom que servirá como ‘parent‘ de seu projeto, basta adicionar no pom de seu projeto o ‘groupId‘, ‘artifactId‘ e ‘version‘ do parent:

1
2
3
4
5
<parent>
    <groupId>br.com.dclick.framework</groupId>
    <artifactId>tec-versions</artifactId>
    <version>1.0.4-SNAPSHOT</version>
</parent>

Nesse caso estamos falando que o pom do projeto ‘tec-versions‘ que pertence ao grupo ‘br.com.dclick.framework‘ na versão 1.0.4-SNAPSHOT será o parent do nosso pom, portanto nosso pom herdará todas as configurações, dependências e propriedades definidas no pom do ‘tec-versions’.

Dependências

Uma das funcionalidades mais poderosas do maven é a resolução de dependências. Não é uma funcionalidade exclusiva, mas a maneira com que é feita resolve muito bem a maioria dos problemas. Existem algumas outras ferramentas com o mesmo intuito, como por exemplo o Ivy da própria Apache, mas vimos que o maven é muito mais do que apenas uma ferramenta de resolução de dependências.

A definição das dependências do seu projeto é feita inteiramente no pom. Para isso usamos a tag <dependencies/> e dentro definimos cada dependência individualmente. Por exemplo, para definirmos a dependência do JUnit 4.8.1 basta adicionar o seguinte trecho no lugar do que já existe:

1
2
3
4
5
6
<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.8.1</version>
    <scope>test</scope>
</dependency>

Repare que está definida uma tag que ainda não foi mencionada: ‘scope‘. ‘Scope‘ explicita o escopo em que o artefato definido será usado, nesse caso estamos dizendo para o maven adicionar a dependência do JUnit apenas no momento em que os testes forem executados, garantindo assim que a dependência não seja adicionada no artefato que será gerado. Alguns outros escopos:

  • compile: escopo padrão do maven para o momento em que o código é compilado e vai junto com o artefato;
  • provided: adicionado no momento da compilação, mas não vai junto com o artefato. Dessa forma você está dizendo que a dependência virá de maneira transitiva de alguma outra dependência;
  • runtime: não inclui no artefato, pois estará disponível em tempo de execução;
  • test: inclui apenas no escopo de testes;
  • system: não inclui no artefato, pois estará disponível no ambiente;
  • import: incluirá TODAS as dependências do ‘depencyManagement‘ que está definido no pom ‘parent’.

Não falamos ainda de ‘depencyManagement‘, mas será tratado mais a frente.

Toda dependência no maven é transitiva, ou seja, se alguma dependência precisa de uma outra não especificada no seu projeto, o seu projeto passará a depender dela também, e será incluida no artefato gerado. A única exigência do maven é que as dependências não sejam cíclicas, e não existe restrição quanto ao número de níveis de dependências.

Dependency Management

O dependency management é responsável por controlar as versões das dependências definidas no projeto. Por exemplo podemos definir a dependência do JUnit no dependency management, e apenas referenciar a dependência na tag depencies do projeto:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.8.1</version>
        </dependency>
    </dependencies>
</dependencyManagement>

<dependencies>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
    </dependency>
</dependencies>

Uma boa prática é definir todas as versões das dependências em um dependency management do pom parent do seu projeto. Dessa forma todo projeto novo que surgir, basta herdar desse parent que as versões já estarão compartilhadas e continuarão centralizadas em um único projeto. Mesmo com a dependência definida no management, os projetos ainda podem definir suas próprias versões de artefatos e o maven dará prioridade para os mais próximos do projeto.

Nos próximos posts veremos como usar alguns plugins úteis para o ambiente de desenvolvimento. Também falaremos de outras funcionalidades como por exemplo geração de relatórios, ‘release‘ de projetos, entre outras.

Set 10

Criando seu primeiro projeto Maven

Escrito por DClick Team em 1, 4, 6, apache, AR, arte, auto, back, bash, BI, blog, camp, carregar, class, classe, classes, codec, código, demo, Dica, Download, Eclipse, exemplo, explorer, for, Hibernate, html, IE, if, image, int, Java, Linux, mg, Motivação, NaN, O, on, padrão, Plugin, Projetos, pt, reference, relatório, Relatórios, rest, RIA, Ria’s Geral, site, tag, TAT, Tema, Teste, Tutorial, Twitter, UI, uint, UX, window, windows, XML, XP @ 09 10th, 2010 | via http://blog.dclick.com.br/pt/ | Sem comentários
DClick Team
? X
  • Bookmarks

Blinkbits BlinkLists BlogLines Blogmarks Buddymarks CiteULike Co.mments Del.icio.us Digg Diigo

Fark Feed Me Links Furl Google Linkagogo ma.gnolia Mister Wong Newsvine Propeller Rawsugar

Reddit Rojo Simpy Sphinn Spurl Squidoo StumbleUpon Tailrank Technorati Yahoo

More »

Twitter!


Começando com Maven 2

O objetivo desse post é ensinar como configurar um projeto para usar maven desde o início, deixando um pouco de lado a origem e a motivação por trás do maven. Também não será detalhado o funcionamento do maven, o que será feito em um outro post.

Instalando maven

Para instalar basta baixar a pasta compactada do próprio site (http://maven.apache.org/download.html). Existem várias tipos de arquivos compactados, mas todos contém a mesma pasta, escolha o de sua prefência. Como o maven é feito em Java, não existe restrição de SO.

Uma vez que a pasta foi descompactada no diretório de sua escolha, basta adicionar no PATH de seu SO o caminho para a pasta ‘bin‘ de onde o maven foi descompactado.

No Linux e no OSX, basta adicionar uma linha em seu arquivo ‘.bash_profile‘ na pasta do seu usuário:

export PATH=$PATH:<diretório do maven descompactado>/bin

No Windows vá em ‘Configurações Avançadas do Sistema‘ -> ‘Variáveis de Ambiente‘, na parte de ‘Variáveis de ambiente para o usuário‘ clique em ‘Novo‘.

No campo ‘Nome‘ coloque ‘PATH‘, e no valor o caminho até a pasta ‘bin‘ do diretório do maven. No caso da imagem ‘C:mavenbin‘.

Adicionando o Maven no PATH do Windows

Lembrando que o maven é feito em Java, portanto é obrigatório que o Java esteja instalado na máquina e que a pasta ‘bin‘ do java esteja definida também no ‘PATH‘ para usá-lo.

Para usar as dependências que ele irá vincular no projeto dentro do Eclipse, basta adicionar a variável de ambiente no Eclipse M2_REPO:

‘Windows‘ -> ‘Preferences‘ -> ‘Java‘ -> ‘Build Path‘ -> ‘Classpath Variables‘

Clique em ‘New‘ e crie uma varável que se chama ‘M2_REPO‘ com o valor apontando para o diretório do seu usuário seguido de ‘/.m2/repository‘:

Criando o projeto

Uma vez que o maven esteja instalado, rode em um terminal:

$ mvn --version

Para se certificar que o maven está instalado corretamente e que a versão é a que você fez o download.

Agora que o maven está rodando corretamente, basta escolher uma para pasta colocar seu novo projeto e rodar o seguinte comando dentro da mesma:

$ mvn archetype:generate

Feito isso:

  • Uma série de opções irá aparecer para você escolher, apenas aperte Enter para que seja escolhido o tipo padrão de projeto Java.
  • Agora o maven irá pedir uma versão do gerador de projetos, apenas escolha a opção ‘1‘ e aperte Enter;
  • Feito isso você deve especificar um ‘groupId‘ para seu novo projeto, no caso do exemplo ‘br.com.dclick‘, que é onde o maven irá armazenar todos os artefatos que conterem esse mesmo ‘groupId‘. No caso do Hibernate por exemplo, o ‘groupId‘ é ‘org.hibernate‘;
  • Agora especifique um ‘artifactId‘, que no caso é o nome do projeto. Seguindo o exemplo do hibernate, o ‘artifactId‘ é ‘hibernate-core‘;
  • Especifique uma versão que no caso de nosso exemplo a versão padrão atende bem (1.0-SNAPSHOT);
  • E por último escolha um nome para o pacote que já será criado dentro da pasta do seu projeto.

Confirme as informações e deixe o maven terminar de criar seu projeto. Certifique-se que tudo está configurado corretamente e rode dentro da pasta de seu projeto novo:

$ mvn clean install

Isso fará com que o maven compile seu código, rode os teste, e gere um artefato (jar) que estará disponível em seu repositório local. Para entender como o maven organiza os artefatos, entre na sua pasta de usuário e depois na pasta ‘.m2‘ e dentro ‘repository‘. Repare que existe uma pasta com o nome do seu ‘groupId‘ e sua respectiva hierarquia, e dentro dessa pasta existe uma outra com o nome do seu artefato e por último uma outra pasta com a versão do mesmo. Abra a pasta e veja que o jar do seu projeto está dentro junto com o pom do mesmo. Por exemplo os artefatos do JUnit:

Para importar seu projeto novo no Eclipse, basta rodar o comando no terminal:

$ mvn eclipse:eclipse

Com isto o projeto se tornará um projeto que o eclipse entende, e assim será possível importá-lo. Importe o projeto e veja como o maven organizou as pastas e pacotes:

Hierarquia de um projeto criado no Maven e importado no Eclipse

Abra na ‘View‘ ‘Package Explorer‘ do Eclipse e repare que existem duas pastas principais no projeto: ‘src/main/java‘ e ‘src/test/java‘. Em ambas as pastas existe o pacote ao qual tínhamos dado nome no momento em que criamos o projeto pelo maven. Também existe uma classe com um método ‘main‘ que apenas imprime “Hello World!”, e uma classe de teste que apenas possui um ‘assertTrue(true);‘.

Alguns detalhes importantes: o projeto que o maven cria por padrão usa o JUnit 3.8.1, e para mudar a versão basta alterar o ‘pom.xml‘ que o maven criou. Outro detalhe importante é que por padrão o maven compila o projeto usando Java 1.3, portanto é preciso adicionar o seguinte trecho de xml no ‘pom‘ do projeto para alterar a versão do compilador, dentro da tag ‘project‘:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <compilerVersion>1.6</compilerVersion>
                <source>1.6</source>
                <target>1.6</target>
                <encoding>UTF-8</encoding>
            </configuration>
        </plugin>
    </plugins>
</build>

Note que foi adicionado uma tag ‘encoding’ com o valor ‘UTF-8‘, isso para dizer que as classes estão escritas em formato UTF-8 para padronizar o build.

Agora que o projeto está criado e configurado podemos começar a desenvolver em cima dele. Todas as suas classes da aplicação devem sempre estar dentro de ‘src/main/java‘, pois esta é a pasta que o maven irá exportar no jar que estará disponível no repositório.

Dica: rode o comando:

$ mvn clean install

Agora abra a pasta do projeto. Será criada uma pasta ‘target‘ que contém o ‘jar‘ do seu projeto além de alguns relatórios de teste e os arquivos compilados.

Na pasta ‘src/test/java‘ devem ir todas as classes de teste do seu projeto. Assim o maven se encarregará de rodá-los quando o jar for gerado, garantindo a integridade do projeto.

No próximo post será explicado melhor o funcionamento do maven, por isso tente seguir o exemplo e poste dúvidas a vontade.

Set 2

Capturando imagem da webcam no Flex

Escrito por Gabriel Versallini em 1, 4, 6, Action Script, Adobe, app, AR, as3, auto, BI, Bindable, codec, collection, Componente, control, Controls, demo, Dica, encode, encoder, event, events, flash, Flex, function, html, ide, IE, if, image, Java, label, layout, MXML, NaN, O, on, pt, relatório, Relatórios, RIA, Ria’s Geral, string, web, WebCam, XML @ 09 2nd, 2010 | via http://www.versallini.com.br | Sem comentários
Gabriel Versallini
? X
  • Bookmarks

Blinkbits BlinkLists BlogLines Blogmarks Buddymarks CiteULike Co.mments Del.icio.us Digg Diigo

Fark Feed Me Links Furl Google Linkagogo ma.gnolia Mister Wong Newsvine Propeller Rawsugar

Reddit Rojo Simpy Sphinn Spurl Squidoo StumbleUpon Tailrank Technorati Yahoo

More »

Fala, galera #soudev.

Estou preparando um post ensinando como criar relatórios no iReport e exibi-los no Flex através do componente xViewer ou Java (estou avaliando ainda), mas enquanto isso, segue uma dica de como capturar imagem da webcam.

[as3]

layout="absolute"
creationComplete="initCam()"
width="358" height="212">


import flash.media.Camera;

import mx.collections.*;
import mx.controls.*;
import mx.events.*;
import mx.graphics.ImageSnapshot;
import mx.graphics.codec.JPEGEncoder;
import mx.rpc.events.ResultEvent;

[Bindable]
private var imagemBase64:String;

[Bindable]
private var imagemWebcam:ImageSnapshot;

private function initCam():void {
var camera:Camera = Camera.getCamera();
Webcam.attachCamera( camera );
}

private function Capture():void {
imagemWebcam =ImageSnapshot.captureImage( Webcam, 0, new JPEGEncoder( 100 ));
imagemBase64=ImageSnapshot.encodeImageAsBase64( imagemWebcam );
foto.source = imagemWebcam.data;
foto.graphics.clear();
}

private function Limpar():void {
foto.unloadAndStop(false);
}

]]>




[/as3]

Veja a aplicação funcionando:

Divirta-se.
Até a próxima!

Jul 26

Monetize seus aplicativos em Adobe AIR com Melrose

Escrito por Leonardo França em 1, 6, Adobe, Adobe Air, Air, Android, api, Aplicativos, app, app store, apple, AR, BI, busca, class, cliente, código, comunicação, control, developer, Documentação, Download, exemplo, Exemplos, for, Formação, Geral, Google, IE, if, image, int, labs, mg, Negócios, O, on, on-line, PHP, relatório, Relatórios, RIA, Ria’s Geral, serviço, Serviços, Shibuya, site, tag, Tech, Teste, UI, XP @ 07 26th, 2010 | via http://www.leonardofranca.com.br | Sem comentários
Leonardo França
? X
  • Bookmarks

Blinkbits BlinkLists BlogLines Blogmarks Buddymarks CiteULike Co.mments Del.icio.us Digg Diigo

Fark Feed Me Links Furl Google Linkagogo ma.gnolia Mister Wong Newsvine Propeller Rawsugar

Reddit Rojo Simpy Sphinn Spurl Squidoo StumbleUpon Tailrank Technorati Yahoo

More »



Esse modelo de negócios virou tendência no mundo, você disponibiliza seu aplicativo atravez de uma empresa de grande porte, temos exemplos como Apple com a App Store, a Nokia com a OVI Store, o Google com o Android Market. As vantagens são muitos e gera uma confiança maior para o usuario e claro que a Adobe não poderia ficar de fora.
Anteriormente chamado de Shibuya, agora Adobe Melrose busca oferecer basicamente três tipos de serviços para quem desenvolve aplicativos em Adobe AIR:

  • Testar e Comprar – Quando você estiver desenvolvendo seu aplicativo em Adobe AIR, basta inserir o SWC das licenças em sua aplicação, depois basta inserir algumas linhas de código e especificar o preço e o periodo de teste.
  • Monetizar – Quando os clientes comprarem seu aplicativo, o serviço de Melrose mantém o controle do rendimento de cada uma das suas aplicações. Você é pago em intervalos regulares, geralmente uma vez por mês.
  • Analizar – Os relatórios estão disponíveis on-line através do site Adobe Developer Connection. Nesta versão inicial, você será capaz de ver a comunicação de informações sobre receitas, testes ativos e downloads expirados. Esta informação está disponível para todos os lugares em que você usa Melrose, não apenas para downloads do Adobe AIR Marketplace

Mais detalhes:
Melrose Labs
Documentação

Mai 21

FlexReport com o Flex4!

Escrito por Elvis Fernandes em 1, 2009, 3d, 4, 6, Adobe, aplicacao, app, AR, arte, Artigo, Artigos, BI, blog, bug, class, código, código fonte, CRUD, Curso, Cursos, Desenvolvimento, Diversos, DRE, Excel, Flex, Flex 3, Flex 4, Flex4, flexreport, fonte, for, Formação, html, IE, impressão, instalação, int, Introdução, live, Mac, NaN, O, on, Outros, permalink, problema, programação, pt, rails, relatório, Relatórios, rest, restfulx, RIA, Ria’s Geral, screen, Screencast, screencasts, tag, Teste, UI, uint, update @ 05 21st, 2010 | via http://www.elvis.eti.br | Sem comentários
Elvis Fernandes
? X
  • Bookmarks

Blinkbits BlinkLists BlogLines Blogmarks Buddymarks CiteULike Co.mments Del.icio.us Digg Diigo

Fark Feed Me Links Furl Google Linkagogo ma.gnolia Mister Wong Newsvine Propeller Rawsugar

Reddit Rojo Simpy Sphinn Spurl Squidoo StumbleUpon Tailrank Technorati Yahoo

More »

Alguns dias atrás eu escrevi este artigo com o título “Uma nota sobre o FlexReport” e configurei o post para que ele fosse ao ar no dia seguinte. Este ERA o conteúdo do artigo:

Há um bom tempo eu escrevi um artigo e gravei um dois screencasts sobre o FlexReport, mostrando como ele funciona(va) e como criar um relatório com ele.

Esses artigos estão entre os mais visualizados do meu blog. Até hoje eu recebo perguntas e comentários sobre como resolver algum problema com o FlexReport, como imprimir em formato paisagem, como adicionar outros formatos de papel, entre outras perguntas.

Pretendo com este post responder a todas essas questões: não usem o FlexReport. A idéia do programa é excelente, mas infelizmente o projeto foi abandonado. A última versão (0.2 RC1, se não me engano) foi lançada no começo de 2008, quando o Flex 3 ainda não tinha tanto tempo de vida. Estamos em 2010, a versão final do Flex 4 já saiu e o FlexReport não mudou nem um pouco.

Eu até pensei em ajudar a tocar o projeto, mas por falta de tempo não pude colaborar da forma que eu gostaria.

Como já estamos usando o Flex 4, vale a pena dar uma olhada nos recursos de impressão que temos disponíveis. Pode ser que ajude em alguma coisa: http://help.adobe.com/en_US/flex/using/WS2db454920e96a9e51e63e3d11c0bf65381-8000.html

Mas quando anoiteceu eu recebi um e-mail do Douglas Marques com uma boa notícia: ele e a equipe da empresa onde trabalha atualizaram a biblioteca do FlexReport para trabalhar com o Flex 4, além de corrigir diversos bugs! Cancelei a publicação do artigo e (felizmente) substituí por este novo artigo.

Eu ainda não testei a biblioteca, mas atendendo ao pedido do Douglas estou publicando ela aqui.

A informação que eu tive é que em breve a empresa disponibilizará o código fonte.

Posts relacionados

  • CRUD com o RestfulX – aplicação funcionandoCRUD with RestfulX – live application“>CRUD com o RestfulX – aplicação funcionandoCRUD with RestfulX – live application (2)
  • CRUD com o RestfulX: Parte 1/2 – RetrieveCRUD with RestfulX: Part 1/2 – Retrieve“>CRUD com o RestfulX: Parte 1/2 – RetrieveCRUD with RestfulX: Part 1/2 – Retrieve (5)
  • Gerando relatórios com o FlexReport – Parte 3 (Screencast)“>Gerando relatórios com o FlexReport – Parte 3 (Screencast) (27)
  • Gerando relatórios com o FlexReport – Parte 2 (Screencast)“>Gerando relatórios com o FlexReport – Parte 2 (Screencast) (37)
  • Gerando relatórios com o FlexReport – Parte 1“>Gerando relatórios com o FlexReport – Parte 1 (8)
  • Instalando sua aplicação Rails/RestfulX (e as gems) na DreamHost Installing your Rails/RestfulX app (and its gems) at Dreamhost“>Instalando sua aplicação Rails/RestfulX (e as gems) na DreamHost Installing your Rails/RestfulX app (and its gems) at Dreamhost (0)
  • CRUD com o RestfulX: Parte 2/2 – Create, Update e DeleteCRUD with RestfulX: Part 2/2 – Create, Update, and Delete“>CRUD com o RestfulX: Parte 2/2 – Create, Update e DeleteCRUD with RestfulX: Part 2/2 – Create, Update, and Delete (2)
  • Instalação “avançada” do RestfulX no seu projeto Rails“Advanced” installation of RestfulX into your Rails app“>Instalação “avançada” do RestfulX no seu projeto Rails“Advanced” installation of RestfulX into your Rails app (0)
  • Introdução ao RestfulXIntroduction to RestfulX“>Introdução ao RestfulXIntroduction to RestfulX (0)
  • Screencast: desenvolvendo uma aplicação com RestfulX em menos de 5 minutos“>Screencast: desenvolvendo uma aplicação com RestfulX em menos de 5 minutos (5)

© Elvis for Elvis Fernandes, 2010. |
Permalink |
Nenhum comentário |
Adicione ao
del.icio.us


Tags: Flex, flex 4, flexreport, programação

Mai 21

FlexReport com o Flex4!

Escrito por Elvis Fernandes em 1, 2009, 3d, 4, 6, Adobe, aplicacao, app, AR, arte, Artigo, Artigos, BI, blog, bug, class, código, código fonte, CRUD, Curso, Cursos, Desenvolvimento, Diversos, DRE, Excel, Flex, Flex 3, Flex 4, Flex4, flexreport, fonte, for, Formação, html, IE, impressão, instalação, int, Introdução, live, Mac, NaN, O, on, Outros, permalink, problema, programação, pt, rails, relatório, Relatórios, rest, restfulx, RIA, Ria’s Geral, screen, Screencast, screencasts, tag, Teste, UI, uint, update @ 05 21st, 2010 | via http://www.elvis.eti.br | Sem comentários
Elvis Fernandes
? X
  • Bookmarks

Blinkbits BlinkLists BlogLines Blogmarks Buddymarks CiteULike Co.mments Del.icio.us Digg Diigo

Fark Feed Me Links Furl Google Linkagogo ma.gnolia Mister Wong Newsvine Propeller Rawsugar

Reddit Rojo Simpy Sphinn Spurl Squidoo StumbleUpon Tailrank Technorati Yahoo

More »

Alguns dias atrás eu escrevi este artigo com o título “Uma nota sobre o FlexReport” e configurei o post para que ele fosse ao ar no dia seguinte. Este ERA o conteúdo do artigo:

Há um bom tempo eu escrevi um artigo e gravei um dois screencasts sobre o FlexReport, mostrando como ele funciona(va) e como criar um relatório com ele.

Esses artigos estão entre os mais visualizados do meu blog. Até hoje eu recebo perguntas e comentários sobre como resolver algum problema com o FlexReport, como imprimir em formato paisagem, como adicionar outros formatos de papel, entre outras perguntas.

Pretendo com este post responder a todas essas questões: não usem o FlexReport. A idéia do programa é excelente, mas infelizmente o projeto foi abandonado. A última versão (0.2 RC1, se não me engano) foi lançada no começo de 2008, quando o Flex 3 ainda não tinha tanto tempo de vida. Estamos em 2010, a versão final do Flex 4 já saiu e o FlexReport não mudou nem um pouco.

Eu até pensei em ajudar a tocar o projeto, mas por falta de tempo não pude colaborar da forma que eu gostaria.

Como já estamos usando o Flex 4, vale a pena dar uma olhada nos recursos de impressão que temos disponíveis. Pode ser que ajude em alguma coisa: http://help.adobe.com/en_US/flex/using/WS2db454920e96a9e51e63e3d11c0bf65381-8000.html

Mas quando anoiteceu eu recebi um e-mail do Douglas Marques com uma boa notícia: ele e a equipe da empresa onde trabalha atualizaram a biblioteca do FlexReport para trabalhar com o Flex 4, além de corrigir diversos bugs! Cancelei a publicação do artigo e (felizmente) substituí por este novo artigo.

Eu ainda não testei a biblioteca, mas atendendo ao pedido do Douglas estou publicando ela aqui.

A informação que eu tive é que em breve a empresa disponibilizará o código fonte.

Posts relacionados

  • CRUD com o RestfulX – aplicação funcionandoCRUD with RestfulX – live application“>CRUD com o RestfulX – aplicação funcionandoCRUD with RestfulX – live application (2)
  • CRUD com o RestfulX: Parte 1/2 – RetrieveCRUD with RestfulX: Part 1/2 – Retrieve“>CRUD com o RestfulX: Parte 1/2 – RetrieveCRUD with RestfulX: Part 1/2 – Retrieve (5)
  • Gerando relatórios com o FlexReport – Parte 3 (Screencast)“>Gerando relatórios com o FlexReport – Parte 3 (Screencast) (27)
  • Gerando relatórios com o FlexReport – Parte 2 (Screencast)“>Gerando relatórios com o FlexReport – Parte 2 (Screencast) (37)
  • Gerando relatórios com o FlexReport – Parte 1“>Gerando relatórios com o FlexReport – Parte 1 (8)
  • Instalando sua aplicação Rails/RestfulX (e as gems) na DreamHost Installing your Rails/RestfulX app (and its gems) at Dreamhost“>Instalando sua aplicação Rails/RestfulX (e as gems) na DreamHost Installing your Rails/RestfulX app (and its gems) at Dreamhost (0)
  • CRUD com o RestfulX: Parte 2/2 – Create, Update e DeleteCRUD with RestfulX: Part 2/2 – Create, Update, and Delete“>CRUD com o RestfulX: Parte 2/2 – Create, Update e DeleteCRUD with RestfulX: Part 2/2 – Create, Update, and Delete (2)
  • Instalação “avançada” do RestfulX no seu projeto Rails“Advanced” installation of RestfulX into your Rails app“>Instalação “avançada” do RestfulX no seu projeto Rails“Advanced” installation of RestfulX into your Rails app (0)
  • Introdução ao RestfulXIntroduction to RestfulX“>Introdução ao RestfulXIntroduction to RestfulX (0)
  • Screencast: desenvolvendo uma aplicação com RestfulX em menos de 5 minutos“>Screencast: desenvolvendo uma aplicação com RestfulX em menos de 5 minutos (5)

© Elvis for Elvis Fernandes, 2010. |
Permalink |
Nenhum comentário |
Adicione ao
del.icio.us


Tags: Flex, flex 4, flexreport, programação

Fev 16

Seja produtivo consumindo tomates

Escrito por Daniel Lopes em 1, 2009, 4, 6, AR, Artigo, Artigos, as2, BI, blog, camp, class, dados, demo, Design, Dica, Download, email, err, escritório, exemplo, Ferramenta, for, Formação, Geral, gratuito, ide, IE, if, int, internet, lista, Livro, Mate, mg, NaN, novidade, O, on, online, pomodo, Pomodoro, problema, problemas, processo, prova, pt, relatório, Relatórios, Revisão, RIA, Ria’s Geral, Software, tag, Tech, Tema, Twitter, UI, uint, utf8, variados, VOZ, web, XP, zend @ 02 16th, 2010 | via http://blog.areacriacoes.com.br/ | Sem comentários
Daniel Lopes
? X
  • Bookmarks

Blinkbits BlinkLists BlogLines Blogmarks Buddymarks CiteULike Co.mments Del.icio.us Digg Diigo

Fark Feed Me Links Furl Google Linkagogo ma.gnolia Mister Wong Newsvine Propeller Rawsugar

Reddit Rojo Simpy Sphinn Spurl Squidoo StumbleUpon Tailrank Technorati Yahoo

More »

Não é a primeira vez que falamos sobre o pomodoro
aqui no blog. Também não é novidade que eu utilizo a técnica todo os dias através do PomoDo.

Ultimamente tenho recebido muitas dúvidas de pessoas interessadas em entender mais o que é e como funciona a técnica. Então
resolvi traduzir um post que explica de forma sucinta os conceitos desta forma de concentrar que mudou a minha vida.

O post original pode ser lido em: Abundance Blog

The pomodoro Technique – transformando o tempo em seu aliado

Quando Francesco Cirillo era um universitário em Roma lutando por se manter em uma tarefa, ele decidiu criar um técnica de administração de tempo que deveria ajudá-lo a melhorar sua concentração e aguçar seu foco. Estas eram as ferramentas que tinha em mãos:

  • Papel;
  • Caneta; e
  • um timer de cozinha em formato de tomate (“pomodoro” é tomate em Italiano).

A primeira vista, a técnica pomodoro, que é como Francesco chamou o sistema que inventou, parece muito com timeboxing. Com timeboxing, você decide sobre um período específico de tempo, geralmente de vinte minutos a uma hora, durante a qual você trabalha em exclusivamente uma determinada tarefa. Uma vez que o tempo está acima, você pode optar por dedicar um outro Timebox para essa tarefa, ou você pode optar por ir fazer outra coisa.

O básico da técnica pomodoro:

  • Escolha uma tarefa.
  • Ajuste seu timer para 25 minutos (estes 25 min é chamado de “o pomodoro”).
  • Trabalhe na tarefa até o timer despertar então marque um “X” em sua planilha de papel na frente da tarefa.
  • Descanse por 5 minutos. Quando os 5 minutos terminarem, continue trabalhando, pomodoro por pomodoro, até a tarefa estar completa.
  • Quando completar a tarefa, você pode riscá-la de sua lista. Então parta para a próxima tareaf.
  • Depois de quatro pomodoros, faça um intervalo longo (de 15 a 30 minutos).

Explicando a técnica com mais detalhes abaixo.

O processo – cinco estágios

Existem cinco estágio envolvido na técnica do pomodoro:

  1. Planejamento no inicio de cada dia: você vai listar as atividade que planeja completar neste dia em sua lista de to-do’s.
  2. Faça os registros ao longo do dia para que você possa ver em quais atividades você está gastando seu tempo, e quanto tempo demora para completar cada uma.
  3. Armazene seus resultado ao fim do dia para criar um arquivo de como você está gastando seu tempo
  4. Ao fim do dia processe seus registros para transformar dados puros em observações.
  5. Faça uma revisão de como você está gastando seu tempo e faça decisões sobre como você pode melhorar.

O que você vai precisar

  • Um timer de cozinha (você também pode usar um software).
  • Uma caneta.
  • Uma planilha de To-Do (veja um exemplo aqui).
  • Um inventário de tarefas (veja um exemplo aqui).
  • Uma planilha de registros (os estágios de “Registrar”, “Processar” e “Revisar” são todos nesta planilha).

As regras do pomodoro

Estas são as regras que você deve seguir para aplicar a técnica do pomodoro:

  • Um pomodoro é indivisível (sempre tem 25 minutos de duração).
  • Se você começa um pomodoro e se distrai para começar a trabalhar em uma outra tarefa, este pomodoro não conta e você não pode marcar um “X”.
  • Se você completa uma tarefa antes dos 25 minutos terminarem, continue revisando o resultado desta tarefa até o timer tocar. Se você completar a tarefa em 5 minutos ou menos e uma revisão não terá valor, apenas não conte esta como um pomodoro.
  • Quando o timer tocar, pare de trabalhar mesmo se você achar que pode completar a tarefa trabalhando por mais alguns poucos minutos.
  • Durante seus 5 minutos de intervalo tente fazer algo bom para você: beber água, alongar, fechar os olhos, e por aí vai. Estes pequenos intervalos permitem sua mente “desconectar” da tarefa que você está trabalhando e assimilar o que você aprendeu. Isso permite que você se sinta vivo e pronto para mais um pomodoro.
  • Se a tarefa toma mais de 5 ou 7 pomodoros, quebre-a. Por exemplo, se você colocou “Escrever um artigo” em sua lista de tarefas e tomou mais que 5 ou 7 pomodoros para escrever o artigo, tente quebrá-la em nas seguintes tarefas: conduzir uma pesquisa para o artigo; criar um esboço inicial; escrever o primeiro rascunho; escrever o rascunho final; editar e revisar o artigo.
  • Se uma tarefa dura menos que um pomodoro, veja outras tarefas pequenas e agrupe-as em um pomodoro.
  • Quando o pomodoro começa, você deve se concentrar nesta tarefa que está trabalhando até o timer tocar. Você está treinando a si mesmo para se manter focado na tarefa em 25 minutos por vez.
  • Durante o intervalo longo você pode ir a máquina de café, checar seu correio de voz, olhar emails, e por aí vai.
  • Também use os intervalos longos para para re-focar. Pergunte a si mesmo se você gastou suas últimas duas produtivamente. Se não, dê uma olhada em sua lista de tarefas e empenhe-se mais para concluir as coisas.

Como lidar com interrupções

Interrupções pode ser internas ou externas. Agora vamos aprender como lidar com elas:

Interrupções internas

Interrupções internas são aquelas que vem de dentro de você: você sente uma urgência imediata de olhar seu email ou Twitter, você decide olhar algo na internet que você esteve pensando, você se lembra de alguém que precisa ligar, decide limpar sua mesa, e etc.

Sempre que você sentir uma vontade de tirar sua atenção da tarefa em mãos, coloque um apostrofo (’) na planilha que você registra seus pomodoros. Então faça o seguinte:

  • Escreve a nova tarefa na planilha de To-Do em uma área para “Não planejadas & Urgentes” se for algo que você realmente precise fazer neste dia.
  • Escreve na planilha do “Inventário de Tarefas” se for algo que pode ser feito em outro dia.

Deve que você tiver feito isto, volte a tarefa que você estava trabalhando e continue nela até o timer tocar. Se você marcou algo “urgente”, você vai precisar fazer isto neste dia, e provavelmente a um custo sobre outra tarefa que você tinha planejada para o dia.

Interrupções externas

Interrupções externas ocorrem quando um telefone toca, alguém bate na porta ou um colega entra no seu escritório. Quando isto ocorrer, marque um traço (-) na planilha onde você registra seus pomodoros.

Para interrupções externas, aplique a estratégia de “Informar, Negociar e Ligar”. Que é, informar a pessoa qu você está no meio de uma tarefa e negociar uma rápida remarcação do motivo. Então aplique o mesmo procedimento para uma interrupção iterna. Por último, certifique-se de retornar a pessoa como foi combinado.

Registrar, Processar, e Revisar – Melhore como você usa o tempo

O que você registra depende depende do que você quer observar e os tipos de relatórios que deseja gerar. Uma opção é definir uma meta para ser capáz de determinar com precisão quanto tempo demora para você completar tarefas que executa com frequência.

Para continuar com nosso exemplo de escrever um artigo, você pode querer registrar quantos pomodoros levou para completar cada uma das tarefas:

  • Quantos pomodoros são gastos para pesquisar sobre o artigo?
  • Para criar um esboço inicial?
  • Escrever o primeiro rascunho?
  • E escrever o rascunho final?
  • Finalmente, quantos pomodoros são gastos para editar e revisar o artigo?

Quando você souber quanto é gasto em cada uma destas tarefas, você pode tentar melhorar seu tempo. Talvez após analisar seus registros vai perceber que gasta que toma um longo um tempo para pesquisar artigos. Você pode definir uma meta de gastar menos tempo em pesquisa e pensar formas de fazer isto.

Outra opção é definir linhas claras para seguir, como por exemplo: “Eu vou devotar 2 pomodoros para pesquisa e então eu vou escrever o artigo com a informação que eu tiver no momento.”

Quando você revisar seu registros você pode perceber que está gastando tempo de mais em atividades que não são realmente importantes, e negligenciando outras que vão manter você próximo do seus objetivos a longo prazo.

Você também pode perceber que está gastando tempo em atividades necessárias, mas que você não levou em conta quando planejou seu dia. Isto vai lhe dar uma ligação valiosa sobre para onde o seu tempo está indo.

Conclusão

É notável que no começo você vai encontrar dificuldade em se concentrar em uma tarefa por 25 minutos por vez, especialmente se você tem problemas de atenção. Francesco tranquiliza o leitor muitas vezes dizendo que em sua técnica, “o próximo pomodoro vai ser melhor”.

Você pode comprar o livro The Pomodoro Technique no Amazon, ou fazer download do PDF gratuito que detalha a técnica.


PomoDo – a minha solução

Depois de ter problemas para me manter organizado com os papeis criei o PomoDo que possui a planilha de tarefas do dia e o registro de tarefas concluidas para aquele mesmo dia. Além é claro do Timer apropriado para 25min e 5min.

Faça download do PomoDo aqui, é gratuito.

Ago 5

Google Analytics para Flex

Escrito por Eduardo Kraus em API Google Analytics Flex, Comunicação de Dados, Flex, gaforflash, Google Analytics para Flash, Google Analytics para Flex, Monitoramento, monitoramento com Google Analytics, Relatórios @ 08 5th, 2009 | via http://blog.mxml.com.br | Sem comentários
Eduardo Kraus
? X
  • Bookmarks

Blinkbits BlinkLists BlogLines Blogmarks Buddymarks CiteULike Co.mments Del.icio.us Digg Diigo

Fark Feed Me Links Furl Google Linkagogo ma.gnolia Mister Wong Newsvine Propeller Rawsugar

Reddit Rojo Simpy Sphinn Spurl Squidoo StumbleUpon Tailrank Technorati Yahoo

More »

Para aqueles como eu, amantes dos produtos Google, e querem utilizar o Google Analytics em todos os sistemas, segue aqui uma forma fácil de integra-lo com o Flex.

| Entradas recentes »

ACERCA

O que é o RedeRIA ?

O redeRIA não é nada mais que um agregador de feed's que disponibiliza o conteudo de varios blogs e autores ao redor do mundo RIA, actualmente agregamos mais de 2791 entradas vindas de 53 blogs especializados em ria’s, pelo que só fica a ganhar em assinar o feed ou seguir a comunidade no twitter.

Se acha que o seu blog ou um blog de um amigo é interessante e util para os leitores o redeRIA, faça a sua submissão aqui.

Feed: assine já
Twitter: siga-nos

GOOGLE

Votação


Deveria o RedeRia agregar conteúdo em inglês?
Ver Resultados

AUTORES


Eduardo KrausAlexandre TadashiBindableCognitiva SoluçõesDaniel LopesDaniel SchmitzDanielPedrinhaDClick TeamEbercomEdgard DavidsonElvis FernandesErko BrideeFabiel PrestesFábio Batista da SilvaFabio da SilvaFabriccio BernardesFelipe BorellaFlavia MoreiraGabriel VersalliniGabriela T. PerryIgor MusardoJanderson CardosoJoão AugustoJose Carlos FielKelps SousaLeonardo FrançaLucas MarçalLuis MessiasLuiz TarabalMario JuniorMário SantosMauro MartinsPablo SouzaPedro ClaudioreneRia BrazilriaPTRicardo CerqueiraRobson FernandesRodrigo Pereira FragaSaintBrSamuelFacchinelloSergio SouzaSilva DeveloperStefan HorochovecTech CaffeTecinforThiago BuenoVedVinícius SandimWillian ManoXAML Cast

PUBLICIDADE








Powered by Wordpress & msdevstudio.com