1. O documento discute as características da linguagem de programação Kotlin, comparando-a com Java.
2. Kotlin é uma linguagem estaticamente tipada, compilada para bytecode da JVM e interoperável com Java, tornando-se popular entre desenvolvedores.
3. O documento explora recursos como variáveis imutáveis, classes, pattern matching, enums, listas e outros recursos que tornam Kotlin mais concisa e segura do que Java.
O documento discute a persistência de dados em dispositivos móveis JavaME, introduzindo o Floggy, um framework que simplifica o processo ao permitir que objetos sejam salvos e recuperados com poucas linhas de código, ao invés de centenas como com o Record Management System (RMS) padrão.
O documento discute conceitos fundamentais de orientação a objetos em Python, incluindo:
1) Objetos Python possuem atributos (dados) e métodos (comportamentos);
2) Classes definem tipos de objetos com atributos e métodos comuns;
3) Instâncias de classes são objetos concretos que herdam atributos e métodos da classe.
O documento discute conceitos de orientação a objetos em Python, definindo objetos como componentes de software que incluem dados e comportamentos. Explica que classes definem tipos de objetos abstratos e instâncias de classes são objetos concretos. Demonstra a criação de uma classe Cao e instância rex para ilustrar a relação entre classe e objeto.
O documento discute iteração em diferentes linguagens de programação como C, Java e Python. Ele apresenta exemplos de como iterar sobre argumentos da linha de comando, strings e outros iteráveis em cada linguagem. O documento também explica conceitos-chave relacionados à iteração em Python como iteráveis, iteradores, geradores e o uso do método enumerate().
O documento apresenta o Floggy, um framework para persistência de dados em JavaME que simplifica o uso do Record Management System (RMS). O Floggy permite que os desenvolvedores trabalhem com persistência em alto nível, poupando centenas de linhas de código habitualmente necessárias para salvar, carregar e manipular dados com RMS. O framework suporta tipos primitivos, classes da Java e arrays de forma transparente.
O documento descreve conceitos básicos da linguagem de programação Ruby, incluindo:
1) Sua origem no Japão e influências de outras linguagens como Smalltalk e Perl.
2) Conceitos como orientação a objetos, dinamismo, blocos de código e falta de tipagem.
3) Ferramentas como RVM para gerenciar versões do Ruby e Rubygems para gerenciar pacotes.
O documento discute a persistência de dados em dispositivos móveis JavaME, introduzindo o Floggy, um framework que simplifica o processo ao permitir que objetos sejam salvos e recuperados com poucas linhas de código, ao invés de centenas como com o Record Management System (RMS) padrão.
O documento discute conceitos fundamentais de orientação a objetos em Python, incluindo:
1) Objetos Python possuem atributos (dados) e métodos (comportamentos);
2) Classes definem tipos de objetos com atributos e métodos comuns;
3) Instâncias de classes são objetos concretos que herdam atributos e métodos da classe.
O documento discute conceitos de orientação a objetos em Python, definindo objetos como componentes de software que incluem dados e comportamentos. Explica que classes definem tipos de objetos abstratos e instâncias de classes são objetos concretos. Demonstra a criação de uma classe Cao e instância rex para ilustrar a relação entre classe e objeto.
O documento discute iteração em diferentes linguagens de programação como C, Java e Python. Ele apresenta exemplos de como iterar sobre argumentos da linha de comando, strings e outros iteráveis em cada linguagem. O documento também explica conceitos-chave relacionados à iteração em Python como iteráveis, iteradores, geradores e o uso do método enumerate().
O documento apresenta o Floggy, um framework para persistência de dados em JavaME que simplifica o uso do Record Management System (RMS). O Floggy permite que os desenvolvedores trabalhem com persistência em alto nível, poupando centenas de linhas de código habitualmente necessárias para salvar, carregar e manipular dados com RMS. O framework suporta tipos primitivos, classes da Java e arrays de forma transparente.
O documento descreve conceitos básicos da linguagem de programação Ruby, incluindo:
1) Sua origem no Japão e influências de outras linguagens como Smalltalk e Perl.
2) Conceitos como orientação a objetos, dinamismo, blocos de código e falta de tipagem.
3) Ferramentas como RVM para gerenciar versões do Ruby e Rubygems para gerenciar pacotes.
Este documento fornece um resumo de uma palestra sobre iteráveis, geradores e interfaces em Python. O palestrante discute:
1) Como iterar sobre diferentes tipos de objetos em Python usando laços for;
2) A diferença entre iteradores e geradores;
3) Como criar objetos iteráveis e iteradores em Python usando interfaces como Iterable e protocolos como sequência.
1) O documento apresenta uma introdução ao Python, abordando tópicos como tipos de dados básicos, operadores, strings, listas e como aprender a programar de forma autodidata.
2) São explicados conceitos como blocos de código, comentários, números inteiros e de ponto flutuante, booleanos, None, strings, conversão entre encodings e operações com listas.
3) Dicas como usar o interpretador interativo, help, dir e documentação são dados para quem deseja aprender Python de forma independente.
O documento discute iteráveis, geradores e iteração em Python. Em três frases:
1) Iteráveis são objetos que podem ser iterados, como listas, strings e arquivos.
2) Geradores são funções e expressões que produzem iteráveis sem necessariamente acessar uma coleção externa, podendo gerar itens por conta própria.
3) O documento compara iteração em Python, C e Java e mostra exemplos de uso de iteráveis, geradores, compreensões de lista/conjunto/dicionário e módulo itertools
Curso java 06 - mais construtores, interfaces e polimorfismoMaurício Linhares
O documento discute herança e interfaces em Java. Ele explica que construtores não são herdados, mas precisam chamar o construtor da superclasse. Também apresenta como implementar interfaces para permitir que classes herdem comportamentos sem herança múltipla, resolvendo problemas como o "diamante da morte".
O documento discute iteradores e iteráveis em Python, incluindo: 1) Como obter iteradores de objetos através da função built-in iter(); 2) Como iter funciona com dois argumentos para criar um iterador; 3) Tipos iteráveis como sequências e suas interfaces; 4) Listas de compreensão versus expressões geradoras.
O documento apresenta um código Java que calcula quantos números entre 1 e 100 são múltiplos de 3 ou 5 utilizando um loop for e uma condição if. O resultado é impresso no final.
O documento descreve operações e métodos relacionados a arrays em JavaScript. Discute como acessar e modificar elementos de arrays, como usar estruturas de repetição como for e for-in para iterar sobre arrays, e demonstra vários métodos úteis de arrays como concat(), join(), pop(), push(), reverse(), shift() e seus usos.
Python não força o programador a pensar em objetos, mas eles fazem parte da linguagem desde o início, incluindo conceitos avançados como sobrecarga de operadores, herança múltipla e introspecção. Com sua sintaxe simples, é muito natural aprender orientação a objetos em Python
Slide utilizado no curso preparatório para a certificação OCAJP7. Nessa aula fizemos uma Revisão de Classes e arquivos .java http://www.sitedoph.com.br/preparatorio-para-a-certificacao-java-ocajp-7-aula-1/
O documento apresenta um exemplo de uso de interfaces e herança em Java. Define uma interface Domesticavel para representar animais que podem ser domesticados. Em seguida, define classes Gato, Cachorro e Papagaio que herdam de Mamifero e Ave e implementam a interface Domesticavel. Finalmente, um método domesticar é chamado para cada instância dessas classes.
O documento apresenta conceitos básicos da linguagem Java, incluindo estrutura de código, classes, objetos, arrays, estruturas de controle e exercícios para praticar os tópicos abordados.
Estripando o Elefante - (Trabalhando com extensões no PostgreSQL)Dickson S. Guedes
O documento discute como dividir aplicações complexas em módulos menores utilizando extensões do PostgreSQL. Isso permite melhor modularidade, reutilização de código e gerenciamento de versões. O exemplo mostra como criar validadores de CPF e e-mail como uma extensão, permitindo validações no banco de dados de forma centralizada.
O documento descreve as principais características da linguagem Swift da Apple para desenvolvimento no iOS, incluindo: 1) variáveis e constantes; 2) tipos de dados como Strings, Inteiros e Ponto Flutuante; 3) Coleções como Arrays e Dictionaries; 4) Estruturas, Classes, Enumerações e Protocolos; 5) Funções e Controle de Fluxo. O foco é apresentar os principais conceitos da linguagem de forma concisa.
Palestra sobre persistência de dados no SQLite com Room API apresentada no TDC São Paulo 2017 (19/07/2017). O Room é um dos Architectural Components apresentados pelo Google no Google I/O 2017.
Este documento fornece um resumo de 3 frases ou menos sobre JavaScript:
1) JavaScript é uma linguagem dinâmica, fracamente tipada, funcional e orientada a objetos usada principalmente para adicionar interatividade a páginas web.
2) Funções são cidadãs de primeira classe em JavaScript, podendo ser atribuídas a variáveis e passadas como parâmetros, e objetos são basicamente dicionários enfeitados.
3) Variáveis declaradas dentro de funções têm escopo local, enquanto variáveis declaradas fora de
O documento apresenta exemplos de como usar a linguagem Python para desenvolvimento de aplicações Java EE, incluindo um relógio em Swing e acesso a atributos privados de objetos Java usando reflexão.
O documento discute vários componentes de interface do usuário em Android, incluindo TextView, CheckBox, RadioButton, ProgressBar, EditText, ImageView e ImageButton. Fornece exemplos de código XML para declarar esses componentes em layouts e explica brevemente como cada um funciona.
Este documento discute os motivos pelos quais o autor gosta da linguagem Scala. Brevemente aborda conceitos como programação funcional, concorrência, atores e como Scala suporta esses paradigmas de maneira elegante.
Este documento discute estratégias para tornar código Python 2 e 3 compatíveis. Primeiro, explica como lidar com nomes e localizações de módulos que mudaram entre as versões, usando try/except, verificação de versão ou getattr. Segundo, destaca a importância de testes automatizados para garantir a compatibilidade e acompanhar dependências. Por fim, aborda metaclasses, uma diferença importante entre Python 2 e 3.
O documento apresenta 6 bibliotecas Java úteis: 1) commons-io para leitura e escrita de arquivos, 2) apache-commons-lang para geração de tokens e manipulação de strings, 3) bean-utils para reflexão em objetos, 4) joda-time para trabalhar com datas, 5) Guava para implementar cache e 6) Lombok para gerar automaticamente getters e setters.
O documento apresenta 6 bibliotecas Java úteis: 1) commons-io para leitura e escrita de arquivos, 2) apache-commons-lang para geração de tokens e manipulação de strings, 3) bean-utils para trabalhar com propriedades de objetos, 4) joda-time para lidar com datas, 5) Guava para implementar cache e 6) Lombok para gerar automaticamente getters e setters.
Este documento fornece um resumo de uma palestra sobre iteráveis, geradores e interfaces em Python. O palestrante discute:
1) Como iterar sobre diferentes tipos de objetos em Python usando laços for;
2) A diferença entre iteradores e geradores;
3) Como criar objetos iteráveis e iteradores em Python usando interfaces como Iterable e protocolos como sequência.
1) O documento apresenta uma introdução ao Python, abordando tópicos como tipos de dados básicos, operadores, strings, listas e como aprender a programar de forma autodidata.
2) São explicados conceitos como blocos de código, comentários, números inteiros e de ponto flutuante, booleanos, None, strings, conversão entre encodings e operações com listas.
3) Dicas como usar o interpretador interativo, help, dir e documentação são dados para quem deseja aprender Python de forma independente.
O documento discute iteráveis, geradores e iteração em Python. Em três frases:
1) Iteráveis são objetos que podem ser iterados, como listas, strings e arquivos.
2) Geradores são funções e expressões que produzem iteráveis sem necessariamente acessar uma coleção externa, podendo gerar itens por conta própria.
3) O documento compara iteração em Python, C e Java e mostra exemplos de uso de iteráveis, geradores, compreensões de lista/conjunto/dicionário e módulo itertools
Curso java 06 - mais construtores, interfaces e polimorfismoMaurício Linhares
O documento discute herança e interfaces em Java. Ele explica que construtores não são herdados, mas precisam chamar o construtor da superclasse. Também apresenta como implementar interfaces para permitir que classes herdem comportamentos sem herança múltipla, resolvendo problemas como o "diamante da morte".
O documento discute iteradores e iteráveis em Python, incluindo: 1) Como obter iteradores de objetos através da função built-in iter(); 2) Como iter funciona com dois argumentos para criar um iterador; 3) Tipos iteráveis como sequências e suas interfaces; 4) Listas de compreensão versus expressões geradoras.
O documento apresenta um código Java que calcula quantos números entre 1 e 100 são múltiplos de 3 ou 5 utilizando um loop for e uma condição if. O resultado é impresso no final.
O documento descreve operações e métodos relacionados a arrays em JavaScript. Discute como acessar e modificar elementos de arrays, como usar estruturas de repetição como for e for-in para iterar sobre arrays, e demonstra vários métodos úteis de arrays como concat(), join(), pop(), push(), reverse(), shift() e seus usos.
Python não força o programador a pensar em objetos, mas eles fazem parte da linguagem desde o início, incluindo conceitos avançados como sobrecarga de operadores, herança múltipla e introspecção. Com sua sintaxe simples, é muito natural aprender orientação a objetos em Python
Slide utilizado no curso preparatório para a certificação OCAJP7. Nessa aula fizemos uma Revisão de Classes e arquivos .java http://www.sitedoph.com.br/preparatorio-para-a-certificacao-java-ocajp-7-aula-1/
O documento apresenta um exemplo de uso de interfaces e herança em Java. Define uma interface Domesticavel para representar animais que podem ser domesticados. Em seguida, define classes Gato, Cachorro e Papagaio que herdam de Mamifero e Ave e implementam a interface Domesticavel. Finalmente, um método domesticar é chamado para cada instância dessas classes.
O documento apresenta conceitos básicos da linguagem Java, incluindo estrutura de código, classes, objetos, arrays, estruturas de controle e exercícios para praticar os tópicos abordados.
Estripando o Elefante - (Trabalhando com extensões no PostgreSQL)Dickson S. Guedes
O documento discute como dividir aplicações complexas em módulos menores utilizando extensões do PostgreSQL. Isso permite melhor modularidade, reutilização de código e gerenciamento de versões. O exemplo mostra como criar validadores de CPF e e-mail como uma extensão, permitindo validações no banco de dados de forma centralizada.
O documento descreve as principais características da linguagem Swift da Apple para desenvolvimento no iOS, incluindo: 1) variáveis e constantes; 2) tipos de dados como Strings, Inteiros e Ponto Flutuante; 3) Coleções como Arrays e Dictionaries; 4) Estruturas, Classes, Enumerações e Protocolos; 5) Funções e Controle de Fluxo. O foco é apresentar os principais conceitos da linguagem de forma concisa.
Palestra sobre persistência de dados no SQLite com Room API apresentada no TDC São Paulo 2017 (19/07/2017). O Room é um dos Architectural Components apresentados pelo Google no Google I/O 2017.
Este documento fornece um resumo de 3 frases ou menos sobre JavaScript:
1) JavaScript é uma linguagem dinâmica, fracamente tipada, funcional e orientada a objetos usada principalmente para adicionar interatividade a páginas web.
2) Funções são cidadãs de primeira classe em JavaScript, podendo ser atribuídas a variáveis e passadas como parâmetros, e objetos são basicamente dicionários enfeitados.
3) Variáveis declaradas dentro de funções têm escopo local, enquanto variáveis declaradas fora de
O documento apresenta exemplos de como usar a linguagem Python para desenvolvimento de aplicações Java EE, incluindo um relógio em Swing e acesso a atributos privados de objetos Java usando reflexão.
O documento discute vários componentes de interface do usuário em Android, incluindo TextView, CheckBox, RadioButton, ProgressBar, EditText, ImageView e ImageButton. Fornece exemplos de código XML para declarar esses componentes em layouts e explica brevemente como cada um funciona.
Este documento discute os motivos pelos quais o autor gosta da linguagem Scala. Brevemente aborda conceitos como programação funcional, concorrência, atores e como Scala suporta esses paradigmas de maneira elegante.
Este documento discute estratégias para tornar código Python 2 e 3 compatíveis. Primeiro, explica como lidar com nomes e localizações de módulos que mudaram entre as versões, usando try/except, verificação de versão ou getattr. Segundo, destaca a importância de testes automatizados para garantir a compatibilidade e acompanhar dependências. Por fim, aborda metaclasses, uma diferença importante entre Python 2 e 3.
O documento apresenta 6 bibliotecas Java úteis: 1) commons-io para leitura e escrita de arquivos, 2) apache-commons-lang para geração de tokens e manipulação de strings, 3) bean-utils para reflexão em objetos, 4) joda-time para trabalhar com datas, 5) Guava para implementar cache e 6) Lombok para gerar automaticamente getters e setters.
O documento apresenta 6 bibliotecas Java úteis: 1) commons-io para leitura e escrita de arquivos, 2) apache-commons-lang para geração de tokens e manipulação de strings, 3) bean-utils para trabalhar com propriedades de objetos, 4) joda-time para lidar com datas, 5) Guava para implementar cache e 6) Lombok para gerar automaticamente getters e setters.
O documento descreve as características principais da tecnologia Grails. Em três frases:
Grails é uma tecnologia para construção rápida e fácil de aplicações web utilizando o framework Ruby on Rails e a linguagem Groovy. Grails gera automaticamente código como controllers, modelos de dados e páginas a partir de classes simples, poupando tempo de desenvolvimento. A infraestrutura por trás de Grails é toda Java, permitindo construir aplicações robustas com uma base sólida como JPA, Spring e outras tecnologias.
Este documento resume os principais conceitos da linguagem Java, incluindo objetos, classes, herança, pacotes e modificadores de acesso. Ele também explica operadores aritméticos, relacionais e lógicos em Java.
O documento resume as principais características da linguagem de programação Groovy e do framework Grails. Em 3 frases ou menos:
Groovy é uma linguagem dinâmica que roda na máquina virtual Java e tem sintaxe semelhante a Java, permitindo integrar código Java e Groovy. Grails é um framework web baseado em Groovy que facilita o desenvolvimento rápido de aplicações web seguindo convenções como gerenciamento de dependências, mapeamento objeto-relacional e testes. Juntos, Groovy e Grails permitem desenvolver aplicações web ricas de
O documento apresenta uma introdução à linguagem de programação Ruby, descrevendo sua história desde a criação em 1993, características como variáveis, métodos, classes, módulos e estruturas de controle, e exemplos de código.
1. O documento apresenta uma introdução à linguagem JavaScript, discutindo sua estrutura, tipos e como começar a programar na linguagem.
2. JavaScript é uma linguagem de programação dinamicamente tipada e baseada em protótipos usada principalmente para desenvolvimento web front-end.
3. A linguagem suporta tipos primitivos como números, strings e booleanos e tipos de referência como arrays e objetos.
Kotlin é uma linguagem de programação open source para desenvolvimento mobile e backend. O documento descreve as principais características e sintaxe de Kotlin, incluindo variáveis, funções, classes, loops, coleções e como usar Kotlin no Android. Também apresenta bibliotecas úteis como Anko, Spek e Detekt para teste e análise de qualidade de código em projetos Kotlin.
O documento contém uma coleção de posts e apresentações sobre tópicos relacionados a desenvolvimento de software, como arquitetura, padrões, linguagens de programação e casos de uso. Entre os tópicos abordados estão: uso de Scala e Futuros para construir APIs assíncronas e escaláveis, coleções funcionais, pattern matching, estrutura de microsserviços e uso de estranguladores para evolução de sistemas.
O documento discute Grails, uma framework web para desenvolvimento em Java que facilita a construção de aplicações web com recursos como Spring, Hibernate, JSF e outros de forma mais produtiva e divertida em comparação a usar essas tecnologias individualmente.
Este documento discute pacotes e encapsulamento em Java, abordando os principais pacotes da API Java como java.lang e java.util, além de explicar como criar pacotes e classes em Java, implementando métodos como equals() e clone().
Este documento discute pacotes e encapsulamento em Java, abordando os principais pacotes da API Java como java.lang e java.util, além de explicar como criar pacotes e classes em Java, implementando métodos como equals() e clone().
O documento discute conceitos importantes de opicionais em Swift, como:
1) Opcionais podem representar a ausência de valor e são úteis para representar valores que podem ou não existir;
2) Existem diferentes formas de lidar com valores opcionais, como desempacotamento forçado, vinculação opcional e operador nil coalescing;
3) Valores opcionais podem ser encadeados para acessar propriedades e métodos de forma segura.
1) O documento apresenta os principais métodos da classe String em Java, incluindo métodos para comparar, localizar, extrair e substituir partes de uma String.
2) Uma String é imutável em Java, enquanto StringBuilder permite modificar o conteúdo.
3) Os métodos de formatação String.format e System.out.printf permitem formatar Strings usando caracteres especiais.
1. O documento discute a arquitetura de microsserviços de uma plataforma de streaming, incluindo o uso de Scala, Futuros, coleções funcionais e correspondência de padrões.
2. Apresenta estratégias para migrar serviços existentes para Scala de forma gradual através da abordagem de "estranguladores".
3. Discutem os benefícios de Scala como produtividade semelhante a Ruby com tipagem segura como Java.
Classe integer-float-byte-short-long-doublePAULO Moreira
O documento descreve classes numéricas em Java como Integer, Float, Byte e outras. Essas classes fornecem métodos para converter entre tipos numéricos, comparar números e converter números para strings. As classes estendem a classe abstrata Number e permitem manipular números de forma flexível como objetos ou tipos primitivos.
Este documento apresenta um treinamento sobre Grails, incluindo: (1) introdução ao Groovy e suas funcionalidades, (2) modelagem de domínio com classes e relacionamentos, e (3) geração automática de telas e controle de acesso com plugins.
1) O curso aborda tópicos de programação Java como introdução à linguagem, uso de formulários, manipulação de arquivos e banco de dados.
2) Apresenta conceitos de programação orientada a objetos em Java incluindo classes, atributos, métodos, encapsulamento e herança.
3) Demonstra o uso de variáveis, vetores, condições, laços e métodos em programação Java.
O documento discute Git e GitHub, ferramentas de controle de versão. Explica que Git permite backup e controle de versão de código e lista alguns comandos básicos. Também descreve GitHub como uma plataforma de hospedagem para compartilhamento e contribuição em projetos open source.
Semelhante a Kotlin: conhecendo features de uma linguagem moderna (20)
Functional Domain Driven Design apresenta conceitos de programação funcional e Domain Driven Design. O documento discute princípios de programação funcional como funções puras, imutabilidade e monads. Também aborda arquitetura em camadas, value objects, domain services e repositórios no contexto do DDD. Finalmente, discute como combinar programação funcional e orientada a objetos.
This document outlines the concepts and techniques of Domain-Driven Design (DDD). It begins with basic concepts like the ubiquitous language and domain model. It then covers strategic design patterns such as bounded contexts and context mapping. Next, it discusses tactical design building blocks like entities, aggregates, and repositories. Finally, it briefly introduces related patterns like CQRS, event sourcing, and event-driven architectures. The document is intended to provide an overview of DDD from basic concepts to advanced patterns in both the strategic and tactical spheres.
O documento descreve o processo de construção de um Context Map para mapear o domínio complexo de uma aplicação legada com múltiplos times trabalhando nela. O processo envolveu mapear as features, clientes, eventos e partes do código na lousa, refinar as informações em documentos, criar um mapa para cada squad, desenvolver uma versão inicial do Context Map e refiná-lo iterativamente até a versão final. Isso trouxe benefícios como distinguir contextos genéricos, híbridos e específicos e documentar o conhec
O documento discute como usar threads e tarefas para processamento paralelo de eventos de forma eficiente. Ele recomenda usar tarefas (Task) em vez de threads diretamente para aproveitar recursos de forma mais eficiente através do thread pool do .NET. Também discute quando usar threads ou tarefas dependendo se a operação é CPU-intensive ou I/O-bound.
O documento discute como processar eventos de forma assíncrona e paralela usando threads e tasks. Ele explica como evitar o overhead da criação excessiva de threads usando um thread pool e como tarefas (tasks) oferecem vantagens como retorno de resultados, encadeamento e cancelamento simples em relação a threads.
The document discusses reactive programming and the actor model. It provides examples of using yield return in C# to implement iterators over collections in a non-blocking way, allowing the code to return control back to the caller between iterations. This implements reactive-style asynchronous programming with iterators.
O documento discute a criação de uma aplicação para centralizar as regras de negócio de vários sistemas legados que acessam diretamente uma única base de dados, mapeando as tabelas usando Entity Framework e expondo dados via API Web. Ele também analisa as vantagens e desvantagens de manter os modelos de domínio e de persistência separados ou juntos.
Web scraping é uma técnica para extrair dados de sites automaticamente através de requisições HTTP e análise de HTML, com objetivos como mapear links, transformar dados em estruturas e automatizar tarefas. Ferramentas como Fiddler, Dev Tools e bibliotecas como Html Agility Pack e Scrapy Sharp podem ser usadas para extrair informações de páginas e realizar tarefas como pesquisas e análise de mercado.
Em um mundo cada vez mais digital, a segurança da informação tornou-se essencial para proteger dados pessoais e empresariais contra ameaças cibernéticas. Nesta apresentação, abordaremos os principais conceitos e práticas de segurança digital, incluindo o reconhecimento de ameaças comuns, como malware e phishing, e a implementação de medidas de proteção e mitigação para vazamento de senhas.
As classes de modelagem podem ser comparadas a moldes ou
formas que definem as características e os comportamentos dos
objetos criados a partir delas. Vale traçar um paralelo com o projeto de
um automóvel. Os engenheiros definem as medidas, a quantidade de
portas, a potência do motor, a localização do estepe, dentre outras
descrições necessárias para a fabricação de um veículo
Este certificado confirma que Gabriel de Mattos Faustino concluiu com sucesso um curso de 42 horas de Gestão Estratégica de TI - ITIL na Escola Virtual entre 19 de fevereiro de 2014 a 20 de fevereiro de 2014.
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...Faga1939
Este artigo tem por objetivo apresentar como ocorreu a evolução do consumo e da produção de energia desde a pré-história até os tempos atuais, bem como propor o futuro da energia requerido para o mundo. Da pré-história até o século XVIII predominou o uso de fontes renováveis de energia como a madeira, o vento e a energia hidráulica. Do século XVIII até a era contemporânea, os combustíveis fósseis predominaram com o carvão e o petróleo, mas seu uso chegará ao fim provavelmente a partir do século XXI para evitar a mudança climática catastrófica global resultante de sua utilização ao emitir gases do efeito estufa responsáveis pelo aquecimento global. Com o fim da era dos combustíveis fósseis virá a era das fontes renováveis de energia quando prevalecerá a utilização da energia hidrelétrica, energia solar, energia eólica, energia das marés, energia das ondas, energia geotérmica, energia da biomassa e energia do hidrogênio. Não existem dúvidas de que as atividades humanas sobre a Terra provocam alterações no meio ambiente em que vivemos. Muitos destes impactos ambientais são provenientes da geração, manuseio e uso da energia com o uso de combustíveis fósseis. A principal razão para a existência desses impactos ambientais reside no fato de que o consumo mundial de energia primária proveniente de fontes não renováveis (petróleo, carvão, gás natural e nuclear) corresponde a aproximadamente 88% do total, cabendo apenas 12% às fontes renováveis. Independentemente das várias soluções que venham a ser adotadas para eliminar ou mitigar as causas do efeito estufa, a mais importante ação é, sem dúvidas, a adoção de medidas que contribuam para a eliminação ou redução do consumo de combustíveis fósseis na produção de energia, bem como para seu uso mais eficiente nos transportes, na indústria, na agropecuária e nas cidades (residências e comércio), haja vista que o uso e a produção de energia são responsáveis por 57% dos gases de estufa emitidos pela atividade humana. Neste sentido, é imprescindível a implantação de um sistema de energia sustentável no mundo. Em um sistema de energia sustentável, a matriz energética mundial só deveria contar com fontes de energia limpa e renováveis (hidroelétrica, solar, eólica, hidrogênio, geotérmica, das marés, das ondas e biomassa), não devendo contar, portanto, com o uso dos combustíveis fósseis (petróleo, carvão e gás natural).
5. Sobre a linguagem Kotlin
● Open Source (github.com/JetBrains/kotlin)
● Criada e mantida pela JetBrains
● Primeira release em 2016
● Estaticamente tipada
● Compila para bytecode (roda na JVM)
● Interoperável com Java
● Se tornou linguagem oficial do Android em 2017
● Segunda linguagem mais amada entre os desenvolvedores
(pesquisa do StackOverflow em 2018)
6. ● Multiparadigma (imperativo, funcional, OOP)
○ OOP no seu core
○ FP-friendly
● Construído através da simplificação de soluções de mercado
já provadas:
“Kotlin is designed to be an industrial-strength object-oriented language,
and a "better language" than Java, but still be fully interoperable with Java
code, allowing companies to make a gradual migration from Java to
Kotlin” - Andrey Breslav (desenvolvedor líder do Kotlin)
Filosofias
7. Quantidade de perguntas no
StackOverflow comparado com
Clojure:
Em 25/05/2018:
Scala: 79k
Clojure: 14k
Kotlin: 10k
Em 04/12/2018:
Scala: 84k (+5k)
Kotlin: 17k (+7k)
Clojure: 15k (+1k)
Curiosidades
Data de release das principais
linguagens JVM:
● Java 1996
● Scala 2004
● Groovy 2007
● Clojure 2009
● Kotlin 2016
9. Kotlin | Java
class Person {
private var name: String
private var age: Int
constructor(name: String, age: Int) {
this.name = name
this.age = age
}
fun getName(): String {
return name
}
fun getAge(): Int {
return age
}
}
public class Person {
private final String name;
private final int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
}
10. Kotlin | Java
public class Person {
private final String name;
private final int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
}
class Person(val name: String, val age: Int)
14. Classes
class Pessoa {
val nome: String
constructor(nome: String) {
this.nome = nome
}
fun getNome(): String {
return nome
}
fun tamanhoDoNome() {
println("Olá, meu nome tem ${nome.length} letras!")
}
Boilerplate!
Boilerplate!
15. Classes
Construtor e getter criados
class Pessoa(val nome: String) {
fun tamanhoDoNome() {
println("Olá, meu nome tem ${nome.length} letras!")
}
}
16. Classes
Construtor, getter e setter criados
class Pessoa(var nome: String) {
fun tamanhoDoNome() {
println("Olá, meu nome tem ${nome.length} letras!")
}
}
17. Classes - Equivalente em Java:
Effective Java Item #17: Design and document for inheritance or else prohibit it
18. Classes
class Pessoa(var nome: String) {
fun tamanhoDoNome() {
println("Olá, meu nome tem ${nome.length} letras!")
}
} Consumindo em Java:
var pessoa = new Pessoa("Fabricio");
System.out.println(pessoa.getNome());
pessoa.setNome("Fabricio 2");
Consumindo em Kotlin:
val pessoa = Pessoa("Fabricio")
println(pessoa.nome)
pessoa.nome = "Fabricio 2"
19. Criando Value Objects/DTOs
data class Condicao(val valorEmprestimo: Double, val valorParcela: Double)
val condicao1 = Condicao(1_000_000.00, 800.00)
val condicao2 = Condicao(1_000_000.00, 800.00)
condicao1 == condicao2
Val cannot be reassigned!
True!
condicao1.valorEmprestimo = 900.00
20. public final class Condicao {
private final double valorEmprestimo;
private final double valorParcela;
public Condicao(double valorEmprestimo, double valorParcela) {
this.valorEmprestimo = valorEmprestimo;
this.valorParcela = valorParcela;
}
public final double getValorEmprestimo() {
return this.valorEmprestimo;
}
Equivalente em Java
21. public final double getValorParcela() {
return this.valorParcela;
}
public final double component1() {
return this.valorEmprestimo;
}
public final double component2() {
return this.valorParcela;
}
public final Condicao copy(double valorEmprestimo, double valorParcela) {
return new Condicao(valorEmprestimo, valorParcela);
}
Equivalente em Java
22. public static Condicao copy$default(Condicao var0, double var1, double var3, int var5,
Object var6) {
if ((var5 & 1) != 0) {
var1 = var0.valorEmprestimo;
}
if ((var5 & 2) != 0) {
var3 = var0.valorParcela;
}
return var0.copy(var1, var3);
}
Equivalente em Java
23. public String toString() {
return "Condicao(valorEmprestimo=" + this.valorEmprestimo + ", valorParcela=" +
this.valorParcela + ")";
}
public int hashCode() {
return Double.hashCode(this.valorEmprestimo) * 31 +
Double.hashCode(this.valorParcela);
}
Equivalente em Java
24. Equivalente em Java
70 linhas vs 1
data class Condicao(val valorEmprestimo: Double, val valorParcela: Double)
data classes não podem ser herdados :(
25. public boolean equals(Object var1) {
if (this != var1) {
if (var1 instanceof Condicao) {
Condicao var2 = (Condicao)var1;
if (Double.compare(this.valorEmprestimo, var2.valorEmprestimo) == 0 &&
Double.compare(this.valorParcela, var2.valorParcela) == 0) {
return true;
}
}
return false;
} else {
return true;
}
}
}
Equivalente em Java
33. Pattern Matching
fun fazerBarulho(animal: Animal): String {
when (animal) {
is Leao -> return animal.rugir()
is Cao -> return animal.latir()
is Gato -> return animal.miar()
else -> return "Muuuuuhhh"
}
}
Smart casted
34. Pattern Matching
fun fazerBarulho(animal: Animal): String {
return when (animal) {
is Leao -> animal.rugir()
is Cao -> animal.latir()
is Gato -> nimal.miar()
else -> "Muuuuuhhh"
}
}
35. Pattern Matching
fun fazerBarulho(animal: Animal) {
println(when (animal) {
is Leao -> animal.rugir()
is Cao -> animal.latir()
is Gato -> nimal.miar()
else -> "Muuuuuhhh"
})
}
41. Ranges
if (i in 1..10) {
println(i)
}
for (i in 1..4) print(i)
for (i in 1..4 step 2) print(i)
42. Sealed classes
sealed class Shape
class Circle(var radius: Float): Shape()
class Square(var length: Int): Shape()
class Rectangle(var length: Int, var breadth: Int): Shape()
when (shape) {
is Circle -> shape.radius
is Square -> shape.length
is Rectangle -> shape.breadth
}
Smart casted
Else não necessário
Sealed classes só
podem ser herdadas
no mesmo arquivo
43. Sealed classes
sealed class Option<out T> {
fun fakeMap() { }
}
data class Some<T>(val value: T) : Option<T>()
object None : Option<Nothing>()
val numero :Option<Int> = Some(5)
when (numero) {
is Some -> println(numero.value)
is None -> println("vazio!")
}
44. Parâmetros opcionais
fun primeiraPalavra(str: String, separador: String) :String {
val index = str.indexOf(separador)
return if (index < 0) str else str.substring(0, index)
}
primeiraPalavra("Olá mundo", " ")
fun primeiraPalavra(str: String) :String {
return primeiraPalavra(str, " ")
}
primeiraPalavra("Olá mundo")
45. Parâmetros opcionais
fun primeiraPalavra(str: String, separador: String) :String {
val index = str.indexOf(separador)
return if (index < 0) str else str.substring(0, index)
}
primeiraPalavra("Olá mundo", " ")
primeiraPalavra("Olá mundo")
fun primeiraPalavra(str: String) :String = primeiraPalavra(str, " ")
46. Parâmetros opcionais
fun primeiraPalavra(str: String, separador: String) :String {
val index = str.indexOf(separador)
return if (index < 0) str else str.substring(0, index)
}
primeiraPalavra("Olá mundo", " ")
primeiraPalavra("Olá mundo")
fun primeiraPalavra(str: String) = primeiraPalavra(str, " ")
47. Parâmetros opcionais
fun primeiraPalavra(str: String, separador: String = " ") :String {
val index = str.indexOf(separador)
return if (index < 0) str else str.substring(0, index)
}
primeiraPalavra("Olá mundo", " ")
primeiraPalavra("Olá mundo")
fun primeiraPalavra(str: String) = primeiraPalavra(str, " ")
55. Manuseando listas
// Java
val list = people
.stream()
.map(Person::getName)
.collect(Collectors.toList());
// Kotlin
val list = people.map { it.name }
https://stackoverflow.com/a/34642255/890890
56. Algumas outras features de Kotlin não mencionadas
● Coroutines
● Funções a nível de package
● Sobrecarga de operadores
● Observables e Lazy loading na standard library
● Facilidades para criação de DSLs com type checking
● Delegation e delegated properties
● Destructuring
60. The best code is no code at all
“If you love writing code-- really, truly love to write code-- you'll love it
enough to write as little of it as possible” (Jeff Atwood)
63. O que nós vimos?
● Kotlin
○ var e val
○ class
○ data class
○ null safety
○ pattern matching
○ enums
○ ranges
○ listas
○ sealed classes
○ parâmetros opcionais
○ extension functions
○ operador inflix
64. Dificuldades
● Aprender Kotlin não é difícil, a maior curva de
aprendizado fica na stack por volta do mundo JVM
(gradle, IDE, plugins, etc) - ninguém tinha experiência
nisso
● Interoperabilidade com libs Java
○ Annotation Hell
○ Kotlin all-open plugin
○ Sintaxe nem sempre fica “natural” (kotlin friendly)
● Higher-Kinded Types
● BigDecimal não é intuitivo http://www.fabriciorissetto.com/blog/bizarrices-bigdecimal/