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.
A arte é uma ferramenta; os espíritos são os operários.Nesse artigo irei mostrar como migrei o código do meu currículo on-line para Kotlin e como foi a experiência.
A linguagem Kotlin (cot-lin) sempre me atraiu assim como o Go, ambas já foram mostradas aqui no blog em Linguagens da JVM: Kotlin e Aprendendo GO/GOLANG, mas o Kotlin me atraiu mais pelas possibilidades que possui, como ser compilável para Java, Javascript, Android e Nativo além de ter suporte a vários paradigmas de programação.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 da relação humana que existe nessa matéria “exata”.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 o Neo4j, dando uma idéia sobre a tecnologia.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.
“Antes de construir um muro pergunto sempre quem estou murando e quem estou deixando de fora.”
– Robert Frost
Builder A definição do padrão Builder segundo o GOF é “…separar a construção de um objeto complexo de sua representação de modo que o mesmo processo de construção possa criar diferentes representações…”, isso significa que o padão visa simplificar a construção de objetos sem que precisemos conhecer os detalhes dessa construção.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.
“O maior erro que você pode cometer, é o de ficar o tempo todo com medo de cometer algum.”
– Elbert HubbardO 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 resposta e flexibilidade de modelagem, esse novo ambiente fez com que algumas pessoas questionassem a forma de armazenamento de dados e desse pensamento surgiu o NoSQL (not only SQL).No último post da série sobre padrões foi explicado o padrão Strategy, uso, vantagens e desvantagens e uma ótica de utilização com o Java 8. Continuando a série falarei do padrão Template Method seguindo a mesma linha e com exemplos. Será que conseguimos utilizá-lo com as features do Java 8? Vamos ver.
“Estamos presos ao modelo, somos parte dele.”
– V de Vingança
Template Method Esse padrão define um modelo (template) de algoritmo, com pontos de extensão para serem utilizados por subclasses que irão adicionar comportamentos sem alterar a estrutura do algoritmo.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).
Apesar de particularmente gostar muito da linguagem Java, acredito ser importante um desenvolvedor conhecer diversas linguagens de programação para ter mais opções para atacar problemas que enfrente.Esse post será o início de uma série o qual vou tentar explicar os padrões de projeto utilizando as novidades do Java 8, se visitou esse assunto espero que já conheça os conceitos de orientação a objetos, a linguagem java e Padrões de Projeto.
“O conceito de estratégia, em grego strateegia, em latim strategi, em francês stratégie…”
– Capitão Nascimento (Filme Tropa de Elite).
Strategy É um padrão comportamental utilizado quando uma classe possui muitos algoritmos que tem o mesmo propósito e que podem ser alternados na lógica da aplicação.