Page 1

1 // POR DENTRO DO W3C

// MAIO 2017

// ANO 06

// EDIÇÃO 22 > WEARAB L E S

28 Mobilidade é tudo R$24,00

O poder do Android Things além da GPIO e PWM

iMasters #22 Maio 2017

52

70

A Web na era da realidade virtual

O que você precisa saber sobre ransomware

W3C

Segurança


2 // POR DENTRO DO W3C

br.bluehost.com/cloud

SOLUÇÕES EM NUVEM HOSPEDAGEM PODEROSA, SEGURA, E MAIS SIMPLES DO QUE NUNCA

iMasters #22 Maio 2017

R$

39,99 /mês Por apenas:


EDITORIAL

M

Músicos têm uma paixão excepcional pelo seu trabalho - tanto na criação, quanto no estudo. O produto do seu trabalho é algo pelo qual eles têm extremo carinho. O processo de criação de uma música varia de músico para músico. Alguns criam a melodia primeiro, outros a letra, outros o ritmo, outros a harmonia... Então, quando tudo está da forma que você imaginou, chega a hora de juntar em um único produto, e muitas vezes esse match não funciona e o músico tem que fazer alterações em alguma das partes anteriores. Isso soa familiar a você? Agora imagine que um músico fez todo esse processo, fez o match, refatorou a música e conseguiu finalizá-la. Chega a hora de compor outra canção. Ao final o profissional tem várias músicas e precisa fechar o seu repertório. Como escolher quais serão as músicas que farão parte do seu projeto? Quais artistas convidaremos para tocar conosco? É um desafio! Assim também é fazer a revista iMasters. Nós abrimos este show com nossa vocalista Mariana Anselmo, cantando sobre desenvolvimento de Wearables. Na guitarra base temos nosso amigos Gleicon Moraes fazendo riffs sobre DevOps, testes de carga com arquitetura serverless e Golang. No baixo, o mestre Pedro Minatel dedilhando sobre construção de gateways IoT com SoC. Na bateria nosso Community Manager PokemaoBr mantendo o ritmo na participação de comunidades de desenvolvedores. Na guitarra solo, eu trago sistemas imunológicos artificiais. Nos teclados, Ricardo Ogliari solando no poder do Android Things, além da GPIO e PWM. Na terceira guitarra, Kemel Zaidan fazendo riffs sobre editores de texto hipsters. E por fim, um convidado especial nos vocais: Alberto Azevedo cantando sobre computação quântica e segurança. Mas para o show ser completo, precisamos também de backing vocals e cenários, então, para completarmos nossa apresentação temos Storyfication, Java Criptography Extension, Helpers e APIs, Ransonware, Métricas, Comunidades, Carros autônomos, Web na era da realidade virtual, 7Masters e o Por aí. Curtam o show!

Abraços, Alex Lattaro Líder de Conteúdo do Grupo iMasters www.imasters.com.br | redacao@imasters.com.br

iMasters #22 Maio 2017


4 // EXPEDIENTE

// MAIO 2017

// ANO 06

// EDIÇÃO 22 > W E A R A BL E S

Tiago Baeta Publisher

CORPO EDITORIAL

Rina Noronha (MTB 2759-ES) Jornalista Responsável

Mariana Anselmo Editor

Alex Lattaro e Mariana Anselmo Editores

Alex Lattaro Editor

Nathália Torezani Revisão

Nathália Torezani Revisão

Carlos Vido, Diogo Cortiz, Gleicon Moraes, Helton L Boaron, Kemel Zaidan, Marcelo Lau, Newton Calegari, Pedro Minatel, Ricardo Ogliari, Rodrigo pokemão Cardoso, Victor Nascimento, Vinicius Denny e Wesley Nascimento. Colaboradores Zupi Projeto Gráfico e Diagramação

Rua: Oscar Freire, 2379 Cep: 05409-012 Cerqueira Cesar +55 11 3063-5941 www.imasters.com.br/revista redacao@imasters.com.br @iMasters /PortaliMasters Os artigos assinados são de

Eskenazi Indústria Gráfica Gráfica

responsabilidade dos autores e não refletem necessariamente a opinião da revista. É proibida a

Grupo iMasters Organização

reprodução total ou parcial de textos, fotos e ilustrações por qualquer meio, sem prévia autorização dos autores

1.800 exemplares ISSN 1981-0288

www.zupidesign.com +55 11 3926 0174

iMasters #22 Maio 2017

ou dos editores da publicação.


// 5

iMasters #22 Maio 2017


6 //

SUMÁRIO COLUNAS 34

Vinicius Denny

50 Diogo Cortiz Newton Calegari

W3C A Web na era da realidade virtual

USER EXPERIENCE stortfication: programando uma história

24

Carlos Vido

MACHINE LEARNING Carros autonomos: o que vem por aí?

66

56

Kemel Zaidan

Rodrigo Pokemao

CÓDIGO ABERTO Editor de texto hipster - Parte 02

68

Marcelo Lau

28

Segurança O que você precisa saber sobre ransomware

Ricardo Ogliari

MOBILIDADE É TUDO O poder do Android things além da GPIO e PWM

ENTREVISTA com Alberto J. Azevedo

38

Alex Lattaro

08

INTELIGÊNCIA NADA ARTIFICIAL Como funcionam os sistemas imunológicos artificiais

SHA-1 e computação quântica: um olhar sobre o futuro da segurança

iMasters #22 Maio 2017

COMUNIDADE Como participar de comunidade de desenvolvedores


// 7

SEÇÕES

70

58

COMUNIDADES PHP com Rapadura: o poder do PHP no Nordeste brasileiro

Helton L Boaron

73

7MASTERS Encontro iMasters de especialistas

75

POR AÍ Fazendo a internet do Brasil pelo mundo

API O que sua aplicação pode fazer com a integração de Helpers e APIs que gerenciam linhas telefônicas

48

Wesley Nascimento Métricas Preciso de métricas. E agora?

20

Mariana Anselmo

14

Victor Nascimento Segurança Java Cryptography Extension no Android

Pedro Minatel

INTERNET OF THINGS porque fazer o seu próprio gateway iot com soc?

42

60

Gleicon Moraes

DEV OPS Mais DEV no seu OPS - Teste de carga com Arquitetura Serverles e Golang

CAPA Wearables: muito se fala, pouco se faz.Por quê?

iMasters #22 Maio 2017


88////POR ENTREVISTA DENTRO DO W3C

SHA-1 e computação quântica: um olhar sobre o futuro da segurança Por Mariana Anselmo, para Revista iMasters

A

Alberto J. Azevedo é especialista em Segurança de Redes Corporativas e há mais de 20 anos trabalha com TI. Foi instrutor e coordenador no Projeto Select, proveu treinamento em informática para todos os funcionários do Governo do Paraná e é sócio-fundador da Nova Era Informática e Telemática. Grande entusiasta da comunidade Hacker, Alberto é criador da Metodologia ESPH (Enterprise Security Planning – Hack), para implementação da segurança em redes corporativas e do Projeto Security Experts, que visa prover livre acesso à informação sobre segurança. Especialista em normas de segurança (ISOS), assumiu a coordenação das atividades do projeto UVST (User Verifiable Social Telematics) na América Latina. Hoje, atua como consultor de segurança para grandes empresas dos setores industrial e de serviços. Nesta entrevista, Alberto fala sobre segurança, a primeira colisão da função de hash SHA-1 e as tendências para o uso da computação quântica em um futuro bem próximo.

Revista iMasters: O Google e o Instituto do CWI anunciaram a primeira colisão da função de hash SHA-1. Por que você acredita que eles investiram nesse ataque prático do SHA-1? Alberto J. Azevedo: A razão pode ser separada em duas partes. A primeira é grau de utilização. O SHA-1 ainda é utilizado em larga escala, presente como algoritmo default em dezenas de serviços e soluções. A segunda razão é que a pesquisa sobre vulnerabilidades no SHA-1 já vem já de longa data. Em 2005, criptoanalistas já alertavam que a função não era suficientemente segura, mas a vulnerabilidade era teórica. Porém, o grau de complexidade para se executar um ataque é enorme e só em iMasters #22 Maio 2017

2017 o Google, em conjunto com o CWI, conseguiram comprovar em um ambiente “real” a vulnerabilidade. Foi uma maneira de “comprovar em laboratório” o que já se falava há tempos. Revista iMasters: Para se decifrar um hash de 256 bits, são necessários 2^128 cálculos. O SHA-1 tem tamanho de 160 bits, sendo assim, são necessários 2^80 cálculos, o que ainda é inviável. Porém, com o avanço matemático atual, este número baixou para 2^63 cálculos. Todavia, o ataque prático só foi possível graças a adição do avanço tecnológico da infraestrutura da Google (quantidade de CPUs e GPUs) ao avanço matemático. Mesmo ainda sendo tão complicado, você acredita que esta criptografia já está defasada?


// 9

Alberto J. Azevedo: Sim e não. Foi algo que comentei nas redes sociais na ocasião da divulgação dos resultados. Isso porque ocorreu um “estardalhaço” e um hype imenso, de como se fosse necessária uma corrida para eliminar o SHA-1 imediatamente ou o mundo ia acabar. E isso está longe de ser verdade. O que o estudo provou foi que é POSSÍVEL se realizar o ataque, mas somente por organizações extremamente bem patrocinadas, com uma arquitetura computacional gigantesca, o que torna o custo desse ataque razoavelmente alto. O que preocupa é que ele vem caindo a cada ano. Como eu disse anteriormente, há muito tempo o uso do SHA-1 já é desaconselhável. O problema é que a internet continuou usando. Um pesquisador fez uma simulação usando os preços do uso computacional da Amazon e gerou estimativas de custo para realizar uma colisão SHA1: US$ 2 milhões, em 2012; US$ 700 mil, em 2015; US$ 173 mil, em 2018 e US$ 43 mil, em 2021. Revista iMasters: Dentre os projetos do GIT, está o controle de versões do Kernel do Linux. O mantenedor do software, Linus Torvalds, ainda segue resistente à mudança do SHA-1. Na sua opinião, por que isso acontece?

Alberto J. Azevedo: Linus tem um histórico de ser resistente a mudanças e upgrades que visem exclusivamente o aumento de segurança. Para resumir uma longa história, sim ele presa a segurança, mas ele presa os processos de manter o código o mais simples, rápido e estável, mais do que ganhos com segurança. A razão para isso é simples: ele é um programador, tem uma visão de mundo. Não é uma pessoa com foco em segurança. Não cheguei a ver a posição dele em relação a esse assunto, mas devido a complexidade para, de fato, efetuar um ataque, acho difícil que este experimento vá colocar alguma pressão nele para que mude. Até porque, vale a pena ressaltar que o que foi comprovado, foi o ataque de colisão no SHA-1, o que não significa dizer que todas as situações nas quais ele é utilizado estão vulneráveis. O uso em HMAC, por exemplo, ainda é considerado seguro. O que talvez coloque uma certa pressão nele para efetuar a migração são as atitudes da Google e outras gigantes da tecnologia para “forçar” essa mudança logo. Revista iMasters: Você acredita que a migração para o SHA-256 seja suficiente? Alberto J. Azevedo: Sim. O SHA-2 tem força suficiente para servir de sucessor ao SHA-1 por vários anos. Esse é um consenso na comunidade de criptoanálise. iMasters #22 Maio 2017


1010////POR ENTREVISTA DENTRO DO W3C

“A computação quântica deve, muito em breve, causar uma revolução em nossas vidas, como resolver em questão de minutos, cálculos que hoje levavam anos” Alberto J. Azevedo

iMasters #22 Maio 2017


// 11

Revista iMasters: Muito tem se falado sobre computação quântica ultimamente. A IBM, recentemente, anunciou que o seu IBM Q estará disponível comercialmente. Devido ao poder de processamento que esta tecnologia nos traz, você acredita que nós estejamos atrasados no desenvolvimento da criptografia quântica? Alberto J. Azevedo: A computação quântica deve, muito em breve, causar uma revolução em nossas vidas, como resolver em questão de minutos, cálculos que hoje levavam anos. Mas não acho que estamos atrasados. A criptografia quântica já está aí e produzindo resultados. Vale lembrar que o objetivo da criptografia é exatamente esse: produzir métodos criptográficos que não necessitem comunicação prévia, permitam a detecção de intrusos, e sejam seguros mesmo que o intruso possua poder computacional ilimitado. Ou seja, mesmo o mais poderoso computador quântico, em tese não irá conseguir quebrar um algoritmo de criptografia quântica, pois ela se baseia em leis e princípios da física e mecânica quântica, ao contrário dos algoritmos de hoje, que se baseiam em funções matemáticas secretas que no fim só recebem essa classificação, pois o poder computacional é limitado.

Revista iMasters: Hoje, no que ela se aplica e em que poderemos ver a computação quântica num futuro próximo? Alberto J. Azevedo: Hoje, ela já se aplica em comunicações ponta-a-ponta. Uma aplicação bem conhecida é o algoritmo one-time pad. A criptografia quântica ainda precisa enfrentar certos desafios, como a redução do custo de produção de fontes de fótons e repetidores quânticos para que se aumente o alcance das transmissões - hoje limitada cerca de 70 km. Mas acredito que os conceitos devam, em breve, produzir novos protocolos de distribuição de chave pública, autenticação e assinatura digital. Revista iMasters: O que você acha que os desenvolvedores podem fazer para manter a segurança das suas aplicações daqui para frente? Alberto J. Azevedo: A principal coisa é migrar tudo que for possível para SHA2 e usar bibliotecas que utilizem funções criptográficas seguras. A migração como um todo deve ocorrer gradualmente, pois gigantes da indústria, principalmente o Google, já estão tomando medidas para “forçar” uma migração. iMasters #22 Maio 2017


1212////POR MOBILIDADE DENTRO DO É TUDO W3C

SEJA UM

CONHEÇA NOSSO PROGRAMA NO SITE PARCEIROS.EMBRATELCLOUD.COM.BR

JÜSSI

PARCEIRO EMBRATEL

Quem contrata os serviços da Embratel Cloud agora pode se tornar um dos nossos parceiros de negócios*. Cadastre a sua empresa, descubra todos os benefícios e venha crescer conosco.

MARKETPLACE DE SOLUÇÕES

TREINAMENTO E CERTIFICAÇÃO

APOIO TÉCNICO E COMERCIAL

Plataforma web com uma página exclusiva para divulgação da sua empresa

Série de treinamentos e certificações relacionadas ao serviço Embratel Cloud

Conte com uma equipe de especialistas em negócios e tenha prioridade nos chamados técnicos.

iMasters #22 Maio 2017

*DISPONÍVEL PARA CLIENTES EMBRATEL CLOUD COM PLANOS A PARTIR DE R$100,00/MÊS. ENTRE EM PARCEIROS.EMBRATELCLOUD.COM.BR E TENHA MAIS INFORMAÇÕES.


DROPS DO MERCADO

// 13

FIAP LANÇA O CURSO BUSINESS INNOVATION MASTER CLASSES A FIAP, o centro de excelência em tecnologia mais respeitado do país, desenvolveu um curso único no Brasil exclusivamente para CEOs, CIOs, Gestores de Tecnologia e agentes de transformação. Com foco em inovação e tecnologia, o programa do Master Classes é provocador: Big Data, Cyber Security, Artificial Intelligence, Virtual Reality, IoT, Machine Learning, entre outros temas disruptivos. Uma excelente oportunidade para o profissional mudar seu mindset. E se preparar para conduzir as transformações que o mundo dos negócios precisa. Mais informações, acesse masterclasses.fiap.com.br

EMBRATEL LANÇA PROGRAMA DE BENEFÍCIOS PARA SEUS CLIENTES DE CLOUD O Programa de Parceiros da Embratel é uma iniciativa para apoiar empresas que utilizam tecnologia IaaS (Infrastructure as a Service) de forma intensiva em seus serviços. Com o objetivo de alavancar seus negócios, o programa oferece benefícios como certificações, treinamentos, eventos e reuniões corporativas e outras vantagens que auxiliam qualquer empresa a obter crescimento em vendas, além de capacitá-las a fornecerem melhores serviços e conquistar novos clientes. Para se tornar um parceiro basta sua empresa ter um consumo mínimo de R$100,00 por mês em produtos IaaS Embratel. Entre no site http://parceiros.embratelcloud.com.br/ e veja como o programa pode ajudar a desenvolver seus negócios

iMasters #22 Maio 2017


14 // SEGURANÇA

JAVA CRYPTOGRAPHY EXTENSION NO ANDROID Por Victor Nascimento, Gerente do Capítulo de Android na Concrete Solutions

O Java quase sempre foi desenhado pensando na extensão de suas funcionalidades. Por exemplo, definindo interfaces de APIs como JAX-RS (Java API for RESTful Web Services) e as anotações de JAXB (Java Architecture for XML Binding). Assim, surgiram frameworks que proveem diversos recursos extras sobre o conjunto padrão de requisitos das especificações. Um dos pontos de extensão das funcionalidades do Java SE é uma especificação de provedores de algoritmos de criptografia chamada JCE (Java Cryptography Extension) - esta extensão nos dá uma forma de adicionar provedores distintos de criptografia. Com isso, conseguimos usar algoritmos que não estão no padrão do JRE (Java Runtime Environment) e também podemos, por meio desta arquitetura, alterar as configurações de limite de força dos algoritmos. Talvez aqui valha a pergunta: mas por que faríamos isso? Um motivo é simplesmente usar criptografia mais forte do que aquela que a plataforma fornece. Um bom exemplo é o algoritmo de AES iMasters #22 Maio 2017

(Advanced Encryption Standard) de criptografia de bloco simétrica. Por padrão, o Java possui um limite para o tamanho das chaves, de 128 bits. É possível estender esse mínimo usando o provedor de criptografia padrão, mas para isso é necessário customizar a JRE instalando um arquivo extra de “policy”, também conhecido como “unlimited strenght” (força ilimitada). Há diversos motivos para isso: o limite não é algo que a Sun ou a Oracle criaram de suas cabeças, mas um limite sobre a força da criptografia de produtos para consumidores imposta pelas agências americanas. Não pretendo entrar na discussão política deste assunto, mas como esta limitação não se faz presente em todos os lugares do mundo, há a opção de sobrescrever este limite. Independentemente dos motivos, poder adicionar outro provedor de criptografia, e customizar os limites do JCA (Java Cryptography Architecture), é sempre bom. Um dos motivos é para que seja possível comparar as implementações destes algoritmos tão sensí-


// 15

veis, ou seja, para que seja possível testar algoritmos menos convencionais que não fazem parte da JRE. Nessa linha, o Android decidiu usar um provedor diferente por padrão (além de, claro, não poder usar o padrão da JRE por ser proprietário). O projeto escolhido para ser o padrão é o Bouncy Castle, que atualmente tem 15 anos e é financiado por uma organização sem fins lucrativos chamada Legion of the Bouncy Castle Inc. Essa solução traz vantagens e desvantagens para o desenvolvedor Android. A maior vantagem nesta abordagem, já citada, é a presença de mais algoritmos mantendo a compatibilidade com a API do Java por meio do JCE, ou seja, quando queremos gerar uma chave AES, podemos inicializar uma instância de KeyGenerator da seguinte forma:

try { final KeyGenerator keyGen = KeyGenerator.getInstance(“AES”, “BC”); } catch (NoSuchAlgorithmException | NoSuchProviderException e) { // do something } Neste trecho do código, pedimos uma instância de KeyGenerator para o algoritmo AES e passamos o provedor que queremos - no caso, “BC” para Bouncy Castle. Assim, usamos a API do pacote javax.crypto, mas utilizamos a implementação do Bouncy Castle. Nesse caso, poderíamos em seguida usar a variável “keyGen” para inicializar seu estado interno de acordo com o tamanho da chave que queremos: keyGen.init(256);

É nesse ponto que podemos começar a ter problemas. Lembra do limite padrão que a JRE traz? O código acima irá executar tranquilamente em um emulador Android (que não possui esse limite), porém não irá executar em uma JRE padrão da Oracle. E aí todos os tipos de problemas podem aparecer… Como você irá testar seu código de criptografia, em geral um teste local, já que usa mais lógica de negócio do que lógica de interação? Se for tentar usar Robolectric ou algo do tipo, continuará tendo problemas por causa da diferença do provedor padrão de JCE da JVM Oracle e da plataforma Android. Outra desvantagem problemática do uso de um provider padrão na plataforma é sua atualização. Por exemplo, na versão 4.0 do Android (API 14), o Bouncy Castle que está embarcado é o da versão 1.46 (de acordo com esta issue), mas a versão mais atual é a 1.56 no momento da escrita deste artigo. Se dermos uma olhada no changelog, veremos que várias correções foram implantadas em diversas versões. Assim, por mais que utilizemos o Bouncy Castle nos exemplos a seguir, vale a pena lembrar que bugs em produção podem estar relacionados a versões do Bouncy Castle. Caso sua aplicação dependa de algoritmos de criptografia, é necessário ponderar bastante a sua decisão de arquitetura para não ter problemas de segurança. Uma saída para o problema de atualização é embarcar um terceiro provedor de JCE. Por exemplo, o Spongy Castle. Esse provider é um fork do Bouncy Castle só que com o pacote e o nome do provider alterado para não termos conflitos de classes nas aplicações Android. Se tentarmos simplesmente colocar um jar com a versão mais atualizada do Bouncy Castle, teremos problemas de ClassLoader, já que o Bouncy Castle está disponível no loadpath das aplicações. Esse cenário, no entanto, só iMasters #22 Maio 2017


16 // SEGURANÇA

irá funcionar no Android, pois os provedores de JCE devem ser assinados pela Oracle para serem aceitos como implementações em sua JVM. Com isso, será que conseguimos testar nosso código diretamente na JVM? Vejamos com o seguinte exemplo:

public static void main(String... args) throws Exception { final KeyGenerator keyGen = KeyGenerator.getInstance(“AES”); System.out.println(“O provider que usamos é “ + keyGen.getProvider(). getName()); keyGen.init(256); final SecretKey secretKey = keyGen. generateKey(); System.out.println(“O tamanho da chave é “ + (secretKey.getEncoded(). length * 8)); }

Se você não alterou nada na sua JRE, então você deve receber uma exceção assim: java.security.InvalidKeyException: Illegal key size Mas e agora? Instalo o Bouncy Castle como um provedor de criptografia da minha JRE? Hmmm… no Android ele já está no nosso loadpath, então só precisaria de uma dependência para o nosso teste: iMasters #22 Maio 2017

// Dependência de teste local testCompile ‘org.bouncycastle:bcprov-jdk16:1.46’

E agora podemos instalar o provider em nossos testes: public class CryptoTest { static { Security.insertProviderAt(new BouncyCastleProvider(), 1); } @Test public void canSetProvider() throws Exception { // passando o provider como segundo parâmetro final KeyGenerator keyGen = KeyGenerator.getInstance(“AES”, “BC”); Assert.assertEquals(keyGen. getProvider().getName(), “BC”); keyGen.init(256); final SecretKey secretKey = keyGen. generateKey(); // Tudo ok com o tamanho! Assert.assertEquals(secretKey. getEncoded().length * 8, 256); }


// 17

Essa é quase uma saída, mas temos alguns problemas. Primeiro, ainda temos que instalar o “policy” de força ilimitada da JRE. Esse limite é independente do provedor de JCE. Outro problema é que em vez de usarmos o padrão da plataforma, estamos passando o provider explicitamente no método getInstance(). Assim, se quisermos trocar o provider padrão, ou melhor, se o Android trocar o provider padrão de uma versão para outra, teremos problemas. Voltamos à sinuca inicial. Mas vamos entender o que queremos que aconteça neste caso: Queremos usar as APIs do pacote javax.crypto no Android de forma que seja possível testar na JVM com testes locais sem alterar nosso código. Existe uma solução simples para o nosso exemplo: instalar a “policy” de força ilimitada. Isso porque estamos usando um tamanho de chave maior do que o permitido por padrão. Para aumentar o limite da força de criptografia padrão, basta baixar o zip em https://goo.gl/ dl1x7H (para Java 8), descompactar e mover tanto local_policy.jar e US_export_policy.jar para a pasta $JAVA_HOME/jre/lib/security (é aconselhável fazer um backup dos arquivos sobrescritos antes). E pronto! Se executarmos novamente nosso exemplo, o teste irá passar. No entanto, o provider padrão da JVM da Oracle não se chama “BC”, e sim “SunJCE”. Assim, vamos alterar o nosso código para usar o provedor padrão:

public class CryptoTest { @Test public void canSetProvider() throws Exception { // passando o provider como segundo parâmetro final KeyGenerator keyGen = KeyGenerator.getInstance(“AES”); Assert.assertEquals(keyGen. getProvider().getName(), “SunJCE”); keyGen.init(256); final SecretKey secretKey = keyGen. generateKey(); // Tudo ok com o tamanho! Assert.assertEquals(secretKey. getEncoded().length * 8, 256); } }

Assim, temos um código que será executado com o BouncyCastle nos emuladores e aparelhos Android, mas que usará o provider padrão da JVM em testes locais. Isso é aceitável? Depende. Tanto o provedor padrão quanto o Bouncy Castle são implementações respeitadas dos algoritmos de criptografia. Assim, se sua aplicação depende apenas de algoritmos que ambas as implementações contêm, não deveria haver problemas. iMasters #22 Maio 2017


18 // SEGURANÇA

No entanto, como já não deve ser surpresa para o leitor, há um pequeno grande problema nessa abordagem: a interpretação dos padrões de criptografia. Na teoria, todo mundo entende os padrões definidos em PKCS (Password-based Cryptography Specification - Especificação de criptografia baseada em senha) da mesma forma, certo? Afinal, a especificação não deveria deixar margem para interpretação. Pois é… infelizmente, não foi bem assim. Na especificação dos algoritmos da JCA (Java Cryptography Architecture), deu-se o nome “PKCS5Padding” para o padding, que na verdade é “PKCS7Padding” (apesar de as especificações terem definições diferentes de padding, pode-se dizer que o PKCS5Padding é um subconjunto de PKCS7Padding). Se fizerem uma busca rápida na Internet por “Java PCKS7 padding”, vão encontrar inúmeras questões parecidas que esbarram nesse problema. Então, não tem jeito mesmo de conseguirmos resolver nossos problemas com os provedores de criptografia do Java e do Android? Deadlock? Rua sem saída? Ainda não. Recapitulando o que vimos até aqui: o Android fornece um provedor padrão de algoritmos de criptografia que difere do padrão da JVM da Oracle. Queremos usar as APIs do pacote javax.crypto e conseguir testar nosso código tanto nos emuladores quanto em testes locais na JVM. Para tanto, instalamos os arquivos de extensão da força de criptografia e fizemos nosso código não depender de um provider específico. Nosso problema agora é que há nomes diferentes para especificações de padding no Android e na JVM. Existe uma última abordagem mais radical para resolver de vez o problema: trocar o provedor de criptografia padrão de toda a JRE. Assim, quando não passarmos um provedor em métodos como KeyGenerator.getInstance(), iremos na verdade usar o Bouncy Castle, e não o Sun JCE. Vale lembrar que essa abordagem pode nos complicar no caminho contrário: se algum código assumir que o provedor padrão é o SunJCE e não passar o provider nos métodos, vai ter problemas com diferentes interpretações das especificações. Para alterar os provedores que a JRE usa por padrão, temos que alterar o arquivo $JAVA_HOME/ jre/lib/security/java.security, encontrar a sesiMasters #22 Maio 2017

são que declara os provedores (todos começam com security.provider.N, onde N é a ordem de procura dos provedores) e adicionar uma linha com o provedor que queremos. No nosso caso, pode ser: security.provider.10=org.bouncycastle.jce.provider. BouncyCastleProvider A ordem aqui é importante. Se o provedor security.provider.N=com.sun.crypto.provider.SunJCE tiver precedência, ele será usado antes. Na documentação do Bouncy Castle, eles não recomendam colocar o Bouncy Castle primeiro, já que isso pode quebrar a própria JVM. Se fizermos isso, nosso código não precisará passar qual o provedor queremos e irá utilizar o Bouncy Castle. Com isso, evitamos problemas como “PKCS7Padding”, porém precisamos saber que qualquer código que assuma o contrário (que “PKCS5Padding” é a mesma coisa que “PKCS7Padding”, por exemplo) pode ter problemas. Existem outras implementações de algoritmos de criptografia que não aderem à arquitetura do JCA e que, assim, não enfrentam esses problemas de paridade de ambientes. Um bom exemplo disso é a biblioteca Conceal do Facebook. Vale lembrar que tomar a decisão de usar uma biblioteca não padrão da plataforma para criptografia é uma decisão que deve ser bem pensada e discutida com o time de segurança. Se houver qualquer dúvida, é melhor não utilizar. Espero que com este artigo e suas referências, o leitor entenda melhor qual é a arquitetura do Java para provedores de criptografia e quais as diferenças para o Android. Outras referências: https://www.crypto101.io/ ótimo livro gratuito sobre criptografia em geral. Victor Nascimento é desenvolvedor Java por experiência e Erlang por paixão. Bacharel em Filosofia (por opção!), acredita que o mundo das linguagens de programação anda se esquecendo muito do lado “linguagem” e se focando muito em “programação”. Consultor especialista da Concrete Solutions em Java e arquitetura de sistemas, tem uma paixão pela plataforma Erlang, Wittgenstein e Kant.

victor.nascimento@concretesolutions.com.br


DROPS DO MERCADO CONHEÇA O TESTCLOUD! Já imaginou poder fazer testes automatizados em até 32 dispositivos mobile, incluindo iOS e Android, simultaneamente? Isso agora é possível! A Concrete Solutions oferece o Concrete Testcloud, um produto composto por um rack de metal com um suporte de acrílico para 32 dispositivos, um monitor com teclado, tranckball e botões, um hub com 16 entradas USB e um Mac Mini rodando o software. Tudo isso para facilitar os testes em mobile e lidar com a fragmentação de aparelhos de forma muito mais fácil. Assim, você consegue cobrir o mercado de forma significativa e garante a segurança, agilidade e velocidade no desenvolvimento de seus produtos. O Concrete TestCloud oferece ainda a API para integração, um console facilmente utilizável via web e um software de cloud de qualidade pública. E a manutenção do rack, bem como a atualização dos dispositivos, também é por conta da Concrete! Garanta a qualidade do seu app com tranquilidade. Fale com a Concrete!

// 19

TRANSPARÊNCIA, ESTA É A APOSTA DA DIALHOST PARA O MERCADO DE HOSPEDAGEM Transparência e empatia na solução de problemas tem sido uma tendência cada vez mais necessária para o bom relacionamento com o cliente. Neste sentido, a DialHost está cada dia mais apostando em atendimento focado no relacionamento próximo. “Mais que oferecer descontos mirabolantes para cativar novos usuários, acreditamos que fidelizar este cliente com soluções ativas e produtos de qualidade permitirá que ele opte primeiro pelo nosso host. Nossa ideia sempre foi tirar esta imagem de que toda hospedagem é igual na hora de tratar os problemas dos clientes. Criou-se uma aura negativa onde desenvolvedores e hosts, muitas vezes por falta de clareza nas informações e soluções demoradas, acabam desgastando um relacionamento fundamental. A exemplo, soluções como Uber e Nubank vêm se destacando por buscar atendimento simples para serviços que até então pareciam complexos.” - Flávio Cardoso, Diretor da DialHost.

LAMBDA3 TEM COMO META DOBRAR FATURAMENTO E CHEGAR A 20 MILHÕES EM 2017

VERSÕES TRIAL DE APLICAÇÕES AGORA PODEM OFERECER TESTE INTEGRADO DE SOLUÇÕES DE TELEFONIA DA DIRECTCALL

A Lambda3, empresa de software sob medida, atingiu faturamento de R$ 10 milhões em 2016 com a entrega de 12 projetos. “Chegamos a 50% de aumento no faturamento no último ano e crescimento médio de 70% nos últimos três”, afirma Victor Hugo Germano, CMO e fundador. A desenvolvedora já tem 75 funcionários, mas a meta é dobrar este número até o final de 2017. “O ambiente colaborativo envolve participação de todas as pessoas independentemente de suas origens”, completa. Concorrendo com gigantes a empresa cresce num modelo ágil de entrega, garantindo finalização do projeto no tempo mais reduzido possível. “Em 15 dias o cliente já começa a ter as primeiras atualizações e implementações de software, os principais resultados são obtidos entre 3 e 9 meses”, diz Germano. Para este ano a perspectiva é de aumentar a carta de 20 clientes ativos para 25, até dezembro. Nela predominam os grandes, como Santander, Icatu Seguros e Instituto Unibanco. Desde 2010 a Lambda3 entregou mais de 100 projetos.

Além de integrar habilidades de telefonia em qualquer aplicação via APIs ou Helpers, agora também é possível disponibilizar testes em versões trial. Disponível em Helpers prontos, com interfaces amigáveis ao usuário, que permitem a geração de ligações à partir de um clique, por exemplo. Já através das APIs, que quando ambientadas no layout de seu software, podem, por exemplo, receber regras para envios de SMS automáticos. Basta envolver os parâmetros desejados em aquisição POST e resposta Json. Ao usuário, o acesso se dá através de login simples, em que a DirectCall fornece créditos gratuitos para a experimentação real dos serviços. Mais que um upgrade na experiência do cliente, é também um forte apelo de vendas, uma vez que já na versão de testes ele comprova a eficiência de sua aplicação incrementada com telefonia.

iMasters #22 Maio 2017


20 // INTERNET OF THINGS

PORQUE FAZER O SEU PRÓPRIO GATEWAY IOT COM SOC? Por Pedro Minatel, Pesquisador em IoT na Time Energy

Quando falamos de IoT, ou Internet das Coisas, já pensamos em que algo estará conectado à Internet. Essa “coisa” não necessariamente se conecta de forma direta, sendo, na grande maioria dos casos, por meio um gateway ou roteador. O gateway é similar a um roteador, porém, ele pode unir redes de diferentes protocolos, através de um processamento local para a tradução e conversão de protocolos. Gateways são muito utilizados em ambiente industrial e corporativo, porém, com o avanço do IoT, está ficando mais comum encontrar esse tipo de equipamento para uso residencial. Em IoT, é muito comum que o dispositivo opere com um protocolo ou mesmo um rádio diferente, sendo obrigatório o uso de algum tipo de gateway proprietário. Alguns sistemas operam com rádios diferentes do WiFi 802.11, com menor consumo de energia, tornando impossível o uso do roteador padrão para essa comunicação. iMasters #22 Maio 2017

Esse cenário é o ideal para o uso de um gateway, porém esse tipo de equipamento normalmente é proprietário e não permite muitas customizações – o que é uma ótima desculpa para fazer o nosso próprio gateway! MAS POR QUE FAZER UM GATEWAY DE IOT? Primeiramente, porque fazer é mais divertido do que comprar. Além do fato do aprendizado ser mais intenso dessa forma, botando a mão na massa! A grande vantagem em fazer o seu próprio gateway, é o nível de customização que ele pode ter, já que temos total acesso ao sistema operacional, sem restrições impostas pelo fabricante - o que ocorre na maioria dos casos. Essa customização vai permitir usar o gateway em modo “fog computing” (computação em nevoeiro), para o processamento de informações o mais perto do dispositivo da borda, ou edge device, fazendo com que, mesmo na falta de Internet, o dispositivo consiga se manter operacional, ainda que com algumas restrições.


// 21

O lugar mais sensato para a implementação de fog computing é no gateway, já que pode comportar um poder de processamento superior aos dispositivos, permitindo armazenamento local de informações, pré-processamento dos dados coletados, atuação em tempo real, sem dependência de uma conexão ativa com a Internet. Fazer o seu próprio gateway de IoT pode parecer loucura, mas com a baixa nos preços dos SoC’s (System-on-a-Chip), alavancado principalmente pela Raspberry Pi, torna possível a criação de sistemas computacionais de bom desempenho, tamanho reduzido e baixo custo. Já é possível encontrar SoC’s custando menos de US$ 10. O SOC MT7688 E A OMEGA2 Um desses SoC’s é o MT7688 da MediaTek, que é um sistema com WiFi 802.11 e um processador MIPS a 580MHz e uma série de periféricos como porta Ethernet, USB 2.0, SPI, I2C, entre outros. O SoC MT7688 já equipa alguns roteadores comerciais no mercado, além de uma série de placas de desenvolvimento, como a Omega2 da Onion.io. A Omega2 é um computador em módulo, similar a Raspberry Pi, porém com foco na construção de soluções IoT, custando entre US$ 5 a US$ 9, foi um projeto lançado pelo Kickstarter e alcançou a quantia de US$ 672 mil durante a campanha na primeira fase. Rodando uma customização do Linux openWRT, a Omega2 se torna a solução ideal para a construção do gateway, já que o openWRT é uma das mais populares distribuições GNU/Linux para roteadores atualmente. O openWRT suporta uma vasta gama de arquiteturas de processadores, periféricos e linguagens de programação, entre elas Python, Lua, C/ C++, shell script Erlang, Ruby e Perl. CRIANDO UM GATEWAY BÁSICO A arquitetura básica do gateway terá a Omega2+ como CPU e o openWRT versão 15.05 “chaos calmer” como S.O. GNU/Linux. Para iniciar uma sessão do console na Omega2, devemos usar um cabo conversor serial para USB nos pinos 12 (TX) e 13 (RX) da Omega2 com a velocidade de 115200bps.

$ screen /dev/ttyUSBx 115200 Após o carregamento do sistema, o console será habilitado. Agora podemos iniciar a configuração básica do gateway, que receberá a conexão com a Internet pela interface WiFi em modo “station” e disponibilizará pela mesma interface, porém em modo “ap”. Para fazer essa “bridge” interna, devemos configurar a interface diretamente pelo arquivo de configuração.

# vi /etc/config/wireless config wifi-device ‘ra0’ option type ‘ralink’ option mode ‘9’ option channel ‘auto’ option txpower ‘100’ option ht ‘20’ option country ‘BR’ option disabled ‘0’ config wifi-iface option device ‘ra0’ option network ‘wlan’ option mode ‘ap’ option encryption ‘psk2’ option key ‘senhameugateway’ option ApCliEnable ‘1’ option ApCliSsid ‘ssid-da-sua-redewifi’ option ApCliAuthMode ‘WPA2PSK’ option ApCliEncrypType ‘AES’ option ApCliPassWord ‘senha-da-suarede-wifi’ option ssid ‘MeuGateway’

Altere as credenciais de acordo com a sua rede e escolha um nome e uma senha para a rede que será criada. O openWRT dispõe de uma outra forma de configurar esse arquivo: por meio do sistema “uci” Unified Configuration Interface. Definindo as configurações no arquivo configs, devemos agora modificar o arquivo networks, conforme o modelo. iMasters #22 Maio 2017


22 // INTERNET OF THINGS

iMasters #22 Maio 2017


// 23

# vi /etc/config/network config interface ‘loopback’ option ifname ‘lo’ option proto ‘static’ option ipaddr ‘127.0.0.1’ option netmask ‘255.0.0.0’ config globals ‘globals’ option ula_prefix ‘fd1d:48c4:7633::/48’ config interface ‘wlan’ option type ‘bridge’ option ifname ‘eth0.1’ option proto ‘static’ option ipaddr ‘192.168.3.1’ option netmask ‘255.255.255.0’ option ip6assign ‘60’ config interface ‘wan’ option ifname ‘eth0.2’ option proto ‘dhcp’ config interface ‘wwan’ option ifname ‘apcli0’ option proto ‘dhcp’

Feitas as alterações nos dois arquivos, precisamos reiniciar a interface de rede wireless. Para isso, utilizamos o seguinte comando: # ifup wlan Agora a interface será reiniciada e temos um início de um projeto de gateway com o SoC MT7688! Para testar, conecte um dispositivo na rede criada, e certifique-se de que todas as configurações de SSID e senhas estejam corretas. Basta essas alterações e já podemos usar a Omega2 como um repetidor de rede WiFi, ou mesmo como uma segunda rede somente para IoT. Temos, agora, todo o potencial de um sistema para dar início a criação de aplicações dentro do gateway, utilizando as linguagens de programação já mencionadas.

Pedro Minatel é formado em Análise de Sistemas, trabalha há mais de 10 anos com o desenvolvimento de produtos, com foco em embarcados. Atualmente trabalha como pesquisador em IoT na Time Energy, possuindo patentes nacionais e internacionais nas áreas de segurança, wearables e Internet das Coisas. Publica regularmente artigos técnicos de desenvolvimento para a Internet das Coisas em seu blog pessoal, já teve trabalhos publicados em diversas conferências e é fundador do IoTMakers.

pedro@pedrominatel.com.br

iMasters #22 Maio 2017


24 // MACHINE LEARNING

CARROS AUTÔNOMOS: O QUE VEM POR AÍ? Por Carlos Vido, Especialista em Machine Learning da Udacity Brasil

Poucas inovações podem transformar tanto o espaço urbano quanto o lançamento comercial do carro autônomo. Até pouco tempo, essa tecnologia estava limitada a projetos universitários ou competições como o DARPA Grand Challenge. Hoje, protótipos do Google já circulam pelo Vale do Silício. Uber tem seu carro experimental rodando na cidade de Pittsburgh. Volvo, General Motors e Tesla também fazem seus experimentos e avançam no tema. São vários os componentes envolvidos para que o carro possa executar seu papel. Primeiro, o automóvel precisa enxergar, ou seja, detectar o que está à sua frente, para, em seguida, interpretar a situação e escolher a melhor forma de agir. Os sensores — Radar, Sonar e Lidar — são os responsáveis por visualizar obstáculos a distância por meio de sensoriamento e detecção. O Radar (Radio Detection And Ranging) transmite ondas de rádio e o Sonar (Sound Navigation And Ranging) emite ondas sonoras, quando identificam objetos. Eles emitem um sinal, captam a reflexão e medem o tempo entre ambos para calcular a distância entre o carro e os obstáculos. Já o Lidar (Light Detection And Ranging) permanece consiMasters #22 Maio 2017

tantemente girando, usando raios laser para gerar um conjunto de coordenadas correspondentes aos lugares onde o laser é refletido. Em efeito, esses três sensores funcionam exatamente da mesma maneira: eles emitem um sinal (rádio, ultrassom ou laser) que pode ser refletido, caso haja algum obstáculo ao seu alcance. Se o sinal é refletido, o sensor detecta onde isso aconteceu. No caso do Radar e do Sonar, a direção é fixa e, portanto a leitura é única. No caso do Lidar, geralmente são emitidos sinais em várias direções — para cobrir 360 graus, usando um espelho que se move para formar um “leque” —, e cada uma dessas direções vai ter uma leitura diferente. Assim, esses sensores são capazes de realizar varreduras nas mais diversas direções, por meio de dezenas de milhares de leituras por segundo. A partir desses dados (com resoluções bem detalhadas), é possível interpretá-las, para então tomar as decisões de direção. Os carros autônomos também podem contar com uma câmera estéreo, que equivale, em efeito, a duas câmeras ou duas lentes apontando na mesma direção. A partir delas, é possível comparar as ima-

gens e estimar a distância dos objetos registrados, com um princípio semelhante ao funcionamento da visão humana. Essas câmeras também detectam semáforos e sinais, além de ajudarem a reconhecer objetos em movimento, como pedestres e ciclistas. O computador principal analisa dados dos sensores e compara toda a informação mapeada e armazenada para avaliar as condições atuais da direção. Além disso, os carros autônomos podem contar com GPS — para localizá-lo no mapa da cidade —, acelerômetro, odômetro, redes de comunicação entre carros — sistemas de avisos que permitem que um carro informe ao outro sobre um possível acidente na via e a necessidade de mudança de rota. A combinação de informações provenientes dos sensores e das câmeras permite que o carro execute tarefas. Uma vez viável no mercado, essa tecnologia pretende que o motorista deixe de ser o condutor para ser apenas o passageiro do automóvel. Embora nenhuma montadora já tenha lançado um carro totalmente autônomo, já existem muitos projetos em andamento. O carro da Tesla, por exemplo, ainda não é autônomo porque só funciona sem intervenção


// 25

do motorista na estrada — ou seja, alguém ainda precisa conduzir o carro na maior parte do tempo. O QUE ELE FAZ? O carro autônomo é capaz de realizar tudo o que o nosso cérebro faz, mas com menos probabilidade de falhas, já que ele percebe e analisa uma situação por meio de computadores e sensores de forma mais rápida que os sentidos humanos. As tecnologias do carro autônomo detectam as informações e realizam os cálculos, com processamento bem mais rápido que o ser humano. Estes são usados para decidir a melhor reação, como frear ou acelerar, e consequentemente avaliar o que oferece menor risco em cada situação antes de executá-la. Conheça outras ações de que um carro autônomo é capaz: • detectar sobre a mudança não intencional de faixa; • alertar sobre pneu com baixa pressão; • eliminar pontos cegos; • dirigir de forma mais econômica; • frear automaticamente para evitar colisão com o carro da frente ou outro obstáculo; • manter velocidade adequada e pré-selecionada;

• manter distância pré-definida para o veículo à frente; • alterar a suspensão ao ler curvas ou obstáculos adiante na via; • manobrar e estacionar; • ligar para o resgate após uma batida. QUAIS AS MUDANÇAS PROPORCIONADAS POR ELE? O carro autônomo vai contribuir para a redução de acidentes provocados por fatores humanos, além de organizar o trânsito, reduzindo o tráfego nas grandes cidades e rodovias e aumentando a capacidade de tráfego nas vias, com a diminuição das distâncias entre os veículos, em função do menor tempo de reação para frenagens. Outra grande revolução diz respeito à relação da sociedade com os automóveis. De objetos de consumo e posse individual, eles podem passar a prestadores de serviço, já que podem ser solicitados apenas para levar as pessoas todos os dias para o trabalho ou de volta pra casa, por exemplo. Assim, ninguém mais precisará ter um carro e arcar com gastos como combustível, impostos, seguro, estacionamento rotativo, entre outros.

Por razões de sustentabilidade e estilo de vida, as novas gerações já se mostram bem menos interessadas em adquirir automóveis particulares, preferindo bicicleta, metrô ou ônibus como meios de transporte, ou priorizando serviços com custo-benefício melhor, como o Uber. O carro autônomo é uma das tendências mais inovadoras no mercado atual. Para sair do papel, ele precisa contar com tecnologias de robótica e inteligência artificial avançadas e com profissionais altamente especializados e envolvidos nas mais diversas áreas de pesquisa. Interessados no tema podem realizar o Nanodegree Engenheiro de Carro Autônomo. Mais informações em br.udacity.com. *Com colaboração de Marina Rigueira

Carlos Vido é especialista em Machine Learning da Udacity Brasil, formado em Ciências Moleculares na USP e mestre pela Universidade de Sydney, onde desenvolveu pesquisa em machine learning e robótica probabilística. Afastou-se da área de pesquisa para dedicar-se à educação.

carlos.vido@udacity.com

iMasters #22 Maio 2017


26 //

DROPS DO MERCADO PAGAMENTO POR LINK

Com o Pagamento por Link, disponível no Checkout Cielo, o lojista configura rapidamente uma página de pagamentos e associa um produto. Dessa forma, é possível vender através do Whatspapp, Facebook, Instagram, entre outros. Uma forma simples e prática de iniciar as vendas online.

UDACITY LANÇA CURSO EM PORTUGUÊS SOBRE FUNDAMENTOS DO DEEP LEARNING Deep learning é o tema do momento dentre as empresas do Vale do Silício: o reconhecimento facial do Facebook, a assistente virtual Siri, o carro autônomo do Google e o diagnóstico de um tipo raro de câncer pelo IBM Watson são apenas algumas possíveis aplicações. Por meio desta tecnologia, sistemas cada vez mais inteligentes estão sendo desenvolvidos e resolvendo problemas de altíssima complexidade. Brasileiros já podem se especializar nesta área: a Udacity - a Universidade do Vale do Silício - acaba de lançar em português o programa Nanodegree Fundamentos de Deep Learning. Tipos e arquiteturas de redes neurais, reconhecimento de objetos, bots inteligentes, drone image tracking, previsão do mercado de ações e visualização de dados são alguns dos conceitos e aplicações abordados no curso, que tem duração de seis meses e acontece totalmente online. Todo aprendizado do aluno se dá por meio de vídeos semanais, projetos exclusivos, feedback e revisão de especialistas. A matrícula pode ser realizada em br.udacity.com.

iMasters #22 Maio 2017

A COMBINAÇÃO PENTEST/SCAN AUTOMATIZADO PODE AJUDAR A PROTEGER SUA APLICAÇÃO WEB A avaliação manual de vulnerabilidades, o Pentest, é fundamental para identificar brechas de segurança em uma aplicação web. Com esse teste, os webmasters são capazes de corrigir falhas que poderiam comprometer toda a estrutura, desde alterações básicas como .txt até o acesso ao código fonte. O aconselhável é que as aplicações passem por essa análise a cada seis meses para validação da segurança. Nesse período, entre um Pentest e outro, a utilização do scan automatizado será importante, pois realizará análises semanais das principais vulnerabilidades (OWASP). Os dois serviços formam um pack essencial para quem se importa com a segurança e deseja proteger informações próprias e/ou dos usuários. A Site Blindado oferece a bonificação de um ano no Scan Automatizado para quem contrata seu serviço de Pentest. Confira condições especiais para leitores iMasters.

BACKUP E PROTEÇÃO COM A BLUEHOST BRASIL A Bluehost Brasil adiciona ao seu portfólio de produtos o CodeGuard, um dos maiores provedores de BaaS (Backup as a Service) do mundo. De uma maneira simples e intuitiva, o CodeGuard faz backup dos seus arquivos via ftp/sftp e do seu banco de dados MySQL. A partir desse momento, ele começa a monitorar seu site diariamente em busca de alterações. Se necessário, você poderá restaurar seu site para qualquer versão anterior com apenas um clique. Diversos problemas podem acontecer com os dados do seu site, desde malwares até erros de códigos. Fazer backups frequentes dos seus arquivos e banco de dados SQL pode fazer toda a diferença em vista de um imprevisto, salvando sua empresa. Com o Sitelock, que identifica vulnerabilidades e protege seu site contra malwares e invasores, a Bluehost Brasil oferece proteção completa para seu site e para seu negócio online.


// 27

iMasters iMasters #21 #22 Fevereiro Maio 2017


28 // MOBILIDADE É TUDO

O PODER DO ANDROID THINGS ALÉM DA GPIO E PWM Por Ricardo Ogliari, Engenheiro Android no BTCjam

O ano de 2017 marcou o lançamento da plataforma Android Things, que promete trazer todo o conhecimento, ferramentas, bibliotecas, arquitetura e ideologia do desenvolvimento Android usados em smartphones e similares para plataformas de sistemas embarcados, como o Intel Edison. Neste artigo, não pretendo falar sobre as bibliotecas, sobre a codificação ou, ainda, entrar em detalhes de como podemos usar o Firebase no Intel Edison. A ideia neste texto é passar minha visão sobre o poder do Google/Android Things no contexto da Internet das Coisas, mostrar o poder que nós, desenvolvedores, temos em mãos, conhecendo o ecossistema do desenvolvimento para a plataforma Android. O primeiro ponto diz respeito ao coração da aplicação Android. O AndroidManifest está presente no desenvolvimento do Android Things e com o mesmo papel de protagonista. A diferença sutil é a presença de um filtro específico para o IOT_ LAUNCHER. Ou seja, o conceito de Intent e Intent Filter, herdado do Android “Normal”, segue presente também. Apenas para elucidar o leitor, veja a pequena alteração no AndroidManifest.xml: iMasters #22 Maio 2017

<?xml version=”1.0” encoding=”utf-8”?> <manifest xmlns:android=”http://schemas. android.com/apk/res/android” package=”agora.humano.seja. com.helloworldthings” > <application ... > <uses-library android:name=”com.google. android.things”/> <activity android:name=”. MainActivity” > <intent-filter> <action android:name=”android.intent. action.MAIN” /> <category android:name=”android.intent. category.LAUNCHER” /> </intent-filter> <intent-filter> <action android:name=”android.intent. action.MAIN”/> <category


O robĂ´ Android ĂŠ reproduzido ou modificado apartir da arte criada e compartilhada pela Google de acordo com os termos descritos na Creative Commons 3.0 Attribution License.

// 29

iMasters #22 Maio 2017


30 // MOBILIDADE É TUDO

android:name=”android.intent. category.IOT_LAUNCHER”/> <category android:name=”android.intent. category.DEFAULT”/> </intent-filter> </activity> </application>

to bem ser substituído por um relê que ligaria uma tomada da nossa residência.

public class MainActivity extends AppCompatActivity { private Gpio ledGpio; private static final String GPIO_PIN = “IO13”;

</manifest>

A Intent define a intenção de uma ação disparada de/para o sistema operacional Android. Sendo assim, o Intent Filter é justamente um filtro dessa ação. A categoria LAUNCHER, já conhecida dos desenvolvedores, define que o ponto de partida da aplicação móvel é aquela activity. Logo, o IOT_LAUNCHER tem exatamente a mesma função. A plataforma embarcada, como o Intel Edison, sabe qual atividade vai iniciar os trabalhos no momento em que a aplicação Android for executada. Olhando o manifesto, notamos a presença da já conhecida Activity. No desenvolvimento Android para smartphone, ela tem a função de representar uma tela e seu contexto. Aqui, temos a ideia de uma atividade. Mas o mais importante é que todo o ciclo de vida de uma Activity e toda a Activity Stack são reaproveitados no Android Things. O SDK do Android Things ganhou o incremento de algumas bibliotecas e classes de suma importância para o contexto da plataforma, como a classe PeripheralManagerService, que permite requisitar todas as portas a que temos acessos naquele hardware. Ou, ainda, a classe GPIO, que pode fazer a ligação com um LED RGB, por exemplo, ou com um relê que ligaria a lâmpada da sua casa. Tudo isso de forma muito simples. Abaixo, segue um exemplo muito simples de como um LED ligado na porta digital 6 do Edison Arduino pode ser ligada. Ou, ainda, esse simples LED poderia muiiMasters #22 Maio 2017

@Override protected void onCreate(Bundle savedInstanceState) { super. onCreate(savedInstanceState); PeripheralManagerService service = new PeripheralManagerService(); try { ledGpio = service. openGpio(GPIO_PIN); ledGpio.setValue(true); } catch (IOException e) { Log.e(“GPIOS”, “Error on PeripheralIO API”, e); } } } Para um desenvolvedor experiente da plataforma Android, é quase inacreditável saber que todo o conhecimento poderá ser replicado para o mundo IoT. O único ponto de dúvida talvez seja a variável GPIN_PIN valorizada com IO13, sendo que, na descrição do parágrafo anterior, citei a porta digital 6. Um ponto de atenção no Android Things é justamente o nome das portas que estaremos trabalhando. Mas, na documentação oficial, é possível selecionar a plataforma alvo e saber os nomes de todas as portas que devem ser usadas. Por exemplo, para o Intel Edison Arduino I/O, a seguinte imagem é encontrada (https://developer.android.com/things/hardware/ edison-arduino-io.html):


// 31

= 5V

= Ground

= PWM

= SPI

= 3.3V

= GPIO

= I2C

= UART

J1B1

J1A1

UART1 (RXD) / IO0

1

6

I2C6 (SCL) / IO19

UART1 (TXD) / IO1

2

5

I2C6 (SDA) / IO18

IO2

3

4

IO17

IO3

4

3

IO16

IO4

5

2

IO15

IO5

6

1

IO14

IO6

7

IO7

8

IO8

8 7

Ground

1

6

Ground

IO9

2

5

5V

SPI2(SS) / IO10

3

4

3.3V

SPI2(MOS1) / IO11

4

3

SPI2(MISO) / IO12

5

2

SPI2(SCLK) / IO13

6

1

Ground

7

J2A1

8 I2C6 (SDA) / IO18

9

I2C6 (SCL) / IO19

10 J2B1

iMasters #22 Maio 2017


32 // MOBILIDADE É TUDO

Aliado ao poder da simplicidade e reutilização do conhecimento, podemos citar as bibliotecas do SDK que estarão presentes nas plataformas alvos do Android Things. Até o momento da escrita deste artigo, são elas: Intel Edison, Intel Joule, NXP Pico i.MX6UL e Raspberry Pi 3. E veja agora as APIs suportadas pelo Android Things até o momento da escrita deste texto:

Cast Drive Firebase Analytics Firebase Cloud Messaging (FCM) Firebase Crash Reporting Firebase Realtime Database Firebase Remote Config Firebase Storage Fit Instance ID Location Nearby Places Mobile Vision

Ficou impressionado com as opções? Acredito fielmente que sim. Somente o set de opções do Firebase já seria muito valoroso. Agora, um desenvolvedor maker não precisa mais trabalhar com bibliotecas de comunicação serial ou Wi-Fi. Não precisa mais pensar no servidor de banco de dados NoSQL que receberá uma quantidade significativa de dados de sensores. O Firebase resolve isso da mesma forma simplista que resolve para smartphones. E parece que os planos do Google para uma interligação de todas as coisas possíveis não param no Android Things. Um kit de desenvolvimento para o projeto Soli será lançado ainda este ano pela empresa. O Soli iMasters #22 Maio 2017

compreende um micro-radar de onda milimétrica que consegue interceptar e detectar gestos muito sutis como aqueles que fazemos com os dedos e as mãos. Para saber mais, navegue pela página do projeto aqui https://atap. google.com/soli/. E ainda temos o Android Auto e o Android Wear. O primeiro chegou às terras brasileiras na primeira metade do ano passado. O Android Wear já é um velho conhecido. Mas o que importa é que o Android SDK e os principais pilares do desenvolvimento para smartphone são mantidos tanto para carros quando para vestíveis. Ou seja, uma vez que o programador esteja apto a desenvolver para a plataforma Android, um mundo se abre aos seus dedos. E não estamos falando só de smartphones e tablet e seus bilhões de usuários, mas sim de plataformas embarcadas, sensores que detectam pequenos movimentos de mãos e dedos, automóveis e vestíveis. E, para fechar o ciclo, é importante ressaltar que não é somente a filosofia de desenvolvimento que é compartilhada. O Google Play Services e o Firebase, que aceleram o desenvolvimento com APIs especializadas para features extremamente comuns, como mapas, banco de dados e push notifications, também são compartilhados. Difícil imaginar todas as possibilidades viáveis.

Ricardo Ogliari é coautor do livro “Android: do básico ao avançado” e de mais de 300 publicações. Especialista em Web: estratégia de inovação e tecnologia, e MBA em Desenvolvimento de Aplicações e Jogos Móveis. É fundador do Things Hacker Team e foi eleito um dos 10 nomes de open hardware em 2013.

rogliariping@gmail.com


iMasters iMasters #21 #22 Fevereiro Maio 2017


34 // USER EXPERIENCE

STORTFICATION: PROGRAMANDO UMA HISTÓRIA Por Vinicius Denny, Trabalha na comunicação da Bluehost Brasil

AS HISTÓRIAS (ou o storytelling) têm ganhado muita força na era em que nossa sociedade é submetida a um tsunami de informações dia após dia. Por conta da associação com emoções que boas histórias podem causar, há maior chance de informações passadas nessas narrativas serem incorporadas ao repertório de quem as consome. Os escritores contam as histórias utilizando palavras. Fotógrafos através de imagens. Produtores audiovisuais através de vídeos e outros recursos gráficos. No mundo cada vez mais digital em que vivemos, chegou a hora de os programadores/desenvolvedores assumirem seu papel. Porém, como alquimistas modernos que são, os programadores têm o desafio maior de combinar texto, imagem, vídeo, recursos gráficos e elementos de interação em uma história coerente e que se adapte a vários tipos de suporte (desktop, tablet, celular etc.). O desafio não para por aí. Os protagonistas normalmente não são personagens palpáveis, mas sim marcas, empresas ou causas. Há ainda a questão de se tratar de um universo aberto, o qual é difícil controlar (e, em alguns casos, até não recomendável) a progressão do leitor. iMasters #22 Maio 2017

Com todas essas dificuldades, é claro que ao desenvolver um site, muitas vezes, não estamos contando uma história nos moldes clássicos ou em uma narrativa completa, com começo, meio e fim. Porém, estamos utilizando recursos usados no storytelling para dar uma nova cara às nossas ideias e argumentos. Em outras palavras, um storyfication do nosso conteúdo web. Vamos falar sobre alguns recursos utilizados nas melhores histórias que podemos aplicar aos nossos projetos. O elemento herói Quando se trata do herói ou do protagonista da história, podemos recorrer ao pesquisador Joseph Cambell, que estudou as diversas histórias da mitologia e roteiros modernos para chegar a uma estrutura comum chamada de “A Jornada do Herói”. Essa sequência de etapas, que é base na escola Hollywoodiana, dá diversos insights sobre como uma história deve ser conduzida. Nosso herói, que no nosso contexto pode ser um produto, uma empresa, uma causa ou o próprio cliente/leitor, pode ser conduzido através de alguns passos dessa estrutura. É importante entender que o herói não inicia perfeito. Ele possui falhas, dúvidas e precisa


// 35

de ajuda, assim como superar diversas provações, com altos e baixos. Isso é o que permite ativarmos nossa empatia e nos conectarmos com a narrativa. 1. Mundo Comum 2. O Chamado da Aventura 3. Recusa do Chamado 4. Encontro com o mentor 5. Cruzamento do Primeiro Portal 6. Provações, aliados e inimigos 7. Aproximação 8. Provação difícil 9. Recompensa 10.O Caminho de Volta 11. Ressurreição do Herói 12. Regresso com o Elixir Progressão: começo, meio e fim Como falamos anteriormente, um site é um universo aberto, em que um usuário pode navegar livremente e sem qualquer ordem pré-estabelecida. Além disso, muitos sites não têm necessariamente todas as etapas e atos presentes. Porém, é útil termos em mente qual é o papel de cada um na construção da história. O começo ou o primeiro ato de uma história trabalhará a questão de contexto. No primeiro ato, há desde a conscientização de um problema até a

superação da resistência ao chamado da aventura (passo 1 a 4 na Jornada do Herói). Esse é o momento de introduzir sobre o que estamos falando e qual problema estamos solucionando. Em um site, esse ato está situado principalmente na homepage. Há um enfoque maior no conteúdo acima da dobra, onde há o espaço para se inserir um curiosity gap (abrir uma brecha para curiosidade), que instigue o usuário a continuar na sua história. Segundo o autor Lowenstein, isso ocorre quando se pode identificar uma lacuna entre o que atualmente se sabe e o que se gostaria de saber. O desenvolvimento da história é onde acontecem todos os desafios e provações (etapas 5 a 8 na jornada). Esse é o ato em que os argumentos e os fatos que embasam sua mensagem são inseridos. É um excelente espaço para um maior grau de elementos de interatividade, pois melhora a assimilação e cria um fator surpresa, retirando a passividade do usuário. A conclusão da história é quando há o retorno ao mundo inicial, mas transformado pela jornada ou pela solução apresentada. Aqui há a oportunidade de se mostrar o problema exibido inicialmente transformado pela solução apresentada. iMasters #22 Maio 2017


36 // USER EXPERIENCE

Nem sempre essa etapa está presente nesse contexto de storyfication de sites. Quando há a necessidade de se contar uma história que necessite se manter mais fiel à progressão de começo, meio e fim, um recurso muito útil são os layouts OnePage, que deixam claro para o usuário- leitor qual é a sequência a ser seguida. Causando as emoções certas Muitas vezes, queremos provocar emoção no usuário-leitor, já que conectar mensagem e emoção é um caminho seguro para ser memorizado e tirar o consumidor da inércia. Mas todas as emoções têm esse mesmo efeito? Intuitivamente, podemos pensar que emoções positivas são melhores nesse sentido. Porém, baseado na pesquisa de Jonah Berger sobre quais artigos no New York Times eram mais compartilhados (e diversas outras aplicações), pouco importa se a emoção gerada é positiva ou negativa. O que importa para se conduzir usuários à ação é se uma emoção ativa ou relaxa o leitor. Exemplos de emoções que ativam são admiração, excitação, diversão (positivas), raiva e ansiedade (negativas). Exemplos de emoções que relaxam são contentamento (positiva) e tristeza (negativa). Concretizar abstrações Bill Gates tem uma fortuna estimada em US$ 90 bilhões. Isso é obviamente impressionante, mas é algo tão longe da nosiMasters #22 Maio 2017

sa realidade que é até difícil entender essa proporção. E se disséssemos que alguém levaria 285 anos só para conseguir contar até US$ 90 bilhões? Ficou muito mais claro o quanto essa cifra é impressionante, certo? Abstrações são processos difíceis de serem processados por nós. Concretizar através de detalhes específicos e analogias é um recurso utilizado por todos bons contadores de histórias. Números são excelentes argumentos, mas são difíceis de lembrar. Ao trazer as informações com um comparativo mais concreto e próximo da bagagem do leitor comum, podemos entender com maior facilidade sua proporção e significados. Desenvolvedores possuem ao seu dispor diversas ferramentas de data visualization muito avançadas. Isso auxilia a concretização de proporções, linhas do tempo, progressões e conexões de uma maneira que mil palavras não poderiam contar.

Vinicius Denny trabalha na comunicação da Bluehost Brasil. É programador de fim de semana, palhaço e contador de histórias. Fascinado pelos impactos do mundo digital nas relações humanas.

vinicius.denny@endurance.com


DROPS DO MERCADO

// 37

O FÓRUM DE DESENVOLVEDORES DO PAGSEGURO ESTÁ COM CARA NOVA Para melhorar a experiência dos desenvolvedores, foi lançado, no fim do ano passado, o PagSeguro Developers, onde estão todas as documentações para realizar a integração básica ou avançada, bem como o passo a passo para aplicar módulos de integração para diversas plataformas de e-commerce. Mas faltava um espaço para os desenvolvedores trocarem ideias, compartilharem experiências e tirarem dúvidas. Agora não falta mais! A nova comunidade para desenvolvedores do PagSeguro substitui o antigo Fórum de Desenvolvedores e está muito mais organizada. Os tópicos estão divididos em sete categorias: Integração básica, APIs, Módulos e Plataformas, Bibliotecas, Sandbox, Novidades e Discussão Geral. Caso você tenha uma dúvida específica, antes de criar um tópico, pode realizar uma busca rápida. Basta digitar uma palavra-chave para saber se já existem discussões abertas sobre o assunto. O PagSeguro te convida a participar dessa comunidade!

COMPUTADOR QUÂNTICO DA IBM JÁ PODE SER TESTADO EM PLATAFORMA ONLINE A IBM lançou um novo programa de computação quântica chamado Q. Em poucos anos, a empresa planeja criar um computador quântico com mais de 50 qubits. O programa IBM Q fornecerá consultoria e serviços de computação quântica aos usuários, em um modelo muito parecido com o IBM Watson. O computador quântico de 50 qubits será 10 vezes maior do que um sistema de 5 qubits já instalado pela IBM. E o novo sistema será capaz de fazer coisas que computadores convencionais não podem fazer, incluindo descobertas científicas. “O computador quântico de 50 bits tem poder suficiente para desenvolver algoritmos e começar a resolver alguns problemas reais”, disse Scott Crowder, vice-presidente e diretor de tecnologia da computação quântica da IBM Systems. A IBM oferece um serviço online que pode dá acesso gratuito à plataforma de computação quântica. Mais informações em : http://research.ibm.com/ibm-q/qx

OBJECT STORAGE: ARMAZENAMENTO POR OBJETO Uma nova solução de armazenamento por objeto acaba de ser lançada no Brasil. Este Object Storage é resultado da parceria entre a Locaweb e a Red Hat, sendo que a Locaweb entrou com a infraestrutura e a Red Hat, com a mais nova versão (2.1) da solução da sua orquestração de armazenamento de objetos, o Red Hat Ceph Storage. As principais características, independentemente do plano escolhido, são: Infraestrutura no Brasil com rede redundante com 10 Gbit com a internet e entre os clusters; Alta disponibilidade: dados replicados em diferentes discos com cache SSD; Segurança: transferência de dados realizada de forma criptografada; Compatibilidade: API HTTP com sintaxe padrão de mercado (S3) e Economia: até 3x de um serviço de armazenamento por bloco. Além de estabelecer diferentes planos para necessidades de armazenagem distintas, há cotas de download inclusos em cada plano. Para saber mais, acesse locaweb.com.br/objectstorage.

iMasters #22 Maio 2017


38 // INTELIGÊNCIA NADA ARTIFICIAL

Como funcionam os sistemas imunológicos artificiais Por Alex Lattaro, Líder de Conteúdo do iMasters

N

iMasters #22 Maio 2017

NO MUNDO DA IA, aos poucos, iremos perceber que todos os algoritmos são baseados em comportamentos biológicos - que “nada” mais são do que modelos matemáticos capazes de replicar este comportamento. Hoje, abordaremos o algoritmo e algum uso prático dos Sistemas Imunológicos Artificiais (SIA). Para entender como o SIA funciona, primeiro, precisamos entender como funcionam os sistemas imunológicos dos vertebrados, que é o sistema utilizado como base. Existem dois tipos de sistemas imunológicos, o inato e o adaptativo. O sistema imunológico inato compreende a primeira barreira de defesa do sistema imunológico e permanece inalterado desde o nascimento do organismo. Este sistema é composto por macrófagos e neutrófilos, que são células fagocitárias, responsáveis pela fagocitose, processo de ingestão, das bactérias, dentre outros. O sistema adaptativo, por outro lado, é dotado de uma resposta imunológica mais eficaz, visto que a construção desta resposta é baseada em partes de antígenos dos patógenos. São considerados antígenos qualquer substância que, ao entrar em um organismo, é capaz de ativar o sistema imune. É composto, em sua maioria, por linfócitos (glóbulos brancos) produzidos na medula óssea e no timo. Cada linfócito é portador de

antígenos de receptores de um antígeno com uma determinada especificidade. Então, quando um linfócito encontra com um “antígeno ativador”, ele se transforma em uma célula efetora, que é responsável por combater especifica-


// 39

mente as partículas infecciosas. A partir daí, esta célula é capaz de se proliferar, gerando clones. Este fenômeno recebe o nome de teoria da seleção clonal Assim, os algoritmos imunológicos são baseados nos processos imunológicos. O processo imunológico, de uma maneira muito simplória, ocorre da seguinte maneira: Anticorpo em forma de árvore Criação de uma população randômica

Apresentação do Antígeno a população

Reprodução dos melhores e realização da mutação dos clones

A partir daí, começamos nossa aventura matemática computacional. Este modelo tem como objetivo simular processos evolutivos naturais com o intuito de resolver problemas de exploração combinatória e multimodais. Utilizando este modelo de computação evolutiva, somos capazes de otimizar sistemas computacionais e desenvolver poderosas abordagens para o machine learning. Para implementar um SIA, precisamos entender um pouco de teoria dos grafos, que não vamos abordar com profundidade. Caso você tenha interesse, recomendo que estude um pouco por fora. Vamos pensar da seguinte maneira: você tem um problema e precisa encontrar um conjunto solução para resolvê-lo. Você gera uma população formada por anticorpos (árvores geradoras).

Esses anticorpos geram novos indivíduos, que possuem as mesmas características dos anticorpos do pai. Esses clones evoluem por meio de operadores de maturação, gerando uma nova população. Para realizar esta mutação, basta sortear N arestas que fazem parte do anticorpo (grafo inicial), e trocá-las por outras que pertencem ao conjunto de corte, gerando assim, a árvore final.

Aresta Escolhida

Grafo

Corte

Árvore

Árvore Resultante

Uma função fitness é utilizada com o intuito de favorecer a reprodução dos indivíduos que tiveram contato com o antígeno e conseguiram se iMasters #22 Maio 2017


40 // INTELIGÊNCIA NADA ARTIFICIAL

transformar em células efetoras. Assim, a medida da afinidade, ou função fitness, é dada pelo grau de possibilidade da árvore geradora ter custo menor ou igual ao da menor árvore geradora mínima. Associada ao grafo crisp.

Para maior efetividade do seu algoritmo, é interessante que você tenha uma população bastante diversificada. A diversidade populacional é calculada pela razão entre o número de indivíduos únicos e o tamanho da população. O SIA é extremamente utilizado em data mining, otimização, robótica, reconhecimento de padrões e machine learning, pois é capaz de tratar os dados de uma forma mais eficaz e nos dar uma resposta mais assertiva, como veremos no exemplo abaixo. Além do SIA de seleção clonal apresentado neste artigo, existem outros tantos modelos de SIA como, SIA de seleção negativa e SIA clonal com seleção negativa, por exemplo. Um exemplo um pouco mais prático é a utilização da SIA no controle de redes elétricas inteligentes, os chamados Smart Grids. Imagine a seguinte situação: existe uma central distribuidora de energia, que possui outros vários pontos reguladores espalhados pela rede. Segundo a legislação brasileira, a tensão elétrica deve permanecer em um patamar específico, não podendo ser superior ou inferior a este valor. Para isso, existem mecanismos capazes de aumentar ou diminuir a tensão nestes pontos. A tensão varia de acordo com N fatores, um deles é o consumo da populaiMasters #22 Maio 2017

ção e a produção. Em um horário de pico, esta tensão tende a subir, e é aí que estes controladores de tensão precisam agir. Existe uma técnica chamada IVVC, ou integrated volt var control. A princípio, a resolução deste problema parece simples. Porém, se você tiver a dimensão real de uma rede elétrica, suas ramificações, infraestrutura e precariedade, vai saber que este problema não é tão simples. Caso você altere a tensão em algum ponto da rede, isso gera um efeito borboleta em toda a rede, alterando assim, outros N pontos. Como se não bastasse, todo este controle precisa ser feito em tempo real. Com esse cenário em mente, é possível entender que precisamos de constante monitoramento, uma análise preditiva da situação, e uma rápida resposta. Este é um dos cenários reais no qual é possível identificar a implementação deste tipo de solução. Muitos outros cenários são passíveis de resolução com os algoritmos de SIA. Para compreender um pouco mais sobre o assunto, eu recomendo o estudo de modelagem matemática e algoritmos avançados. Este estudo, possibilitará a melhora do seu desempenho cognitivo devido ao seu apelo dedutivo e lógico, assim, te proporcionando uma evolução como desenvolvedor.

Alex Lattaro é formado em Análise e Desenvolvimento de Sistemas pelo IFSP, cursa MBA em Business Intelligence no IBTA e trabalha como líder de conteúdo no iMasters. É desenvolvedor júnior de jogos, estuda e tem grande interesse nas áreas: Interação Humano Computador, Inteligência Artificial e Design. Também é músico, apaixonado por música, física, anime, séries e filmes.

alex.lattro@imasters.com.br


Inovação, paixão e tecnologia: uma base forte que transforma negócios. Pessoas apaixonadas por inovação realizam grandes mudanças e colocam em prática as melhores ideias. A Lambda3 acredita na sua ideia e, com tecnologia, vai ajudar você a transformá-la em realidade.

Projetos de Software

DevOps

Nuvem

w w w. la m b da 3 . c o m . b r


42 // CAPA

Por Mariana Anselmo, para Revista iMasters

iMasters #22 Maio 2017


// 43

iMasters #22 Maio 2017


44 // CAPA

Vamos quebrar alguns paradigmas acerca deste dispositivo. Primeiro, a ideia de wearable não é algo novo, a primeira noção de wearable surgiu em 1644, na dinastia Qing, e era chamado anel de ábaco, utilizado para realizar contas matemáticas. “Mas wearables são dispositivos eletrônicos utilizados no corpo”. Seguindo essa lógica, os primeiros auscultadores vêm do ano de 1910, e foram criados por Nathaniel Baldwin para a Marinha dos EUA. Depois, tivemos o famoso marca-passo, criado por Earl Bakken, em 1958. Nesse meio tempo, tivemos algumas invenções nada éticas, como a desenvolvida por Edward O. Thorp, em 1955, que criou um dispositivo do tamanho de um maço de cigarros que o ajudava a ganhar no jogo de roleta do cassino. Mais próximo do que temos atualmente, em 1972, Hamilton inventou o relógio digital. Aqui, somos obrigados a fazer uma citação de Douglas Adams: “Girando em torno deste sol, a uma distância de cerca de 148 milhões de quilômetros, há um planetinha verde-azulado absolutamente insignificante, cujas formas de vida, descendentes de primatas, são tão extraordinariamente primitivas que ainda acham que relógios digitais são uma grande ideia”. Brincadeiras à parte, o primeiro wearable como temos atualmente foi desenvolvido em 2008, com o advento do Fitbit, uma pulseira que, além de ser um relógio digital, monitora suas atividades físicas e se conecta com seu smartphone.

Quando se fala de wearables, é quase um pensamento automático a referência que fazemos a smartwatches e pulseiras. Não que esses dispositivos devam ser ignorados, mas existem outras tecnologias importantes também. Atualmente, vemos o uso de wearables em diversas frentes. Como exemplo, temos: · Treinos esportivos: desenvolvimento de dispositivos capazes de captar dados gerados pelos corpos dos atletas por meio de sensores e gerar informação útil capaz de melhorar a performance do profissional. Myontec Mbody connected shorts, Enflux Smart Clothing, WHOOP, Solos e K5 Wearable Metabolic Technology são alguns exemplos. · Reabilitação de pacientes: existem alguns wearables voltados para este nicho, um deles é o Serious Game chamado Fell Your Arm, desenvolvido em Unity3D e C# em cima do wearable Myo. O objetivo é a reabilitação de pessoas com ausência congênita e/ou adquirida de antebraço, motivando-as a utilizar a prótese.

Chega de história, o que temos hoje?

· Tecnologias assistivas para portadores de necessidades especiais: um dos dispositivos voltados para esse público foi desenvolvido por pesquisadores da CSU - Universidade do Estado do Colorado. Esse dispositivo permite que surdos consigam ouvir por meio de um dispositivo Bluetooth implantado na língua. Existe também uma luva que é capaz de gerar sons de acordo com os movimentos do usuário. Esse gadget serve tanto para demonstrações musicais, quanto para que pessoas com dificuldade auditiva consigam se comunicar por meio de libras mais facilmente.

Primeiro, vamos entender o termo em seu cerne e desmistificar o nome comercial. Wearables são IoTs vestíveis, que, por sua vez, são sistemas embarcados conectados à Internet. É claro que existem minúcias entre essas tecnologias, mas, rusticamente falando, é apenas isso.

· Mobile health: este mercado é um dos mais crescentes. Temos inúmeros dispositivos com o objetivo de monitorar batimentos cardíacos, pressão sanguínea, temperatura corpórea, níveis de glicemia, períodos férteis e até estresse. OvulaRing, HealthPatch MD, FreeStyle Libre Flash Gluco-

iMasters #22 Maio 2017


// 45

iMasters #22 Maio 2017


46 // CAPA se Monitoring System, MiniMed 530G System with Enlite Sensor, OneTouch Ping, Zio XT Patch e Quell são alguns exemplos. · Desenvolvimento de games: existe um cinto que foi desenvolvido para jogos de terror que mede o nível de ansiedade do jogador. Quanto mais alta a ansiedade, mais difícil o jogo se torna. Os níveis de dificuldade variam, podem aparecer mais inimigos, a tela pode ficar embaçada, o avatar do jogador pode ficar mais lento ou tonto. E a única maneira de diminuir a dificuldade é se controlar. Dificuldades técnicas no âmbito nacional Com esse breve panorama, é possível identificar que existem algumas pesquisas na área, mas ainda há muito a ser explorado. Parte da dificuldade que os pesquisadores e desenvolvedores encontram são: falta de incentivos financeiros, falta de conhecimento em microeletrônica, falta de conhecimento na área de pesquisa e falta de empatia com o usuário. O brasileiro não está acostumado a trabalhar com P&D (Pesquisa e Desenvolvimento). Muitos ainda têm a ideia de que pesquisa se faz apenas em instituições acadêmicas com o intuito de publicar artigos que não têm uma aplicação prática, embora isso não seja totalmente verdade. Além disso, P&D são projetos construídos também em empresas privadas, como Samsung, Sony e Intel. P&D não é algo aleatório que parte de um Brainstorm com os amigos. P&D tem a necessidade da obtenção prática de resultados e seus projetos funcionam como qualquer um: existe uma verba, um prazo de execução e um objetivo. A grande diferença é que no P&D existe ainda a necessidade de inovação e a preocupação com a sociedade e a ética. Segundo Pedro Minatel, pesquisador de IoT, existe um grande misto de dificuldades. “Aqui no Brasil, o que vejo é a falta de conhecimento e tecnologia. Quando você quer desenvolver um wearable e se depara com o hardware especializado para isso, a complexidade envolta no projeto é demasiada grande. Além disso, o mercado não é favorável a esse tipo de investimento, visto que um simples relógio chega a custar R$2 mil. É um investimento que somente grandes empresas são capazes de realizar”, afirmou. De acordo com Lina Lopes, do estúdio Lilo Zone, é preciso pensar em quem investe nas pesiMasters #22 Maio 2017

quisas em wearables. “A ideia de wearables é a de interfaces vestíveis, usáveis, circuitos eletrônicos digitais muito próximos ao corpo. Perguntei uma vez a um grupo de alunos de ensino médio, e eles me falaram de gadgets no corpo. Então, retomando, quem investe nesse tipo de pesquisa? Universidades, fundações, setores de inovação em empresas privadas ou algum órgão do poder público? Bem, na minha experiência, nenhum deles. Universidades brasileiras estão interessadas em pesquisas acadêmicas que gerem artigo, empresas estão interessadas em escalar produtos simples para consumo em massa, fundações e órgãos públicos estão interessados em fazer assistencialismo. A pesquisa em wearables não se encaixa em nenhum desses quesitos”, refletiu. Mas Lina pontua que é importante fazer um parêntese quando se trata de inovação. Isso porque ela afirma sentir que “quando se toca no conceito de inovação, acaba-se por associar a ideia também de startups que produzem gadgets ou alguma ideia de aplicação industrial para resolver alguma coisa que as pessoas chamam de ‘problema’”. Ela afirma ainda que, no seu ponto de vista, pesquisa envolve muita experimentação, algum rumo e alguns resultados errados. “Digo isso no bom sentido. Uma boa pesquisa tem de levar a uma série de erros e muita documentação. Em wearables, a indústria da moda e da saúde se interessam, mas não sabem como fazer isso. O investidor brasileiro não entende que investir é fomentar uma cultura, e não vislumbrar um aplicativo ou produto que lhe dê um retorno 10 vezes mais que o investido em um ano. Da minha experiência, as melhores pesquisas envolvem pessoas e tempo”. “Tem gente que pode dizer que o problema é importação de materiais, que não se fabrica no Brasil, que sai caro fazer algo assim. Mas o que notei é que com a quantidade de informação sobre o assunto que roda em rede, é possível fazer, comprar e inventar quase tudo na área de wearables. A dificuldade mesmo que mais encontro é tempo para se dedicar às pesquisas no assunto. E como não é uma área que se cria sozinho, é necessário juntar o pessoal de química, de design, de programação e quem mais for possível, então fica mais difícil ainda conciliar os tempos. Então, talvez, a dificuldade da pesquisa em wearables seja a falta de um pensamento mais amplo e norteador do que significa fazer pesquisa, experimentar, prototipar, escalar ou não. A dificul-


// 47 dade é mental. Acho que por isso o único campo capaz de abraçar o werables hoje, enquanto pesquisa, seja o da arte, porque tem pouco compromisso com mercado financeiro, escala industrial, mas entende muito bem de valor cultural e simbólico”, ponderou. E lembrou ainda que, no fundo, não há ninguém disposto a investir seriamente em pesquisa de wearables ou mesmo um edital de incentivo na área para pagar uma ajuda de custo às pessoas envolvidas. “E acredito que se tivesse, ia ser tanta burocracia, que metade do dinheiro da pesquisa seria para dar conta disso”, lamentou. Para se trabalhar com wearables, são necessários conhecimentos pesados em Big Data, data mining, programação, hardware, microeletrônica, desenvolvimento web, design, engenharia de software, arquitetura de software, protocolos, redes, segurança da informação, consumo de energia, biologia, química, física, matemática, pesquisa e ética. A importância da ética na pesquisa Este é um ponto bem sensível quando se fala de desenvolvimento de wearables. Afinal, quando abordamos isso, estamos nos referindo a dispositivos que são vestíveis para humanos (embora já existam pesquisas e produtos de wearables para animais). Caso você desenvolva um projeto, em determinado ponto, você terá que testá-lo em um humano. Nesse momento, você terá que submeter o seu projeto a um conselho de ética e esperar a sua aprovação para poder seguir com ele. Essa aprovação não é nada fácil de conseguir. Não por dificuldades burocráticas, mas sim por falta de conhecimento em pesquisa e ética pelos profissionais.

De acordo com as diretrizes éticas internacionais para pesquisas biomédicas envolvendo seres humanos, a eticidade em pesquisa implica: • Autonomia ou consentimento livre e esclarecido dos indivíduos e proteção dos grupos vulneráveis e legalmente incapazes; • Beneficência ou ponderação entre riscos/benefícios, atuais e potenciais, individuais e coletivos, objetivando o aumento nos benefícios e a minimização extrema dos riscos; • Não maleficência ou plena garantia de que danos previsíveis serão evitados; • Justição e equidade ou relevância social da pesquisa com vantagens significativas para os sujeitos, com igual consideração dos interesses. A pesquisa e o conhecimento tecnológico e científico têm como pressuposto a procura pela evolução da qualidade e dignidade da vida humana. Nesse quesito, é necessária a preocupação com a metodologia de pesquisa e a finalidade do produto. Prontos para aventura nível hard? Com toda essa ideia do que realmente são os wearables, quais as possibilidades que eles lhe oferecem e quais as dificuldades (financeiras, técnicas e éticas) encontradas no desenvolvimento desses dispositivos, você se acha pronto para se aventurar neste mundo? Se sua resposta foi sim, tenha em mente algo muito importante no desenvolvimento de tecnologias: a tecnologia é uma ferramenta para um fim, e não um fim em si só. Bem-vindo ao admirável mundo novo!

iMasters #22 Maio 2017


48 // MÉTRICAS

PRECISO DE MÉTRICAS. E AGORA? Por Wesley Nascimento, Especialista em análise e desenvolvimento de sistemas do Mercado Livre

Gerar métricas referentes a uma ferramenta, serviço ou sistema nem sempre é uma tarefa fácil, e muitas vezes não há informações suficientes para se chegar aos dados desejados. Desde o primeiro dia deste ano, estou encarando um projeto que me colocou nesse desafio. Para encará-lo, percebi que seria necessário usar diversas ferramentas, além de ter que desenvolver um software para captação e análise dos dados. Algumas das ferramentas que escolhi são bem conhecidas, outras menos. Não pretendo entrar aqui em detalhes extremamente técnicos, mas sim destacar a conexão que tenho feito entre elas para obter os resultados de que preciso. Espero que isso possa contribuir para a realização de outros projetos. O primeiro passo foi avaliar quais eram a principais dificuldades para obter os dados para a elaboração das métricas. Conclui que os cinco principais pontos eram: 1 - A presença da empresa em 19 países: o que implica ter que contatar diversas fontes de informação. 2 - Além do site, há todo o tráfego das APIs que são públicas para desenvolvedores terceiros, o que aumenta o volume de informações. 3 - Os logs do NGINX giram em pouco mais de 7Gbps. 4 - Nem toda informação que as áreas de negócio precisam estão nos logs. 5 - Como armazenar o resultado de forma eficiente? Considerando a quantidade gigantesca de informações que precisam ser lidas, uma coisa era ceriMasters #22 Maio 2017

ta: o software precisaria ser desenvolvido em uma linguagem robusta e de baixo consumo de memória dos servidores; caso contrário, em vez de um problema teríamos dois. Streaming dos logs O Kafka é uma plataforma de streaming distribuída que está sob a licença da Apache Software Foundation e foi utilizada para ser capaz de distribuir os logs do NGINX em diferentes consumidores. Na página do Kafka, é possível aprender mais a respeito e fazer o download gratuitamente. A aplicação do Kafka foi muito bem resumida com esta imagem, a qual mostra os Producers, que são os logs da NGINX. (https://kafka.apache.org/0101/images/kafka-apis.png)


MÉTRICAS // 49

Consumers Para desenvolver esse software, escolhi a linguagem Go para receber o streaming do Kafka, já que em vários testes realizados internamente ele se mostrou muito mais eficiente do que outras linguagens que já utilizamos. Em um outro artigo (veja o material através desta URL: https://goo.gl/YJJ4iE), é possível ver uma comparação entre Go e Grails e as vantagens de se migrar uma aplicação para Go - uma linguagem open source que pode ser baixada no próprio site. Armazenamento O Elasticsearch é uma excelente pedida quando o assunto é grande quantidade de dados, buscas complexas e fácil escalabilidade. Além de trabalhar com modo clusters e indexar os dados de forma incrível, oferece a facilidade de adicionar geolocalização às informações. Além do Elasticsearch, a empresa oferece o Kibana, que torna todas as consultas ao Elasticsearch extremamente simples - até mesmo pessoas não técnicas conseguem criar relatórios e gerar gráficos pela ferramenta. Mas nós ainda tínhamos um problema... Como eu disse, os logs do NGINX não atendem a 100% da necessidade de informações de que precisávamos. Decidimos utilizar o BigQueue(BQ), um sistema de tópicos de multiconsumidor, criado pelo próprio Mercado Livre e projetado para ser muito simples e escalável. A ideia principal desse sistema é que cada tópico possa ser consumido de forma assíncrona por muitos grupos de consumidores; os grupos de consumidores inscritos em um mesmo tópico receberão o mesmo grupo de mensagens, então podemos lê-las de forma paralela, usando muitos processos de leitura. O BQ é baseado no redis http://redis.io/ como seu armazenamento principal, mas poderia ser implementado em qualquer sistema persistente.

Uma das coisas mais atraentes do BQ é a ideia de ser assíncrono, o que nos permite criar uma API Restful (poderia ser qualquer outro protocolo mais rápido, se quiséssemos) que implementa um padrão de comunicação similar ao Amazon SQS, sendo muito fácil de integrar em qualquer plataforma/sistema. Para obter todas as informações necessárias para as métricas que eu tinha que desenvolver, passei a ter acesso aos tópicos criados por cada equipe (shipping, itens, orders, users e payments) dentro do Big Queue. Isso permite que eu acompanhe as atualizações on time e gere históricos, garantindo rapidez e precisão no trabalho. Conclusão Fazendo um balanço ao final dessa jornada - as métricas já estão quase todas prontas -, percebo que não foi necessária a utilização de nenhuma plataforma proprietária. Foram utilizadas apenas ferramentas gratuitas, sobre as quais cresce cada vez mais o volume de informações na Internet, tornando-se cada vez mais fácil implementá-las. E quem está pensando: “será que vale a pena mesmo utilizar essas ferramentas?”, eu o encorajo: vale, sim! Busque por mais informações e deixe também os seus comentários.

Wesley Nascimento cursou especialização em Análise e Desenvolvimento de sistemas e é Bacharel em Sistemas de Informação. Trabalha com desenvolvimento há 10 anos, é Gopher e apaixonado por tecnologia

wesley.nascimento@mercadolivre.com

iMasters #22 Maio 2017


50 // POR DENTRO DO W3C

A Web na era da realidade virtual Por Diogo Cortiz Professor na PUC-SP e pesquisador no Ceweb.br Por Newton Calegari Pesquisador no Ceweb.br e líder de projetos no escritório do W3C Brasil

U

iMasters #22 Maio 2017

Um dos primeiros projetos de realidade virtual foi pensando ainda nos anos 70. Ivan Sutherland escreveu, em 1965, o artigo seminal The Ultimate Display, considerado um marco inicial dos estudos sobre realidade virtual. Sutherland não era apenas um teórico, mas um engenheiro visionário que, além de publicar seus textos, desenvolveu o projeto The Sword of Damocles, em 1968, que ficou conhecido como o primeiro protótipo de óculos de realidade virtual. Desde então, o conceito de realidade virtual acabou se tornando objeto de pesquisa de diversas áreas, como comunicação, computação, engenharia e psicologia. Novas teorias foram construídas e técnicas foram aprimoradas. Ainda assim, durante todo esse tempo, a cada novo projeto de realidade virtual que surgia, percebia-se que a tecnologia ainda não estava pronta. O tempo de resposta entre a interação do usuário com o sistema era lento, e os óculos não tinham a resolução de vídeo adequada. A fluidez de interação ficava longe do nível adequado para uma experiência de imersão. Em 2012, no entanto, essa história começou a ganhar uma nova direção. O projeto do Oculus Rift arrecadou mais de US$ 2 milhões na plataforma Kicks-

tarter e demonstrou que as tecnologias estavam em níveis adequados para finalmente atender aos requisitos de realidade virtual. O ciclo de vida de qualquer tecnologia é assim: anos são dedicados em pesquisa e desenvolvimento para que se alcance um nível satisfatório de uso. O projeto Oculus Rift também foi importante para mostrar às grandes empresas que aquela abordagem tecnológica prometida há décadas estava perto de se tornar realidade. Em pouco tempo, o Google criou uma divisão de realidade virtual, com produtos como Google Cardboard e Daydream, a HTC lançou o Vive, a Microsoft desenvolveu o Hololens, dispositivo para realidade aumentada, e o Facebook comprou a empresa proprietária do Oculus Rift. Esse movimento das grandes empresas impulsiona ainda mais o desenvolvimento das tecnologias para realidade virtual. Para se ter uma ideia do mercado, um relatório da Goldman Sachs aponta que os investimentos em realidade virtual já atingiram US$ 3,5 bilhões em 2016. Cientistas, engenheiros, designers e programadores estão sendo alocados em grande quantidade para trabalharem especificamente nessa área. A geração de conhecimento e o processo de inovação sobre o tema só vêm crescendo.


// 51

iMasters #22 Maio 2017


52 // POR DENTRO DO W3C

A realidade virtual está se tornando um ramo estratégico nas empresas de tecnologia. Ela que era tida quase como um sinônimo de games até alguns anos atrás, começa a ganhar aplicações nas mais variadas esferas. Há diversos projetos nas áreas de educação, saúde, segurança e, claro, entretenimento. As possibilidades de interação que essa tecnologia nos traz são tão promissoras que especialistas já a chamam de a próxima grande plataforma computacional. O computador nos permitiu trabalhar com volumes de dados que eram impensáveis pelo homem. A Internet reconfigurou as nossas percepções acerca das distâncias no globo. Os celulares nos transformaram em nômades digitais. A realidade virtual, por sua vez, tem potencial para expandir nossas capacidades mentais e trazer rupturas para o que entendemos como presença. Diferentemente das outras tecnologias digitais, a realidade virtual consegue envolver os nossos sentidos de forma efetiva, o que cria um cenário inédito para a humanidade. Até então, nós interagimos com a tecnologia por meio de controles e telas, sabendo identificar os limites da tecnologia - pelo menos em seu quesito físico. Ao navegar pela Web, basta olhar para o lado, para além da tela do computador, para entender a fronteira entre a tecnologia e o mundo físico. A realidade virtual vem para mudar tudo isso. A promessa de todo pesquisador nessa área sempre foi a de proporcionar uma iMasters #22 Maio 2017

experiência imersiva para o usuário. Essa abordagem permite que você, ainda que esteja fisicamente em um lugar, possa ter a sensação e a experiência de estar em outro ambiente, simulado pelo computador - o que chamamos de sentido de presença. Isso é possível porque a tecnologia utilizada envolve nossos sentidos principalmente visão e audição - por meio de estímulos sensoriais que refletem esse mundo virtual - você enxerga e ouve tudo o que acontece nele, deixando de se preocupar com o que está ao seu redor no mundo físico. Você pode estar fisicamente sentando no sofá de sua sala enquanto curte um passeio pelas ruas de Mumbai usando óculos de realidade virtual. As interações também passam a ser mais fluidas. A liberdade de movimentos e a resposta imediata nesse ambiente são quesitos importantes para uma experiência imersiva. Nesse nosso exemplo, virando a cabeça para o lado direito, você não deixará de olhar para a tela de um monitor ou uma televisão, como acontece normalmente. O fato de estar com óculos de realidade virtual fará com que o mundo ao qual você está conectado responda a esse movimento. Você, então, que está sensorialmente andando por Mumbai, poderá dar uma olhadinha na loja do Sr. Prandeep, à direita. Essas características da realidade virtual abrem novas possibilidade de interação com a tecnologia. Estamos perto do fim paradigma das janelas que nos acompanha desde o princípio da compu-


ta tanto nessa abordagem - assim como Google, Microsoft, e os demais gigantes da tecnologia. A Web como um todo deve ser impactada nos próximos anos, e esse impacto deve acontecer de uma maneira disruptiva, com a Web se tornando a principal plataforma para os projetos de realidade virtual. A grande parte dos projetos de realidade virtual, de que se tem conhecimento hoje, é baseada em aplicação stand-alone em computadores pessoais. Há muita fricção nesse processo - as pessoas precisam fazer download e instalar uma aplicação para poder usá-la. Uma tendência é mover as tecnologias de realidade virtual para serem utilizadas pela Web. A proposta é acessar uma experiência imersiva com a mesma facilidade que acessamos um site. Caminhando nessa direção, o W3C está trabalhando na especificação WebVR, que traz uma API de integração de dispositivos de realidade virtual - óculos, controles e sensores - com aplicações Web. Com a implementação dessa especificação, é possível que o navegador reconheça os dispositivos de RV conectados na máquina do usuário para exibir o conteúdo diretamente nos óculos. A API também permite utilizar outras funções dos dispositivos, como dados de entrada para uma aplicação Web - por exemplo, a posição e a orientação dos dispositivos e um clique de botão no controle. Em outras palavras, a especificação de WebVR deve permitir que o conteúdo imersivo iMasters #22 Maio 2017

Foto: Peoplecreations - Freepik.com

tação. Não sabemos precisar o que vem a seguir, mas seguimos investigando de perto a ruptura que a realidade virtual, assim como a realidade aumentada, trará para humanidade. Nós, humanos, vivemos a realidade física como um espaço tridimensional. Ao passar a utilizar a tecnologia com essa mesma abordagem, teremos uma melhor experiência e um aumento de produtividade. Um recente estudo da consultoria Accenture, na área de neurociência, nos dá evidências de que somos melhores para trabalhar com instruções tridimensionais do que com aquelas bidimensionais. Nesse projeto, os pesquisadores transformaram o manual de instruções de um Lego, aquele simples papel que acompanha a caixa do brinquedo, em um manual tridimensional para ser utilizado com óculos de realidade aumentada. O simples fato de uma pessoa poder mover e girar cada uma das peças que estavam nas instruções, em vez de olhar para um desenho bidimensional em um papel, aumentou consideravelmente a sua produtividade. A interação social se reconfigura com a chegada da realidade virtual, principalmente por conta do sentido de presença que essa tecnologia nos permite alcançar. A Web já havia se encarregado de conectar pessoas geograficamente separadas por meio de dados, mensagens e vídeos. A realidade virtual chega para conectá-las por meio de seus sentidos. Não é por menos que o Facebook, a maior plataforma de rede social do mundo, apos-

Ilustração: Freepik

// 53


54 // POR DENTRO DO W3C

de uma página Web seja exibido diretamente nos óculos de RV, e que os controles substituam mouse e teclado. A especificação WebVR cria uma nova página em branco na história da Web, que deve despertar em nós perspectivas inéditas de como desenvolvemos aplicações web e projetamos interfaces e experiências do usuário, que desta vez atingem níveis sensoriais. Atualmente, ao acessar a página Web de um e-commerce, você pode navegar pelos produtos e acessar suas fotos em uma tela plana, utilizando basicamente mouse e teclado como dispositivos de entrada. A WebVR está sendo construída para permitir que você tenha uma experiência muito mais imersiva; que, ao colocar os óculos de RV e acessar um ecommerce, por exemplo, você não navegue simplesmente por uma página plana repleta de informações e imagens de produtos, mas que tenha realmente a experiência de estar lá, interagindo com cada um dos produtos. Esse exemplo pode até parecer a descrição de uma cena de uma obra de ficção, mas é uma inovação que está em curso. Extrapolar os limites das visualizações bidimensionais, passando a utilizar ambientes tridimensionais para interação e consumo de conteúdo, faz parte do conjunto de desafios que vêm sendo superados para permitir que a evolução da Web continue acontecendo, incorporando novas tecnologias e tornando possível navegar e vivenciar experiências imersivas. Essa é a visão de futuro que defendemos para a Web; é por isso que o W3C fomenta e contribui com a padronização de tecnologias de realidade virtual na Web. iMasters #22 Maio 2017

Diogo Cortiz é Professor na PUC-SP e pesquisador no Ceweb.br. Doutor e Mestre em Tecnologias da Inteligência e Design Digital, com PhD Fellow pela Université Paris 1 - Sorbonne. Realizou estágio pós-doutoral no laboratório de inteligência artificial e tecnologias criativas da Universidade de Salamanca - Espanha. Também trabalhou em um projeto de um documentário experimental, usando vídeo 360°, na Índia e no Japão.

diogo@nic.br

Newton Calegari é pesquisador no Ceweb. br e líder de projetos no escritório do W3C Brasil. Bacharel em Ciência da Computação e Mestre em Tecnologias da Inteligência e Design Digital (TIDD / PUC-SP). Trabalha e pesquisa sobre core web technologies. É editor da recomendação Data on the Web Best Practices do W3C, atua na área de padronização junto aos grupos de trabalho no W3C. Também trabalhou em projetos de coleta e transmissão de vídeo 360° no Japão.

newton@nic.br


// 55

Quando os recursos

//são ilimitados suas aplicações se transformam.

Hospede seus sites com a mesma liberdade que você desenvolve seus projetos: / Sites, espaço em disco, transferência e banco de dados ilimitados / Caixas postais de 10 GB / Domínio grátis no 1º ano

A partir de R$ 17,90*/mês Conheça essa e outras soluções: locaweb.com.br/hospedagem *Consulte as condições comerciais em nosso site.

iMasters #22 Maio 2017


56 // COMUNIDADE

COMO PARTICIPAR DE COMUNIDADE DE DESENVOLVEDORES Por Rodrigo “pokemaobr” Cardoso, Community Manager no iMasters

Como desenvolvedores, estamos acostumados a receber muita coisa sem dar nada em troca. Utilizamos a todo momento códigos que estão em repositórios públicos, em gerenciadores de dependências ou em sites de compartilhamento de código. Sem nem nos preocuparmos com o trabalho que alguém teve para deixar o código bem escrito, nas noites de sono que foram perdidas, naqueles bugs e issues reportados por quem utiliza e na paciência que tiveram em documentar as funcionalidades mais importantes. Muitas vezes, esses códigos são escritos por pessoas como você e eu, desenvolvedores que observam um problema e sofrem tentando resolvê-lo. Mas, diferente de muitos outros, pensam que poderiam estar ajudando os outros compartilhando a solução. E é isso que fazem: tornam público o código que desenvolveram, aceitam todo tipo de ajuda - desde report de problemas, até ajuda com a escrita de exemplos de utilização. Para ajudar os desenvolvedores desses milagres em forma de código, não é necessário ser o melhor em boas práticas, ter todo tempo disponível, ou ser um jedi da programação. Na maioria das vezes, não é necessário nem digitar uma linha de código. Utilizar um projeto, fazer uma divulgação e escrever um tuiMasters #22 Maio 2017

torial são ótimas maneiras de mostrar a esses desenvolvedores que seus códigos são de grande valia para muitas pessoas. Muitos desenvolvedores possuem uma desculpa muito característica quando se fala em compartilhar aprendizado: nunca são bons o suficiente. Podem ter 10 anos de experiência, mas sempre acham que não sabem nada, ou que não possuem didática para explicar, entre outras desculpas. Já está na hora de mudarmos esse pensamento. O pouco que sabemos sobre algo já pode auxiliar muito alguém que não sabe realmente nada. Por exemplo, se sabemos como instalar uma determinada biblioteca e vemos que na internet não existe um conteúdo em português, por que não produzir um tutorial ensinando? Iremos gastar 5-10 minutos e poupar vários minutos de quem vai utilizar a biblioteca pela primeira vez. E sim, você deveria ajudar a divulgar e espalhar conhecimento em tecnologias, linguagens e projetos que você utiliza no seu dia a dia. Todo o dia aprendemos um pouco mais sobre tudo a custo zero, utilizando a internet, em sites como o iMasters, Medium e Stackoverflow, ou no Slack e Telegram, nas redes sociais... E se não tivesse alguém divulgando esse conhecimento, provavelmente você não seria


// 57

um desenvolvedor tão bom quanto é hoje. Compartilhando o que você aprendeu ou descobriu, você pode influenciar outros desenvolvedores mais novos a conhecerem mais sobre o assunto. A sensação de receber um feedback de alguém que conseguiu evoluir em um projeto ou aprender algo com um post seu é indescritível. Só quem já recebeu sabe o quanto isso é importante para a carreira dos grandes desenvolvedores de software. Fora os meios digitais de interação. Pessoas de todos os locais se reúnem para conversar, divulgar e evoluir seu conhecimento fisicamente em comunidades de desenvolvedores (uma comunidade é um conjunto de pessoas que desenvolvem em uma determinada tecnologia e se encontram em algum evento na sua cidade, no seu estado ou em seu país). Esses encontros proporcionam aos desenvolvedores juniores um contato direto com desenvolvedores seniores, uma troca de experiência muito enriquecedora. Uma ferramenta que vem sendo bastante utilizada para a divulgação desse tipo de comunidade é o Meetup (meetup.com). Pelo Meetup é possível encontrar por proximidade geográfica quais os grupos que existem perto de você e quais os próximos encontros que irão ocorrer nos grupos do quais você faz parte. Existem grupos de todos os tipos, linguagens, tecnologias... Node, Front-End, Java, PHP, Ruby, Programação Funcional, iOS, GDGs (google developer groups), Docker, AWS, frameworks em geral e até mesmo compartilhamento de experiências em língua inglesa. Muitos tipos de encontro de desenvolvedores existem, mas alguns são mais comuns acontecerem: • Beer, pinga, pub e similares - eventos onde os desenvolvedores se encontram em um bar ou restaurante para dividir experiências de modo descontraído. É um ótimo meio de conhecer uma comunidade e se aproximar ainda mais dos membros. Não há distinção entre membros novatos e antigos, já que o ambiente é propício para todo tipo de interação. Além de ser uma ótima forma de conhecer novos amigos, caso você tenha se mudado para uma nova localidade. Um exemplo desse tipo de encontro é o Devbeers. • Meetups ou Talks - eventos menores de palestras, realizado geralmente em um espaço de alguma empresa ligada a tecnologia e a qual a comunidade está envolvida. Geralmente, um ou dois palestrantes compartilham um tema técnico, de boas práticas

ou de vivência. Além das palestras, existem alguns momentos de descontração e de interação entre os membros, já que geralmente ocorrem coffee breaks ou mesas redondas. Ocorrem geralmente à noite ou em um dia de final de semana. • Dojos - eventos de codificação onde os participantes se ajudam em função de resolver um desafio, criar funcionalidades ou conhecer uma nova tecnologia. Geralmente um de cada vez coloca a mão no código, enquanto outros participantes dão sugestões para melhorar o desenvolvimento, ensinar um caminho ou achar uma solução em conjunto. • Eventos maiores - eventos realizados por grandes comunidades ou empresas com o intuito de promover o compartilhamento de conhecimento. É um ótimo lugar para conhecer todas as novidades de tecnologia. Além de interagir com grandes nomes do mercado e as ferramentas mais atuais. Com certeza muitas comunidades locais estarão presentes nesses eventos e você terá a chance de conversar com todos. São locais ideais para aumentar a sua rede de contatos. O InterCon (intercon.imasters.com.br) é um grande exemplo de evento maior. Você deveria participar desses encontros e conhecer as comunidades. Isso melhora nosso nível técnico, ajuda a aprender novas tecnologias, proporciona interação com os criadores das ferramentas que utilizamos... É importante para nos desenvolvermos como pessoas. É um ótimo jeito de melhorar nossas skills para buscar aquele crescimento profissional que tanto almejamos. Então, o que está esperando? Procure no Google, entre no Meetup, vá ao fórum do iMasters agora e participe da comunidade da sua tecnologia preferida. Com certeza a sua vida como desenvolvedor vai ser melhor do que você imaginou. Rodrigo “pokemaobr” Cardoso é Bacharel em Matemática Aplicada e Computacional pela Universidade Federal Rural do Rio de Janeiro e tem MBA em Engenharia de Softwares Orientado para Serviços pelo IBTA. Atualmente, é Community Manager no iMasters. Desenvolvedor desde 1999. Evangelista PHPSP. Desenvolve sistemas desde batalhas Pokémon em mIRC a robôs automatizadores de tarefas.

rodrigo.cardoso@imasters.com.br

iMasters #22 Maio 2017


58 // API

O QUE SUA APLICAÇÃO PODE FAZER COM A INTEGRAÇÃO DE HELPERS E APIS QUE GERENCIAM LINHAS TELEFÔNICAS Por Helton L Boaron, Key Account de Canais na DirectCall Telecom

Já não é novidade que o mercado brasileiro despertou para a tendência das integrações. A boa notícia é que isso pode ser ainda mais rápido e fácil do que muitos devs imaginam. Não são necessários conhecimentos em telefonia, investimentos em CTI (Computer Telephnony Integration) ou ainda em adaptadores VOIP. Por meio de APIs e Helpers disponíveis no mercado, é possível aos desenvolvedores utilizar estas soluções de telefonia, como por exemplo executar e receber chamadas, realizar toda a gestão de SMS, gravar chamadas na nuvem da operadora e ainda contar com relatórios inteligentes. Tudo de dentro das aplicações, sem que precisem se preocupar com a infraestrutura necessária para tal. O funcionamento é simples, pois linhas telefônicas vinculadas a APIs e Helpers podem ser controladas pela Internet a partir de requisições HTTP para gerar uma ligação e receber um status em JSON ou XML, por exemplo. Sendo assim, aplicações como CRM, ERP, helpdesk, e-commerce ou qualquer outro sistema que armazene dados de pessoas podem passar a contatá-las sem grandes dificuldades.

iMasters #22 Maio 2017

Existem Helpers disponíveis que possuem uma interface amigável, são personalizáveis e instantaneamente acessíveis por meio de plug-ins para, por exemplo, originar ligações a telefones armazenados no banco de dados do sistema.


// 59

Com as APIs disponíveis é possível enviar SMS, ou executar ligações de forma proativa, por exemplo. Caso você esteja trabalhando em um e-commerce que possua uma plataforma omni-channel, este tipo de solução pode ser explorada para enviar notificações, alertar e ações de relacionamento com o seu cliente em todos os canais disponíveis. Nós entendemos que um desenvolvedor deve concentrar esforços no que ele faz de melhor, ou seja, codar. Para tal, ele não deve gastar esforços com telefonia, assim, Helpers e APIs podem facilitar o desenvolvimento, principalmente se tiverem uma boa documentação e fácil integração com o seu sistema. Como exemplo, temos nossos próprios Helpers e APIs. Caso você tenha interesse, pode começar agora mesmo a sua integração. Acesse a documentação técnica completa em doc.directcallsoft.com, um vasto conjunto de instruções, 100% grátis e em português. Para observar o comportamento dos Helpers rodando, acesse o link de produção: painel.directcallsoft. com. Cada uma das janelas desse link consome um Helper independente, que permite explorar cada função separadamente. Também é possível testar todas essas funcionalidades. Nós desenvolvemos um sandbox que fornece créditos gratuitos para testes reais. É possível realizar chamadas para qualquer telefone, gravá-las, enviar mensagens de SMS convencionais, em lote e até em áudio. Faça todos os testes observando exemplos de linhas de código em CURL, PHP, Java, Python, .NET, Delphi, entre outras linguagens.

Para saber mais, acesse: directcall.com.br/playground. Helton L Boaron é graduado em Marketing, com MBA em Gestão de Negócios e atua como Key Account de Canais na DirectCall Telecom. É especialista em relacionamento comercial, focado no desenvolvimento de integrações de APIs e apps e em ajudar desenvolvedores a diferenciarem seu sistema frente à concorrência

helton@directcall.com.br

iMasters #22 Maio 2017


60 // DEVOPS

MAIS DEV NO SEU OPS - TESTE DE CARGA COM ARQUITETURA SERVERLES E GOLANG Por Gleicon Moraes, Diretor de Engenharia de Dados da Lucid

Neste artigo, vou falar sobre um uso prático de Arquitetura Serverless. Amazon Web Services, Google Cloud e Microsoft Azure oferecem versões desse produto, que é a automação para rodar uma porção limitada de código sem a necessidade de dependência ou gerenciamento de sua infraestrutura. O nome adotado em inglês é Serverless Architecture, uma referência comercial à alternativa de provisionar servidores e infraestrutura para uma aplicação. A oferta mais famosa e que vamos usar neste artigo é o AWS Lambda (https://aws.amazon.com/lambda/). É um tema interessante para estudar por alguns motivos: internamente, a automação usa linux containers e cgroups para limitar o impacto da função. Essa arquitetura requer que um processo longo seja quebrado em funções - não tem como fazer um ERP “rodar” na Arquitetura Serverless só enviando o mesmo código para lá. A ativação das funções acontece por eventos e a escalabilidade horizontal é alta. Eventos podem ser gerados por operações distintas como chamadas em uma API Gateway, criação de arquivos em um object storage e mensagens em uma fila. Cada função recebe eventos e gera eventos, possibilitando o encadeamento por meio de filas de iMasters #22 Maio 2017

mensagens ou APIs. Cada chamada usa uma instância da função, e elas podem ser executadas em paralelo. É fácil gerar volume nesse modelo se sua função for desenhada da maneira correta. Para usar o AWS Lambda, só é necessário conhecer duas coisas: cloud e programação. O conhecimento de cloud é o cliente de linha de comando e configuração de credenciais. Conhecimento de permissões e papéis (ARN) são úteis para integrar com outros produtos, mas não indispensáveis, pois vamos usar uma ferramenta que abstrai a configuração inicial. Em programação, é o básico: funções, utilizar bibliotecas e tipos de dados. Vou fornecer um exemplo utilizando a linguagem Go, que é bem simples. Minha motivação de compartilhar esta experiência é que os temas em torno da cultura devops têm se tornado repetitivos: processamento de logs, automação com Docker, Openstack e Continuous Deployment. Resolvi escrever minha experiência com AWS Lambda e Go para falar um pouco mais de programação e solução de um problema que é difícil para o dono em uma equipe de tecnologia encontrar: testes de carga. Meu objetivo era adotar ou criar uma ferramenta para teste de carga de um e-commerce como preparação para a Blackfriday. É um evento esperado


// 61

o ano todo, com tradição de falta de disponibilidade por problemas de arquitetura e desenvolvimento em quase todas as empresas, portanto existia uma ansiedade de criar um modo de testar até o último minuto e, ao mesmo tempo, não fazer o “freeze” de novas features e correções. Fazer o “freeze” significa achar um ponto estável da plataforma e torcer para que esse ponto seja bom, evitando modificar até o evento. Testamos algumas ferramentas e empresas para testes específicos de fluxo de navegação e automação. Os testes das aplicações eram úteis, mas não conseguimos escala para ver efeitos de tráfego repentino. A variação repentina de carga de acesso é um teste muito importante para código e infraestrutura. Queríamos ver falhas em tempo de reação de autoscaling, de escolha de métricas para a medição da performance, queries de banco mal construídas, impacto de cache frio e quente, entre outros detalhes que só aparecem quando o sistema está em produção. É difícil criar um perfil de carga parecido com o de produção em volumes diferentes, mas podemos usar algumas estratégias para chegar perto. Uma das estratégias escolhidas foi construir testes funcionais para serem executados semanalmente em fluxos de compra e fechamento de pedidos, naturalmente menores que os fluxos de navegação, e criar ferramentas que pudessem elevar o baseline de acesso da plataforma toda em até 10 vezes mais que o fluxo de um dia normal. Assim, a plataforma já estaria ocupada quando os testes mais elaborados fossem executados e eles teriam impacto próximo da realidade. Isso nos permitiria entender como a busca de produtos, adição de produtos em carrinho, cálculo de fretes e fechamento de pedidos se comportam com a plataforma fora do uso normal, algo a que nenhum outro tipo de teste conseguia responder até então. É importante ter sua plataforma instrumentada para coletar métricas de performance e uso e coletar alguns períodos como dias de semana, finais de semana, promoções e resultado de e-mail marketing, propaganda na televisão e push notifications para dispositivos móveis. Eu estava estudando uma ferramenta chamada Apex (http://apex.run/), pois queria usar Golang para programar para o Lambda. Já havíamos utilizado AWS Lambda para automatizar regras de detecção de robôs (vídeo em https://www.youtube.com/

watch?v=xskM8XA2bqE), e eu estava curioso sobre como usar o AWS Lambda para fazer uma monitoração simples de disponibilidade que tinha em mente. Faz algum tempo que programo em Golang e queria usar essa linguagem em vez de Python ou JavaScript. Escolhi Golang pois o scheduler e as goroutines usam bem os cores da máquina. Além disso, a biblioteca padrão oferece um bom suporte para o protocolo HTTP. Havia feito alguns programas para executar no terminal e gerar tráfego na plataforma, e um deles foi usando a biblioteca Vegeta (https://github.com/ tsenart/vegeta), que consegue fazer requisições em paralelo para um alvo com perfis de quantidade e intervalo variáveis.

package main import ( “fmt” “time” vegeta “github.com/tsenart/vegeta/lib” ) func main() { rate := uint64(100) // per second duration := 4 * time.Second targeter := vegeta. NewStaticTargeter(vegeta.Target{ Method: “GET”, URL: “http://localhost:9100/”, }) attacker := vegeta.NewAttacker() var metrics vegeta.Metrics for res := range attacker.Attack(targeter, rate, duration) { metrics.Add(res) } metrics.Close() fmt.Printf(“99th percentile: %s\n”, metrics.Latencies.P99) }

* Exemplo de teste de carga com o Vegeta iMasters #22 Maio 2017


62 // DEVOPS

Pensei em usar o Lambda para rodar o pequeno gerador de carga em paralelo. Gerar carga de uma máquina ou da sua máquina local não chega ao volume necessário para saturar uma arquitetura com CDN, cache e autoscale. Se eu quisesse estimular o crescimento de infraestrutura, teria que gerar requisições suficientes para deixar a capacidade ocupada e também variar as URLs para não ter resultados servidos de cache como resposta. Essa parte depende muito da aplicação testada. Usando o exemplo acima, criei uma função que executava um número fixo de testes em uma URL. Minha intenção era deixar o serviço ocupado com requisições normais que eu poderia gerar em um arquivo e disparar funções para eles. Você pode utilizar a biblioteca GoQuery (https://github.com/PuerkitoBio/goquery) para fazer parsing do html e distribuir requests para links encontrados aleatoriamente. Para efeitos práticos, neste artigo vou manter o código simples para executar uma URL por vez:

attacker := vegeta.NewAttacker() var metrics vegeta.Metrics for res := range attacker.Attack(targeter, rate, duration) { metrics.Add(res) } metrics.Close() return &metrics, nil } func main() { apex.HandleFunc(func(event json. RawMessage, ctx *apex.Context) (interface{}, error) { var r ReturnMessage var m message // var j []byte var err error

r = ReturnMessage{}

package main import ( “encoding/json” “time” “github.com/apex/go-apex” “github.com/tsenart/vegeta/lib” ) type message struct { Value string `json:”value”` } type ReturnMessage struct { Value interface{} `json:”value”` } func loadtest(url string) (*vegeta.Metrics, error) { rate := uint64(100) // per second duration := 5 * time.Second targeter := vegeta. NewStaticTargeter(vegeta.Target{ Method: “GET”, URL: url, }) iMasters #22 Maio 2017

if err = json.Unmarshal(event, &m); err != nil { return nil, err } if r.Value, err = loadtest(m.Value); err != nil { return nil, err } }) }

return r, nil

* Função para teste de carga com o Vegeta no AWS Lambda O programa é bem simples: o corpo da função principal consiste em um handler (apex.HandleFunc) que recebe uma função com assinatura func(event json.RawMessage, ctx *apex.Context) (interface{}, error). O ponto de entrada é a função main(). Toda a chamada da função de Lambda recebe um evento do tipo json.RawMessage. Em nosso exemplo, o evento atributo “value” contém a URL a ser tes-


// 63

tada. A função loadtest recebe uma URL e executa 100 requisições por segundo, durante 5 segundos. Quanto mais funções você executar, mais testes serão aplicados nessa URL. É uma boa ideia limitar o tempo e o escopo de execução de sua função abaixo dos limites do lambda - ele pode chegar a 30 segundos usando 1.5GB de memória. Isso garante uma execução rápida e reaproveitamento de instâncias da função. O AWS Lambda funciona desta maneira: um evento chega ao sistema, e ele executa uma cópia da função, que vive dentro de um container. Essa cópia pode ser reaproveitada sem prejuízo ao tempo da requisição. A primeira requisição enviada cria o artefato que executa a função e pode demorar um pouco mais para responder. Criar o ambiente para uma função pelo painel não é complicado, mas não é reproduzível. Aí é que o runtime do Apex entra. Se a sua configuração para o CLI da AWS está funcionando, o Apex vai funcionar sem problemas. Instale o Apex seguindo as instruções do site (http://apex.run/), instale o ambiente de Golang de acordo com as instruções do seu sistema operacional (https://golang.org/doc/install).

$ mkdir loadtest $ cd loadtest $ apex init

Responda às questões, e pode usar o default. Talvez tenha que aumentar o timeout, dependendo de sua conexão e do tempo de resposta do servidor testado. Coloquei o código e o roteiro de testes neste repositório: https://github.com/gleicon/apex_loadtest . É só clonar com git e não precisa dos passos acima. Só é necessário executar apex deploy. Com a função instalada, você pode usar comandos do bash para gerar a quantidade de testes em paralelo que quiser. Por exemplo, para mandar 10000 gets em paralelo para o site www.example:

$ for a in `seq 1 10000`; do echo ‘{“event”:{“value”:”http://www. example”}}’ | apex invoke loadtest & done Pode usar xargs também ou criar uma função que coordene as outras funções. A chamada da fun-

ção echo ‘{“event”:{“value”:”http://www.example”}}’ | apex invoke loadtest significa que estamos enviando um evento para a função loadtest. É isso que a API Gateway da AWS ou kinesis faz em paralelo. O custo de 5 baterias de teste com aproximadamente 100 mil requests não ultrapassou US$ 2. Use apex logs para ver o progresso da execução e erros. Você pode coletar métricas utilizando SQS ou outra fila, e criar um mecanismo para abortar o teste - da maneira apresentada, a função é executada completamente, mas se a função ouvir um tópico ou mensagem de fila, pode verificar de tempos em tempos se existe uma mensagem de interrupção. Originalmente, o AWS Lambda suporta Java, JavaScript e Python. Mas, por meio de um shim feito em javascript (pequeno programa que serve para carregar outro programa) e um build usando cross compile de golang, o Apex cria um pacote que permite executar o código em Go. Além disso, a biblioteca que ele fornece traduz os eventos e chama uma função padrão para eles. Você pode dividir seu código como faria normalmente, mas deve ter um arquivo main.go no diretório da função. Como exercício, faça a configuração do Gateway API para disparar uma rodada dessa função por um POST. Este é o tipo de projeto que vale a pena ser feito para quebrar a barreira de dev e ops, pois usa uma deficiência de entrega e conhecimento de arquitetura - a dificuldade de saber como o todo funciona quando as equipes de dev estão trabalhando em partes ou serviços - para gerar uma oportunidade de colaboração. E também sai do comum da programação em equipes de devops, que geralmente gira em torno de ferramentas de automação de configuração. Gleicon Moraes é programador, sysadmin e palestrante de conferencias nacionais e internacionais. Gosta de trabalhar com arquitetura, bancos de dados não relacionais, programação para sistemas de larga escala e relacionamento entre desenvolvedores e sysadmins. Escreveu dois livros: “Programação Avançada em Linux” em 2005 pela Novatec e “Caixa de Ferramentas Devops” pela Casa do Código. Trabalhou em empresas como Terra, UOL, ATB2W e Luizalabs. Programa desde os 12 anos de idade e transita entre as áreas de operações e desenvolvimento para backend na Internet desde 1996. Atualmente, trabalha com Arquitetura para grandes volumes de dados e Big Data como Diretor de Engenharia de Dados da Lucid. .

gleicon@gmail.com

iMasters #22 Maio 2017


64 //

DROPS DO MERCADO UMBLER LANÇA NOVA VERSÃO DO APP BASEADA EM FEEDBACK DOS USUÁRIOS

A Umbler, startup de cloud hosting para agências e desenvolvedores, lança redesign do seu app: “repensamos todo o design de acordo com os feedbacks dos nossos usuários”, explica Fábio Borges, CTO. Além do feedback incorporado na nova interface, a startup utiliza o voto dos usuários como fonte para priorizar novos recursos, como Node.JS e uma nova opção de contas de e-mail. A empresa, que fez dois anos de fundação em abril, também tem investido em conteúdo educativo, com o lançamento do Umbler Academy - repositório de materiais focados em desenvolvimento, gestão e marketing digital - no começo do ano. Ainda em 2017, a Umbler pretende dar início à sua internacionalização na América Latina: “vamos começar com a expansão na Argentina, e depois partir para países de língua inglesa”, explica Borges.

GERENCIANET LANÇA SDK PARA DELPHI Atendendo a pedidos dos clientes, a Gerencianet disponibilizou uma nova SDK, desta vez desenvolvida em linguagem Pascal exclusivamente para a ferramenta Delphi. A SDK foi desenvolvida para ser compatível com versões antigas e recentes. O suporte da Gerencianet será oferecido para as aplicações desenvolvidas no Delphi Berlin 10.x, única versão oficial que a Embarcadero oferece suporte. A SDK pode ser importada somente em aplicações desktop win-32. A Gerencianet também disponibiliza SDKs em PHP, .NET, Node JS, Ruby, Phyton e Java, além de módulos prontos para diversas plataformas, como Magento, Prestashop, OpenCart, BoxBilling. Tudo isso pode ser integrado com três opções de checkout: transparente, via lightbox e link de pagamento. Com a Gerencianet, é possível emitir cobranças únicas ou recorrentes (assinatura) por cartão de crédito ou boleto registrado com tarifas e prazos de disponibilização de saldo personalizados. Para saber mais, acesse gerencianet.com.br/api.

iMasters #22 Maio 2017

MERCADO LIVRE ABRE SEU CAMPUS PARA EVENTOS DE TECNOLOGIA A nova sede do Mercado Livre, construída nos moldes dos campUS de tecnologia do Vale do Silício, tem sido o local do encontro de profissionais de tecnologia para meetups, workshops, hackathons e demais eventos voltados para o setor de e-commerce. O auditório disponível no complexo, com capacidade para 200 pessoas, já recebeu eventos realizados por diversas empresas e comunidades do setor, entre elas a Kaszek, as comunidades de Go e de Phyton, entre outras, além de iniciativas do próprio Mercado Livre. “Aproximar parceiros e clientes é um dos objetivos da construção dessa nova sede, além de encantar talentos e promover sustentabilidade. Queremos que esse campus se torne cada vez mais um espaço de encontro e de geração de conhecimento para a indústria de tecnologia”, destaca Nicolas Coniglio, gerente de Desenvolvimento do Mercado Livre no Brasil.

UMA NEXTGEN CDN PARA CHAMAR DE SUA A GoCache, CDN de última geração líder no mercado SMB nacional, anunciou uma nova funcionalidade exclusiva em seu Web Application Firewall (WAF). São regras customizáveis para filtragem de acesso, utilizando como critérios URL, Método HTTP, Cookies, User Agent, HTTP Referer, Endereço ou Range de IP, País e Continente de Origem para bloquear, liberar ou solicitar uma confirmação do usuário (captcha) antes de permitir o acesso. Os usuários do WAF GoCache ganham enorme flexibilidade para gerenciar granularmente a segurança em suas aplicações. A empresa também anunciou o seu programa de afiliados, com o objetivo de permitir que desenvolvedores e agências obtenham novas receitas de forma simples e descomplicada. A remuneração no programa possui dois componentes, uma taxa de sucesso paga por cada cliente convertido e um repasse mensal baseado na nova receita gerada. Detalhes do programa podem ser acessados diretamente no site da GoCache, link “Afiliados”.


// 65

<MundiPagg> 1 2 3 4 5 6 7 8 9

Planos e assinaturas Wallets Checkout transparente Checkout por e-mail Multimeios de pagamento Multi-compradores

// Quer saber mais? acesse mundipagg.com/novaapi

iMasters #22 Maio 2017


66 // CÓDIGO ABERTO

Editor de Texto Hipster - Parte 02 Por Kemel Zaidan, Evangelista Locaweb em tempo integral e de software livre nas horas vagas

N

Na edição passada, falamos de editores de texto alternativos para você “pagar de descolado” no escritório enquanto explora novas funcionalidades ao escrever o seu código. Mas em tempos de Internet e trabalho remoto, nada melhor do que ter a sua ferramenta mais importante sempre à mão, não importa o local onde esteja. Os editores de texto abaixo funcionam na nuvem e podem ser instalados em um servidor próprio, permitindo que você programe colaborativamente com alguém do outro lugar do mundo ou faça aquela alteração de última hora no projeto. KodeWeave - é fã do Codepen.io, mas gostaria que ele pudesse ser instalado na sua infraestrutura de forma a compartilhar de maneira mais fácil experimentações com colegas ou alunos? Então vai adorar o KodeWeave. Com ele, é possível escrever código HTML, CSS e JS em uma das quatro janelas disponíveis e ver o resultado na hora, bem no estilo já conhecido por muitos desenvolvedores frontend. https://mikethedj4.github.io/kodeWeave/ ICEcoder - trata-se de uma web IDE que faz uso do excelente CodeMirror para highlight e edição de código. O ICEcoder necessita

iMasters #22 Maio 2017

apenas de PHP5 para funcionar e oferece recursos avançados, como múltiplos cursores, login, temas, fechamento automático de tags, Emmet, diff visual, hints e outras opções que normalmente só seriam encontradas em um editor desktop. https://github.com/mattpass/ICEcoder Codiad - o Codiad foi construído para ser simples, rápido e interativo, mas apesar disso não fica atrás de nenhuma das outras opções ao oferecer uma série de recursos, como suporte para mais de 40 linguagens, sistema de plugins, suporte multiusuário, colaboração em tempo real etc. Ele necessita de PHP5+ e Apache2 para funcionar, mas dispensa o banco de dados. https://github.com/Codiad/Codiad Eclipse Orion - é um projeto da Eclipse Foundation, a mesma que possui a famosa IDE de mesmo nome utilizada por muitos desenvolvedores. Ao contrário desta, o Orion é escrito em JavaScript e possui recursos avançados, como code completion, checagem de erros, mapa de código, além de suporte para diferentes temas visuais e uma excelente integração com o Git através da interface web do editor. https://orionhub.org


// 67

Foto: Peoplecreations - Freepik.com

Eclipse Che - mais um projeto da Fundação Eclipse, só que, desta vez, em Java. O sistema de funcionamento do Che se diferencia um pouco do Orion por fazer uso intensivo de containers Docker. O Che funciona com qualquer imagem Docker tanto do Dockerhub quanto de um registry próprio. Além disso, ele permite que você trabalhe via web ou com outro editor desktop de sua preferência, ao montar o workspace localmente via SSH. Se não bastasse isso, o Che é capaz de “injetar” agentes no workspace de forma a oferecer recursos como depuradores e profilers, mesmo quando utilizado no navegador. Definitivamente, vale a pena conferir. https://eclipse.org/che

Kemel Zaidan é um pseudo-programador, metido a jornalista, com alma de artista e evangelista Locaweb.

kemel.zaidan@ locaweb.com.br

iMasters #22 Maio 2017


68 // SEGURANÇA

O QUE VOCÊ PRECISA SABER SOBRE RANSOMWARE Por Marcelo Lau , Coordenador dos cursos de MBA em Gestão de Cibersegurança da FIAP RANSOMWARE, também conhecido como ação de sequestro dos dados, tem se mostrado nos últimos anos como um dos mais ameaçadores riscos em segurança da informação de que a humanidade tem conhecimento. Em recente pesquisa realizada pela empresa Osteman Research, Inc. em junho de 2016 sobre 165 organizações norte-americanas, canadenses, alemãs e britânicas, quase 50% das empresas sofreram comprometimento de seus dados, provocando o bloqueio de dispositivos informáticos e exigindo valores financeiros com a promessa de devolução do acesso ao usuário a este dispositivo. Normalmente, os equipamentos informáticos mais afetados por essa ameaça são estações de trabalho e servidores que contenham dados significativos para os negócios. Entretanto, existem relatos de ocorrências de comprometimento de dispositivos como smartphones, smartwatches e atrelados a IoT (Internet of Things), e a primeira prova de conceito desse ataque foi realizada em meados de 2016 sobre termostatos inteligentes, fazendo com que os usuários desses dispositivos fossem submetidos ao frio até o pagamento do resgate. Mais recentemente, em 2017, hóspedes de um hotel austríaco foram surpreendidos por um ransomware que desabilitou o sistema de gestão de fechaduras inteligentes, impossibilitando que hóspedes ingressassem em seus quartos até a realização do pagamento de resgate exigido pelos criminosos. O ransomware é dividido em duas categorias: os lockers e os cryptoransomwares. Na primeira categoria, os lockers têm como objetivo tornar inacessível o dispositivo afetado, e, na maioria dos casos, a constatação de comprometimento é realizada pela mensagem em uma tela informando a vítima do iMasters #22 Maio 2017

ocorrido e trazendo as instruções do que a vítima deve fazer para que o usuário volte a ter acesso às funcionalidades do dispositivo afetado. Na segunda categoria, os cryptoransomwares têm como objetivo tornar inacessíveis apenas alguns tipos de arquivos, em geral os que possuem extensões tais como dbf, doc, docx, dwg, jpg, mdb, ppt, pptx, pst, xls, xlsx, entre outras que contenham dados ou informações significativas e essenciais para os usuários. Nesses casos, os algoritmos de criptografia utilizados e respectivos tamanhos de chaves são distintos a cada uma dessas ameaças, podendo-se valer, por exemplo, do uso de cifra de chave assimétrica de algoritmo RSA com 2048 bits somado ao uso de chave simétrica de algoritmo AES com 128 bits. Através de dados de 2015, fornecidos pela empresa Symantec, ficou constatado que a maior parcela das ameaças é de cryptoransomwares, e os países mais afetados por essa variante são Estados Unidos, Japão, Grã-Bretanha e Itália. Apesar de o Brasil ainda não estar presente nessa lista, tem-se conhecimento do crescente número de empresas, órgãos governamentais e computadores domésticos que são afetados diariamente pelo sequestro de dados, podendo em alguns anos ingressar na lista dos países mais afetados pelo ransomware. Essas ameaças são conhecidas desde 1989. A primeira denominava-se AIDS e foi criada por Joseph L. Popp, em que o ataque consistia em cifrar arquivos e exigir o pagamento de US$ 189,00. No Brasil, o primeiro ransomware foi criado em 2009 e chamava-se Byteclark. Apesar de esse software não possuir função de criptografia de arquivos, ele impedia o uso de programas específicos no computador afetado. Mais recentemente, o grupo brasileiro denominado


// 69

TeamXRat criou uma ameaça que visa à realização de ataques em busca de servidores que mantenham o serviço de acesso remoto denominado RDP (Remote Desktop Protocol), onde o ataque ocorre preliminarmente por tentativas de invasão ao servidor, visando à identificação de senha por técnica de força bruta. Uma vez que essa primeira etapa do ataque seja bem-sucedida, o invasor criptografa extensões específicas de arquivos existentes no servidor comprometido (e demais outros em rede, caso ele mantenha o mapeamento de dados em outros servidores). Nos dias atuais, plataformas operacionais como Windows, Linux, Android e OS X (dispositivos Apple) são atingidos por diversas variantes de ransomware, sendo que o vetor de comprometimento está relacionado ao recebimento de spam (contendo arquivos executáveis como JavaScript), além de sites contendo códigos maliciosos que são acessados em função de uma propaganda (Adware), presente no software utilizado pela vítima. A última forma de comprometimento está relacionada à ação do criminoso em identificar fragilidades ou brechas em sistemas, culminando na infecção do computador ou sistemas (em geral, corporativos ou governamentais). Os melhores aliados à proteção de seus dispositivos é a conscientização sobre as técnicas e a gravidade que esse tema exige, pois o número de vítimas desse crime vem aumentando rapidamente. A tecnologia que visa à proteção de sistemas deve estar presente, incluindo aquelas que visam a detectar e impedir o comprometimento de dados e sistemas como AntiSpam, antivírus, IDS (Intrusion Detection System), IPS (Intrusion Prevention System), firewall, entre outras. Adotar processos estabelecidos por política de segurança e a execução periódica de

backups são ações recomendáveis, sendo que todas essas medidas apenas irão proteger se forem realizadas de forma adequada e reavaliadas periodicamente por profissionais especializados. Considerando a tendência de evolução do ransomware, é importante que empresas mobilizem equipes e profissionais em segurança da informação com o objetivo de prevenir-se contra as ameaças, estabelecendo medidas de pronta resposta em caso de ocorrência de eventos indesejados sobre sistemas e dados corporativos. Mencionando brevemente a gravidade desse tema, apenas ano passado nos Estados Unidos ocorreram diversos ataques em hospitais, afetando milhares de pacientes e resultando em extorsões na ordem de centenas de milhares de dólares. E o cenário pode ainda se tornar pior, se consideramos os impactos da ocorrência de ataques sobre sistemas críticos, tais como financeiros, logísticos, de saneamento, de controle de trânsito, aeronáuticos entre outros, onde a população pode se tornar literalmente refém do crime cibernético.

Marcelo Lau é coordenador dos cursos de MBA em Gestão de Cibersegurança da FIAP. Mestre em Engenharia e Ciência Forense (Poli/USP), pósgraduado em Administração (FGV) e engenheiro eletrônico (Escola de Engenharia Mauá). É autor de artigos e palestras relacionados à segurança na área de TI em diversos canais especializados (e-Forensics Magazine, Infra Magazine). Atuou por mais de 12 anos em bancos brasileiros na área de Segurança da Informação e Prevenção à Fraude. Atualmente é diretor executivo da Data Security no Brasil.

marcelo.lau@fiap.com.br

iMasters #22 Maio 2017


70 // COMUNIDADES

COMUNIDADES

PHP com Rapadura: o poder do PHP no Nordeste brasileiro Por Rodrigo “pokemaobr” Cardoso, Community Manager no iMasters Em 2014, Alessandro Feitoza ministrou algumas palestras no FTSL - Fórum de Tecnologia e Software Livre. Lá ele também teve a oportunidade de conhecer parte da comunidade de PHP do Brasil, entre eles André Cardoso (PHP-PR), e Cobucci (PHP-SC). Assim, ele conheceu o que realmente era uma Comunidade PHP. Ao voltar para o Ceará, no dia 21 de detembro do mesmo ano, Alessandro procurou e não encontrou nenhuma comunidade de PHP no estado. Sendo assim, ele resolveu fundar a comunidade PHP com Rapadura, uma forma de não prender a comunidade ao Estado, mas mantendo sua regionalidade e fazendo alusão a ele, já que Rapadura é um produto originalmente criado no Ceará. Em menos de 3 anos de existência, a comunidade conseguiu se tornar uma das mais ativas comunidades de PHP do Brasil, realizando vários eventos não só na capital cearense, mas em todas as 14 macrorregiões dos 184 municípios do Ceará. E sempre se

iMasters #22 Maio 2017

mantendo presente em eventos de inclusão digital, software livre, e compartilhamento de conhecimento, como é o caso do FLISoL, Expotec, FISL, Campus Party, Vale Web Livre, COMSOLiD, entre outros. Em Fortaleza, o PHP com Rapadura realiza os “Encontros de Devs PHP do Estado do Ceará”, que acontecem a cada 3 meses sempre em uma faculdade/ escola diferente, promovendo, assim, mais inclusão e fomentando a existência de uma comunidade de PHP no Estado. Já nas outras cidades, em sua maioria do interior, o grupo promove os “PHP com Rapadura in {cidade}”, onde alguns dos membros mais ativos membros para divulgar e evangelizar a linguagem muitas vezes em ambientes que não são férteis para a tecnologia, tentando, assim, ampliar os horizontes dessa meninada que está tentando entrar no mercado de trabalho. Inclusão Digital foi o ponto de ignição, mas de uns tempos pra cá, o PHP com Rapadura ampliou isso para “Inclusão e Profis-


// 71

sionalização”, pois os membros chegaram a conclusão de que nada adianta apenas mostrar a linguagem. É preciso guiar essa nova geração de desenvolvedores de uma forma eficiente, profissional e colaborativa, ensinando Padrões de Desenvolvimento de Software que os tornam mais especialistas. A comunidade preza por manter uma boa relação com outras comunidades da região e, sempre que possível, desenvolve parcerias que possam fortalecer ambos os lados, como é o caso da parceria com a Darkmira Tour Community, que os levou a realizar em conjunto um evento altamente profissional com foco em Segurança de Aplicações PHP e Boas Práticas. E também a parceria local recente com a comunidade DojoCE, que promove encontros para fortalecer o conhecimento em várias linguagens, usando sempre linguagens diferentes em cada encontro. E sempre que a linguagem do encontro é PHP, a comunidade está presente. Além disso, eles mantêm boas relações com as comunidades de Software Livre.

Claro que nem sempre é possível estar em todos os eventos que são realizados não só dentro, como fora do Estado. Mas os membros tentam, ao máximo, se fazerem presentes, mesmo que distantes. Mostrando que uma comunidade, não importa de qual linguagem, é uma solução viável para resolver problemas sociais da região, como a falta de inclusão, a falta de profissionais qualificados, e claro, a comunidade como ferramenta de democratização do acesso ao conhecimento.

Rodrigo “pokemaobr” Cardoso é Bacharel em Matemática Aplicada e Computacional pela Universidade Federal Rural do Rio de Janeiro e tem MBA em Engenharia de Softwares Orientado para Serviços pelo IBTA. Atualmente, é Community Manager no iMasters. Desenvolvedor desde 1999. Evangelista PHPSP. Desenvolve sistemas desde batalhas Pokémon em mIRC a robôs automatizadores de tarefas.

rodrigo.cardoso@imasters.com.br

iMasters #22 Maio 2017


72 //

DROPS DO MERCADO O QUE UM HACKATHON PODE FAZER POR SUA EMPRESA?

Se você e seus colaboradores estão em busca de novas formas de solucionar problemas, promover um hackathon pode ajudar a implementar uma cultura de criatividade e inovação. Um hackathon consiste em reunir uma equipe para que em um curto período de tempo (12h, por exemplo) eles desenvolvam soluções ou cheguem em novas ideias para um determinado problema; um projeto desses é ótimo para ver na prática o potencial criativo da sua equipe. A Impacta, por ser uma parceira de inovação do mercado corporativo, busca, através de hackathons, auxiliar na criação de soluções que desenvolvam a expertise de empresas, além de ajudar na identificação de talentos e oportunidades. O hackathon em parceria com a Mercedes Benz é um grande exemplo disso, já que, através de ferramentas do Design Thinking, a Impacta pode ensinar e incentivar colaboradores e convidados a desenvolverem um aplicativo de comunicação interna para a marca, sendo o vencedor implementado.

MUNDIPAGG LANÇA API AINDA MAIS COMPLETA A MundiPagg acaba de lançar sua nova API, agora ainda mais completa! Ela foi criada para atender as diferentes necessidades do mercado de meios de pagamentos online. A maior novidade é a flexibilidade na gestão de recorrências. É possível criar assinaturas a partir de um plano, o que simplifica a configuração e dá mais autonomia para montar a estratégia de cada negócio. Além disso, são geradas faturas ao final de cada ciclo, e existe a possibilidade de incluir descontos e itens temporários em determinado mês da recorrência. Outras novidades são: wallets, gerenciamento de carrinho de compras na nuvem, multimeios de pagamento, multi-compradores, envio de checkout por e-mail e checkout transparente. Com várias funcionalidades, o sistema ficou mais fácil e qualificado, permitindo que a experiência do lojista e dos seus clientes seja cada vez mais simples, eficiente e segura.

iMasters #22 Maio 2017

RADIX LANÇA .FUN , SUA PRIMEIRA EXTENSÃO DE DOMÍNIO DE TRÊS LETRAS A Radix, o operador de domínios por trás de algumas das novas extensões mais procuradas como .STORE, .TECH, .SITE e .ONLINE, acaba de lançar sua primeira extensão de domínio de três letras, .FUN. Ela assumiu o contrato que concede o direito de operar a extensão .FUN da Oriental Trading Company, propriedade da Berkshire Hathaway de Warren Buffett, em 4 de outubro de 2016. A Oriental havia superado o Google em um leilão privado realizado pela ICANN. A ideia para .FUN é “oferecer aos que estão no negócio de entretenimento uma forma inteligente e única de divertir as pessoas, criando uma imagem de marca na web que ressoa totalmente com a natureza intrínseca do produto ou serviço que estão comercializando”, diz Sandeep Ramchandani, Head Global da Radix. A Radix quer posicionar o domínio .FUN para qualquer um que atua no vasto campo do entretenimento - eventos, festas, clubes, casas noturnas, parques temáticos, turismo, jogos, televisão, cinema, música, dramaturgia, humor e mídias sociais.

CURSO COMPLETO E GRATUITO SOBRE MARKETING DE AFILIADOS ONLINE A empresa KingHost, estabelecida no mercado de hospedagem de sites há mais de 10 anos, lançou um curso que ensina táticas de marketing digital para o mercado de afiliados. O curso, estruturado em 10 aulas enviadas semanalmente via e-mail para os inscritos, é composto por lições práticas e diretas, com exercícios para fixar o que foi aprendido. O conteúdo ensina táticas e ferramentas atuais de marketing digital que proporcionam crescimento e liberdade econômica através dos vários programas de afiliados disponíveis no mercado. A KingHost está prometendo grandes mudanças em seu programa de afiliados, as novidades incluem melhorias no fluxo de pagamento aos parceiros, além de políticas de comissão mais atrativas, aguarde para saber mais. Inscreva-se no curso online para conhecer os principais canais e ferramentas da web e entender como deixar seu negócio de afiliados sustentável! Acesse: kingho.st/curso-afiliados


// 73

O 7Masters é nosso encontro mensal de especialistas. Toda última quarta-feira do mês, reunimos 7 mestres de um determinado tema que, durante 7 minutos, expõem para os participantes sua experiência e vivência com o assunto da vez. Os temas são definidos pela equipe de conteúdo do iMasters, liderada pelo Alex Lattaro. Se quiser dar alguma sugestão, escreva para setemasters@imasters.com.br. Confira o que rolou nas edições passadas e quais ainda estão por vir em setemasters.imasters.com.br.

A edição de novembro superou as expectativas de público, de debate e de nível dos nossos mestres. Não quer perder o próximo? Fique atento à nossa agenda e se inscreva: setemasters.imasters.com.br. Confira o que aconteceu:

7Masters Startup Keit Oliveira falou sobre sua experiência trabalhando em uma startup pela primeira vez, a Home Refil. Keit é desenvolvedora front-end e organizadora do FronInSampa. https://goo.gl/J0ojls

“Da gaveta ao TOP 20 em qualidade percebida pelo usuário” foi o tema da palestra de Julio Esslinger, que contou como construiu uns dos apps que está entre os top 20 em percepção de qualidade na Play Store. https://goo.gl/fhHSdO

Rodrigo Scotti falou sobre as redefinições da interação entre humanos e máquinas. Rodrigo é fundador e CEO da Nama e possui 6 anos de experiência como empreendedor no ramo de Inteligência Artificial. https://goo.gl/sbhgcU

Diana Ungaro, desenvolvedora web e bacharel em Ciência da Computação, falou sobre sua experiência com trabalho remoto, mostrando seus prós e contras e como fazer para essa modalidade funcionar. https://goo.gl/OtZzK1

Quer saber como é a vida de desenvolvedor em uma startup? Eduardo Matos te responde! Ele é desenvolvedor desde 2003. Trabalha como desenvolvedor full-stack e programa de JavaScript a Ruby, de Backbone.js ao Rails. https://goo.gl/EXqvxt

A palestra de Anderson Casimiro, conhecido como Duodraco na comunidade PHP, tratou dos sete mandamentos para seu próximo projeto ou satrtup. Anderson é Developer Advocate na JetBrains, produtora do IntelliJ IDEA, PhpStorm e outras ferramentas de desenvolvimento, e passou algumas diretivas para os desenvolvedores em seus 7 minutos. https://goo.gl/d5o8sn

iMasters #22 Maio 2017


74 // POR DENTRO DO W3C


// 75

POR AÍ “Tudo o que signifique ser um desenvolvedor para você, cabe aqui” Que os brasileiros têm feito muita coisa, a gente sabe. Mas quem está fazendo o quê e onde, nem sempre fica bem claro. A ideia aqui é que você apareça, com a sua equipe, sua turma, seus amigos, mostrando um trabalho, a participação num hackaton, palestra etc. Tudo o que signifique “fazer a internet do Brasil” para você, cabe aqui! Quer participar? Envie uma foto e descrição para redacao@imasters.com.br

EMPRESA CRIA MÁQUINA PARA SUBSTITUIR CADÁVERES NAS FACULDADES A Plataforma Multidisciplinar 3D veio para revolucionar as aulas de anatomia. A novidade se trata de uma mesa coberta por uma grande tela que pode ser usada para ver em detalhes as partes do corpo humano. Ela ainda pode ser usada em outras aulas, como histologia e radiologia... A mesa possui mais de 5 mil estruturas anatômicas e permite que os professores convertam tomografias e ressonâncias magnéticas em 3D, além de ter um sistema de busca detalhado.

Imagem: Divulgação.

Cláudio Santana é idealizador do projeto, desenvolvedor-chefe e fundador da empresa por trás da Plataforma Multidisciplinar 3D, a Csanmek. “Trabalhei muito na área de saúde e conheci muitos médicos que falavam sempre que precisavam de tecnologia para melhorar as aulas e para a substituição de cadáveres. Eu conheci alguns produtos na Europa e nos EUA que faziam algo parecido, mas que tinham problemas: eram produtos muito caros e que não atendiam todas as metodologias de ensino no Brasil”. Até agora, a empresa já atende 20 instituições de ensino brasileiras e pensa em expandir para o exterior.

iMasters #22 Maio 2017


76 //

POR AÍ

OPERAÇÃO SERENATA DE AMOR AUDITA CONTAS PÚBLICAS E BUSCA COMBATER A CORRUPÇÃO A Operação Serenata de Amor (https://serenatadeamor.org/) foi uma ideia do cientista de dados Irio Musskopf, que ao perceber que ainda existiam muitas brechas no uso de tecnologia para fiscalizar gastos de parlamentares, resolveu criar um projeto que fizesse bom uso da tecnologia para fazer esse acompanhamento. Ao compartilhar a ideia com amigos, não demorou muito para o projeto ganhar força e um time formado por 8 pessoas dispostas a realizá-lo.

Imagens: Divulgação.

O robô Rosie faz auditoria e passa um pente fino em milhões de reembolsos. De acordo com a equipe, ela reduziu uma lista de mais de 1,5 milhão de casos para apenas 3 mil, que ela realmente achou suspeito. Esses três mil casos foram, então, analisados por humanos. Os reembolsos tidos como suspeitos são denunciados à Câmara dos Deputados.

iMasters #22 Maio 2017


// 77

POR AÍ

MESA DIGITAL DESENVOLVIDA POR BRASILEIRO É DESTAQUE EM FEIRAS INTERNACIONAIS Você conhece a PlayTable? A novidade, que já faz parte da vida de cerca de 200 mil estudantes pelo país, é mesa digital que contém jogos educativos e permite a interação entre diversas crianças, ao contrário dos tão populares jogos para smartphones.

Em 2014, Marlon criou, em sociedade com um antigo amigo, Jean Gonçalves, a Playmove e, no início do ano de 2014, lançaram a série 1 da PlayTable, na Campus Party. Só neste ano, a PlayTable foi destaque de duas feiras que são referência na área, uma na cidade alemã de Nuremberg e a outra nos Estados Unidos. Agora, a empresa está em fase de internacionalização e de ampliação de negócios no Brasil.

iMasters #22 Maio 2017

Imagens: Divulgação.

O criador é o catarinense Marlon Souza, de 44 anos. Ele começou a descobrir o mundo da programação aos 14 anos, quando estagiou em uma empresa de software. Lá, enquanto ele aprendia a programar, desenvolveu um programa de mala direta para as secretárias da empresa, ajudando-as a produzir etiquetas padronizadas para as correspondências.


78 // POR DENTRO DO W3C

www.lojadeartigosdefesta.com.br www.artigosdefesta.store

Mude sua loja para “.STORE”

Curto

Relevante

O primeiro domínio para e-commerce Escolha o seu >> www.sualoja.store

Fácil de lembrar


// 79

iMasters #22 Maio 2017


80 // POR DENTRO DO W3C

UM PROJETO PATROCINADO POR

next-gen CDN

iMasters #22 Maio 2017

iMasters Maio/2017 #22  
Read more
Read more
Similar to
Popular now
Just for you