Complexidade e performance de um algoritmo

O que é notação big-O? Pra quer serve? Onde usar? Se você tem dúvidas do que se trata o big-O esse artigo tentará ajudá-lo a esclarecer algo que é fundamental para todo programador e está em seu dia a dia, mesmo que você não saiba.

Ler mais

Dicas de Spring Batch

Costuma criar aplicações em lote em Java? Pois, saiba que além de ter uma especificação para tratar essas aplicações, há um framework muito bom para ajudar a criar e padronizar o código dos mesmos, o Spring Batch! Nesse artigo vou colocar umas pequenas dicas que podem servir para outras pessoas assim como me ajudaram muito.

Ler mais

Criando consumers e producers em Kafka com Java

A algum tempo fiz um post sobre Apache Kafka explicando os conceitos principais como o funcionamento, produtores, consumidores, tópicos e outros. Também escrevi sobre um pouco da história do Kafka e aplicabilidade. Para esse post pretendo dar continuidade ao assunto, mostrando na prática o funcionamento dessa ferramenta.

Ler mais

Reconhecimento de Imagem em Java com Tesseract e Tess4J

Nesse artigo será mostrado com Java como extrair textos editáveis de imagens utilizando o OCR (Optical Character Recognition) Tesseract, com o auxílio do wrapper tess4j para o código. Não é necessário ter muita experiência em Java, mas é recomendado que tenha familiaridade com comandos básicos do Linux.

Ler mais

Utilizando a API do Google Drive

Nesse artigo irei mostrar como construir um pequeno programa para baixar e excluir arquivos no Google Drive. Esse programa veio de uma necessidade pessoal que pode servir para outras pessoas.

Ler mais

Conceitos e introdução ao Kafka

Kafka é uma ferramenta de mensagens que tem como objetivo ser uma plataforma de streaming (fluxo contínuo) de dados. Um cliente da empresa que trabalho, irá utilizar o Kafka como solução para integrar um grande volume de dados com o sistema que desenvolvemos, isso me fez querer aprender mais sobre a ferramenta e o que ela traz de diferente de outras tecnologias de integração com que trabalhei. Nesse artigo irei escrever sobre esse novo aprendizado...

Ler mais

Java: do carvalho ao café!

Dia 23/05 foi celebrado o aniversário da plataforma Java, completando em 2019 vinte quatro anos de lançamento! Mas a história da plataforma é um pouco mais antiga, e começou com um projeto inovador para a época, e que se desdobrou na plataforma de desenvolvimento presente em bilhões de dispositivos. Nesse artigo será abordada essa história, que não é somente sobre tecnologia, mas também sobre uma comunidade de usuários que teve (e tem) voz ativa no...

Ler mais

Comandos Úteis do Git

O Git é uma ferramenta de versionamento excelente criada para controlar o código do Kernel do Linux. Com o tempo se mostrou extremamente completa e competente para todos os tipos de projeto, apesar de ser um pouco mais complexa. Esse é um post diferente com intuito de apresentar alguns comandos úteis que podem ajudar no dia a dia, ele é resultado de pesquisas naqueles momentos de aperto.

Ler mais

Programar é ciência humana

Programar é uma atividade relacionada a computação, mais especificamente à criação de software, e sendo bem simplista, trata-se de traduzir o desejo humano em instruções para a máquina. Há algumas origens para a programação, a que afirmam ser a mais antiga é o de Heron de Alexandria, que utilizou programação análoga para controlar um teatro de fantoches. Gosto dessa história pois relaciona arte, criatividade e uma necessidade à origem da programação e resume um pouco...

Ler mais

Banco de Grafos Neo4j

O modelo relacional de banco de dados é provavelmente o mais utilizado pelas aplicações para a grande maioria das soluções de software, mas como vimos no post sobre Nosql existem outras alternativas para os problemas em que o relacional não atende bem. Uma dessas alternativas é o banco de grafos que foca nos relacionamentos dos registros, ajudando a obter informações complexas muito rapidamente. Nesse artigo será mostrada uma introdução sobre banco de grafos e...

Ler mais

O Padrão Builder

Gosto muito de padrões que além de melhorar a manutenção do sistema, aumentam a legibilidade do código. Um desses padrões é o Builder, que mostra uma forma elegante de tratar classes com grande número de propriedades se tornando complexos para serem construídos.

Ler mais

Revisando Padrões com Java 8: O Padrão Null Object

Existem padrões além dos famosos já mostrados pelo GOF (Gang of Four) e um desses é o padrão Null Object. Esse padrão é um bom exemplo de utilização de orientação a objetos e deve ser parte do “canivete suíço” de todo desenvolvedor que utiliza linguagens que podem ter referência nula.

Ler mais

O que devo saber sobre NoSQL?

O modelo relacional é o tipo mais utilizado pela maioria dos bancos de dados mais populares do mercado, mas ao passar dos anos o volume de dados foi crescendo e a forma de se extrair informações foram se tornando cada vez mais custosas nesse modelo, o que levou a criação de novas técnicas como utilizar datawarehouses para geração de relatórios, views materializadas etc. Além disso novas necessidades surgiram como escalabilidade, baixo tempo de leitura e...

Ler mais

Linguagens da JVM: Kotlin

Atualmente a plataforma Java possui diversas linguagens de programação suportadas pela Java Virtual Machine (JVM). As linguagens criadas podem ser interpretadas pela JVM através de compiladores que geram bytecodes (linguagem intermediária que a máquina virtual entende) ou criando uma engine utilizando a Java Scripting API (definida pela JSR 223).

Ler mais

[OCEJWCD 6] - A Estrutura de Arquivos e Diretórios das Aplicações Web

Antes de ver a estrutura de arquivos e diretórios, irei explicar um pouco sobre o padrão MVC dentro do contexto da certificação, para ajudar a entender alguns pontos mais adiante. O padrão MVC significa Model-View-Controller (Modelo-Apresentação-Controlador), onde o Model é o arquivo java (onde está a lógica de negócio), a View são as páginas JSP e HTML (disponibilizadas para o usuário) e o Controller é o Servlet que atua como um intermediário entre os dois...

Ler mais

Navegando na Web com o Go/Golang

Após muito tempo trago mais um post sobre Go, confesso que a demora foi devido a o meu interesse atual pelo Dukescript, que me fez deixar de lado um pouco os estudos do Go. Mas decidi retomar aos poucos os estudos da linguagem revendo meu pequeno projeto de manipulação da API web do Steam.

Ler mais

DukeScript - HTML5 e Java juntos

O fundador do projeto Netbeans e arquiteto de software Jaroslav Tulach junto com Anton Epple consultor e instrutor Java, ganharam o Duke’s Choice Award de 2014 ao apresentarem o Dukescript, uma tecnologia que tenta trazer o Java mais próximo da visão inicial de seu criador de levá-lo a todos os dispositivos escrevendo apenas um código (Write Once, Run Everywhere). Para isso utiliza o HTML5/Javascript como mecanismo de rendering e o Java no lado cliente (sem...

Ler mais

Aprendendo GO/GOLANG

Quando ouvi falar da linguagem Go em 2009 achei muito interssante, a sintaxe proposta para a utilização de concorrência através de goroutines, de duck typing e garbage colector, mas na época eu não fiquei interessado o suficiente para querer aprender a linguagem.

Ler mais

[OCEJWCD 6] - Resumo da Arquitetura Web e o Protocolo HTTP

A arquitetura web é baseada no modelo cliente-servidor onde o cliente faz uma requisição (request) para obter uma resposta (response). Para esse processo é necessário que os dois lados da comunicação possuam uma forma padrão de comunicação, um protocolo, para se entenderem no ambiente heterogêneo que é a Internet.

Ler mais

[OCEJWCD 6] - Iniciando Estudos

Após procrastinar por muito tempo os estudos para a certificação (e deixar meu blog abandonado), devido ao trabalho e “desculpinhas” que sempre encontro para justificar a preguiça, decidi retomar os estudos e ao mesmo tempo movimentar meu blog.

Ler mais

Utilizando Tomcat 6 nas nuvens com o OpenShift

Recentemente tive a vontade de colocar meu currículo on-line disponível em meu domínio principal (www.ivanqueiroz.com) e para isso tive a idéia de utilizar a plataforma Openshift da Red Hat. Para quem não conhece trata-se de uma plataforma como serviço (PaaS) de computação em nuvem, que possui suporte a várias plataformas (Java, Node.js, PHP, Python, Perl e Ruby) fornecendo a infra-estrutura para o desenvolvimento, teste, construção e execução de aplicativos. A solução possui planos gratuitos (a...

Ler mais