Archive

Posts Tagged ‘Introdução’

Introdução a Big Data e Apache Solr

Para quem está interessado em Big Data e além disso quer algo prático utilizando Apache Solr, disponibilizo um conjunto de slides que podem ser utilizados por Estudantes, Professores e profissionais. Usem e distribuam a vontade!

Apresentação sobre Desenvolvimento Móvel Híbrido

A apresentação a seguir mostra alguns conceitos sobre desenvolvimento móvel hibrido e exemplos de AngulaJS e um projeto Ionic. Vale a pena para quem quer entrar para este mundo. Enjoy!

FindBugs x Checkstyle x PMD

Featured imageInúmeras pessoas fazem a comparação entre as ferramentas FindBugs, Checkstyle e PMD. Vale dizer que as três permitem a escrita de um melhor código fonte, o inspecionando em busca de possíveis problemas e gerando relatórios para que o desenvolvedor possa tomar providências.

Porém, a abordagem delas é um pouco distinta:

  • FindBugs: Funciona procurando padrões de Bugs. Analise o Bytecode, e não o código fonte em si. Funciona como se tivesse um banco de dados interno com os bugs comuns, e vasculha seu código procurando por esses bugs. Eventualmente pode dar falsos positivos, apontando erros que no contexto de sua aplicação, não são erros. A própria documentação oficial do Findbugs diz: “In practice, the rate of false warnings reported by it is less than 50%”.
    http://findbugs.sourceforge.net/index.html
  • CheckStyle: Seu foco é em problemas relacionados as convenções e padrões Java, por exemplo: ausência de Java docs, abertura de chaves { depois de Ifs, etc. Ele varre o código fonte de seu projeto.
    http://checkstyle.sourceforge.net/
  • PMD: Vasculha o código fonte procurando por más práticas e problemas de código por exemplo: import com *, muitos métodos em classes, etc.
    http://pmd.sourceforge.net/

Em geral o PMD e o Checkstyle são mais similares. Todavia, eu recomendo o uso das 3 ferramentas em seu projeto, e além disso, que sejam criados arquivos de configurações para CADA ferramente e que os mesmos sejam utilizados por TODO o time, garantindo assim, a homogeneidade na produção do seu código fonte.

O uso principalmente do checkstyle e do PMD garantem um código fonte mais legível, de melhor manutenabilidade, tornando-se o trabalho com os mesmos mais eficiente e rápido.

Eu fiz video aulas introdutórias sobre as 3 ferramentas, que ensinam como instalar, configurar e utilizar, como sempre, de maneira simples e objetiva. Seguem os links:

  1. FindBugs
  2. Checkstyle
  3. PMD

Enjoy!

Introdução ao FindBugs

FindBugs é uma ferramenta que pode nos ajudar a aprimorar a qualidade dos aplicativos que produzimos. Basicamente trata-se de uma ferramenta que busca padrões de bug em seu aplicativo e gera um relatório permitindo que o desenvolvedor tome ações para os eliminar se aplicável.

Gravei um vídeo ensinando a instalar e utilizar no Eclipse e com algumas breves explicações. Os slides apresentados no vídeo podem ser baixados da seguinte URL https://drive.google.com/file/d/0BxhdMuoEQRL-N2tudi02dXNWRG8/view?usp=sharing

Eis o vídeo:

Enjoy.

Introdução a Data Warehouse (DW for dummies)

OBS: Este artigo destina-se a pessoas que tem conhecimentos básicos sobre banco de dados e querem saber o que é Data Warehouse.

Em uma empresa que utiliza um sistema de banco de dados, diariamente são efetuadas N transações. Quando uma compra é efetuada por exemplo, ocorrem várias operações no banco (selects, inserts, updates e deletes). Imagine um sistema maior agora, o que registra as ligações em uma empresa de telefonia celular. Pensando superficialmente, quando você inicia uma ligação, um insert é executado, registrando os dados da ligação, tais como horário de início e número discado. Quando você desliga seu celular, é efetuado um update na linha que foi inserida, registrando dentre outros dados, a hora na qual a ligação foi finalizada. Estas base de dados, tem que estar preparadas para responder rapidamente a transações pequenas e rápidas. Tais bases tem que ter um nível de disponibilidade altíssimo. Não podem cair nunca! Elas são conhecidas como bancos de dados transacionais ou OLTP – Online Transaction Processing ou Processamento de transações em tempo-real.

Os gerentes da empresa de telefonia demandam relatórios sobre as ligações, então naturalmente você já deve estar imaginando um gigantesco select sendo feito na tabela de ligações, cruzando dados com a tabela de clientes, cidades, estados, país, etc, etc, etc. Tudo isso para um simples relatório para ver os dados sobre as ligações que foram feitas em um determinado período por exemplo.

Você acha possível rodar este “simplesselect na base que está sofrendo as operações para cadastro de ligações? Sim, possível até que é! Porém é arriscadíssimo e demorado. Um select como este pode facilmente gerar um estouro de memória em uma base, pode retardar outras operações, dentre vários outros problemas.

Qual a solução? Por que não fazer uma “cópia” dos dados em um outro banco de dados distinto, o qual poderá sofrer enormes selects sem afetar o sistema da empresa que não pode parar ou sofrer com lentidão. Essa base criada é a tal de Data Warehouse, também conhecida como DW!

Mas em quais momentos essa “cópia” é feita? Depende! Cada empresa define o momento mais oportuno. Pode ser semanalmente, duas vezes por semana, antes de rodar a folha de pagamentos, etc. Geralmente as grandes empresas de telefonia iniciam a alimentação seus DWs a meia noite (e terminam por volta das 5 da manhã). Tente ligar para a sua operadora neste horário e perceba que o atendente vai falar que o sistema está lento.

As técnicas envolvidas nesta “cópia” são as mais diversas possíveis. Porém você deve ter reparado que todas as ocorrências da palavra cópia no texto acima estão entre aspas certo? Normalmente, não é feita uma simples cópia. São copiados somente os dados relevantes para o DW, ou seja, os dados que serão utilizados nos relatórios, prognósticos, previsões, etc. Neste momento também podem ocorrer algumas transformações nos dados, alguma conversão, a aplicação de uma equação, de-normalização, etc. A esta operação é dado o nome de ETL – Extraction, Transformation and Load.

Este processo de carregamento também é chamado de um processo Batch ou em Lote. Pois movimenta grande quantidade de dados de uma só vez.

Um Data Warehouse tem que ser otimizado para sofrer enormes operações de busca, porém um DW não sofre somente selects. Cada dia mais os DWs estão ficando “espertos”, o termo utilizado comercialmente é SMART. O que é isso exatamente? Imagine que você carregou seu DW com os dados das ligações e quer gerar um relatório que além dos dados cadastrados em banco irá trabalhar com os mesmos para gerar forecasts, ou seja, previsões, dentre outras. Então várias operações podem ocorrer em banco para preparar os dados. Com base nos dados “antigos”, o banco deve ser capaz de mostrar tendências de comportamento por exemplo. Então acabam ocorrendo outras operações no DW além do select para preparar os dados.

Em teoria, qualquer banco de dados disponível no mercado pode ser utilizado com um DW. Obviamente que vão existir diferenças em desempenho, recursos e escalabilidade. É perfeitamente possível se criar um DW utilizando o MySQL, porém análises técnicas apontam que o mesmo não tem o nível de escalabilidade de um IBM DB2 ou um Oracle por exemplo. Convém a empresa interessada fazer uma extensa pesquisa de mercado antes de escolher seu produto.

Quanto a equipamentos, normalmente um banco de dados já demanda um servidor muito poderoso e enorme quantidade de memória ram. Para um DW, as exigências são maiores ainda. É importante observar que quando falo “um servidor”, quero dizer um servidor de banco de dados que pode ser constituído por um ou N computadores. Em grandes bancos, um DW pode ser 50 computadores, cada um com 8 processadores de 8 cores e 200 gigas de memória ram por computador. Os dados em si são armazenados em equipamentos chamados storages, totalizando uma capacidade de vários Terabytes!

Enfim, espero ter dado uma boa visão introdutória sobre DW. Se quiser se aprofundar mais, sugiro procurar por livros relacionados. O “Papa” do DW é o autor Ross Kimball, qualquer livro dele vai agregar muito.

Em breve postarei artigos sobre storages e servidores. Estou aberto a sugestões, críticas e dúvidas.

Enjoy!

Apresentação sobre Orientação a Objetos e JAVA

Estou ministrando um curso sobre desenvolvimento JAVA na Fundação Educacional do Município de Assis, os slides da primeira aula estão ai: a1p1_11

O tema da primeira aula é Orientação a Objetos e introdução a tecnologia Java.

Muitos slides da apresentação são reaproveitados.

Enjoy!

Categorias:JAVA Tags:, ,