Revista iMasters #23 - Agosto

Page 1

R$24,00

3 // POR DENTRO DO W3C

Foto: Por Javier Brosch

// AGOSTO 2017

// ANO 06

// EDIÇÃO 23 > A C I - INTERAÇÃO ANIMAL COMPUTADOR

ACI - Interação animal computador, quando seu usuário pode ser o seu pet

08

34

50

Entrevista

Mobilidade é tudo

Maker

Saiba mais sobre os serious games, a nova tendência que iMasters #23 Agosto 2017 une tecnologia e educação

Popularização do padrão Publisher/Subscriber no mobile e na IoT

Modelagem 3D com foco em impressão 3D


Estamos procurando pessoas

4 // POR DENTRO DO W3C

apaixonadas por desenvolvimento

web e mobile! Então olha só:

Somos totalmente ágeis

Para nós, ser ágil é se adaptar e não ter medo de errar. O importante é errar rápido e aprender com o erro.

Somos times multidisciplinares

Isso significa que nossos times incluem Product Owner, Scrum Master, DevOps, QA e designer além dos desenvolvedores. Aqui, aprendemos o tempo todo!

</>

Trabalhamos com web, API, mobile e cloud

Se você entende bastante sobre esses assuntos, fale com a gente. Ah, também somos agnósticos! Trabalhamos com node.js, Java, .NET, Obj-C, Swift... Temos espaço pra você.

Sedes em SP, RJ e BH

Estamos em constante crescimento. Esse ano, estamos instalando uma sede em Belo Horizonte. Você pode escolher onde quer trabalhar e ainda tem ajuda pra isso!

Gostou? Então manda o seu currículo pra gente!

www.concretesolutions.com.br/vagas

iMasters #23 Agosto 2017


// 5

EDITORIAL

O

O iMasters tem a obrigação de estar sempre à frente no tocante ao fomento dos desenvolvedores de software, ou, como gosto de dizer, nos desenvolvedores de solução. É isso que eu chamo ser um desenvolvedor, a pessoa que por meio de um código é capaz de resolver problemas, sejam quais forem. Com este pensamento na cabeça foi que produzimos esta revista. Como matéria de capa, trazemos um artigo da Drª Clara Mancini, professora Sênior em Design de Interação na Escola de Computação e Comunicações da Universidade Aberto, do Reino Unido, abordando a interação entre animais e computadores e o papel do desenvolvedor nesta pesquisa de ponta. Pensando em dados abertos, na captação e automação da informação, temos um artigo do nosso Community Manager Rodrigo Pokemao, abordando o desenvolvimento de crawlers e bots em PHP. Além disso, eu trago um artigo sobre o ant colony optimization e suas utilizações na resolução de problemas. Criando uma melhor maneira de unir o desenvolvimento à cultura Maker, Bob Sampaio fala sobre modelagem 3D e o famoso Patola sobre a Alvorada da SLA. Em nossa entrevista, trazemos a Lucy Mari Tabuti, pesquisadora, promotora de eventos inovadores, matemática, cientista de computação e doutoranda da USP. Lucy nos traz uma perspectiva sobre o desenvolvimento de serious games no Brasil. Mas temos muito mais: comunidades, ePub, IoT, SO, microsservices, agile, DNS, segurança, boas práticas, frameworks e machine learning. Esperamos que com o conteúdo, as provocações e as perspectivas aqui propostas, consigamos incentivar aquela curiosidade intrínseca, e às vezes, adormecida, à todos os desenvolvedores de solução. Assuma seu papel como guia e desbravador do futuro com a curiosidade, a tecnologia e a vontade de tornar o mundo um lugar melhor para todos! Descubra-se durante as próximas páginas!

Abraços, Alex Lattaro

Líder de Conteúdo do Grupo iMasters www.imasters.com.br | redacao@imasters.com.br

iMasters #23 Agosto 2017

iMasters #23 Agosto 2017


6 // EXPEDIENTE

// MAIO 2017

// ANO 06

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

Tiago Baeta Publisher

CORPO EDITORIAL

Mariana Anselmo (MTB 0083858/SP) Jornalista Responsável Alex Lattaro e Mariana Anselmo Editores

Mariana Anselmo Editor Alex Lattaro Editor Nathália Torezani Revisão

Nathália Torezani Revisão Aline Oliveira Dias, Bob Sampaio, Clara Mancini, Cláudio Sampaio, Gustavo Stiefano, Kemel Zaidan, Lenold Sequeira Vaz, Luiz Fernando Duarte Junior, Mateus Schmitz, Marcos Paulo Honorato Lixa, Reinaldo Ferraz, Ricardo Ogliari, Rodrigo “Pokemão”, Selma Morais, Thiago Barradas e Yury Baroni 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 responsabilidade dos autores e não refletem necessariamente a

Eskenazi Indústria Gráfica Gráfica

opinião da revista. É proibida a reprodução total ou parcial de textos, fotos e ilustrações por qualquer meio,

Grupo iMasters Organização

sem prévia autorização dos autores ou dos editores da publicação.

1.800 exemplares ISSN 1981-0288

www.zupidesign.com +55 11 3926 0174

iMasters #23 Agosto 2017


// 7

iMasters #23 Agosto 2017


8 //

SUMÁRIO COLUNAS 28

34

Rodrigo Pokemao

Ricardo Ogliari MOBILIDADE É TUDO Popularização do padrão Publisher/Subscriber no mobile e na IoT

46

PHP Desenvolvendo web crawler e bots com Selenium web driver em PHP

18

Luiz Fernando Duarte Junior

AGILE Microservices e Agile: o futuro da programação?

Selma Morais Reinaldo Ferraz

26

Gustavo Stiefano

W3C A revolução do ePub

20

Cláudio Sampaio

MAKER A alvorada da SLA

64

Alex Lattaro

INTELIGÊNCIA NADA ARTIFICIAL Entendendo o Ant Colony Optimization

ENTREVISTA com Lucy Mari Tabuti

80

Kemel Zaidan

CÓDIGO ABERTO Sistemas Operacionais alternativos - Parte 02

iMasters #23 Agosto 2017

08 Serious games: a nova era da educação

DNS Boas práticas sobre propagação DNS


// 9

SEÇÕES 38

72

Mateus Schmitz

COMUNIDADES Conheça as meninas do WWCode Recife

MACHINE LEARNING Dificuldades na implantação de chatbots com machine learning

70

Lenold Sequeira Vaz DNS, TLD E GTLD Para uma Internet mais segura na sua infraestrutura de DNS

BOAS PRÁTICAS Code Clean: por um mundo com código melhores

84

7MASTERS Encontro iMasters de especialistas

POR AÍ Fazendo a internet do Brasil pelo mundo

42 76

Marcos Paulo Honorato Lixa MICROSSERVIÇOS Microsserviços sim, monolitos distribuídos não

54

Thiago Barradas

82

50

Bob Sampaio

MAKER Modelagem 3D com foco em impressão 3D

Yury Baroni SEGURANÇA Boas práticas para Prevenção de Perda de Dados (DLP)

48

Aline Oliveira Dias

FRAMEWORK Spark - um microframework para aplicações web

58

Clara Mancini

CAPA Como o design de software pode suportar o surgimento de interação entre animais e computadores

iMasters #23 Agosto 2017


10 // ENTREVISTA

Serious games: a nova era da educação Por Mariana Anselmo, para Revista iMasters

V

Você já ouviu falar de serious games, a vertente que relaciona games com educação? Bom, se o termo é novo para você, gostaríamos de te apresentar Lucy Mari Tabuti, uma das maiores autoridades em serious games no Brasil. Em sua página no LinkedIn, dentre as funções e áreas de atuação de Lucy, estão: empreendedora, educadora, matemática, cientista da computação, pesquisadora e promotora de eventos inovadores. Pouco não é! E a doutoranda da USP – Universidade de São Paulo, utilizou esta seção na edição de agosto da Revista iMasters para explicar melhor sobre o desenvolvimento do serious games, seus maiores objetivos, suas funções e como ele já tem atuado e o quão longe pretendem alcançar. Revista iMasters: Você desenvolve pesquisas que relacionam games e educação, os chamados serious games. Quais os objetivos de desenvolver esse tipo de jogo? Lucy Mari: As pesquisas que realizo e que relacionam games e educação são desenvolvidas em parceria com a Faculdade de Educação da USP, juntamente com o Grupo Alpha, onde as pesquisas em relação à educação estão ligadas ao perfil dos estudantes, perfil do público das gerações x (nascidos entre 1960 e 1980), y (nascidos entre 1980 e

iMasters #23 Agosto 2017

2000), z (nascidos entre 2000 e 2010) e a geração alpha (nascidos a partir de 2010), pois essas pesquisas nos ajudam a entender o perfil e o comportamento do nosso público-alvo. Além disso, pesquisas referentes às teorias educacionais e pedagógicas - e como cada uma delas contribui, justifica e interage com a educação e os games - também são desenvolvidas. As pesquisas que relacionam games e educação também são desenvolvidas no Interactive Technologies Laboratory (INTERLAB) na POLI-USP, onde as pesquisas em relação à educação estão relacionadas ao raciocínio lógico e ao pensamento computacional. Entendemos que os jogos podem ajudar no desenvolvimento do raciocínio lógico e do pensamento computacional que norteiam os estudantes e o público-alvo na resolução de problemas do dia a dia e em quaisquer áreas do conhecimento. Outros conceitos que também são pesquisados quando desenvolvemos as pesquisas com educação e games são interação humano-computador, interface com o usuário, gamification e teoria dos jogos para a criação de estratégias para a tomada de decisões, que nos ajudam a desenvolver serious games que prendam a atenção do aluno para que o aprendizado das competências e habilidades dos conhecimentos envolvidos sejam efetivos.


// 11

Ilustração: Por karnoff

Atualmente, o perfil dos estudantes é o aprendizado a partir do meio digital e os serious games estão incluídos nesse meio. Além disso, os jogos têm objetivos claros, com personagens e cenários que constroem uma história envolvente e são interativos, necessitando que os jogadores se esforcem para conseguirem as recompensas interessantes. Isso tudo ajuda na efetivação do conhecimento. RiM: Quais as maiores dificuldades em comprovar que os serious games funcionam, ou seja, que atingem o seu objetivo de aprendizado?

LM: As maiores dificuldades que temos é que cada estudante ou público-alvo são diferentes - no início, durante e no final da aplicação de cada jogo. Com nossas pesquisas, temos o perfil geral das características dos estudantes e do público-alvo, mas cada um dos indivíduos tem suas próprias características, independentemente da educação que recebem e do meio em que vivem. Eu, por exemplo, tenho dois filhos, um de 8 e outro de 10 anos. Eles são completamente opostos em tudo, recebendo a mesma educação e estando sempre no mesmo ambiente, interagindo grande iMasters #23 Agosto 2017


12 // ENTREVISTA

aprendizado dos conceitos educacionais envolvidos tenham sido efetivados exclusivamente pelos serious games. Por exemplo, e isso é apenas um exemplo, pode ser que os estudantes que ajudem nos afazeres domésticos tenham mais capacidade de desenvolver estratégias nos serious games para efetivar o aprendizado educacional envolvido. Porém, não sabemos se isso pode ou não de fato contribuir ou prejudicar no aprendizado pelos serious games, porque são fatos, comportamentos que não estão diretamente ligados aos jogos. RiM: Existe algum incentivo para o mercado de serious games? LM: Na verdade, não apenas os serious games, como toda a educação no Brasil, precisam de um incentivo maior, principalmente governamental. O desenvolvimento de serious games ainda é muito caro, especialmente agora que estão sendo incorporados a Realidade Virtual, a Realidade Aumentada e a Realidade Mista. Independentemente do custo envolvido no desenvolvimento, a incorporação deles dentro do currículo básico da educação no Brasil depende bastante de o governo inserir um projeto acadêmico em que eles fossem incorporados como estratégia de ensino, a partir de um currículo voltado para projetos

Ilustração: Por karnoff

parte do tempo, com o mesmo público. Um tem mais perfil para humanas e o outro para exatas, por exemplo. Mesmo que um serious game seja desenvolvido para a geração Z, por exemplo, considerando todas as características e perfil dessa geração, além de todos os conceitos de interação humano-computador, interface com o usuário, gamification, teoria dos jogos e mais, os resultados do aprendizado do conhecimento dependem de outros fatores, como: já jogava outros tipos de serious games? Se sim, quanto tempo por dia? Já tem acesso aos meios digitais? Se sim, quanto tempo por dia? Já teve acesso aos conceitos educacionais envolvidos, sobre raciocínio lógico ou pensamento computacional? Se sim, com que frequência? Por mais que consigamos um grupo com o máximo de características comuns, por exemplo (mesmo que utópico), quem realizará o experimento com o serious game criado para o desenvolvimento do raciocínio lógico e pensamento computacional não pode ter feito nenhum curso, capacitação ou oficina que tenha envolvido pensamento computacional, não pode ter tido contato com quaisquer tipos de games digitais, entre outros; sempre haverá outras características nos estudantes e no público-alvo que podem “ajudar” ou “prejudicar” que a comprovação do

iMasters #23 Agosto 2017


// 13

interdisciplinares com serious games. Porém, nesse caso, é necessário um investimento para uma infraestrutura com laboratórios de informática conectados à Internet e treinamento dos educadores envolvidos num projeto de currículo integrado. Apesar do conhecimento de que as novas gerações de estudantes, em virtude de terem nascido no meio digital, aprendem melhor por meio de games digitais, no Brasil, ainda há muitos obstáculos a serem superados. Os investimentos das empresas que hoje desenvolvem serious games no Brasil são basicamente pessoais ou da família. Talvez, falta divulgar a importância e necessidade dos serious games. O BNDES abriu investimento ao mercado de games em 2016, mas poucas empresas de desenvolvimento de serious games conseguiram esse investimento. Em países como a Finlândia, cujo investimento governamental na educação é efetivo, é perceptível como a educação desenvolvida por meio de projetos interdisciplinares que envolvem os serious games garante o efetivo aprendizado dos conceitos educacionais. RiM: Fale mais sobre o que a sua pesquisa propõe: qual o tipo de game? Sobre o que o jogador aprende enquanto joga? Qual o objetivo dessa interação? LM: Na pesquisa que desenvolvo, o

principal objetivo é o desenvolvimento do raciocínio lógico e do pensamento computacional para o desenvolvimento de estratégias para a tomada de decisões e que ajuda no pensamento crítico dos estudantes e do público-alvo. Em pesquisas mostram que, em virtude da tecnologia e da digitalização global, o desenvolvimento cognitivo e motor das crianças deixaram de ser utilizados com frequência pela praticidade de encontrar “tudo” pronto na Internet e nas mídias sociais digitais. Isso está fazendo com que os indivíduos percam a capacidade de desenvolver o raciocínio lógico para desenvolver o pensamento crítico para a criação de estratégias para resolver problemas do dia a dia. Por exemplo, há pouco tempo, sem a tecnologia, utilizávamos mapas impressos, guias de ruas, perguntas feitas para outras pessoas na rua para nos locomovermos de uma localidade para outra, independentemente da distância. “Estudávamos” a melhor forma de realizar essa rota, o melhor caminho, a melhor distância, o menor custo, qual ou quais transportes, entre outros. Ou seja, você criava estratégias para se locomover de um local para outro, você desenvolvia pensamento crítico quando decidia que faria um caminho mais longo para não passar por uma região mais perigosa, por exemplo. Atualmente, basta você se utilizar de um smart-

iMasters #23 Agosto 2017


14 // ENTREVISTA

RiM: Existem estudos que mostram que os serious games são capazes de estimular a neuroplasticidade. Você acredita que isso pode ser aplicado como prevenção de doenças degenerativas como Alzheimer? LM: O cérebro é como uma caixinha de surpresas, ele tem um potencial ainda desconhecido e em estudos. Quando o assunto é serious games na educação, principalmente para os estudantes nascidos na era digital, a forma como o cérebro desses estudantes está sendo desenvolvida a partir dos estímulos e experiências geradas pela televisão, Internet e jogos digitais faz com que esses estudantes tenham suas estruturas cerebrais desenvolvidas em processo linear, tornando suas mentes hipertextuais e diminuindo a velocidade do aprendizado. Dessa forma, é possível perceber como o cérebro se

adapta ao aprendizado de acordo com os estímulos e ao ambiente em que está inserido e à forma como essas informações lhe são apresentadas. Isso significa que assim como os serious games são capazes de estimular a neuroplasticidade, também é possível que possam prevenir doenças degenerativas como o Alzheimer. Há pesquisas satisfatórias com desenvolvimentos de protótipos de serious games para a Educação Médica e que envolve o Alzheimer. Nesse caso, os elementos a serem inseridos na Realidade Virtual podem ser manipulados e selecionados de acordo com o grau e o estágio que a doença tenha atingido e avançando conforme as necessidades de cada indivíduo, o que pode ser direcionado pela inteligência artificial. Um tratamento que envolve tudo isso ainda tem um custo bastante elevado, em virtude de os dispositivos necessários ainda serem pouco acessíveis comercialmente e muito caros. Porém, num futuro próximo, esses tipos de tratamento serão disseminados e alcançados por todos os indivíduos que precisem. RiM: Como você vê o mercado de games no Brasil (desde a pesquisa até a produção)? Estamos no mesmo nível de mercados consagrados, como os Estados Unidos? LM: O faturamento dos games (veja,

Ilustração: Por karnoff

phone e um aplicativo, como o Waze ou o Google Maps, para dizer apenas a origem e o destino, que a tecnologia traça as rotas, o tempo, o trânsito e para os diferentes meios - se de carro, a pé ou de transporte público, neste último indicando também quais transportes públicos, horários e custo. Esse exemplo mostra claramente que com a tecnologia o indivíduo parece “não precisar pensar mais”.


// 15

“Há pesquisas satisfatórias com desenvolvimentos de protótipos de serious games para a Educação Médica e que envolve o Alzheimer” Lucy Mari

aqui não estamos falando apenas dos serious games, mas dos games em geral) no Brasil tem crescido exponencialmente. Em 2016, foram mais de US$ 1,6 bilhão; se considerarmos o faturamento mundial em games, essa cifra girou em torno dos US$ 100 bilhões, em 2016. Os primeiros formandos em cursos universitários de jogos no Brasil estão se graduando agora. Até então, alguns dos formandos em cursos superiores como Ciência da Computação ou Engenharia de Computação seguiam pela área de desenvolvimento de games no Brasil. Porém, esse mercado já sinalizou a necessidade de especialistas em desenvolvimento de games que conhecem todas as estratégias, conhecimentos e recursos necessários para a aplicação na criação dos jogos digitais. O desenvolvimento de games, quando consideradas algumas metodologias como o Lean UX, que desenvolve soluções a partir da experiência do próprio usuário quando validada por pesquisas realizadas na academia, auxilia na produção de jogos de sucesso para o mercado. Por isso, é importante que os profissionais que se formam em cursos universitários de games no Brasil tenham pesquisado e aprendido a desenvolver games utilizando essa metodologia.

RiM: Você acredita que, apesar de o mercado de games ser algo bem mundial e homogêneo – principalmente porque a distribuição acontece pela Internet -, existem particularidades que são e devem ser exploradas, dependendo do mercado em que o produto foi desenvolvido, ou para quem ele foi desenvolvido? Por quê? LM: Certamente existem, sim, particularidades do público-alvo e do cliente para o qual o game foi ou está sendo desenvolvido. Primeiro, você precisa estudar seu cliente, seu público-alvo, para gerar as principais características gerais a serem consideradas no desenvolvimento de um game; caso contrário, esse jogo corre o risco de fracassar. Eu, como professora de matemática, desenvolvi uma estratégia de aula na qual os alunos de uma escola da periferia de Osasco gostavam muito de empinar pipas. A partir da necessidade vinda dos próprios alunos, desenvolvemos juntos um projeto para definir os materiais necessários, tempo para a execução das atividades do projeto e, por fim, realmente empinar a pipa. O mais importante da atividade foi que os próprios alunos disseram qual o momento ideal, dentro do calendário escolar, para o desenvolvimento do projeto, uma vez que não se tem vento suficiente para empinar pipas em qualquer época do ano. O projeto en-


16 // ENTREVISTA

RiM: Recentemente, a Ancine disponibilizou um total de R$ 10 milhões divididos entre alguns projetos que trabalham com produção de games em todo o Brasil. Como você vê essas ações? Acredita que elas realmente podem elevar o nível da produção brasileira e incentivar o desenvolvimento de mais projetos? LM: Para um mercado que fatura mais de US$ 1,6 bilhão no Brasil e mais de US$ 100 bilhões no mundo, um valor de R$ 10 milhões é realmente nada, mas pode ser a ponta de um iceberg. Entendo que não basta investir apenas em projetos. Os projetos já vêm com as ideias prontas e, muitas vezes, as metodologias que estão sendo utilizadas ou serão utilizadas não levam em conta características de Lean UX, entre outras, para o desenvolvimento de games. O governo poderia incentivar e financiar metodologias de desenvolvimento de jogos que podem ser aplicadas ao desenvolvimento de quaisquer tipos de games. Isso envolveria desde a pesquisa até a produção do jogo, dentro de estratégias que levem ao sucesso do game quando comercializado no mercado. Podemos dizer que, nesse caso, o governo estaria incentivando, financiando e, consequentemente, divulgando a pesquisa, a educação e a criação no desenvolvimento de games. Isso faria com que os profissionais do setor no Brasil se tornassem qualificados para desenvolver games competitivos com os criados em mercados de games dos Estados Unidos e/ou do Japão. Ilustração: Por karnoff

volveu conceitos de unidades de medida, perímetro, área, quantidades, valores, tempo, e estratégias de desenvolvimento e planejamento também foram considerados. Outro aspecto interessante foi a inversão dos valores em sala de aula. Uma atividade com os mesmos conceitos em que apenas exercícios de fixação são desenvolvidos é melhor realizada pelas meninas que dão suporte aos meninos. Nesse projeto da pipa, os meninos foram os protagonistas, e as meninas receberam orientações dos meninos para o desenvolvimento da atividade. Porém, um projeto como esse dificilmente daria certo num colégio de elite localizado nos bairros mais nobres da capital paulista, pois possivelmente esses estudantes não incluem a criação de pipas em suas atividades de lazer talvez, jamais tenham empinado uma pipa e também desconhecem a melhor época do ano para se empinar pipas. Essa analogia nos faz perceber como precisamos conhecer os objetivos e os propósitos de um game e também o público-alvo para garantir o sucesso de um jogo. Para o desenvolvimento de quaisquer games, precisamos conhecer os indivíduos que vão utilizá-los, precisamos conhecer suas características, seus gostos, o que gostam de fazer, o que gostam de ter, como falam, o que ouvem, a que assistem, tipos de pessoas com quem interagem, entre outras muitas situações. Além disso, o local onde esses indivíduos se inserem, clima, solo, infraestrutura, entre outros, também devem ser considerados.

iMasters #23 Agosto 2017


// 17

iMasters #23 Agosto 2017


18 // POR DENTRO DO W3C

iMasters #23 Agosto 2017


DROPS DO MERCADO

// 19

IMPACTA LANÇA PÁGINA DE MATERIAIS EDUCATIVOS GRATUITOS

TUTORIAL PARA EMISSÃO DE BOLETOS REGISTRADOS

Com o objetivo de compartilhar conhecimento e ajudar na capacitação de profissionais para os setores de TI, design e Marketing, a Impacta lança a sua página de Materiais Educativos. O novo canal disponibiliza dezenas de materiais para estudo, tais como e-books, guias e vídeo-aulas com dicas sobre carreira, tecnologia, gestão, marketing digital, design, fotografia, office, desenvolvimento e mais. E o melhor é que é tudo gratuito e com apenas alguns cliques você já está estudando. A intenção da página de materiais educativos é servir como um canal de estudos e dicas complementares tanto para estudantes como para profissionais que enfrentam o desafio diário de se renovar no trabalho. A página deve receber novos materiais todos os meses, com a inclusão de vídeos de dicas, infográficos e outros formatos, sempre com a intenção de incentivar a educação de qualidade. Acesse www.impacta.com.br/ materiais-educativos.php e confira!

Para facilitar a integração para geração de boletos e carnês registrados, a Gerencianet lançou um tutorial de educação a distância. O curso é composto por 20 vídeos e tem o objetivo de explicar melhor como utilizar as APIs. O material está disponível em udemy.com/eadgerencianet. A SDK da Gerencianet está disponível em PHP, .NET, Node JS, Ruby, Phyton, Java e Delphi. O sistema também disponibiliza módulos prontos para diversas plataformas, como Magento, Prestashop e OpenCart. Todas as opções podem ser integradas com checkout transparente, via lightbox e link de pagamento. A Gerencianet possibilita a emissão de cobranças únicas ou recorrentes por boleto registrado sem tarifa de registro e cartão de crédito sem a necessidade de convênios específicos com bancos ou operadoras de cartão. As tarifas e prazos de disponibilização de saldo são personalizados. Para saber mais, acesse gerencianet.com.br/api.

FOQUE NA SUA CRIATIVIDADE COM O MANAGEWP DA GODADDY O ManageWP da GoDaddy, maior plataforma de cloud dedicada a pequenos negócios e empreendimentos independentes, permite que desenvolvedores e designers web atualizem todos seus sites em WordPress de uma vez só, com apenas um clique. Além disso, podem gerenciar todos eles em um só lugar, com ampla visualização em um dashboard único, e automatizar tarefas, como, backups, análises de segurança e monitoramento de desempenho. Agora, profissionais web podem otimizar suas atividades e economizar tempo com operações mecânicas, podendo assim focar no que realmente amam fazer: criar sites modernos e eficientes. Consulte o site da GoDaddy para mais informações: https://br.godaddy.com/pro/managewp

CONCRETE DE CARA NOVA A Concrete está cheia de novidades. Logo novo, cores novas, até nome novo. Agora, a empresa atende por Concrete, sem o “Solutions”. E depois de 16 anos na rua São José, a sede no Rio de Janeiro agora é na Av. Presidente Wilson, 231. Um lugar maior, mais organizado e com uma ótima vista da cidade maravilhosa. Todas essas notícias, porém, não provam que a Concrete está em um período de mudanças. Afinal, como boa empresa ágil, está sempre iterando de forma empírica e incremental. A diferença é que agora está tudo um pouco mais visível, e a expressão visual e verbal da empresa combina um pouco mais com esse posicionamento. E a ideia é continuar evoluindo, sempre. Estar em constante movimento, se apoiando em feedbacks e na validação de hipóteses para garantir que as maiores empresas do Brasil ofereçam aos seus clientes os melhores produtos digitais do mercado. Para saber mais, acesse o site da Concrete: www.concrete.com.br

iMasters iMasters #23 #22 Agosto Maio 2017


20 // AGILE

MICROSERVICES E AGILE: O FUTURO DA PROGRAMAÇÃO? Por Luiz Fernando Duarte Junior , Evangelista técnico na Umbler

Nenhum desses termos é exatamente novo, mas, por algum motivo, jamais estiveram tão na moda como atualmente. Mas o que teriam em comum a arquitetura microservices e os métodos ágeis de desenvolvimento de software? Ou melhor: por que seriam eles o futuro da programação? Não tenho a pretensão de dizer como as empresas de tecnologia deveriam trabalhar, mas vou tentar trazer uma luz para esse assunto e provocar uma reflexão (espero) na forma como você trabalha. Os métodos ágeis existem desde a virada do século, mas, mais recentemente, nos últimos cinco anos, uma nova onda de “agilistas” passou a defender um modelo que seria uma evolução dos métodos ágeis originais. Essa evolução foi proposta pelo Spotify em um famoso vídeo onde é apresentado o modelo de “squads” (esquadrões) do Spotify, que, em teoria, não possui grandes diferenças em relação ao Scrum Team original, mas que propõe um mindset focado em um único produto a cada um dos times/squads, em vez do foco tradicional em projetos. iMasters #23 Agosto 2017

O termo viralizou entre as startups, e hoje empresas como Nubank, Umbler e Conta Azul organizam-se em squads também. Organizar um squad ao redor de cada produto faz com que as pessoas o “abracem” como se fosse “seu” e que queiram o melhor para ele em termos de tecnologia, experiência, resultados etc. Ele permite que os times tenham mais controle (e mais resultados) com seus OKRs, KPIs etc. Como bem o Scrum prega, cada time decide como seu produto deve ser melhor desenvolvido com base na estratégia da empresa, e isso inclui TODOS os aspectos técnicos, como linguagem utilizada, banco de dados etc. Tudo isso é muito lindo e é exatamente o que as empresas querem: esquadrões focados no produto que entreguem software rapidamente (já ouviu falar de CI?) com as melhores tecnologias para resolver cada problema. Mas sabemos que na prática não é tão simples assim, certo? Mas deveria, e já, já, eu explico o porquê.


Ilustração: Por Macrovector

// 21 Estamos há décadas desenvolvendo software em grandes e complexos blocos de software que a própria TI chama de monolíticos, em alusão às grandes pedras (monólitos). Não importa se você organiza sua aplicação em ‘x’ camadas. Se você não pode fazer o deploy de apenas uma delas sem precisar compilar o projeto inteiro, o seu software é monolítico. Se você não pode escrever uma de suas camadas em uma linguagem diferente das demais, também. E isso não é ruim, aprendemos a construir softwares assim desde a faculdade e construímos grandes softwares ao longo das décadas que a profissão de programador existe. É apenas uma característica, sem julgamentos. No entanto, cada vez mais o mercado nos pede softwares maiores e mais complexos, e nossos monólitos ficam ainda maiores e mais complexos. Mas, ao invés de ficarem igualmente resistentes como a analogia, estão mais para um castelo de cartas altíssimo, infelizmente. Isso porque as demandas atuais estão exigindo pluralidade de tecnologias. E as aplicações monolíticas não trabalham muito bem com pluralidade, não foram concebidas dessa forma. Fato. Mas, então, como podemos alinhar diferentes tecnologias, diferentes produtos, mantendo uma alta velocidade de integração, qualidade e atendendo às expectativas, internas e externas, em relação aos projetos em que trabalhamos? Com outra tendência que voltou muito forte após décadas: microservices. Isso não é algo exatamente novo, embora tenha se voltado a falar dessa arquitetura há poucos anos. A ideia central é que você quebre sua aplicação em serviços bem pequenos, semelhante ao que SOA e CORBA propõem, mas sem as complicações que as grandes corporações criaram em torno dessas duas excelentes ideias (ESB?). Cada um desses microservices é auto-suficiente na sua responsabilidade, é independente de linguagem, de persistência e se comunica com os demais serviços através de protocolos comuns, como HTTP. Não é à toa que tecnologias como Node.js, Elixir, Scala e Go (sem citar as funcionais em geral) estejam tão em alta, ao mesmo tempo em que só se fala de arquitetura microservices e squads (não esqueçamos a persistência poliglota!). Ao que tudo indica, essa combinação de tecnologias leves e focadas em paralelismo, em microsserviços mantidos por squads para compor grandes soluções são a “bola da vez”, e podem ser a “salvação” para conseguirmos construir (e manter) os sistemas do futuro. Grandes empresas como Amazon, ThoughtWorks, Uber e Netflix acreditam nisso. Por que eu não acreditaria?

“COM OUTRA TENDÊNCIA QUE VOLTOU MUITO FORTE APÓS DÉCADAS: MICROSERVICES. ISSO NÃO É ALGO EXATAMENTE NOVO, EMBORA TENHA SE VOLTADO A FALAR DESSA ARQUITETURA HÁ POUCOS ANOS”

Luiz Fernando Duarte Junior é pós-graduado em computação e certificado em métodos ágeis, trabalha com software desde 2006 nas mais variadas tecnologias. É autor, professor e evangelista técnico na Umbler. Quando não está programando, escreve em seu blog LuizTools sobre empreendedorismo e desenvolvimento de software.

luiz@umbler.com

iMasters #23 Agosto 2017


22 // MAKER

A ALVORADA DA SLA Por Cláudio Sampaio, Desenvolvedor de software

Hoje, quando se pensa em impressão 3D, quase sempre o método que vem à mente é o “Fused Deposition Modeling” ou “FDM”. Ou, para ser mais preciso: “Fused Filament Fabrication”, que foi o novo nome que o projeto reprap, responsável pela popularização da Impressão 3D com a queda da vigência da patente da Stratasys, deu para o método. Isso foi feito pra evitar problemas legais, pois o nome “FDM” é registrado. A lendária e infame patente que impediu que o resto do mundo derretesse plástico em formas tridimensionais por algoritmo computacional foi submetida em 1989 e teve duração de 20 anos. Só esse fato já surpreende muita gente que imaginava ser a impressão 3D uma tecnologia nova. Ou melhor: um conjunto de tecnologias. Há muita técnica diferente que pode ser chamada de Impressão 3D, e o derretimento de plástico nem mesmo foi o primeiro: a primeira técnica foi batizada de estereolitografia e foi patenteada em 1986, por Chuck Hull, o fundador da 3D Systems (em 1981, houve uma patente de método equivalente registrada no Japão que não deu certo e há relatos de peças sendo feitas ainda na década de 70). A estereolitografia também tem um apelido, na forma de abreviação e não sigla: SLA. Obviamente, há muitas outras técnicas, muitas delas inventadas na década de noventa. Entre elas temos a SLS, ou sinterização seletiva a laser, que com um laser esquenta os grânulos de uma camada de pó até que grudem uns nos outros, e vai adicionando sucessivas camadas e formando sólidos; a SLM, que faz o mesmo, mas com pó de metal; a DLMS, que faz algo parecido não somente esquentando, mas derretendo o metal; a 3DP, que usa camadas de um pó de gesso especial alvejadas por um líquido que ao iMasters #23 Agosto 2017

mesmo tempo colore e endurece; a LOM, Laminated Object Manufacturing, que vai empilhando folhas de papel, pintando e cortando, fazendo uma forma 3D, e daí por diante. Por que o derretimento de plástico foi a que se popularizou nos tempos de hoje, se nem mesmo foi a primeira? A primeira resposta é a patente, que quando expirou em 2009, e deu ensejo a uma diminuição de preço de duas ordens de grandeza (aproximadamente 100 vezes!) nos preços das impressoras que usam a técnica. A segunda razão também está ligada ao preço: a técnica usa materiais muito facilmente encontráveis na sociedade industrializada de hoje, que são os materiais termoplásticos e com propriedades termoplásticas. Em outras palavras, tornou-se prático e barato prototipar e até mesmo produzir objetos vendáveis com essas máquinas. Você já deve estar adivinhando aonde eu quero chegar, não? Primeiro, sim, a patente da SLA já caiu e há menos tempo do que se pode esperar. Tudo graças a uma manobra chamada de patent fencing, o registro de patentes relacionadas para “estender” o tempo de vida de uma patente artificialmente. Na prática, a patente da técnica de estereolitografia caiu em 2014 e não 2006. Mesmo antes de 2014, duas empresas se arriscaram a lançar impressoras 3D SLA de baixo custo: a B9 Creator, em 2012, com a impressora 3D de mesmo nome, e a Formlabs, em 2013, com a Form1. Antes, vamos diferenciar uma coisa: as impressoras usam duas variações diferentes da técnica. Ambas utilizam uma resina líquida fotocurável, o que significa que se determinada luz em intensidade suficiente atinge um ponto na resina, ela sofre reação


// 23

“POR QUE O DERRETIMENTO DE PLÁSTICO FOI A QUE SE POPULARIZOU NOS TEMPOS DE HOJE, SE NEM MESMO FOI A PRIMEIRA? A PRIMEIRA RESPOSTA É A PATENTE, QUE QUANDO EXPIROU EM 2009 E DEU ENSEJO A UMA DIMINUIÇÃO DE PREÇO DE DUAS ORDENS DE GRANDEZA (APROXIMADAMENTE 100 VEZES!) NOS PREÇOS DAS IMPRESSORAS”

O método que diferencia a B9 Creator da Form1, no entanto, é como cada camada bidimensional é alvejada por luz. A Form1 usa o método SLA original - tendo até sofrido processo da 3D Systems por violação de patente -, que consiste de um feixe de luz guiado por galvos para percorrer uma trajetória. A B9 Creator, por sua vez, usa um projetor (DLP) de alta resolução, que simplesmente projeta uma imagem de alta intensidade por segundos ou décimos de segundos no fundo do tanque de resina. Ambas a Form1 e B9 Creator são bottom-up. Até agora, a tecnologia parece bem simples, não? Guiar um laser com galvos não é ciência de foguetes, muito menos subir ou descer uma plataforma ou um tanque (que se faz usando um fuso com castanha). Dividir a peça 3D em camadas é ainda menos complicado que em FDM, precisando de menos ajustes e até de estruturas de suporte mais simples. Ainda assim, os preços dessas impressoras assustam um pouco. Nos EUA, atualmente as versões

Imagens: Fornecidadas pelo autor

de polimerização e muda de estado, tornando-se sólida (“curando”). Geralmente, essa luz estará no comprimento de onda ultravioleta A, entre 300 nm e 400 nm, embora existam também as resinas “daylight”, que podem ser curadas com luz visível (acima de 400 nm de comprimento de onda). Cada seção bidimensional do recipiente do líquido endurecida diferencialmente torna-se uma camada daquilo que será a forma tridimensional. Mesmo essa parte tem variações. Por exemplo, que seção bidimensional do líquido torna-se uma camada? As SLA chamadas de “top-down” (de cima pra baixo, referindo-se à direção do feixe de luz) alvejam a superfície da resina, enquanto que as “bottom-up” (de baixo pra cima, essas mais comuns) alvejam o fundo transparente do tanque de resina. Este último tipo fabrica a peça “de cabeça pra baixo”, pois a plataforma de metal acima do tanque vai “puxando” a peça para cima, enquanto as camadas vão sendo criadas no fundo do líquido.

iMasters #23 Agosto 2017


24 // MAKER

A redenção Falamos muito até agora sobre a tecnologia, mas, afinal de contas, qual é a mensagem? Se as máquinas e resinas são tão caras, se a tecnologia é tão inacessível, por que dar tanto espaço a ela? Nossas FDMs funcionam muito bem, não? Os plásticos são resistentes, a qualidade é aceitável, os detalhes são perceptíveis. Exceto, claro, que isso não é verdade. Apesar de FDM funcionar bem para peças grossas e leves, com resistência mecânica adequada para muitos usos, está longe de ser uma tecnologia perfeita. Mesmo a FDM com qualidade mais industrial vai revelar fendas visíveis entre as camadas de plástico. Mesmo a mais rápida delas demorará para imprimir uma peça em resolução maior que 0,1mm, isso se não falhar durante a impressão. Mesmo o material mais aderente vai ter um ponto fraco onde as camadas se unem. Seções finas e verticais ainda são um problema por causa disso, e o gotejamento de plástico em pequenos pontos de certas peças ainda dá um aspecto irregular ao detalhe. Filamentos transparentes iMasters #23 Agosto 2017

e translúcidos, quando impressos, revelam ranhuras que sacrificam a utilidade do plástico para se ver através dele. E como FDM trabalha com derretimento a temperaturas razoavelmente baixas, isso significa que nenhum dos materiais será resistente à temperatura. Todos esses são problemas que a tecnologia SLA resolve. Alguns modelos chegam a 10µm de altura de camada e 30µm de seção XY do ponto. Seções finas aparecem com perfeição microscópica. As impressões aparecem virtualmente contínuas, com a visibilidade das camadas sendo um acidente evitável – sendo propícia até para objetos realmente translúcidos e transparentes como lentes em resinas “clear”, sem a refração da descontinuidade. Alguns materiais especiais, depois de curados com o laser, resistem no estado sólido a temperaturas altíssimas, impensáveis para um FDM. Até ao usar a mesma altura de camada de uma impressão FDM típica, 0.1mm, a SLA se sai melhor pela continuidade de detalhes:

∂ Illustration 1: À esquerda - impresso em SLA. À direita - FDM. Ambas

A SLA também não é perfeita, claro. O materialbase da maioria das resinas, metil metacrilato, não tem uma pós-cura fácil e não tem grande resistência mecânica, embora ultimamente esse campo esteja melhorando bastante, e materiais com boa dureza (suficiente para aplicações industriais) estejam sendo criados (como a resina “tough”, da Formlabs). E dá para se inferir que devido ao modo como funciona a tecnologia, ela é monocromática por es-

Imagens: Fornecidadas pelo autor

mais novas da B9 Creator e da Form2 estão perto dos US$ 4 mil, o que se traduz no Brasil, com os impostos e custos de importação, em quase US$ 30 mil em julho de 2016. E os materiais? Quanto saem os preços? Resinas fotocuráveis não são algo extremamente raro, mas também não são insumos comuns. Odontologistas usam para próteses. A resina é geralmente vendida por volume, e se estamos acostumados a comprar “um quilo” de filamento, compraremos uma resina em pote de “um litro” ou “meio litro”. E assim como com filamentos de FDM, os preços podem variar bastante: temos desde resinas bem baratas, de US$ 40 o litro, até algumas mais especializadas que custam aproximadamente US$ 200. Temos algumas bem high-end, cujo preço pode passar de US$ 500, mas são raras. No entanto para chegar ao Brasil, com impostos e frete, não se encontrava litro de resina por menos de US$ 700, com preços mais comuns entre US$ 1 mil e US$ 2 mil. Um detalhe importante é que as impressoras 3D SLA que usam galvos (em vez de DLP) precisam de maior sensibilidade, e as resinas saem um pouco mais caras. Uma resina de SLA pura geralmente funciona em uma SLA/DLP, mas uma de SLA/DLP geralmente dá problemas em SLA pura (considerando que as faixas de frequências de cura sejam as mesmas).


// 25

sência. Mexer com resinas é algo que demanda um grande trabalho e proteções, de luvas a óculos, com perigo de toxicidade, e com muitos insumos adicionais – uma cuba onde a impressão é feita é considerada um “artigo descartável” e recomenda-se que seja trocada a cada dois litros de resina. Mas tudo isso são problemas com solução ou amenizantes. Cubas mais baratas, fundos trocáveis, dutos autolimpantes, resinas super-resistentes, resinas flexíveis, peças encaixáveis. E o principal: em 2016, poucos anos após a introdução das duas impressoras que se tornaram padrões de fato de mercado - a Open-Source B9 Creator como a DLP e a Form1/2 como SLA, ambas com vários “clones” -, a queda da patente parece ter vingado, e uma democratização vertiginosa da tecnologia já toma lugar. Projetos abertos como o brasileiro openmakerlab e internacionais como a OpenSLA já anunciam projetos de impressoras SLA open source, no estilo reprap; até mesmo uma tradicional companhia, a Autodesk, disponibiliza agora sob licença livre o projeto de uma impressora 3D SLA/DLP inteira, a Ember. E não para por aí, pois até uma resina transparente para ser usada na Ember eles colocaram sob licença open source! Fabricantes de resinas baratas e resistentes tanto para SLA quanto DLP começam a pipocar e, no Brasil, já temos a MakerTech Labs, que começou a vender litros de resina de alta qualidade por US$ 350 - menos da metade do menor preço até então. Vários dos fabricantes de impressoras 3D nacionais, como a Sethi3D e a Cliever, anunciaram seus modelos de impressora 3D SLA ou SLA/DLP. A B9 Creator ganhou representação oficial no Brasil e outros modelos têm sido bastante importados. Até anúncios de impressoras 3D SLA usadas têm aparecido nos classificados e sites de vendas.

∂ Illustration 3: Cliever SL1 (SLA) no Inside 3D Printing 2016

O futuro Estamos vivenciando o mesmo fenômeno que ocorreu com FDM a partir de 2009. Finalmente, impressoras 3D SLA nacionais apareceram e, dada a ampla documentação da tecnologia e das peças relativamente baratas, o custo das máquinas ainda deve diminuir bastante, assim como os materiais que nos EUA já se encontram equivalentes aos dos filamentos. Não há dúvidas de que com SLA resolvendo muitos dos problemas que assolam FDM, ela será uma tecnologia que compartilhará o espaço e as mentes dos tecnófilos e early adopters, e com o crescimento, o barateamento e a difusão, inevitavelmente se tornará um item tecnológico de massa, como um laptop ou celular, para uso geral – uma fabriquinha portátil que faz a forma que você imaginar.

Cláudio Sampaio é formado em Engenharia de Computação na Unicamp, desenvolvedor de software e administrador de sistema com 18 anos de experiência. Profissional maker e entusiasta de embarcados e impressão 3D, palestrante e educador sobre novas tecnologias. ∂ Illustration 2: Sethi3D SLA/DLP no Inside 3D Printing 2016

patola@gmail.com

iMasters #23 Agosto 2017


26 // POR DENTRO DO W3C

iMasters #23 Agosto 2017


DROPS DO MERCADO

// 27

HELPERS E API’S DA DIRECTCALL, AGORA TAMBÉM RECEBEM LIGAÇÕES DE DENTRO DA SUA APLICAÇÃO HOSPEDAGEM RECOMENDADA PELA WORDPRESS.ORG A Bluehost, parceira e entusiasta do WordPress.Org, está lançando no Brasil a Hospedagem Otimizada Wordpress. Essa hospedagem em nuvem já é previamente configurada para maximizar o desempenho do Wordpress, além de facilitar ainda mais sua instalação e gerenciamento. Também é possível criar inúmeras contas de email na mesma hospedagem. O pacote também inclui a proteção do Sitelock contra potenciais invasores e malwares e o backup-as-a-service CodeGuard, que cria backups regulares e atualizados na nuvem, permitindo que se restaure o site para qualquer versão anterior a qualquer momento. A Bluehost dá mais um passo para incentivar o desenvolvimento do WordPress no Brasil e se consolidar como uma das maiores especialistas nesse importante CMS.

NOVA API DA MUNDIPAGG DISPONIBILIZA SOLUÇÃO PARA MULTICOMPRADORES Você sabia que novas opções de pagamentos podem melhorar a conversão do e-commerce do seu cliente? A nova API da MundiPagg disponibiliza ao consumidor mais flexibilidade no pagamento para compras em grupos. Assim, é cada vez mais fácil oferecer soluções inteligentes para diferentes nichos de mercado, como por exemplo dividir a compra de uma partida de futebol televisionada ou ainda para comércios de delivery, onde o consumidor final tem a opção da divisão do valor do pedido. “Nosso foco é o cliente. Estamos cada vez mais pensando em estratégias para atender as necessidades do mercado e oferecer as melhores soluções de pagamento para cada loja”, afirma João Barcellos , CEO da MundiPagg.

Através deles já se podia realizar chamadas com um clique, gravá-las na nuvem, enviar SMS’s unitários ou em lote e ainda acessar extratos de todas essas operações. Agora, também é possível atender chamadas de dentro do seu sistema. Ao receber uma chamada, o Helper abre uma tela identificando a origem da ligação. Se constar no banco de dados do sistema, o nome do cadastro é evidenciado antes do atendimento. Se desconhecido, o número é binado. Esta tela também oferece opções clicáveis ao usuário, como: Atender, atribuir a outra pessoa, tocar mensagem Voicemail, enviar SMS com mensagem de linha ocupada, entre outras. Todas essas permissões, bem como a hierarquia dos atendimentos, são configuráveis num painel admin. Os Helpers da DirectCall são desenvolvidos em HTML5, CSS e Javascript. Para integrar, bastam poucas linhas de código, graças à estrutura em MVC. Acesse a documentação: https://api.directcall.com.br. Tudo muito prático e rápido, tanto para o usuário, quanto para o integrador.

IBM ABRE LABORATÓRIO DE NANOTECNOLOGIA NO RIO DE JANEIRO O Laboratório de Pesquisa da IBM Brasil acaba de criar um novo espaço para pesquisa e instrumentação na área de nanotecnologia, o NanoLab. “O NanoLab é um ambiente único de estudo e instrumentação experimental para a criação de dispositivos e manipulação de materiais de nanoescala, permitindo o desenvolvimento de métodos e aplicações para escala industrial de tecnologia de TI”, afirma Mathias Steiner, gerente do Laboratório de Pesquisa da IBM Brasil. Há quatro anos a IBM trabalha no Brasil em estudos de nanociência e nanotecnologia e modelos computacionais focados na interação de materiais. Neste período, o Laboratório submeteu 25 patentes ao United States Patent and Trademark Office e uma já foi concedida. O atual foco do laboratório é trabalhar soluções industriais para as áreas de petróleo & gás, agricultura e saúde. Os dois principais projetos são de recuperação aprimorada de petróleo (EOR) e análises bioquímicas em agricultura.

iMasters iMasters #23 #22 Agosto Maio 2017


28 // DNS

BOAS PRÁTICAS SOBRE PROPAGAÇÃO DNS Por Gustavo Stiefano, Responsável pelo Marketing da ResellerClub Brasil

O que é e como funciona Todos sabemos como o DNS funciona, mas algo que não é muito falado é como a propagação de DNS funciona, como monitorá-la e quais as boas práticas para que você não fique refém desse serviço. Sabemos que a Internet é composta por 13 servidores DNS raiz “espalhados” pelo mundo, sendo 10 nos EUA, um na Ásia e dois na Europa. Para que nossas requisições não tenham que consultar sempre algum desses 13 servidores, a fim de manter a disponibilidade da Internet, foram criadas réplicas localizadas por todo o mundo. Existem também os provedores de Internet, que possuem seus próprios DNS. Estes, basicamente, mantêm um cache ou imagem temporária dos bancos de dados dos servidores raiz com o objetivo de manter a disponibilidade, a velocidade e diminuir o tráfego da Internet. Essa solução, entretanto, acaba gerando um gargalo na propagação. Embora esses provedores possuam um espelhamento dos servidores raiz, eles não são atualizados instantaneamente como as réplicas - eles são atualizados periodicamente. E essa periodicidade pode variar entre horas ou dias. Algumas informações dizem que esse serviço leva no máximo 48 horas, porém o seu provedor pode optar por fazer essa atualização a cada três dias. O problema aqui é que, caso você tenha modificado o endereço DNS do seu site, este passará a possuir dois endereços diferentes até que todos os servidores DNS sejam atualizados. Assim, ora o usuário poderá ser direcionado para o site atual, ora será direcionado para o site antigo. iMasters #23 Agosto 2017

Estratégias e boas práticas Existem várias ações que fazem com que seu endereço DNS mude. Ativar a utilização de máscara ou reencaminhamento, ativar a DNSSEC (extensões de segurança do sistema de Nomes de Domínio), definir anfitriões e endereços IP e criar sites para dispositivos móveis são algumas dessas ações. Algumas configurações podem interferir no tempo de atualização do seu DNS. As definições de TTL indicam o tempo em que os servidores irão guardar em cache as informações dos seus registros de DNS. Aqui, você tem duas alternativas. A primeira é deixar o seu TTL com um tempo longo - uma hora, por exemplo. Nesse caso, os servidores guardaram as informações no cache durante esse tempo. Isso é bom porque as requisições feitas serão atendidas mais rapidamente graças ao cache. Porém, caso seu site seja dinâmico, essa estratégia não funcionará muito bem, pois seus usuários receberão informações atrasadas. Por outro lado, você pode deixar o TTL bem curto dois minutos, por exemplo. Aqui, a garantia de que seu site estará sempre atualizado é bem maior, mas o tempo de processamento do servidor será maior, pois essa definição aumenta o número de consultas enviadas ao servidor. Com dito anteriormente, o ISP, seu provedor de Internet, é o responsável por manter seus acessos mais rápidos mantendo um cache periódico. Devese tomar cuidado com a estratégia do seu provedor, porque, caso ele ignore o TTL, o tempo de propagação irá aumentar.


Ilustração: Por Aa Amie

// 29

Ferramentas Existe uma série de ferramentas que podem auxiliar você a acompanhar esse processo de propagação de DNS. O App Synthetic Monitor é uma ferramenta que possui alguns recursos interessantes, como pingar o seu DNS a partir de 90 locais espalhados do mundo, e analisar e verificar o DNS traceroute do seu IP. Temos também o DSN Checker, que executa a verificação de propagação dos DNS em 22 locais de todo o mundo. Outra ferramenta parecida com essa é o Ceipam.Eu DNS Lookup, uma ferramenta online capaz de verificar o seu DNS a partir de 17 locais diferentes ao redor do globo. Devemos nos preocupar com as nossas configurações, com as configurações do nosso provedor de Internet e sempre checar nosso DNS por meio de ferramentas. Existem muitas outras ferramentas como as descritas acima, gratuitas e pagas. Caso você queira checar como está a saúde do seu DNS, basta dar uma pesquisada na Internet que encontrará algumas bem legais. Escolha aquela que mais se adequa às suas necessidades e cuide da visualização do seu site.

Gustavo Stiefano é responsável pelo Marketing da ResellerClub Brasil. Formando em propaganda e marketing pela ESPM, trabalhou no marketing de empresas de tecnologia e é fascinado pelo mundo digital e seu impacto no dia-a-dia das pessoas.

gustavo.stiefano@endurance.com

iMasters #23 Agosto 2017


30 // PHP

DESENVOLVENDO WEB CRAWLER E BOTS COM SELENIUM WEB DRIVER EM PHP Por Rodrigo “pokemaobr” Cardoso, Community Manager no iMasters

Uma das tarefas mais comuns em desenvolvimento web é a “captura” de dados de diversos sites para alimentar uma base. Grandes empresas como Google, Microsoft e Yahoo! utilizam esse tipo de técnica, por exemplo, para alimentar sua base de dados de sites e conteúdo, que são exibidos em seus buscadores. Comumente, chamamos esse mecanismo de captura de “WebCrawler”, já que eles funcionam como Vormes - entram em um site e vão capturando o conteúdo, além de entrarem em cada link do site e também capturarem seu conteúdo, e assim por diante... Em PHP, é muito comum utilizarmos a função cURL para “crawlearmos”. Realmente, é uma função muito boa para isso, já que ela retorna toda a requisição HTTP que é recebida ao chamarmos uma determinada URI. Só que manipular sessão, controlar cookies, validar formulário e JavaScript são coisas quase impossíveis com o cURL, já que ele literalmente só trabalha com strings. O Selenium é um motor de automatização de tarefas, feito em Java, largamente utilizado para desenvolver testes de aceitação em sistemas web. Ele funciona em conjunto com o que chamamos de “drive do navegador”, que seria uma capa do navegador. Por exemplo: o drive do Chrome seria um navegador Chrome com todas as suas funcionalidades básicas de navegação. Um adendo sobre os drivers: a maioria deles necessita de interface gráfica para funcionar. Caso você esteja em um servidor ou em um sistema operacional sem interface gráfica, deverá utilizar um driver que não necessite, como o do PhantomJS. iMasters #23 Agosto 2017

Podemos enviar comandos ao Selenium através de diversas bibliotecas em várias linguagens, e ele replica esse comando ao driver do navegador e realiza a ação dentro do browser. Assim, ele acaba trabalhando como um “bot” e simulando toda a iteração dentro do navegador. Dessa forma, ao realizar uma tarefa como um login, enquanto o driver não for fechado, ele irá manter a sessão logada. Para trabalhar com comandos no Selenium em PHP, o Facebook desenvolveu uma biblioteca chamada WebDriver. E será essa biblioteca que iremos utilizar para nosso estudo de caso. Agora, vamos instalar nossa stack para desenvolvermos os crawlers e os bots com o Selenium. Primeiramente, caso você não tenha o Java instalado, será necessário instalar o Java correspondente ao seu sistema operacional. Após isso, você deverá baixar o servidor Selenium (http://www.seleniumhq.org/download/), na versão Standalone Server, para um diretório de fácil acesso. Então, deverá baixar o driver correspondente ao navegador que você gostará de utilizar. Por exemplo, para utilizar o driver do Chrome, você deverá baixar o driver nesta URL: https://goo.gl/UmJMn8; no link de cada driver, os mantenedores mostram onde o drive deverá estar dentro do seu sistema operacional. Além disso, você deverá definir o driver como variável de ambiente no seu sistema operacional. Depois dos passos acima, para deixar o Selenium “funcional”, basta ir até a pasta onde está o Selenium Standalone Server pelo terminal e digitar o comando: java-jar “arquivo correspondente ao selenium stand-alone server”. Após isso, o Selenium ficará ativo.


// 31

Enquanto seu Selenium estiver ativo, todos os comandos do Webdriver serão reconhecidos e enviados ao driver escolhido - caso o driver esteja como variável de ambiente. Agora, para usar o Webdriver, basta executar um composer require na pasta do seu projeto:

header(“Content-type: text/html; charset=utf-8”); //definindo o cabeçalho para utf-8

composer require facebook/webdriver

require_once(‘vendor/autoload.php’); // realizando o autoload das classes pelo composer

Então, o seu projeto terá tudo o que for preciso para rodar os comandos do Selenium através da biblioteca do Webdriver. Vamos a um exemplo de chamada básica ao Selenium através do Webdriver:

$url = ‘https://google.com’; // definindo a url como a do google

example.php

Imagens: Fornecidadas pelo autor

<?php namespace Facebook\WebDriver; // Definição do namespace use Facebook\WebDriver\Remote\ DesiredCapabilities; //chamada à classe de drivers use Facebook\WebDriver\Remote\ RemoteWebDriver; //chamada à classe de WebDriver

$host = ‘http://localhost:4444/wd/hub’; // Host default $capabilities = DesiredCapabilities::chrome(); // escolhendo o driver como chrome $driver = RemoteWebDriver::create($host, $capabilities, 5000); // criando uma nova conexão com o driver $driver->get($url); // realizando uma requisição HTTP get na $url

Ao salvar o arquivo acima e executar (com o Selenium ativo em background), será aberto um driver do Chrome com a página do Google. iMasters #23 Agosto 2017


32 // PHP

Para interagir com os elementos da página, devemos usar o método findElement da classe Driver. No caso, a barra de pesquisa do google.com possui o id “lst-ib”. Podemos usar o id para digitar alguma coisa na barra. Além do id, podemos também utilizar o WebDriverBy::cssSelector($seletor), passando a string do seletor CSS correspondente ao elemento. Por exemplo, adicionando o código abaixo no fim do arquivo example.php, faremos uma pesquisa sobre o Dia dos Namorados.

$pesquisa->sendKeys(array(WebDriverKeys::ENT ER)); //método sendKeys enviando um ENTER na pesquisa

Assim como o ENTER, outras teclas especiais são mapeadas pelo WebDriverKeys. Podemos clicar também no elemento utilizando o método click(). Para clicar num link $link, podemos fazer $link->click();. O que fizemos acima pode ser replicado para o que você quiser, como preencher formulários, logar em algum site, acessar links dentro de sites. Mas co-

Imagens: Fornecidadas pelo autor

$pesquisa = $driver->findElement( //método findElement encontra um elemento do html WebDriverBy::id(‘lst-ib’) //WebDriverBy::id definimos aqui o id do elemento )->sendKeys(‘Dia dos Namorados’); //método sendKeys “digita” na barra de pesquisa

Perceba que o Selenium encontrou o id da barra de pesquisas e digitou a pesquisa que queríamos, mas não enviou os dados para a pesquisa. Para fazer isso, basta digitarmos um ENTER.

iMasters #23 Agosto 2017


Ilustração: Por 32 pixels

// 33

mo podemos, por exemplo, pegar dados de algum elemento do site? Do mesmo jeito que fizemos com o sendKeys ou o click. Primeiramente, encontramos o elemento, e daí utilizamos o método getText(). Caso tenhamos um elemento $td, podemos fazer um $texto = $td->getText();, então todos os valores de texto no elemento $td serão parseados e estarão na variável $texto. Agora é só deixar a imaginação te levar. Podemos fazer muitas coisas utilizando o WebDriver, e acho que deu para ver que é bem fácil e prático. Para saber ainda mais sobre o Webdriver, basta entrar no repositório oficial do GitHub: https://github.com/facebook/php-webdriver. E caso queira ver mais exemplos de código que usamos aqui no artigo, acesse http://bit.ly/selenium-webdriver. Um grande abraço, até mais!

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 #23 Agosto 2017


34 //

DROPS DO MERCADO REDE TRAZ NOVIDADES PARA SUA PLATAFORMA DE E-COMMERCE E LANÇA NOVA API

Seguindo a tendência do mercado de pagamentos digitais e aperfeiçoando nossas soluções de e-commerce, a Rede atualiza sua API para melhores práticas do mercado. Agora em agosto, o e.Rede, nosso serviço de adquirência para e-commerce, passa a disponibilizar a nova API REST, trazendo uma melhor experiência de uso para os desenvolvedores e facilitando ainda mais a integração. Nela foram incluídas novas funcionalidades importantes para os negócios, como as transações de débito autenticadas no padrão 3DS e o Cancelamento Online, novo canal para solicitação de cancelamento de venda (via API) no qual todo o processo pode ser realizado no backoffice do lojista. Novos códigos de retorno também foram abertos, facilitando o entendimento do motivo pelo qual uma venda não foi aprovada. A nova API já está disponível nas principais linguagens para integração: PHP, .NET (C#), Java, Python, Ruby, Node JS. Acesse nosso site www.userede.com.br e saiba mais.

FIAP LANÇA NOVOS CURSOS SHIFT A FIAP, o centro de excelência em tecnologia mais respeitado do país, apresenta seus novos cursos SHIFT de curta duração. E os temas são: Arquitetura de Soluções, NEO4J, UX - User Experience, Bitcoin & Blockchain, Drones, Growth Hacking, SCRUM e Jornada do Consumidor. Com foco em tecnologia, inovação e empreendedorismo, os novos cursos vêm se juntar a um portfólio de mais de 50 SHIFT, entre presenciais e on-line. Uma ótima oportunidade para quem quer buscar o novo. Mais informações, acesse fiap.com.br/shift.

iMasters #22 #23 Agosto Maio 2017 2017

UMBLER ÇANÇA NODE.JS E ARQUITETURA EM DOCKER A Umbler, startup de Cloud Hosting para agências e desenvolvedores, lançou em junho a hospedagem para Node.JS. O projeto marca um novo momento para a startup, já que passa a operar em uma arquitetura baseada em Docker. A novidade é parte de um processo que envolveu meses de pesquisa e desenvolvimento e, em muitos casos, a recriação de algumas partes da plataforma. Para quem quiser hospedar projetos em Node.JS na Umbler, poderá escolher a estrutura de contêiner para sites e aplicações. A Umbler planeja lançar outras linguagens na nova arquitetura, iniciando com o PHP, ainda no segundo semestre de 2017.

NOVOS DOMÍNIOS EM ALTA NOS GRANDES EVENTOS DE TECNOLOGIA MUNDO AFORA Em maio de 2017, Amsterdã recebeu 15 mil participantes na The Next Web Conference, um dos maiores eventos de tecnologia da Europa. O evento incluiu um dos maiores hackathons da região, TNW Hack Battle, com o tema Battle of the Sensors. Cada participante do hackathon fez um pitch de 60 segundos sobre seu protótipo, após o que 10 finalistas apresentaram suas criações a um júri de hackers experientes para disputar o prêmio em dinheiro de € 2.000. Enquanto o domínio .FUN acabou por se posicionar como um grande sucesso entre os participantes neste hackathon, outras novas extensões de domínio também mostraram casos de uso interessantes, chegando entre os 10 finalistas. Alguns dos finalistas foram sensors.fun, rock-on.space, toonbnb. host, yourfifi.online e o grande vencedor, bikingdrunkis. fun. A Radix opera algumas das novas extensões de domínios mais procuradas, como .online, .site, .website, .space, .tech, .fun, .store, .host e .press. Leia mais em www.radix.website.


// 35

iMasters iMasters #21 #23 Fevereiro Agosto 2017


36 // MOBILIDADE É TUDO

Popularização do padrão Publisher/ Subscriber no mobile e na IoT Por Ricardo Ogliari, Engenheiro Android no BTCjam

de mobile e Internet of Things. O padrão Publisher/Subscriber está cada vez mais presente em APIs, frameworks e bibliotecas de código, para as mais diferentes plataformas com foco nas categorias descritas anteriormente. Antes de comprovar essa teoria e mostrar algumas das possibilidades que o desenvolvedor mobile/IoT possui, vamos descrever de forma sucinta o padrão Pu -blisher/Subscriber.

Ilustrações - Publish - Subscriber. Fonte: https://goo.gl/RTIg47

O

O desenvolvimento de software, independentemente da plataforma alvo, sofre mudanças, evoluções e inovações constantes. O uso de um padrão de desenvolvimento, ou de um padrão de comunicação para os componentes que fazem parte do software como um todo, se tornou comum e trivial nos últimos anos. Recentemente, um padrão vem ganhando destaque no mundo do desenvolvimento, principalmente quando falamos

iMasters #23 Agosto 2017


// 37

Na Figura 1, tem-se uma representação visual do padrão. Além de falar sobre o Publisher/Subscriber, a imagem está inserida em um texto que fala sobre o MQTT (Message Queue Telemetry Transport), comprovando a união com IoT. Mas vamos à descrição: O padrão Publish/Subscribe cria uma entidade central, muitas vezes chamada de Broker, que recebe mensagens dos publishers e as reencaminha para subscribers cadastrados. Uma analogia semelhante seria a assinatura de um RSS em uma página de notícias, por parte do leitor. Um dos pontos fortes desse protocolo é o desacoplamento entre o publish e o subscribe. Os dois elementos têm conhecimento zero um do outro, permitindo uma independência muito grande entre os elementos que populam as mensagens no broker e os elementos que irão consumir essa informação. E essa independência favorece, e muito, a adoção do protocolo no ambiente móvel e, principalmente, no mundo da Internet das Coisas. Justamente porque a heterogeneidade dos elementos, tanto no publish quanto no subscribe, é muito grande. Imaginem a quantidade de plataformas, linguagens de programação, protocolos de comunicação e tecnologias para um software poder atingir um número massivo de clientes em IoT.

E começando pela IoT, o MQTT foi um dos primeiros protocolos popularizados que utiliza o padrão publish/subscribe. O Eclipse, uma das IDEs mais adotadas para desenvolvimento, fornece até um broker open source. Veja a descrição encontrada no site oficial da ferramenta (https://mosquitto. org/): “Eclipse Mosquitto™ is an open source (EPL/EDL licensed) message broker that implements the ​MQTT protocol versions 3.1 and 3.1.1. MQTT provides a lightweight method of carrying out messaging using a publish/subscribe model. This makes it suitable for “Internet of Things” messaging such as with low power sensors or mobile devices such as phones, embedded computers or microcontrollers like the Arduino”. O mesmo Eclipse também fornece o Paho (https://goo.gl/AyFW2Q), uma biblioteca cliente escrita em Java para uso na plataforma mobile Android. Olhando sob um ponto de vista mais genérico, podemos inclusive dizer que, mesmo no smartphone, não saímos da IoT, afinal de contas, um dispositivo móvel também é uma “coisa”, ou um nó que produz e consome dados da Internet. Mas nem só de Eclipse o mundo vive, não é mesmo? Uma API que tem muitos adeptos no mundo mobile é a PubNub. Sua biblioteca para as principais plataformas do mobile, Android e iOS, é simplificada - basta criar um canal e publicar e/ou esperar por mensagens publicadas. Mas há alguns pontos que chamam a atenção. iMasters #23 Agosto 2017


38 // MOBILIDADE É TUDO Falando especificamente sobre o Android, líder no mercado de smartphones, temos a Event Bus. Segundo o próprio site oficial da biblioteca, “is an opensource library for Android using the publisher/subscriber pattern for loose coupling. EventBus enables central communication to decoupled classes with just a few lines of code – simplifying the code, removing dependencies, and speeding up app development”. Poderia escrever mais alguns parágrafos sobre exemplos de implementação do protocolo publish/subscribe no mundo móvel e IoT, mas acredito que já foi possível entender sua importância e penetração nesses dois mercados. Além disso, indico que o leitor comece a utilizar qualquer uma das soluções apontadas aqui. Você também vai se impactar com a facilidade de implementação e codificação.

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 #23 Agosto 2017

Ilustrações - https://goo.gl/yD7sGq

O primeiro deles é que o PubNub tem um conceito de canais. O broker, que mencionamos anteriormente, vira um Channel nessa API. O segundo e, no entendimento deste autor, o mais impactante: o PubNub oferece SDK e documentação completa para mais de 70 plataformas distintas. Por exemplo, é possível fazer um jogo (tem suporte para Unity) que, quando o jogador atinge uma fase ou conquista algo importante, pisca as luzes da residência (tem suporte para 16 plataformas de IoT) e liga o aparelho de televisão (tem suporte para WebOS e Samsung Smart TV). Simplesmente sensacional. Outro bom exemplo é o Google Pub/ Sub. Na página oficial da plataforma, podemos encontrar uma imagem que, basicamente, poderia ser usada em alguma aula sobre o padrão publish/subscribe:


// 39

iMasters iMasters #21 #23 Fevereiro Agosto 2017


40 // MACHINE LEARNING

DIFICULDADES NA IMPLANTAÇÃO DE CHATBOTS COM MACHINE LEARNING Por Mateus Schmitz, Analista de Desenvolvimento na KingHost

A utilização de chatbots, aliados ao aprendizado de máquina e ao Processamento de Linguagem Natural (PLN), é algo que tem despertado interesse de muitas pessoas e empresas. Hoje, temos muitas ferramentas para trabalhar com essas interfaces, e elas têm se tornado cada vez mais simples e acessíveis. Apesar disso, ainda existem grandes desafios e dificuldades na hora da implantação de um chatbot. O uso de machine learning para tornar a conversa humano x máquina mais completa é um desses grandes desafios. Dados para treinamento, SDK, PLN e definição de escopo são alguns dos pontos que requerem grande atenção e serão abordados aqui, bem como sugestões de ferramentas. Retrieval-based Model X Generative-based Model Os primeiros grandes desafios na implantação de um chatbot inteligente são a definição e o estudo de iMasters #23 Agosto 2017

qual modelo se aplica melhor à solução desejada. Hoje, basicamente temos dois modelos amplamente utilizados: Retrieval-based Model e Generative-based Model. Ambos descrevem a forma como devemos tratar os retornos de texto com base nos inputs recebidos. O modelo Retrieval é o mais utilizado e o mais fácil de ser implantado. Através dele, analisamos os inputs do usuário utilizando uma heurística definida, que pode ser simplesmente um reconhecimento de padrões de linguagem ou um algoritmo de aprendizado. Com a análise de inputs e contexto claramente definidos, buscamos no nosso repositório de respostas aquela que mais se adequa ao contexto em questão. Já o Generative é um modelo mais difícil e complexo de ser implementado, pois, nesse caso, a Geração de Linguagem Natural é utilizada para responder aos inputs do usuário. Os inputs são sempre analisados quanto a

contexto, sentimento, entidades etc. Com essas informações em mãos, geramos as respostas pertinentes e retornamos ao usuário, utilizando normalmente técnicas de tradução. Essas técnicas têm o mesmo objetivo que tradutores de idiomas, mas elas focam em transformar a entrada de dados. Ou seja, essas práticas traduzem o contexto, o sentimento e as entidades em uma linguagem compreensível para os humanos. Veja que ambos os modelos têm prós e contras. No caso do Retrieval-model, podemos garantir que o retorno dado ao usuário faz total sentido para ele, sendo útil para o que se propõe, ao mesmo tempo em que é possível garantir que o retorno seja livre de erros gramaticais. Já no modelo em que o output é gerado exclusivamente pela máquina, não temos como garantir a mesma precisão. Dependendo do treinamento e das análises, a resposta pode conter erros gramaticais ou não fazer sentido algum para o usuário.


// 41

Imagens: Fornecidadas pelo autor

A definição do melhor modelo deve ser feita sempre em comparação com o escopo, levando em consideração se ele é aberto ou fechado. Se o chatbot tiver um escopo fechado, ótimo. Assim, ambos os modelos podem ser aplicados, com maior ou menor dificuldade. Agora, se o seu modelo for o aberto, a exemplo de bots ligados a entretenimento geral, o modelo Retrieval se torna inviável, devido à complexidade para processamento dos inputs e da base de dados para recuperação de outputs. A imagem abaixo cruza os escopos com os modelos citados e nos mostra a complexidade de implantação de cada uma das possibilidades. Esse comparativo pode servir como referência na escolha do modelo a ser adotado.

Datasets e treinamento Quando falamos de machine learning, a montagem de datasets comumente toma um tempo relativamente alto de desenvolvedores e cientistas de dados. Esse é um trabalho necessário,

uma vez que todo o aprendizado de uma máquina se originará dos conjuntos de dados criados por esses profissionais. Pode ser que você precise de um dataset com informações muito específicas e que atenda a um certo padrão de entrada. Nesse caso, a primeira solução que vem à mente será a de montar um dataset com os dados já disponíveis em sua base, o que pode ser custoso e muitas vezes insuficiente para um bom treinamento. No caso de não haver dados suficientes na sua base, uma alternativa é o uso de datasets públicos. Existe uma infinidade de plataformas que fornecem grandes quantidades de dados sobre os mais diversos assuntos e campos. O maior exemplo é o UC Irvine Ma-

chine Learning Repository (UCI), que disponibiliza aproximadamente 370 datasets, desde 1987. Os datasets disponíveis no UCI possuem os mais variados tipos de informações, desde dados de plantas, doenças, energia elétrica até imagens para

treinamento de reconhecimento de padrões em fotos. O Kaggle também é um repositório bastante utilizado e com bom conteúdo disponível gratuitamente. Com uma interface mais amigável, o Kaggle facilita a busca de datasets e possui uma comunidade bastante ativa, responsável pelos conjuntos de dados disponibilizados na plataforma. Se você deseja dados brasileiros, uma boa alternativa é fazer uso da Lei de Acesso à Informação e consultar os dados disponibilizados pelo governo. A Wikipédia ainda possui uma curadoria de plataformas, divididas por tipos de recursos, como texto, áudio e vídeo. O objetivo da utilização de datasets já prontos é a redução do tempo de criação dos conjuntos de dados de treinamento e teste, levando em consideração que você está utilizando aprendizagem supervisionada ou semi-supervisionada. Entre os inúmeros conjuntos de dados públicos, é possível utilizar algum dataset que atenda à necessidade de treinamento do seu projeto ou então que seja pelo menos adaptável. O Processamento de Linguagem Natural - Inputs A área de PLN é estudada há bastante tempo e teve avanços significativos nos últimos anos. Hoje conseguimos, através da PLN, fazer com que um computador analise um texto escrito por um humano de forma muito mais eficiente. Porém, ainda temos um longo caminho pela frente até que essa interação se torne tão fluída a ponto de um usuário não reconhecer que interage com um robô. Do ponto de vista ético, não é ruim que o usuário saiba que interage com um bot. Isso se torna um problema quando a percepção do usuário vem de uma falha, como iMasters #23 Agosto 2017


42 // MACHINE LEARNING

um erro ao identificar um input ou um output fora do contexto. A interpretação do que o usuário escreve não é, obviamente, feita da mesma forma que um humano a faria. Ela é analisada de diversas formas, como quanto ao contexto, sentimento, intenção, ambiguidade, semântica, objeto e estrutura do texto. Nesse ponto, você já entendeu o quão complexo e difícil é para a máquina interpretar o que uma pessoa digita. Adicione a isso tudo o fato de a pessoa escrever de forma incorreta,

dois primeiros são gratuitos e não possuem planos pagos, já o L.U.I.S. tem opções pagas, mas disponibiliza também um plano free. Entre eles, há diferenças nas estruturas de retorno de informações, portanto, convém analisar a que melhor se adequa aos seus objetivos. Quanto a treinamento, todos eles permitem a configuração de intenções e disponibilizam APIs para integração das aplicações. Com exceção do sistema da Microsoft, os demais possuem suporte para diversos idiomas, entre eles o português.

“A INTERPRETAÇÃO DO QUE O USUÁRIO ESCREVE NÃO É, OBVIAMENTE, FEITA DA MESMA FORMA QUE UM HUMANO A FARIA. ELA É ANALISADA DE DIVERSAS FORMAS, COMO QUANTO AO CONTEXTO, SENTIMENTO, INTENÇÃO, AMBIGUIDADE, SEMÂNTICA, OBJETO E ESTRUTURA DO TEXTO” com abreviações, gírias, regionalismos e/ou vícios de linguagensesse conjunto de fatores torna o processamento de linguagem natural muito custoso e complexo. Todo esse trabalho pode ser feito do zero? Sim. Deve? Provavelmente não. Em relação à análise de dados, é possível utilizar serviços de terceiros, gratuitos e bastante confiáveis. Podemos citar três muito utilizados: Api.ai, que foi comprada pelo Google em 2016, Wit.ai, adquirida pelo Facebook em 2015, e Language Understanding Intelligent Services (L.U.I.S.), da Microsoft. Os iMasters #23 Agosto 2017

Concluindo O que abordamos aqui são apenas alguns dos pontos interessantes e desafiadores no desenvolvimento e implantação de interfaces de conversação. Existem outras questões não abordadas de igual importância, como deep learning, algoritmos utilizados para extração de sentimento e intenções de sentenças, personalidade do robô e o ecossistema onde ele atuará. Quando falamos de personalidade, nos referimos à coerência dessa personalidade, onde perguntas diferentes e que possuem

o mesmo significado devem ser respondidas da mesma forma. Este último ponto em especial deve ser observado no momento de treinamento e testado de forma a garantir esse comportamento. No cenário atual, grande parte dos comunicadores e sistemas de chat possui integração via API e, portanto, é possível integrá-los a uma interface inteligente. Sistemas como Messenger, Slack, Skype e Telegram são exemplos que já utilizam bots e podem ser melhorados com o uso de machine learning. Todo esforço para desenvolvimento de um chatbot pode ser desperdiçado caso a experiência do usuário seja negligenciada. Lembre-se de que o objetivo de tornar interfaces conversacionais mais inteligentes é fazer com que a interação seja a mais próxima possível de uma conversa com outra pessoa. Essas interfaces têm ganhado bastante espaço no mercado atual, e isso faz com que as tecnologias que as envolvem evoluam de forma mais rápida. Vivemos em meio a uma revolução na forma como nos comunicamos, e chatbots são parte dessa revolução. É esperar para ver o que o futuro nos reserva.

Mateus Schmitz é Analista de Desenvolvimento na KingHost, formado em Sistemas para Internet e desenvolve desde 2010. É um apaixonado por APIs e bots.

mateus.schmitz@kinghost.com.br


DROPS DO MERCADO

// 43

CONSTRUA SEUS FUNDAMENTOS DE DEEP LEARNING Deep learning é a tecnologia do momento dentre as empresas do Vale do Silício e brasileiros já conseguem se especializar nesta área. A Udacity lançou 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. “Deep learning é uma tecnologia transformadora que já vemos à nossa volta todos os dias em imagens médicas, pesquisas do Google, carros autônomos e muito mais. Estamos apenas no início do que esta tecnologia pode fazer por nós”, comenta Sebastian Thrun, professor de Stanford e fundador da Udacity. Este Nanodegree tem duração de seis meses e acontece totalmente online. Durante o curso, o estudante aplicará os conhecimentos adquiridos em cinco projetos, e receberá feedback de especialistas em cada um deles. Mais informações e matrícula pelo site udacity.com/deep-learning.

PAGAMENTO POR LINK COM QR CODE Com o Pagamento por Link com QR Code, é possível criar um link de pagamentos com poucos cliques, sem necessidade de integração, configurando diretamente na área logada do lojista no site Cielo. Ao configurar o Pagamento por Link com QR Code, ficará disponível um link de pagamentos para o lojista enviar para o consumidor por e-mail, Whatsapp, Facebook, Instagram, entre outros. Além disso também ficará disponível um QR Code que o lojista pode incluir no seu catálogo de produtos (físico ou online) para direcionar o consumidor diretamente para a página de pagamentos para concluir a compra. É uma forma de pagamento simples e eficiente para o lojista utilizar sem integração.

RESELLERCLUB BRASIL LANÇA VPS KVM (SISTEMA OPEN SOURCE) Uma das grandes novidades da ResellerClub Brasil para o segundo semestre de 2017, o VPS KVM (sistema Open source) possui acesso root completo e recursos dedicados oferecendo confiabilidade e desempenho. Além disso, vale destacar seu acesso gratuito a plataforma Cpanel, o alto nível de personalização, seu preço muito mais acessível e o alto nível de segurança. Com este lançamento a empresa pretende ampliar ainda mais seu portfólio de hosting, abraçando ainda consumidores.

TAYLOR MADE, PORQUE SEU NEGÓCIO É ÚNICO Diariamente consomem-se produtos e serviços pensados em termos da maioria ou no máximo de alguns nichos, também majoritários. Mas e se você precisa de algo mais? Para responder esta pergunta, que a HostMídia criou planos personalizados de hospedagem! Por esta abordagem, você não vai mais precisar ajustar o seu negócio de acordo com os limites existentes. O conceito é simples! Você precisa um pouco mais de processamento para um site mais sofisticado? A programação da sua aplicação exige mais memória? A empresa cresceu e precisa mais contas de e-mail? As suas ações de Marketing estão trazendo mais visitas e consequentemente um tráfego maior? Para qualquer destas ou outras perguntas mais específicas, a HostMídia tem uma solução individualizada! Não limite mais sua participação na Web, porque as opções do mercado são sempre as mesmas. Fale com a HostMídia (https://www. hostmidia.com.br/contato/), informe suas necessidades e tenha um plano sob medida.

iMasters iMasters #23 #22 Agosto Maio 2017


44 // SEGURANÇA

BOAS PRÁTICAS PARA PREVENÇÃO DE PERDA DE DADOS (DLP) Por Yury Baroni, Analista de sistemas na Gerencianet

A preocupação com a segurança da informação nas empresas vem sendo muito discutida no cenário atual da Internet devido à onda de ataques que estão sendo cada vez mais frequentes ao redor do mundo. Mas ainda há um lado no qual muitas empresas pecam quando falamos em segurança da informação, principalmente naquelas que possuem equipes de desenvolvedores, que é a perda ou o roubo de propriedade intelectual. Essa é uma tarefa bastante complexa, com a qual as organizações têm que lidar, pois é algo que parte da empresa para o colaborador. Se isso não acontecer, essas práticas se repetirão por muitos anos. No decorrer de anos de trabalho na área de desenvolvimento, pude perceber isso na cultura das empresas de TI de pequeno e médio porte, onde funcionários deixam seus empregos e acabam levando consigo informações confidenciais da empresa em que trabalharam e, posteriormente, acabam utilizando-as em outra empresa. Analisando essa situação, elaborei 9 pontos que, na minha opinião, são importantes para que uma empresa evite passar por esse tipo de situação. São eles: iMasters #23 Agosto 2017

Implantação de uma política de segurança da informação eficaz e difundida A Política de Segurança da Informação (PSI) é um documento que contém normas, procedimentos e respostas que devem ser disponibilizados, revisados periodicamente e sempre cobrados de cada colaborador quando se fizer necessário, buscando sempre o cumprimento do que ali foi definido. Friso bastante isso, pois são estas políticas que ajudarão a garantir o acesso das informações somente por pessoas autorizadas e que realmente necessitam delas para realizar suas funções dentro da empresa. Para se elaborar uma Política de Segurança da Informação, devemos ter em consciência a NBR ISO/ IEC 27001:2005, que é uma norma de códigos de práticas para a gestão de segurança da informação, em que podem ser encontradas as melhores práticas para iniciar, implementar, manter e melhorar a gestão de segurança da informação em uma organização. E aconselho também que toda empresa faça uma apresentação da política de informação de forma completa para o funcionário em seu primeiro dia trabalho e pontue bem sua importância como sendo um


// 45

em geral e estações de trabalho como um todo. Tudo isso faz grande diferença para evitar que portas sejam abertas. Resposta automática a incidentes e intrusos Uma maneira de você ficar atento aos riscos é implementar e configurar reports, de forma a avisar quando algo fugir da rotina normal de funcionamento. Existem ferramentas bem completas no mercado que possuem um gerenciamento total e que possuem consigo logs na própria aplicação, disparando SMS e e-mail automático quando ocorre alguma detecção de anormalidade. Prevenção de Perda de Dados (DLP) Um dos pontos interessantes para prevenção contra o roubo de propriedade intelectual vem sendo a DLP (Data Loss Prevention), que tem o objetivo de reduzir os riscos da perda de dados por meio de canais de saída comumente utilizados na Internet, como e-mails e drivers na nuvem, e de aplicar dinamicamente a política com base em conteúdo e contexto no momento de uma operação.

Imagens: Por sirtravelalo

bem maior da empresa, pois toda informação é relativamente estratégica e, dependendo de como e aonde ela for parar, pode gerar grandes prejuízos. E também é sempre recomendado se resguardar a propriedade intelectual da empresa por meio de termos assinados pelo funcionário, mesmo que seja um freelancer ou contrato temporário. Gerenciamento de risco em tempo real (compliance) Este gerenciamento tem como objetivo principal coletar informações dos dados em trânsito pela rede e permitir, posteriormente, que você possa rastrear e gerar relatórios partir do histórico reunido, de modo a possibilitar uma reação rápida a fim de proteger sua empresa contra qualquer tipo de vulnerabilidade. Vigilância de segurança de rede Fazer o monitoramento da rede é fundamental e ajuda bastante no compliance e só reafirma ainda mais a necessidade de se vigiar, pois não basta apenas implantar e deixar rodando, temos o dever de checar relatórios e verificar questões como certificados e atualizações, que são fundamentais para servidores

iMasters #23 Agosto 2017


46 // SEGURANÇA

Dessa forma, ela aplica regras a partir de filtros em conteúdos enviados, por exemplo, Dropbox, Google Drive, Gmail, Office 365 e outros. Assim, as chances de uma informação de propriedade não autorizada entrar e sair da rede interna ficam bem reduzidas. As ferramentas de DLP são usadas para abordar o risco de vazamentos inadvertidos ou acidentais, ou exposição de informações empresariais fora dos canais autorizados, usando monitoramento, filtragem, bloqueio e recursos de remediação. Com a DLP, é possível controlar o conteúdo de um e-mail de acordo com a política de segurança da informação, emitindo algum alerta e impossibilitando o envio de conteúdo que foge das premissas configuradas a partir da PSI. Outro ponto sobre o qual gostaria de abrir um alerta é com relação aos exemplos de projetos encontrados na web, em sites como Stackoverflow e até mesmo GitHub (como plugins e bibliotecas). Tomem bastante cuidado ao simplesmente copiar e colar esses tipos de aplicações, pois dependendo da configuração de sua rede eles podem abrigar falhas de segurança, deixando vulneráveis o sistema e a rede da instituição em que você trabalha. Criptografia do endpoint na nuvem É interessante também ressaltar que a maioria das ferramentas permite a criptografia de arquivos e pastas armazenados em unidades locais e removíveis ou em unidades removíveis e discos rígidos inteiros. A criptografia de arquivos minimiza o risco da perda de informações quando, por exemplo, um computador, notebook, HDs e mídias removíveis são furtados ou quando aplicativos ou usuários não autorizados tentam acessar a informação. Fique atento com relação às licenças nesses casos. Na maioria das ferramentas, assim que a licença vence, a criptografia não é aplicada, deixando uma certa vulnerabilidade. Controle de dispositivos de mídia removível As mídias removíveis devem ser controladas e bloqueadas utilizando algum gerenciador de porta USB, tendo seu acesso totalmente restrito. Assim, as deiMasters #23 Agosto 2017

finições de liberação devem partir dos responsáveis da empresa, evitando que as informações trafeguem sem necessidade. Uma das alternativas para a transição de informações entre setores seria a implantação de um serviço de compartilhamento de documentos em algum serviço na nuvem, onde poderiam ser compartilhados internamente seguindo as políticas da empresa, sem a necessidade de fazer o uso de mídias removíveis. Proteção ponto a ponto contra spams e malwares A proteção também deve ser bem definida no P2P, não deixando espaço para spams ou malwares. Uma boa opção é sempre fazer um backup rotineiro das suas bases de dados e do seu código-fonte. De preferência, faça uso também de ferramentas que proporcionam o versionamento do código e controle de erros em seus sistemas. Auditoria periódica Assim como prevê na política, a auditoria é essencial e não deve ser esquecida. A auditoria, em muitas empresas, remete ao medo de estar fazendo algo de errado, mas é uma forma de validar a política e identificar falhas a serem corrigidas, sem falar no enriquecimento do profissional. Hoje temos profissionais que desenvolvem de diversas formas dentro de um projeto. Vejo que a auditoria ajuda na implementação de padrões de projeto em prol de empreendimentos cada vez mais maduros e documentados, proporcionando que a empresa cresça de forma consciente e sem o medo de amanhã ter como concorrente o seu próprio funcionário.

Yury Barony é graduado em Ciência da Computação pela Unipac, em Ipatinga, e Pós-graduando em Gerenciamento de Projetos, pela Universidade Cândido Mendes. Possui mais de cinco anos de experiência como analista de sistemas e desenvolvedor web, atuando principalmente com a linguagem PHP, agregado com o uso do Zend Framework. Atualmente, é Analista de Sistemas na Gerencianet.

yury.oliveira@gerencianet.com.br


// 47

GARANTA A SUA PARTICIPAÇÃO EM UM DOS MAIORES EVENTOS DE E-COMMERCE DO PAÍS.

2 DE SETEMBRO DE 2017 O Mercado Livre traz até você novas experiências para inspirar os seus negócios e transformar a sua realidade em vendas e tecnologia. Tudo em um só lugar: reunimos conteúdos sobre comportamento do consumidor, melhores práticas, cases de sucesso, APIs e muito mais com a credibilidade de quem é líder de mercado.

• Mais de 5.000 pessoas. • 7 salas de conteúdo. • Palestrantes internacionais. • Mais de 65 estandes.

Não perca tempo! Compre já o seu ingresso. iMasters #23 Agosto 2017 www.mercadolivre.com.br/experience


48 // POR DENTRO DO W3C

A revolução do ePub Por Selma Morais, Analista de projetos no W3C Brasil e Ceweb.br e Reinaldo Ferraz, Especialista em desenvolvimento web do W3C Brasil

N

No início dos anos 2000 a indústria da música foi impactada pelo formato digital e pela sua distribuição online. Essa indústria reinventou seu modelo de negócios e de distribuição de conteúdo utilizando a Internet. O mesmo aconteceu (aliás, vem acontecendo) com a indústria cinematográfica. O modo como consumimos conteúdo - sejam livros ou revistas - não é mais o mesmo de 17 anos atrás e vem mudando de forma gradativa. Tudo isso está relacionado a padrões abertos. A ideia de criar um padrão para publicações digitais (ebooks) não é nova. Lá mesmo nos anos 2000, já existia um padrão chamado “Open eBook Publication Structure”, que já trazia em grande parte da sua estrutura elementos conhecidos do HTML (na verdade, do XHTML). Esse padrão foi construído pelo IDPF (International Digital Publishing Forum), instituição que tem como objetivo promover padrões para publicações digitais. A documentação foi evoluindo e surgiram novas especificações até chegar a algo familiar nos dias de hoje: o formato ePub, que foi criado com o objetivo de ser um formato livre e aberto para a publicação de ebooks. Ele evoluiu junto com as tecnologias Web, e atualmente o ePub 3.0 tem

iMasters #23 Agosto 2017

suporte para diversos recursos importantes do HTML, como a marcação semântica e a possibilidade de formatação via CSS. Era de se esperar que as publicações digitais trouxessem novas possibilidades para o usuário. Diferente do livro de papel, a versão digital possibilita a interação com conteúdos externos de forma muito mais fácil. A maioria dos e-readers atuais disponibiliza ferramentas de tradução e até de marcação de conteúdo, permitindo que o leitor compartilhe as marcas com outras pessoas. A interatividade é algo que também ampliou as possibilidades de consumo de livros. Com um hiperlink em um determinado termo na publicação, podemos acessar instantaneamente aquela referência e retornar para o local em que o usuário havia parado a leitura. No livro de papel, o usuário depende de um computador, tablet ou smartphone para fazer isso. Outro fator importante a favor dos livros digitais é a questão da acessibilidade. Como a base dos ePubs é constituída em HTML, existem diretrizes que garantem que o conteúdo seja acessível para pessoas com deficiência. Pense em como era antigamente para uma pessoa cega ter acesso ao conteúdo de um livro: o


// 49

material deveria ser transcrito em braile, gravado em áudio ou lido por outra pessoa. Com o formato de livros digitais, tecnologias assistivas possibilitam que qualquer pessoa possa ler o conteúdo de um ebook, desde que este siga as diretrizes de acessibilidade corretamente. Construir um ePub é mais simples do que você imagina. Caso você tenha curiosidade de entender como é a estrutura de um ePub, altere a extensão do arquivo de “nome-do-livro.epub” para “nome-do-livro.zip” e abra essa pasta compactada. Você vai se surpreender ao perceber que a estrutura de um ePub se parece muito com a estrutura de uma página HTML: marcação semântica, imagens, arquivos para estilização etc. O que podemos esperar da evolução do ePub? Muita coisa. Especialmente porque, no início de 2017, o IDPF se juntou ao W3C para a padronização das publicações digitais que eram conduzidas pelo IDPF. Com isso, a padronização do ePub vai usufruir da expertise do W3C em padronizar tecnologias abertas que são desenvolvidas pelo consórcio. Talvez no futuro tenhamos livros dinâmicos, que se conectem a outras publicações utilizando a Web Semântica, consumindo e trocando informações entre ebooks, ou até mesmo conteúdos multimídia dentro das páginas. Os livros poderão se comportar de muitas formas, dependendo da plataforma de leitura, seja no computador, no e-reader ou imprimindo o arquivo. O usuário é quem escolhe a melhor maneira de consumir o conteúdo da publicação. Isso sem falar que a distribuição digital é muito mais simples e mais barata do que a do livro impresso.

Estamos passando pela mesma mudança na maneira de distribuir conteúdo que aconteceu com a música e com os filmes. Da mesma forma que essas indústrias reinventaram seus modelos de negócios, a indústria literária também terá que se adaptar a novos formatos e criar seus próprios modelos (e já está fazendo isso). Pensando em todos esses aspectos, o W3C Brasil e o Ceweb.br estão trabalhando com diversas iniciativas para fomentar a adoção de padrões abertos para as publicações digitais no Brasil. Informações sobre essas iniciativas estão disponíveis em www.w3c.br e www.ceweb.br. De agora em diante, podemos acompanhar de perto essa (r)evolução do ePub e usufruir de tudo o que essas mudanças trarão de bom para nós, usuários e consumidores de conteúdo digital.

Selma Morais é analista de projetos no W3C Brasil e Ceweb.br, um departamento do NIC.br. Formada em Marketing com especialização em Marketing Digital pela Fundação Getúlio Vargas, trabalha desde 2012 com padrões abertos e tecnologias que impactam a sociedade e promovem o avanço da Web aberta.

selma@nic.br

Reinaldo Ferraz é especialista em desenvolvimento web do W3C Brasil. É formado em desenho e computação gráfica e pós-graduado em design de hipermídia pela Universidade Anhembi Morumbi em São Paulo. Trabalha há mais de 12 anos com desenvolvimento web. Apaixonado por acessibilidade, usabilidade, padrões web, HTML, CSS, Star Wars e café sem açúcar. No Twitter, é @reinaldoferraz.

reinaldo@nic.br

iMasters #23 Agosto 2017


50 // FRAMEWORK

SPARK - UM MICROFRAMEWORK PARA APLICAÇÕES WEB Por Aline Oliveira Dias , Engenheira de software no Mercado Livre

O Spark foi inspirado em um framework escrito em Ruby, chamado Sinatra; mas não é uma cópia. O Sinatra foi apenas uma inspiração devido às suas facilidades. O seu principal pilar é ser o mais direto possível, sem necessidade de longas configurações, possibilitando o desenvolvimento com o mínimo de esforço. A principal recomendação de seus criadores é utilizá-lo para microsserviços que não tenham um tráfego tão grande e que o desenvolvimento seja rápido e leve. No Mercado Livre, tivemos que refatorar algumas APIs por questão de performance e, quando fizemos um levantamento de frameworks de desenvolvimento, vimos que o Spark - diferente de outros, como o Spring - é muito mais rápido para configurar e não possui dependências que irão deixar o war pesado e demorado para subir. Por isso, o escolhemos nesse processo de refatoração. Para começar a usá-lo, basta agregar a dependência em seu projeto - caso utilize algum gerenciador - ou agregar o já. Neste projeto de exemplo, utilizei a ferramenta Maven como gerenciador de dependência: <dependency> <groupId>com.sparkjava</ groupId> <artifactId>spark-core</ artifactId> <version>2.6.0</version> </dependency> iMasters #23 Agosto 2017

O Spark roda em um servidor standalone embutido chamado Jetty. Com isso, é só criar uma classe Main e rodar que ele já irá subir seu primeiro serviço: import static spark.Spark.*; public class Main { public static void main(String[] args) { get(“/hello”, (req, res) -> “Hello World”); } } Para declarar uma rota, é necessário somente: Declarar o verbo: (get, post, put, delete, head, trace, 0connect, options) O caminho: (/hello, /listar, /salvar:entidade) A callback (request, response) -> { } Outra maneira de declarar é colando a rota e o controller, além do método que irá processar a request: Spark.get(“/test”, TesteController:: test); Com isso, seu código fica muito mais organizado e com separação de responsabilidades. Outra funcionalidade é a de agrupamento de rotas:


// 51

Imagens: Por Africa Studio

path(“/test”, () -> { post(“/salvar”, TesteController. salvar); put(“/alterar”, TesteController. alterar); delete(“/deletar”, TesteController. deletar); }); O mais interessante é que no Spark, usa-se métodos estáticos para as configurações, livrandonos do famoso xml superverboso. Em seu site oficial (http://sparkjava.com/documentation), há uma documentação bem completa

com tudo que esse framework tem para oferecer, com exemplos. Veja nesta URL https://github.com/ aolidias/test-spark o projeto de teste que fiz para este artigo. Como podemos ver, o Spark é um framework bem simples e rápido de ser usado; sempre visando à produtividade e aos microsserviços. Se você precisa de algo rápido, leve, fácil e sem dores de cabeça, é super-recomendado utilizá-lo no seu dia a dia. Aline Oliveira Dias é engenheira de software no Mercado Livre. Bacharel em Sistemas da Informação, trabalha há 7 anos com softwares.

aline.dias@mercadolivre.com

iMasters #23 Agosto 2017


52 // MAKER

MODELAGEM 3D COM FOCO EM IMPRESSÃO 3D Por Bob Sampaio, Tecnólogo em Processamento de Dados

A quebra das patentes das impressoras 3D popularizou esses equipamentos. Agora, é possível ter uma impressora 3D em casa e imprimir seus próprios objetos. Mas para conseguir imprimir qualquer coisa é necessário um arquivo 3D do objeto, e isso é o mais importante. O arquivo 3D é uma representação matemática de um objeto (seja ele uma caneca, um boneco, um brinquedo, uma ferramenta ou qualquer objeto físico) criado através de um software especializado. O resultado disso é chamado de modelo tridimensional. Existem diversas ferramentas para executar essa tarefa, e esses softwares são o que chamamos de programas de modelagem. Os softwares mais utilizados para o desenvolvimento desses modelos são: SketchUp, 3ds Max, Blender, Cinema 4d, Maya, zBrush, meshmixer, entre outros. E também existem diversos profissionais habilitados na área, que são os modeladores 3D. O trabalho dos modeladores, até então, é criar objetos 3D voltados para a indústria dos games, renderização de cenários, animações para cinema e televisão. E para cada uma dessas finalidades existem técnicas diferentes. Para fazer um personagem, por exemplo, você precisa pensar na hora de criar a malha, a forma do personagem, para depois aplicar a textura; afinal, uma malha malfeita terá problemas no momento da texturização. Você precisa pensar na iMasters #23 Agosto 2017

animação do personagem, então precisa fazer um “rigging” muito bem estruturado. Por outro lado, as partes que não aparecem na cena não precisam ser modeladas, pois isso não é um problema quando se pensa em animação. Outro exemplo para a modelagem de um cenário: a preocupação com a iluminação é fundamental. Então, vimos que para cada finalidade existem técnicas de modelagens que devem ser consideradas para o resultado final. O mesmo acontece para a modelagem quando se pensa em imprimir o objeto em uma impressora 3D. Para um bom resultado, é importante considerar a impressão 3D. Porém, a impressão 3D é, ainda, um mundo desconhecido para a maioria dos modeladores 3D. Eu conheço vários modeladores que nunca viram uma impressora 3D e não sabem como ela funciona. Falta no mercado o profissional de modelagem 3D que enxergue a impressão 3D como uma ferramenta para materializar a sua arte. E aqui está a oportunidade - colocar a impressão 3D na frente desses profissionais. Pois para que um objeto seja “3dPrintable”, ele precisa ser pensado durante o processo da modelagem. Existem diversos sites com centenas de objetos que você pode baixar e imprimir em casa, muitos gratuitos e outros pagos. O problema é que a grande


Imagens: Fornecidadas pelo autor

// 53

maioria desses objetos foi modelada sem ter a impressão como objetivo final. Para conseguir imprimir esses objetos, você precisa resolver algumas questões, como criar suportes, analisar a melhor posição para imprimir e criar maneiras de fixar bem o objeto na área de impressão para que ele não solte durante o processo de impressão, pois todos são impressos camada por camada. E aí temos outro problema: as impressoras conseguem imprimir uma cor por vez e algumas, duas cores ao mesmo tempo no máximo mesmo assim, com algumas limitações. Então o que vemos sendo impresso são objetos monocromáticos que, no máximo, podem ser pintados a mão, mas com resultados não tão bons, além de toda a mão de obra extra. Existem imensas vantagens em modelar prevendo a impressão 3D. Modelar pensando em impressão significa, principalmente, modelar as partes independentes para formar o todo.

Pensando nessas limitações, nós estamos desenvolvendo um estilo de modelagem. Nós pensamos no modelo voltado para a impressão 3D desde o início, modelamos cada parte separada, pensando nas cores e na sua melhor posição para imprimir, levando em consideração, inclusive, a sua resistência com relação à maneira como as impressoras trabalham. Modelamos os encaixes necessários e, com isso, conseguimos obter resultados com impressoras que custam R$ 3 mil, por exemplo, que só conseguiríamos utilizando impressoras caríssimas. Dessa maneira, conseguimos, de modo criativo, maximizar o uso das impressoras mais populares e conseguir resultados incríveis, com maior rapidez e menor desperdício de material, visto que evitamos ou reduzimos drasticamente o uso de suportes e, principalmente, com maior qualidade final.

∂ Exemplo de um objeto que não foi modelado pensando na impressão 3D.

∂ Exemplo de objeto modelado para impressão 3D.

iMasters #23 Agosto 2017


54 // MAKER Mas qual a diferença? A principal é que o primeiro é um objeto único e, usando a tecnologia FDM, a impressão sai monocromática. O segundo é uma modelagem em partes - cada parte do personagem é uma modelagem separada, de acordo com as cores e formas, com os encaixes definidos. Dessa forma, o personagem pode ser impresso colo-

rido e montado depois. O resultado fica ótimo. Além de o resultado ser muito superior, a impressão é otimizada, pois se o personagem fosse impresso inteiro de uma vez, seria necessário o uso de suportes para que a impressão fosse possível, e isso resulta em maior tempo de impressão e maior uso de material. Para finalizar, confira abaixo alguns exemplos de impressão 3D.

∂ Exemplo da uma impressão com a peça inteira.

Para a impressão, é necessária grande quantidade de suporte:

Imagens: Fornecidadas pelo autor

iMasters #23 Agosto 2017


// 55 Em comparação, um modelo modelado por nós, na 3dFactory, em partes pode ser impresso sem a necessidade de suporte.

Nesse exemplo, a impressão com os suportes leva mais de cinco horas finalizar. Já a impressão por partes, leva duas horas e meia. Além de menos tempo para imprimir, a qualidade fica muito superior. Exemplos de modelagens que nós criamos pensando em impressão 3D:

Bob Sampaio é tecnólogo em Processamento de Dados e trabalhou com desenvolvimento de sistemas em multinacionais por quase duas décadas. É um maker nato, muito criativo e grande amante do cinema, que é onde busca inspiração para suas criações. Tornou-se um especialista em modelagem orientada à impressão 3D.

bobsampaio@3dfactory.com.br

iMasters #23 Agosto 2017


56 // BOAS PRÁTICAS

CODE CLEAN: POR UM MUNDO COM CÓDIGO MELHORES Por Thiago Barradas, .NET Developer na MundiPagg

Como desenvolvedores, temos basicamente os mesmos desejos relativos aos nossos códigos. Elaboramos cada linha pensando em ter um resultado que funcione muito bem, praticamente sem bugs e atendendo a todo escopo/negócio. Desejamos também que o código esteja extremamente elegante, bem estruturado, fácil para novas implementações e modificações - aquele código que nos proporcione orgulho na hora de mostrar aos colegas do trabalho ou disponibilizar na comunidade. Por último, temos o desejo mais difícil de todos: fazer tudo isso dentro do prazo programado. Por isso, muitas vezes ouvimos frases como: “Fiz o meu melhor dentro do tempo que eu tinha” “Mas o prazo era extremamente curto” “Meu gestor me faz pressão o tempo inteiro” “Preciso entregar, preciso ser muito produtivo” Quando ouvimos essas frases, sem dúvidas temos um profissional que não se orgulha do que foi feito. O código provavelmente está feio e desprovido de manutenção. Em muitos casos, ao analisar o código, outros desenvolvedores irão preferir iniciar outro projeto do zero do que se arriscar nesse código poluído. Este artigo tem como objetivo colaborar para um mundo melhor. Um mundo onde as pessoas se importem de verdade com o código que está sendo desenvolvido. O código que provavelmente necessitará de novas implementações ou ajustes, e tal tarefa será fácil. Um código que gere orgulho. Por isso, reuni iMasters #23 Agosto 2017

os principais conceitos do Clean Code, uma forma de codificar projetada para facilitar a escrita, a leitura e a manutenção do código. Esses conceitos foram extraídos do livro Code Clean: A Handbook of Agile Software Craftsmanship, de Robert C. Martin (aproveite a indicação). Nomenclatura Podemos considerar que o nome de variáveis, classes, métodos ou parâmetros seja um dos pontos mais importantes para um código legível e organizado. Escolha bem os nomes. Não importa se o nome for grande, o mais importante é expressar o que aquele elemento realmente representa.

int txI;

int transactionInstallments;

repo.Get();

TransactionRepository.GetTransactions();


// 57

Classes Devem ser representadas por substantivos e seu nome deve ser claro ao seu contexto.

public class Cut { ... }

public class Cutter { ... }

public void New(string name, string email, int age) { var repo = new UserDTO(); var u = repo.Get(email); if (u == null) { ... } }

public class CustomerDTO { ... }

public class CustomerRepository { ... }

Métodos Devem ser representados por verbos e seu nome deve ser claro ao seu objetivo; Devem ser pequenos. Quanto menor, melhor; Extraia sempre que puder em métodos auxiliares, seja um método privado ou utilitários; Um método deve fazer apenas uma coisa. Uma; Muitos parâmetros devem ser substituídos por objetos; Argumentos booleanos não costumam ser elegantes.

public void RegisterUser(User user) { if (IsEmailAvailable(user.Email)) { ... } }

Condições Sempre que possível, extraia condições para métodos privados.

public List<Transaction> GetTransactions(bool isAuthorized) { ... }

if (transaction != null && (transaction. Status == “Authorized” || transaction. Status == “Captured”)) { ... }

public List<Transaction> GetAuthorizedTransactions() { ... } public List<Transaction> GetNotAuthorizedTransactions() { ... }

if (IsEligibleForCancellation(transaction)) { ... }

iMasters #23 Agosto 2017


58 // BOAS PRÁTICAS

Objetos e estruturas de dados Basicamente, devem seguir a Lei de Demeter: Um método M de uma classe C só deve conhecer: Métodos de C; Objetos criados por M; Objetos passados por parâmetro para M; Objetos em propriedades de instâncias de C. Abstração Tente ao máximo generalizar suas classes, abstraia em quantos níveis for preciso e flexibilize futuras modificações:

public class CreditCardTransaction { ... } public class OnlineDebitTransaction { ... }

public class CreditCardTransaction : Transaction { ... } public class OnlineDebitTransaction : Transaction { ... }

Comentários Um código bem escrito dispensa comentários. A leitura do código deve ser como uma história ditada pela forma como ele foi escrito e suas nomenclaturas. Comentários não servem para melhorar um código ruim. Comentários são aceitáveis quando há necessidade de explicação do negócio, licença de uso, documentação, entre outros pequenos e exclusivos casos.

// check if gateway is MundiPagg if (gateway == “MundiPagg”) { transaction.Retry(); }

iMasters #23 Agosto 2017

// MundiPagg is the only gateway that retries a transaction if (gateway == “MundiPagg”) { transaction.Retry(); }

Formatação do código Não existe um padrão para formatação. O que vale é o bom senso e, principalmente, a regra do time. Se existir um padrão, não ignore. A escrita padronizada facilita a leitura. Então, se o time definir que constantes são escritas sempre em maiúsculo, faça assim. Se o time definir que variáveis de escopo limitado iniciam com letra minúscula, siga a regra. Exceções Utilize exceções específicas para seus erros. Evite (leia-se: não utilize) códigos de erro. Trate exceções exclusivamente em métodos (o método basicamente deve servir para tratar a exceção).

TransactionResult result = GetTransaction(transactionId); if (result.Success == false && result.Error == Error.NOT_FOUND) { ... } return result.Transaction;

try { return GetTransaction(transactionId); } catch (NotFoundException ex)


// 59

{ ... } catch (Exception ex) { ... }

Testes Apesar de muita gente ter dificuldade, tentar seguir o TDD sempre é o melhor caminho. Projetando primeiramente o comportamento esperado da aplicação em testes para posteriormente implementá-los, os métodos tendem a ser mais objetivos na resolução dos problemas, logo, sua leitura e escrita ficam mais fáceis. No escopo dos testes, siga tudo que já foi visto até aqui. Podemos seguir também a regra do “F.I.R.S.T.”: Fast: Testes rápidos, resultados rápidos. Podem ser executados diversas vezes; Indepedent: Não deve ter dependências. Lembre-se de que o nome é teste unitário, pois testa uma unidade isolada da aplicação. Dependências podem gerar resultados falso-positivos; Repeatable: Os testes devem funcionar na sua máquina, no servidor de homologação, produção, em qualquer ambiente; Self-validation: Não é necessária nenhuma validação manual para garantir que o teste passou; Timely: Os testes devem ser elaborados antes do código a ser testado (TDD). Caso contrário, o código pode ter sua complexidade elevada, dificultando ou impossibilitando o teste. Regra do escoteiro De acordo com os escoteiros, após um acampamento, devemos seguir a seguinte regra: “Deixe a área do acampamento mais limpa do que quando e como você a encontrou”.

“UM MUNDO ONDE AS PESSOAS SE IMPORTEM DE VERDADE COM O CÓDIGO QUE ESTÁ SENDO DESENVOLVIDO. O CÓDIGO QUE PROVAVELMENTE NECESSITARÁ DE NOVAS IMPLEMENTAÇÕES OU AJUSTES, E TAL TAREFA SERÁ FÁCIL” Podemos traduzir e levar essa regra para o nosso cotidiano: “Deixe o código mais limpo do que quando e como você o encontrou”. Como desenvolvedores, sabemos as dificuldades de manter a qualidade de um projeto equilibrando principalmente com o cronograma (apertado, na maioria das vezes). Porém, com alguns padrões somados a boas práticas, nossas chances aumentam muito. Tenha muito orgulho do seu código e mostre que você se importa com o que está fazendo. Um bom código gera boas soluções para sua empresa e reconhecimento profissional. Códigos ruins destroem carreiras e até mesmo podem decretar o fim de uma empresa. Espero que seu desempenho codificando possa melhorar após este artigo, afinal, o objetivo dele é justamente fazer do mundo um lugar melhor para os devs e para os códigos.

Thiago Barradas é .NET Developer na MundiPagg e atualmente foca em APIs e buscas elásticas. Apaixonado por novas tecnologias, música e natureza.

tbarradas@mundipagg.com

iMasters #23 Agosto 2017


60 // CAPA

COMO O DESIGN DE SOFTWARE PODE SUPORTAR O SURGIMENTO DE INTERAÇÃO ENTRE ANIMAIS E COMPUTADORES Por Clara Mancini, Professora Sênior em Design de Interação na Escola de Computação e Comunicações da “Universidade Aberta”

iMasters #23 Agosto 2017

toque (Rose et al., 1987); nos anos 1990, foram oferecidos aos golfinhos teclados subaquáticos (Reiss e McCowan, 1993) e às vacas, os sistemas de ordenha robotizados (Rossing e Hogewerf, 1997). Por um longo tempo, o desenvolvimento dessas tecnologias tem sido conduzido por disciplinas como ecologia, biologia, psicologia ou engenharia agrícola. No entanto, mais recentemente, os designers de interação começaram a se interessar por essas interações e, por exemplo, questionam sobre os efeitos que a tecnologia exerce sobre o bem-estar e a vida social dos animais ou sobre a usabilidade e a experiência do usuário que ela oferece do ponto de vista dos animais. A disciplina emergente de Interação Animal-Computador (Mancini,

2011) aborda esse tipo de perguntas, com foco particular em: Compreender a interação entre animais e tecnologia nos ambientes habituais dos animais (por exemplo, Weilenmann e Juhlin, 2011; Mancini et al., 2012; Westerlaken e Gualeni, 2013); Projetar tecnologia interativa que pode melhorar o bem-estar dos animais (por exemplo, Mancini et al., 2014), apoiar suas atividades (por exemplo, Jackson et al., 2013) e promover relações entre espécies, como aquelas entre humanos e animais (por exemplo, Cheok et al., 2011); Desenvolver métodos centrados no usuário para projetar tecnologia interativa para e com animais, permitindo que eles participem do

Imagens: Fornecidadas pelo autor

Imagens de animais interagindo com computadores estão se tornando cada vez mais familiares, graças à Internet e a uma ampla gama de gadgets, que podem ser encontrados no mercado de animais de estimação - desde dispositivos de rastreamento e alimentadores automáticos, até videofones e jogos eletrônicos. Na verdade, os animais vêm interagindo com a tecnologia há quase todo um século, seja nos laboratórios, nas fazendas ou na natureza. Ainda nos anos 1960, ursos selvagens estavam sendo equipados com dispositivos de rastreamento (Samuel e Fuller, 1994), e os pombos estavam usando câmaras de condicionamento (Skinner, 1959); nos anos 1980, os grandes símios usavam telas sensíveis ao


// 61

processo de projetar (por exemplo, Lee et al., 2006; Robinson et al., 2014; French et al., 2016). Estes são os objetivos que sustentam o programa de pesquisa do Laboratório de Interação Animal-Computador da “Universidade Aberta” desde 2011. Mas por que esses objetivos são importantes e como os designers de software podem contribuir para alcançá-los? Compreender a interação entre animais e tecnologia é essencial para garantir que qualquer intervenção tecnológica destinada a eles tenha um impacto positivo ou, pelo menos, que qualquer impacto negativo seja minimizado. Às vezes, os animais são colocados em contato com a tecnologia sem haver controle sobre sua interação com ela. Esse é o caso de animais domésticos ou selvagens que são equipados com dispositivos de biotelemetria, tais como coleiras de rastreamento

ou arreios, para fins de pesquisa ou criação (Morton et al., 2003). Dependendo do tamanho, do peso, da cor, da forma, do material e de outras variáveis de projeto, tais dispositivos podem afetar severamente o bem-estar dos animais que os utilizam, por exemplo, prejudicando a camuflagem tanto de predadores, quanto de presas, prejudicando o movimento e o acesso às partes do corpo, sendo capturados na vegetação, pressionando as articulações e causando danos nos tecidos. É claro que essa interferência com o bem-estar e o comportamento do portador também afeta a confiabilidade dos dados coletados por esses dispositivos. Para aliviar esses problemas, um dos projetos de PhD da ACI Lab (Paci et al., 2016) visa melhorar a capacidade de uso da biotelemetria animal, desenvolvendo um framework que otimize o uso de variáveis do projeto. A esse res-

peito, o design de software pode desempenhar um papel crucial, por exemplo, ao permitir que os dispositivos que consomem muita energia utilizem de forma mais eficiente a energia que necessitam, permitindo, assim, uma redução da bateria e do tamanho geral do dispositivo; ou permitindo que os diferentes componentes de um dispositivo de rastreamento se comuniquem de forma confiável em uma configuração sem fio, permitindo uma distribuição mais uniforme de peso e volume do dispositivo no corpo do usuário; ou mesmo, em alguns casos, eliminando a necessidade de colocar um dispositivo físico no animal em favor de soluções de monitoramento ambiental. O desenvolvimento de biotelemetria amigável aos animais não é apenas importante para a pesquisa biológica ou para a criação de animais, mas também pode ser uma ferramenta poderosa no ACI, por

iMasters #23 Agosto 2017


exemplo, para acompanhar os parâmetros fisiológicos dos animais ao avaliar suas respostas aos protótipos em desenvolvimento. Em termos gerais, as intervenções tecnológicas atuais no ACI visam enriquecer a experiência de vida de animais em cativeiro, que vivem em jardins zoológicos (French et al., 2015; Webber et al., 2016), em fazendas (Pig Chase) ou de animais domésticos (Resner, 2001; Pons et al., 2015), ou elas pretendem fornecer ferramentas para apoiar melhor as atividades de animais que realizam tarefas específicas (Jackson et al., 2013; Majikes et al., 2016). O desenvolvimento de tecnologia que suporta adequadamente as atividades dos animais é especialmente importante quando as tarefas que eles são obrigados a realizar são inconsistentes com suas características evolutivas ou repertório comportamental. Por exemplo, cães-guias são treinados para realizar uma variedade de tarefas diárias em nome de pessoas com deficiências físicas, incluindo lidar com interruptores de luz, elevadores ou semáforos, portas abrindo e fechando ou máquinas de lavar roupa (Dogs for Good). Claro, esses aparelhos são projetados para seres humanos e não levam em conta as características sensoriais, cognitivas e físicas dos iMasters #23 Agosto 2017

usuários caninos, como sua visão dicromática, capacidades de abstração limitadas ou restrições músculo-esqueléticas. Como resultado, o ambiente de trabalho se torna desnecessariamente desafiador para cães-guia aprenderem e executarem suas tarefas. Para oferecer um melhor suporte para esses usuários caninos, o projeto Dog-Smart Homes (Mancini et al., 2016) tem como objetivo desenvolver um conjunto de ferramentas sem fio de controles amigáveis caninos que possam ser adaptados na casa em que o cachorro viverá, uma vez que seu treinamento for completado. Para proporcionar continuidade no seu treinamento e consistência em seu ambiente de trabalho, a ideia é que os cães possam trazer a “mala das interfaces” com a qual eles tenham sido treinados para seu novo lar. Para implementar visões como essa, uma vez que é o ambiente tecnológico que se adapta ao animal, em vez de o animal ter que se adaptar ao ambiente, o design de software novamente pode desempenhar um papel fundamental, por exemplo, desenvolvendo protocolos que permitem novos dispositivos de entrada para se comunicar sem fio com aparelhos pré-existentes e, por sua vez, habilitar dispositivos pré-existentes para prontamente receber a entrada de novos dispositivos.

O uso de tecnologia para remover os obstáculos que os animais enfrentam ao executar uma determinada tarefa pode ser de vital importância. O projeto Interfaces para Cães de Detecção de Câncer (Mancini et al., 2015) visa apoiar o trabalho de cães treinados para reconhecer o odor de compostos voláteis de células cancerosas em amostras biológicas, como urina, suor ou respiração (Medical Detection Dogs ). Para se comunicar com os condutores que eles acham nas amostras que cheiram, os cães são treinados para usar sinais convencionais, como se sentarem na frente de uma amostra positiva ou se afastarem de uma amostra negativa. Isso só permite que os cães ofereçam respostas binárias, o que não reflete a variação potencial na concentração de células cancerígenas, potencialmente indicando diferentes estágios no desenvolvimento da condição. O uso de sinais convencionais também coloca uma “sobrecarga de tradução” nos cães, que devem realizar um comportamento de sinalização inconsistente com sua resposta espontânea a odores de interesse; isso interfere no processo de detecção e diminui a confiabilidade da resposta dos cães. A interface habilitada para sensor desenvolvida dentro do projeto capta a pressão que os cães exercem espontaneamente sobre as amostras, à medida que as cheiram, e visualiza os padrões resultantes, que parecem se correlacionar com a concentração dos compostos voláteis nas amostras. Dessa forma, a interface transfere a carga de tradução para longe dos cães e para a própria tecnologia, permitindo que eles façam seu trabalho de detecção sem interferência, aumentando potencialmente a confiabilidade de suas descobertas. No entanto,

Imagens: Fornecidadas pelo autor

62 // CAPA


// 63 mesmo quando cheiram a mesma amostra, diferentes cães tendem a produzir padrões muito diferentes; ao mesmo tempo, para cães individuais, as variações de padrões ao cheirar amostras diferentes podem ser muito sutis, mesmo que tais variações possam ser significativas. Aqui também, o design do software tem um papel crítico a desempenhar, por exemplo, permitindo a calibração algorítmica individual e a detecção automática de variações sutis nos padrões de pressão. Além de suportar tarefas específicas, a possibilidade de capturar e interpretar automaticamente variações sutis na interação dos animais com a tecnologia pode ser muito útil ao avaliar suas preferências durante o processo de design, onde diferenças sutis no que elas fazem podem ser muito significativas. Como os animais (pelo menos os mais complexos) são indivíduos com características e preferências individuais, ao projetar tecnologia para apoiá-los em suas atividades, é importante envolvê-los no processo de design de forma que eles possam manifestar tais características e preferências (Lee et al., 2006; Ritvo e Allison, 2014), para que elas possam se refletir no desenvolvimento iterativo de soluções de design adequadas. Essa é a abordagem adotada por outro projeto de PhD do ACI Lab, com o objetivo de projetar um alarme canino, permitindo que cães de alerta médico chamem ajuda quando seus humanos assistidos ficarem incapacitados (Robinson et al., 2014). Compreender o tipo de dispositivos de entrada que os cães podem preferir usar foi essencial, pois eles precisam ser capazes de operar o alarme durante uma emergência, quando eles podem estar sozinhos com seus humanos incapacitados. Isso foi conseguido através da produção de uma sé-

rie de modelos modificados, cujos componentes podem ser rapidamente trocados para estudar como os cães responderam a configurações diferentes e, assim, identificam a configuração ideal. Outro projeto de PhD, com o objetivo de desenvolver enriquecimento ambiental acústico para elefantes em cativeiro (French et al., 2016), tomou a mesma abordagem iterativa, com foco na identificação de preferências em relação a dispositivos de entrada e saída do sistema, ambos intrínsecos contribuintes para uma experiência de usuário enriquecedora. Mais uma vez, o design de software tem muito potencial para apoiar a implementação desse tipo de processo de projeto iterativo, por exemplo, permitindo a identificação de correlações potencialmente significativas durante a interação dos animais com protótipos, particularmente entre a entrada de um animal, a saída do sistema e a resposta do animal a isso, e entre diferentes aspectos da interação e quaisquer fatores contextuais que possam influenciá-lo. Tais correlações podem ser muito sutis e escapar facilmente da atenção do designer, ou podem ser mal interpretadas; no entanto, elas podem ser identificadas e interpretadas computacionalmente, reduzindo também os riscos associados ao viés de interpretação humana.

Até aqui, deve estar evidente como os objetivos do ACI apresentados acima estão intimamente interligados. Compreender a interação entre animais e tecnologia é fundamental para o design de intervenções tecnológicas que possam melhorar o bem-estar deles, apoiar suas atividades e fomentar as relações homem -animal. Por sua vez, essas tecnologias centradas em animais poderiam sustentar significativamente o desenvolvimento de métodos de pesquisa centrados em animais. Finalmente, empregando métodos de pesquisa que, durante o processo de design, permitem aos animais expressar suas preferências naturais e fazer escolhas que sejam relevantes para eles, é necessário para entender seus requisitos de design. O projeto Smart Kennel (Mancini et al., 2014), que visava melhorar o bem-estar dos cães vivendo em abrigos, reuniu essas diferentes facetas. A vida nos canis pode ser estressante para os cães, pois até mesmo os melhores abrigos são limitados nas oportunidades de estimulação cognitiva e controle ambiental, bem como a atenção individual que eles podem proporcionar aos seus moradores. O estresse experimentado por cães em abrigos pode causar ou exacerbar problemas compor-

iMasters #23 Agosto 2017


64 // CAPA

iMasters #23 Agosto 2017

humanos e outros animais constituem o maior desafio enfrentado pelos pesquisadores da ACI. Ao projetar com animais, muitas vezes a única maneira de descobrir o que eles demandam é observar o que eles fazem e como eles respondem às tecnologias às quais eles são expostos ou os protótipos que disponibilizam para eles. Enquanto do ponto de vista dos animais o que conta é a interação física que eles têm com esses dispositivos, quando projetado com uma concepção, o software que capacita esses dispositivos pode ajudar os pesquisadores da ACI a entender melhor os animais e a sua interação com a tecnolo-

gia e proporcionar aos animais uma tecnologia discreta que eles podem usar e desfrutar e que se adapte dinamicamente às suas necessidades. Em última análise, pode ser um software cuidadosamente projetado que finalmente dará aos animais a voz que nós, os humanos, estamos lutando tanto para ouvir. Em novembro, acontece a quarta Conferência Internacional de Interação Computador x Animal, a ACI2017. A The Open University, em Milton Keynes, no Reino Unido, sediará o evento. E caso você, desenvolvedor, se interesse em participar, acesse o site www.aci2017.org/ program.php e veja a programação!

A Dra. Clara Mancini é Professora Sênior em Design de Interação na Escola de Computação e Comunicações da “Universidade Aberta” e diretora fundadora do Laboratório de Interação Animal-Computador (ACI). A missão do ACI Lab1 é expandir os limites do design de interação para além da espécie humana: investigar a interação entre animais e tecnologia em ambientes naturalistas; projetar tecnologia interativa que apoie as atividades e o bem-estar dos animais em diferentes contextos; e desenvolver métodos centrados no usuário que permitem que os animais participem do processo de design. Clara está especialmente interessada nos desafios metodológicos da ACI e nas oportunidades de inovação e no potencial dessa disciplina emergente para contribuir para o bem-estar humano e animal, inclusão social, cooperação entre espécies e restauração ambiental.

clara.mancini@open.ac.uk

Imagens: Fornecidadas pelo autor

tamentais, tornando assim menos provável a sua adoção. Para abordar essas questões, o conceito de “canil inteligente” contemplou soluções tecnicamente aprimoradas sustentadas por uma arquitetura de software triplo. O canil proporcionaria oportunidades aos cães residentes para o enriquecimento, como brinquedos interativos e uma medida de controle ambiental, como a capacidade de ajustar a temperatura ambiente ou solicitar objetos de interesse; ao longo do tempo, monitoraria discretamente os parâmetros fisiológicos e o comportamento dos cães (incluindo o uso de recursos interativos), através de uma combinação de sensores ambientais e de uso; isso, então, usaria esses dados para gerenciar o fluxo de informações dentro do sistema do canil, liberando o tempo dos cuidadores, para fazer inferências sobre o bem-estar dos cães, alertando os cuidadores para os eventos que precisavam atender e para fornecer feedback sobre a eficácia do enriquecimento interativo. Claro, ao estabelecer esse tipo de “círculo virtuoso”, o design de software é mais uma vez a chave para permitir a identificação de correlações relevantes entre muitos fatores e eventos complexos envolvendo múltiplos cães e múltiplas interações durante longos períodos de tempo. A possibilidade de analisar todos esses fluxos de dados em tempo real tem potencial de fornecer insights importantes em que a percepção, a atenção e as capacidades inferenciais humanas simplesmente não são poderosas o suficiente para detectar fenômenos que podem ser muito sutis, mas ao mesmo tempo muito significativos. Diferenças entre espécies e barreiras de comunicação entre


// 65

Referências Cheok, A.D., Tan, R.T.K.C., Peiris, R.L., Fernando,

2012. Exploring Interspecies Sensemaking: Dog

‘liking’. In: Proceedings of the First International Con-

O.N.N., Soon, J.T.K., Wijesena, I.J.P., Sen, J.Y.P., 2011.

Tracking Semiotics and Multispecies Ethnography.

gress on Animal Human Computer Interaction, ACM

Metazoa Ludens: mixed-reality interaction and play

ACM Press, New York, 143–152.

ACE’14

for small pets and humans. IEEE Trans. Syst. Man

Mancini, C., 2011. Animal-computer interaction: a

Robinson, C., Mancini, C., van der Linden, J., Guest,

Cybern. A Syst. Hum. 41 (5), 876–891.

manifesto. Interactions 18 (4), 69–73.

C., Harris, R., 2014. Canine- Centered Interface De-

Dogs for Good: https://www.dogsforgood.org

Medical Detection Dogs: https://www.medicalde-

sign: supporting the Work of Diabetes Alert Dogs.

French, F., Mancini, C., Sharp, H. (2016). Exploring

tectiondogs.org.uk

ACM Press, 3757–3766.

methods for interaction design with animals: a case-

Morton, D.B., Hawkins, P., Bevan, R., Heath, K., Kirk-

Rose, K., Clark, M., Yaeger, L., Ferrara, T., Marion, A.,

study with Valli. Proc. Third International Conference

wood, J., Pearce, P., Scott, L., Whelan, G., Webb, A.,

1987. Koko’s Mac II: A Pre- liminary Report, Vivarium

on Animal-Computer Interaction, ACI2016, ACM

2003. Refinements in telemetry procedures: seventh

Program, Apple Computer Inc., Project Koko - http://

Press, New York.

report of the BVAAWF/FRAME/RSPCA/UFAW joint

shinyverse.org/larryy/KokoChapter.html

Jackson, M.M., Zeagler, C., Valentin, G., Martin, A.,

working group on refinement, part A. Lab. Anim. 37,

02.03.16.).

Martin, V., Delawalla, A., Blount, W., Eiring, S., Hollis,

261–299.

Rossing, W., Hogewerf, P.H., 1997. State of the art of

R., Starner, T., 2013. FIDO-Facilitating Interactions

Paci, P., Mancini C., Price, B., 2016. Towards a wear-

automatic milking systems. Comput. Electron. Agric.

for Dogs with Occupations: Wearable Dog-Activated

er-centred framework for animal biotelemetry. In:

17, 1–17.

Interfaces. ACM Press, New York, 81–88.

Proceedings Measuring Behaviour’16 Symposium

Samuel, M.D., Fuller, M.R., 1994. Wildlife Radiote-

Lee, S.P., Cheok, A.D., James, T.K.S., 2006. A mobile

on Animal-Computer Interaction. Dublin University

lemetry. In: Bookout, T.A. (Ed.), Research and Man-

pet wearable computer and mixed reality system

Press, pp. 440–443.

agement Techniques for Wildlife and Habitats. Fifth

for human–poultry interaction through the internet.

Pig Chase: http://www.playingwithpigs.nl

Edition the Wildlife Society, Bethesda, MD, 370–418.

Pers. Ubiquitous Comput. 10 (5), 301–317.

Pons, P., Jaén, J., Catalá, A., 2015. Envisioning future

Skinner, B.F., 1959. Cumulative Record (1999 Defin-

Majikes, J., Brugarolas, R., Winters, M., Yuschak, S.,

playful interactive environments for animals. In: Ni-

itive ed.). B.F. Skinner Foundation, Cambridge, MA.

Mealin, S., Walker, K., Yang, P., Bozkurt, A., Sherman,

jholt, A. (Ed.), More Playful User Interfaces: Interfac-

Webber, S., Carter, M., Smith, W., Vetere, F., Interac-

B., Roberts, D.L., Balancing Noise Sensitivity, Re-

es that Invite Social and Physical Interaction. Spring-

tive Technology and Human-Animal Encounters at

sponse Latency, and Posture Accuracy for a Comput-

er, 121–150.

the Zoo, International Journal of Human-Computer

er-Assisted Canine Posture Training System, Inter-

Reiss, D., McCowan, B., 1993. Spontaneous vocal

Studies, 2016

national Journal of Human-Computer Studies, 2016

mimicry and production by bottle nose dolphins

Weilenmann, A., Juhlin, O., 2011. Understanding

Mancini, C., Li, S., O′Connor, G., Valencia, J., Ed-

(Tursiops Truncatus): evidence for vocal learning. J.

People and Animals: the Use of a Positioning System

wards, D., McCain, H., 2016. Towards multispecies

Comp. Psychol. 107 (3), 301–312.

in Ordinary Human Canine Interaction. ACM Press,

interaction environments: extending accessibility to

Resner, B.I., 2001. Rover@Home: computer Media-

New York, 2631–2640.

canine users. In: Proceedings International Confer-

ted Remote Interaction for Dogs. Massachusetts Ins-

Westerlaken, M., Gualeni, S., 2013. Digitally comple-

ence on Animal-Computer Interaction, ACI’16, ACM

titute of Technology, Cambridge.

mented zoomorphism: a theoretical foundation for

Press, New York.

Ritvo, S., Allison, R., 2014. Challenges related to no-

human-animal interaction design. In: Proceedings

Mancini, C., van der Linden, J., Bryan, J., Stuart, A.,

nhuman animal-computer interaction: usability and

ACM DPPI’13, New York 193–200.

(accessed

iMasters #23 Agosto 2017


66 // INTELIGÊNCIA NADA ARTIFICIAL

Entendendo o Ant Colony Optimization Por Alex Lattaro, Líder de Conteúdo do iMasters

M

Mais uma vez, a inteligência artificial busca soluções de algoritmos baseados no comportamento biológico. Hoje, vamos falar do algoritmo de otimização da colônia de formigas ou, do acrônimo inglês, ACO - ant colony optimization. Esse algoritmo é comumente utilizado na solução de problemas de procura de melhor caminho em grafos. Esse algoritmo é uma heurística baseada em probabilidade criada por Marco Dorigo, em 1997, com o objetivo de melhorar o até então conhecido sistemas de formigas.

No mundo natural, o caminho das formigas funciona da seguinte maneira: no início, elas saem do formigueiro em busca de alimentos. Como em sua maioria são cegas e não sabem onde encontrarão comida, elas andam dispersas, cada uma em uma direção. Durante esse trajeto, elas vão deixando no caminho um rastro de feromônio. Ao encontrar comida, as formigas retornam ao formigueiro pelo mesmo rastro deixado para trás. Esse comportamento foi comprovado em 1990 por Deneubourg et al com o experimento da ponte binária:

Imagens: Fornecidadas pelo autor

Usando pontes de tamanhos diferentes, as formigas convergem para a ponte mais curta. A ponte mais curta é percorrida em menos tempo, fazendo com que mais formigas atravessem ela. Logo , mais feromônio é depositado. As formigas escolhem, com maior probabilidade a ponte mais curta (com mais feromônio).

iMasters #23 Agosto 2017


// 67 Quando outras formigas passam pelo mesmo rastro de feromônio, a concentração deste aumenta, dando um feedback positivo para as demais formigas. PorÊm, essa Ê uma solução dinâmica. Como o rastro de feromônio Ê volåtil, ele vai se dissipando, o que permite que uma solução inicialmente encontrada não seja obrigatoriamente uma solução ótima, visto que outra formiga pode encontrar outro caminho, mais curto, e o seu rastro serå então mais forte. Podemos então entender que esse algoritmo Ê indicado para grafos que tendem a mudar dinamicamente, como o caminho que o Waze pode indicar para você fazer no trajeto da sua casa. Mesmo escolhendo sempre o caminho mais råpido, ele provavelmente não envia você sempre pelo mesmo caminho, pois podem existir entraves nesse trajeto (feedbacks negativos), que tornam o grafo (trajeto para sua casa) algo dinâmico. Modelo artificial Formigas são heurísticas artificiais construtivas, elas constroem soluçþes de forma probabilística por meio de duas informaçþes båsicas: trilha de feromônio e heurística. A trilha do feromônio artificial muda dinamicamente durante a execução do programa com o objetivo de refletir sobre a experiência jå adquirida durante as buscas anteriores. A informação heurística identifica o problema a ser resolvido. Sendo assim, precisamos modelar matematicamente a probabilidade de uma formiga escolher um determinado caminho.

Imagine o seguinte exemplo: temos cinco formigas colocadas aleatoriamente em pontos diferentes. Cada formiga deve se mover de um ponto ao outro e encontrar o ponto com comida mais prĂłximo do seu ponto inicial. A probabilidade de uma formiga K sair de um ponto i e seguir para um ponto j ĂŠ dada pelo seguinte modelo: Onde:

đ?“ŁÍĽij(t): quantidade de feromĂ´nio presente no caminho (i,j); Éłij = 1/â…†ij: visibilidade da comida j em relação ao ponto i; Îą e đ?›ƒ sĂŁo parâmetros para determinar a influĂŞncia do feromĂ´nio e da informação heurĂ­stica. N ĂŠ a vizinhança factĂ­vel da formiga k (ou seja, o conjunto dos pontos ainda nĂŁo visitados pela formiga k). Para cada aresta (i,j) do grafo, existe um valor heurĂ­stico Éłij dado por Éłij = 1/ â…†ij. Esse valor representa a atratividade de a formiga visitar o ponto j depois de visitar a ponto i. Assim, o valor Éłij ĂŠ inversamente proporcional Ă distância â…†ij entre os pontos i e j. As rotas sĂŁo construĂ­das da seguinte maneira:

iMasters #23 Agosto 2017


68 // INTELIGÊNCIA NADA ARTIFICIAL

Imagens: Fornecidadas pelo autor

Assim, a escolha do candidato é feita de acordo com a probabilidade de transição.

iMasters #23 Agosto 2017


// 69

Ao final dessa solução, ocorrem dois eventos no feromĂ´nio đ?“Łij: a evaporação e o depĂłsito. A evaporação ĂŠ importante, pois evita que o feromĂ´nio cresça ininterruptamente. AlĂŠm disso, ela permite que caminhos ruins possam ser esquecidos. Outro fenĂ´meno que ocorre ĂŠ o depĂłsito, evidenciando o feromĂ´nio de todas as formigas que passaram pela aresta (i,j). ApĂłs esses passos, o que passa a ocorrer ĂŠ a atualização do feromĂ´nio. Entretanto, por mais que o algoritmo se preocupe com a atualização e a evaporação (ou deveria se preocupar), chega um momento em que ele fica estagnado; assim, as formigas passam a fazer sempre o mesmo caminho. É aqui que o algoritmo de colĂ´nia de formigas ĂŠ alterado para que se tenha sua otimização. E ĂŠ aqui que surge o ACO - a ideia da otimização ĂŠ transformar a heurĂ­stica em uma meta-heurĂ­stica por meio do elitismo, fazendo um maior uso da intensificação do que o sistema de formigas simples fazia. Assim, apenas a formiga que encontrou a melhor solução atĂŠ o momento pode depositar o feromĂ´nio. AlĂŠm disso, agora as formigas sĂŁo capazes de remover o feromĂ´nio a fim de aumentar a diversificação das rotas. Esse algoritmo costuma ser utilizado em problemas de busca de soluçþes, como redes de roteamento, sistemas de comunicação, anĂĄlise de rotas de trânsito e atĂŠ em problemas de release. Ou seja, ele ĂŠ aplicado na engenharia de software para se descobrir quais requisitos mais importantes devem ser desenvolvidos na prĂłxima entrega de software a fim de maximizar a expectativa dos stakeholders. Interessante, nĂŁo?

FORMIGAS SĂƒO HEURĂ?STICAS ARTIFICIAIS CONSTRUTIVAS, ELAS CONSTROEM SOLUÇÕES DE FORMA PROBABILĂ?STICA POR MEIO DE DUAS INFORMAÇÕES BĂ SICAS: TRILHA DE FEROMĂ”NIO E HEURĂ?STICA

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 iMasters #23 Agosto 2017


70 //

DROPS DO MERCADO MAIS ECONOMIA E SEGURANÇA NA HOSPEDAGEM DE SITE

Agora os desenvolvedores podem contratar o mesmo ambiente estável e seguro utilizado por grandes companhias. A Embratel está oferecendo a esse público um serviço de hospedagem mais econômico, seguro e confiável. A oferta conta com três opções de planos de hospedagem (pessoal, profissional e empresarial), sendo que o mais básico sai por apenas R$ 19,90 por mês, com 20 GB de espaço na web. Os serviços são compatíveis com as principais linguagens de programação como HTML, PHP e ASP. As plataformas também suportam os bancos de dados mais utilizados como SQL Server e MySQL. O desenvolvedor tem acesso à ferramenta Painel de Controle para administrar seu ambiente. Soluções para realizar a manutenção de um site e aplicativos para gerenciar arquivos e configuração de segurança estão disponíveis. A plataforma permite ainda personalização com a criação de contas de e-mail com domínio próprio e compatíveis com diversos protocolos.

MEETUP MELI IT WOMEN No dia 6 de junho, o Mercado Livre reuniu profissionais que desejam ingressar em carreiras na área de tecnologia ou até mesmo que pensam em migrar para esta área. O Meetup Meli IT Women foi realizado na Melicidade – sede da companhia que é líder no segmento de tecnologia na América Latina – e foi conduzido por quatro colaboradoras da área de TI da empresa. Larissa Ribeiro, Aline Dias, Andréa Carvalho e Sabrina Juca apresentaram conteúdos sobre front end, back end, deploy, além da área de projetos de TI. A ideia é realizar constantemente encontros neste formato – muito comum no Vale do Silício - para promover a democratização nesta que sempre foi uma área majoritariamente masculina e gerar oportunidade para que mais mulheres possam se desenvolver e crescer na disciplina.

iMasters #22 #23 Agosto Maio 2017 2017

7ª EDIÇÃO DO CONEXÃO KINGHOST, EVENTO ONLINE E GRATUITO SOBRE INOVAÇÃO, ACONTECE EM SETEMBRO A próxima edição do Conexão KingHost já está sendo preparada, o evento, que tem se mantido fiel à linha de conteúdos sobre inovação e tecnologia, promete ter muitas atrações conceituadas. Na edição anterior, que aconteceu em abril deste ano, diversas palestras foram pano de fundo para debater o ‘Futuro em Desenvolvimento’, como o case ‘Operação Serenata de Amor’ e talks didáticas sobre Modern PHP, Internet das Coisas e API’s. Além de assuntos técnicos, o Conexão KingHost não decepcionou quem se interessa em gestão para inovação e negócios. Nesse sentido, as seguintes palestras ganharam destaque em abril: Liderança Ágil, OKRs, Design Thinking, técnicas de SEO e desenvolvimento de carreira de TI. Todo o conteúdo da 6 edição está disponível e pode ser acessado na seção de conteúdo grátis do site da KingHost. O próximo evento promete surpreender ainda mais o seu público. As atrações da 7ª edição serão divulgadas em breve, já é possível garantir a participação através do site: http:// kingho.st/kinghost-conexao.

STONE OFERECE GESTÃO DE RISCO COMPLETA PARA E-COMMERCE Muito mais do que um antifraude, a Stone oferece uma solução completa para gestão de risco para e-commerce. Além de fornecer proteção contra compras fraudulentas, também gerencia todo o chargeback ocasionado por fraude. O serviço desenvolvido conta com uma tecnologia de inteligência estatística para análise automática e manual, que pode ser flexível, bem como adaptável para qualquer modelo de negócio. Cada transação é acompanhada a partir do perfil de comportamento de venda da loja, enriquecendo a base de dados para garantir a maior assertividade da análise. Possibilita também o aumento da conversão de vendas on-line, já que evita que compras seguras sejam recusadas por suspeita de fraude, aumentando também a receita do lojista com a diminuição do índice de chargeback.


// 71

Acesse mundipagg.com Veja também nossa documentação: mundipagg.com/novaapi

iMasters #23 Agosto 2017


72 // DNS, TLD E GTLD

PARA UMA INTERNET MAIS SEGURA NA SUA INFRAESTRUTURA DE DNS Por Lenold Sequeira Vaz, Senior Marketing Manager na Radix

Como tudo começou Os TLDs (ou Top-Level Domains) não são segredo para nenhum de nós, aquela extensão final nos links. Porém, até 2011, nós tínhamos apenas 22 domínios genéricos sendo utilizados. Como a demanda mercadológica foi crescendo, com o uso massivo da Internet, houve uma necessidade de se ampliar essa gama de domínios. Assim, em 2012, a ICANN (Internet Corporation for Assigned Names and Numbers) criou um programa chamado New gTLD (Generic TLD), cujo objetivo era aumentar significativamente a quantidade de domínios existentes, chegando a um total de mais de 1.000. Entre eles temos: .store, .gratis, .download, .social, .dental, .games, .tech, .host e muitos outros. Essa iniciativa foi muito importante para fomentar a inovação e a concorrência, além de possibilitar uma maior escolha por parte do consumidor. Porém, nada disso foi feito da noite para o dia. Juntamente com os novos domínios, foram implementadas novas camadas de proteção com a finalidade de manter a Internet segura, resiliente e estável. iMasters #23 Agosto 2017

Umas das principais ações que visam à segurança na Internet é a migração dos sites para o DNSSEC, um protocolo de segurança baseado em DNS. Esse protocolo funciona assinando digitalmente registros de pesquisa DNS usando criptografia de chave pública. Tal registro é autenticado por meio de uma cadeia de segurança. Essa cadeia se inicia com um conjunto de chaves públicas verificadas para a zona de root do DNS, que é a terceira parte confiável. Assim, os proprietários de domínios geram suas próprias chaves e as carregam usando seu painel de controle de DNS em seu registrador de nomes de domínio, que, por sua vez, empurra as chaves via secDNS para o operador de zona que os assina e publica no DNS. É importante destacar aqui que o DNSSEC não é obrigatório para domínios antigos, mas é para os novos domínios. O DNSSEC foi projetado para ser uma solução duradoura; sendo assim, é capaz de se adaptar conforme novos ataques a algoritmos existentes vão sendo descobertos. Dentre os algoritmos mais conhecidos estão: RSA/SHA-1, RSA/SHA-256, RSA/SHA-512 e GOST R 34.10-2001.


// 73

O problema das APIs Apesar dos esforços, em 2014, foi noticiada a primeira utilização maliciosa em uma das novas extensões de domínio. Se você entrar no site da nTLDStats, é possível conhecer os domínios mais registrados, e entre eles temos: .xyz, .top, .loan, .win, .club, .vip, .online, .wang, .site, .bid e outros. Dentre esses domínios, o .top é o mais utilizado para práticas de fraude digital, tendo crescido entre 2016 e 2017, com praticamente 50% dos casos associados a ele. Para se criar um novo gTLD, a empresa interessada precisa estar atenta às rodadas de application que a ICANN abre. Até hoje, houve apenas uma rodada, em 2012, e a próxima ainda não está definida. No período em que a rodada está aberta, a empresa envia o application para a ICANN, que, por sua vez, avalia a viabilidade e julga a concessão dos direitos de operar um novo gTLD. Com o domínio aprovado, a empresa pode negociar a gestão da operação do tal domínio com outras partes interessadas, seja com relação à infraestrutura, à distribuição ou às práticas de marketing. Como a indústria de domínios é tipicamente uma indústria em rede, na qual há muitos players envolvidos com papéis complementares, além de muitos intermediários, para tornar possível a disponibilização dos domínios do Registry (empresa que ganhou a concessão para operar um domínio) até o Registrant (usuário final que irá pagar pelo domínio para usá-lo), era necessário facilitar e automatizar esse processo. Assim, diversas APIs foram criadas com a intenção de facilitar a integração entre as partes, e é nesse ponto que a segurança pode ficar abalada. Essa automação mesclada com o enorme número de novas URLs facilitou os ataques maliciosos, que se utilizam dessas falhas para criarem sites clonados com o objetivo de roubar dados dos usuários. Os setores mais afetados com esse tipo de prática foram os de varejo, serviços e financeiro.

Outra técnica popularmente conhecida é DGA (Domain Genereated Algorithm), que se baseia na geração e conexão automática de domínios. Um link, aparentemente válido, direciona o usuário para uma URL gerada dinamicamente utilizando DGA. Boas práticas e discussão Para evitar esse tipo de ataques, podemos utilizar algumas boas práticas. Verificar o sender, os links na mensagem e a reputação da URL. Entretanto a reputação não tem sido muito eficaz, uma vez que alguns criminosos se utilizam do DGA e de encurtadores de URL como bit.ly, go.gl. Por outro lado, nos encontros da ICANN, nos últimos anos, tem havido uma discussão sobre como melhorar essa segurança. Parte desses esforços vem do DNSSEC (Domain Name System Extensions), a nova geração de protocolos de segurança. As contribuições por meio de empresas como PayPal e Comcast, líderes nos setores de ISP e e-commerce têm sido valiosas para a melhora da segurança. Segundo a Comcast, 1,75% dos top 2000 sites dos EUA já possuem o DNSSEC. Sendo assim, nós, como organização que disponibiliza novos domínios, vocês, os desenvolvedores de soluções, e a ICANN estamos e devemos continuar sempre alinhados com as reais necessidades da criação de novos domínios, e com a boa escrita de APIs para que esse tipo de prática seja minimizada. Lenold Sequeira Vaz é responsável por liderar todas as iniciativas de marketing da Radix. Antes da Radix, ocupou várias posições de marketing e branding em empresas de tecnologia, desde startups até uma das maiores empresas FinTech no Sudeste Asiático. Com mais de seis anos de experiência em marketing digital e atuação internacional, tem por objetivo ajudar as organizações a desenvolver uma conexão de relevância com seu público-alvo.

lenold@radix.email

iMasters #23 Agosto 2017


74 //

COMUNIDADES Conheça as meninas do WWCode Recife Por Rodrigo Pokemão, Community Manager no Masters

Rodrigo Pokemão: Como surgiu o WWCode Recife? Andreza Leite: A Karina Machado, diretora da WWcode Recife (https://www.womenwhocode.com/), conheceu a comunidade Women Who Code pela Internet em 2013. Ela ficou interessada em representar a comunidade na rede de Recife e entrou em contato com a CTO do WWcode, a Zassmin Montes de Oca. Depois disso, ela convidou outras colegas para fundar a organização em Recife. O grupo de cofundadoras era formado inicialmente por nós duas, Josilene Santana, Lidiane Monteiro, Vitória Vasconcelos, Ludmilla Veloso e Jennifer Payne. Hoje, a comunidade cresceu, temos em torno de 400 membros oficiais e uma estrutura organizacional definida entre duas diretoras, que representam o WWCode e lideram a rede de uma cidade, além de organizarem eventos e treinarem e orientarem outras líderes (a Karina Machado e eu); Temos também duas líderes técnicas, que organizam eventos em sua área de especialização (Willany Silva e Simone Amorim) e três evangelistas, que são gurus

iMasters #23 Agosto 2017

da comunicação e servem como embaixadoras do WWCode na cidade. Elas lidam com mídia social, stand em conferências, acolhimento, entre outras ações (Veridiana da Silva, Isabele Isis e Josilene Santana). Ainda temos as gerentes de projeto, que são voluntárias de curto prazo para ajudar a coordenar ou liderar um projeto específico. RP: Hoje, quais são as principais atividades da comunidade? AL: O WWCode é conhecido pelos seus grupos de estudo técnico semanais gratuitos e eventos mensais maiores, incluindo palestras técnicas, hackathons e treinamentos de carreira. Com essas ações, o WWCode busca não só divulgar e atrair mulheres para a área, mas também estimular as mulheres a desenvolverem habilidades que melhorem seus perfis e impulsionem suas carreiras. Entre essas habilidades estimuladas pela organização, destacam-se: Técnica: promove a aquisição e o compartilhamento de conhecimentos em linguagens de programação, novos frameworks, ciência de dados, entre outros; Escrita: estimula a criação de blogs para escrita de conteúdo técnico; Speaking: possibilita a execução de lightining talks para keynotes/palestras de conferências e eventos;

Imagens: Divulgação.

Nesta entrevista ping-pong, falamos com a Andreza Leite, cofundadora da WWCode Recife, que apresentou a comunidade, suas maiores ações em Recife e região e como ela enxerga o meio de comunidades no Brasil. Com vocês, WWCode Recife!


// 75

Carreira: faz aconselhamento, mapeamento de oportunidades, whiteboarding, empreendedorismo e facilita o contato das mulheres com vagas disponíveis; Liderança: permite que as mulheres em cargos de liderança possam influenciar outras mulheres, gerenciar projetos e liderar equipes. O WWCode possui uma conferência anual para desenvolvedores, a Connect, que é aberta aos 100 mil membros da organização Women Who Code, e reúne oradores de todo o mundo para compartilhar suas histórias e conhecimentos sobre tecnologia, além de workshops técnicos, keynotes e conselhos práticos para o avanço da carreira. RP: Sobre os eventos locais, quais vocês organizam /realizam? AL: Os eventos técnicos promovidos pelo WWCode podem ser desde grupos de estudos até palestras, workshops, meetups online, hackathons e treinamentos de carreira. Em Recife, temos grupos de estudos de CSS, Web Mobile, Ruby, banco de dados e empreendedorismo. Esses eventos podem ser conduzidos por líderes técnicas da própria comunidade, permitindo que elas desenvolvam suas habilidades técnicas e de speaking. Em Recife, o WWCode já impactou aproximadamente 400 mulheres com mais de 50 eventos realizados.

RP: O que torna essa comunidade tão peculiar? AL: O WWCode tem um grande diferencial que é o foco no desenvolvimento da carreira profissional das mulheres. Um exemplo do estímulo dentro da nossa comunidade é o desenvolvimento de liderança. Com o intuito de amenizar a carência de exemplos femininos a serem seguidos, apontada como uma das razões para a falta de interesse das mulheres pela área, o WWCode promove oportunidades para as mulheres ocuparem cargos de liderança dentro da própria organização. O WWWCode acredita que as líderes são a força motriz da comunidade. Outro grande estímulo da comunidade é a participação em grandes eventos. O WWCode já concedeu mais de US$ 434 mil em bolsas de estudos e US$ 285 em ingressos de conferências internacionais. Eu e a Karina já participamos de grandes conferências internacionais nos Estados Unidos com a ajuda da comunidade. A Karina foi para o WWDC Apple Developer Conference, em 2015, e o Google I/O 2017, em São Francisco. Eu participei da MesosCon, em 2015, em Seattle. Participar de grandes conferências internacionais é uma experiência profissional excelente, pois temos a oportunidade de ter acesso a diversos conteúdos técnicos, conhecer as pessoas que desenvolvem a tecnologia, conhecer pessoas

iMasters #23 Agosto 2017


76 //

RP: Existe uma troca de experiências com outra comunidade? AL: Além das outras redes do WWCode, que nos permitem uma troca de experiências em nível global, temos relação com outros grupos e redes como: Meninas Digitais, Pyladies, Women Techmakers, Django Girls, Women Makers, Multi-Platform Audience Contributor - MTAC etc. RP: Qual a importância da sua comunidade para a região em que está localizada? AL: O Women Who Code desenvolveu, desde a sua fundação, diversas ações e atividades com três principais focos de atuação, que podem ser sintetizados em: estimular o interesse de estudantes pela área de computação, diminuir a evasão das alunas nos cursos da área de computação e estimular o desenvolvimento na carreira profissional tecnológica. A evolução da carreira profissional das mulheres no setor tecnológico tem sido pouco estudada, e a falta de motivação das mulheres resulta em uma distribuição desproporcional dos gêneros no mercado de trabalho tecnológico. Existem diversas organizações e iniciativas que buscam atrair

iMasters #23 Agosto 2017

mulheres para os cursos de computação, mas faltam iniciativas que procurem estimular essas mulheres a se desenvolverem em carreiras tecnológicas para diminuir a desigualdade de gêneros nesse setor, principalmente quando se trata da ocupação de cargos de liderança. RP: Como você enxerga o meio das comunidades no Brasil (o pessoal se ajuda, troca experiências, vão uns nos eventos dos outros)? AL: O propósito de uma comunidade é ajudar seus membros por meio do compartilhamento de conhecimento e experiências. Uma comunidade só se torna realmente ativa e alcança resultados concretos quando sua liderança e membros estão engajados, trabalhando em conjunto para o bem de todos. Essa vivência comunitária não alcança resultados significativos se restringindo a apenas uma das diversas comunidades. Devem-se estimular parcerias entre as comunidades para a criação de um conjunto colaborativo no qual já compartilhamos objetivos e podemos trabalhar juntas para aumentarmos o impacto de nossas ações. O WWcode Recife sempre que possível apoia e participa da organização de eventos e programas de outras comunidades, isso fortalece o crescimento das comunidades e cria uma sinergia entre todos - afinal, estamos trabalhando com o mesmo propósito. Contatos: recife@womenwhocode.com meetup.com/pt-BR/Women-Who-Code-Recife/ facebook.com/groups/wwcrecife/ Quer ajudar? opencollective.com/wwcoderecife.

Imagens: Divulgação.

de diversos países que trabalham na mesma área que a sua e poder trocar experiência, fazer network com os participantes do evento e com as pessoas da comunidade em que você está engajada. Como o WWcode é uma comunidade global, tivemos a oportunidade de conhecer mulheres de diversos países que trabalham com o mesmo objetivo, e isso foi incrível! Essas oportunidades aumentam as fronteiras profissionais e pessoais dos membros da comunidade.



78 // MICROSSERVIÇOS

MICROSSERVIÇOS SIM, MONOLITOS DISTRIBUÍDOS NÃO Por Marcos Paulo Honorato Lixa, Especialista de Sistemas no PagSeguro se o serviço de envio de e-mails não está acessível, o usuário poderá realizar todo o fluxo de compra e pagamento sem ser influenciado pela falha do outro serviço. E, quando o serviço de e-mails for restabelecido, o usuário poderá receber os e-mails que não foram enviados. Uma técnica bastante utilizada para que os serviços conversem entre si é o que chamamos de serviços de mensageria, como o RabbitMQ. Os microsserviços se comunicam com um servidor intermediário chamado de message broker e avisam sobre seu status ou atividades que devem ser realizadas por outro serviço. Sendo assim, caso o serviço de vendas, por exemplo, tenha que solicitar um disparo de e-mail para o serviço de e-mail, o serviço de e-mail será avisado assim que estiver novamente ativo para realizar esse disparo. Um modelo muito comum de arquitetura de microsserviços é o que chamamos de API Gateway. Nela, temos de um lado os clients (uma aplicação web e/ou aplicações mobile) utilizando uma arquitetura monolítica tradicional, que se conectam a cada microsserviço da aplicação ou serviços externos através de APIs, como no exemplo abaixo:

Imagens: Fornecidadas pelo autor

Muito se tem falado de microsserviços durante os últimos anos. Caso você não conheça, a arquitetura de microsserviços consiste em dividir sua aplicação em unidades menores, independentes e de baixo acoplamento, de modo que elas sejam criadas, mantidas, executadas e com o deploy totalmente independente; essas unidades são chamadas de microsserviços. Isso dá liberdade para a equipe, por exemplo, desenvolver cada microsserviço em uma linguagem de programação diferente, não interferindo no produto final. Cada microsserviço deverá ter seu próprio banco de dados, seu próprio ambiente (muitos utilizam ferramentas de conteinerização, como o Docker, para separar os ambientes de cada microsserviço), um sistema de deploy independente e deve ser construído de modo a ser facilmente integrado com os clients da aplicação. Essa independência faz com que, caso ocorra um erro em algum módulo de serviço, a aplicação não quebre como um todo - o serviço que está com problemas não poderá ser acessado diretamente, ou apenas uma versão em cache do último snapshot poderá ser acessada, mas as demais funcionalidades continuarão acessíveis. No caso de um e-commerce,

iMasters #23 Agosto 2017


// 79

Percebemos pelo diagrama que é possível ter uma visão da aplicação como um todo e de todas as funcionalidades que devem ser implementadas em forma de serviço, além de todas as integrações que devem ser desenvolvidas com os diversos serviços externos. Realmente, pensar em uma aplicação complexa como um conjunto de pequenas partes que se complementam e são independentes faz todo o sentido quando estamos tratando da concepção de um novo projeto. A equipe pode pensar em cada funcionalidade como um microsserviço e ter como entregável cada uma das integrações com eles. Porém, existem situações em que devemos olhar esse tipo de arquitetura com um pouco mais de cuidado. Nessas situações, nem sempre desenvolver baseado em microsserviços faz sentido. Um exemplo clássico são aplicações simples demais, como uma landing page. Geralmente, uma landing page é uma aplicação que tem um tempo de vida pré-definido. Além de não ter muitas funcionalidades complexas, iremos acabar gastando mais tempo montando uma arquitetura de microsserviços para a aplicação do que a própria página ficará no ar. Outro exemplo é a aplicação monolítica, modelo que era geralmente usado antes da utilização de microsserviços, que consiste em uma aplicação cuja maioria das funcionalidades é desenvolvida em uma única camada, na qual a mesma base de dados é utilizada para todas as funcionalidades da aplicação - e o deploy de toda a aplicação é realizado de uma só vez.

A questão é que, como cada funcionalidade de uma aplicação monolítica é extremamente dependente da aplicação como um todo, nem sempre é possível separar toda a arquitetura da aplicação em serviços muito menores - ainda mais quando o banco de dados é muito extenso, e a aplicação utiliza várias queries complexas. O ideal, nesse caso, é ir dividindo aos poucos: começar separando as funcionalidades que não causam tanto impacto à aplicação e ir remodelando o banco de dados, de preferência em um projeto à parte, para que o que está funcional não possa sofrer muita interferência com essa nova abordagem. Muitos desenvolvedores simplesmente não fazem um estudo para adaptar a arquitetura de microsserviços em uma aplicação monolítica e acabam criando monolitos distribuídos: sistemas com funcionalidades separadas, porém com um enorme acoplamento de banco de dados - serviços que acabam não sendo nada independentes. Portanto, tenha cuidado ao querer implementar microsserviços em aplicações monolíticas já existentes. Algumas vezes, o que parece que será bom acaba sendo um tiro no pé.

Marcos Paulo Honorato Lixa é engenheiro de software, triatleta e apaixonado por tecnologia. Com 10 anos de experiência em desenvolvimento de grandes sistemas web, hoje faz parte da equipe de restruturação do Pagseguro, migrando a arquitetura monolítica para microsserviços, utilizando as tecnologias mais modernas e trazendo benefícios de escalabilidade e disponibilidade para o sistema. iMasters #23 Agosto 2017


80 //

DROPS DO MERCADO

DIALHOST LANÇA AUTOINSTALADORES PARA AJUDAR DESENVOLVEDORES NA CONFIGURAÇÃO DE PLATAFORMAS EM SUA HOSPEDAGEM COMPARTILHADA A DialHost lança funcionalidade de autoinstalação para seus planos de hospedagem compartilhada. Este lançamento vem com a proposta de facilitar a vida dos desenvolvedores durante a instalação e configuração de diversas plataformas web como: WordPress, Joomla, OpenCart e etc. Agora, ao acessar o painel de controle de sua hospedagem o usuário terá diversas opções de instaladores. Ao selecionar o instalador ele seguirá um passo a passo simples e ao final terá a plataforma desejada funcionando e pronta para iniciar o site, e-commerce, blog ou aplicação. Este novo lançamento vem alinhado com a proposta da empresa de trazer soluções de atendimento simples e eficientes. A empresa, que vem investindo em um relacionamento transparente e próximo com seus clientes busca este objetivo também através da automação de atividades corriqueiras do cliente.

CONHEÇA O CHECKOUT IN APP - A SOLUÇÃO DO PAGSEGURO PARA COBRANÇAS EM APLICATIVOS IOS E ANDROID O Checkout in app do PagSeguro é a solução ideal para vender de forma rápida e segura através de aplicativos. Com integração ágil e totalmente gratuita, o layout é customizável de acordo com a interface de seu aplicativo e ainda conta com a novidade do pagamento rápido com apenas 1 clique, garantindo maior conversão de vendas. Como nas demais soluções PagSeguro, o Checkout in app transaciona mais de 25 meios de pagamentos, com segurança para quem compra e para quem vende. Não existe mensalidade e nem taxa de adesão. Para dúvidas técnicas, o usuário PagSeguro conta com uma comunidade de desenvolvedores. Venha testar essa novidade.

iMasters #22 #23 Agosto Maio 2017 2017


// 81

iMasters #23 Agosto 2017


82 // CÓDIGO ABERTO

Sistemas Operacionais alternativos - Parte 02 Por Kemel Zaidan, Evangelista Locaweb em tempo integral e de software livre nas horas vagas

N

Na edição #20 da Revista iMasters, mostramos alguns sistemas operacionais de código aberto, além do Linux e FreeBSD. Mas o mundo dos SOs livres é extenso e algumas opções interessantes ainda ficaram de fora. Conheça algumas delas abaixo: FreeDOS Velho conhecido dos gamesrs mais nostálgicos, o FreeDOS é uma versão livre daquele que foi o primeiro sistema operacional de muitos profissionais de TI de hoje, o velho DOS da Microsoft. Se você quer ressuscitar aquele jogo antigo ou ERP jurássico, o FreeDOS é sua primeira opção. http://www.freedos.org Minix Suas primeiras versões foram criadas por Andrew Tanenbaum para uso educacional e para implementar sua visão de microkernel. A partir da versão 3, deixou de ter foco educacional e passou a buscar seu uso em sistemas de alta disponibilidade, quando se tornou definitivamente livre ao adotar a licença BSD. http://www.minix3.org Inferno É um sistema operacional distribuído, cujo desenvolvimento começou no famoso Bell Labs, de onde também surgiu o Unix. Descendente direto do Plan9, é desenvolvido hoje por uma empresa chamada Vita Nuova. Seus programas são portáveis para diversos hardwares por serem escritos em Limbo, uma linguagem “type-safe” e concorrente com mais de 20 anos que imple-

iMasters #23 Agosto 2017

menta uma máquina virtual com as mesmas interfaces do Inferno. http://www. vitanuova.com/inferno OpenIndiana Quando a Sun foi comprada pela Oracle, que descontinuou a versão aberta de seu sistema operacional, o OpenSolaris, um bravo grupo de desenvolvedores criou o OpenIndiana a partir do fork da última versão disponível do OpenSolaris. O projeto se mantém ativo até hoje, sendo o único descendente direto do System V original disponível sob uma licença aberta. https://www.openindiana.org HelenOS É um sistema operacional multiservidor e tolerante à falhas baseado em microkernel. O projeto não se baseia em nenhum outro sistema existente e não é compatível com APIs legadas, como o POSIX, adotando um design próprio e moderno. Com suporte a diversas arquiteturas, como ARM, MIPS, x86-64, Itanium e PowerPC, é desenvolvido em grande parte pela Charles University, em Praga, na república Tcheca. http://www.helenos.org Kemel Zaidan é um pseudo-programador, metido a jornalista, com alma de artista e evangelista Locaweb. kemel.zaidan@ locaweb.com.br


// 83

iMasters #23 Agosto 2017


As edições de março e abril superaram 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:

Go Eliseu Benedito Codinhoto, desenvolvedor que mantém um canal no YouTube sobre Golang, foi um dos mestres no 7Masters Go. Em sua palestra, falou sobre a Golang GraphQL API, como usá-la e suas melhores aplicações. https://goo.gl/R3GTqi

Nesta edição do 7Masters, Cesar Gimenes foi um dos nossos mestres e falou sobre como conseguiu melhorar a performance de um código, reduzindo o tempo de processamento em 95%. https://goo.gl/gS3ZRX

No 7Masters Go, Thiago Avelino, CTO da Nuveo, falou sobre como é possível rodar em um ambiente da Apple, por exemplo, e conseguir gerar um binário para rodar na Microsoft. https://goo.gl/H1vlwX

iMasters #23 Agosto 2017

Nesse 7Masters, Wesley Cintra falou sobre a relação entre economia e performance em Go. Ele é bacharel em sistemas de informação e tem especialização em desenvolvimento de software. https://goo.gl/130zKm

Edward Martins, que é Bacharel em Ciência da Computação pela FAI-MG, nesta talk do 7Masters Go, falou sobre como usar Machine Learning em Go. https://goo.gl/WbfkZ4

No 7Masters Go, Arnaldo Pereira falou sobre o uso de Go no Luiza Labs - como são feitas as escolhas estratégicas, onde estão as falhas e como contorná-las. Arnaldo é especialista em SRE, Gestão, Arquitetura de Software, Cloud Computing, AWS, Google Cloud, Containers, Automação de Infra-estrutura, VoIP e Kubernetes. https://goo.gl/4RDzmm

Nessa mesma edição, Vitor De Mario falou sobre concorrência na prática - como fazer, boas práticas, quais situações usar… Vitor é formado em Ciência da Computação pela UFRJ, com experiência em Go, Python e Java. Desde o final de 2015, está envolvido com a organização de meetups da comunidade Go em São Paulo. https://goo.gl/f95uq5


// 85

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.

MySQL Airton Lastori é consultor MySQL da Oracle Brasil. Possui formação em Ciência da Computação pela Universidade Federal de Itajubá e é mestrando no ITA. Há mais de 10 anos, está envolvido com diversas tecnologias open source relacionadas principalmente com o universo Web. Nesta talk, ele faz um panorama do que viu acontecer com o MySQL, a evolução do produto e do mercado. https://goo.gl/G9gRTX

Outro palestrante do 7Masters MySQL foi Gabriel Machado, desenvolvedor Web na Leroy Merlin com foco em backend. Na ocasião, ele falou sobre relatórios gerenciais com MySQL: como fazê-los, como otimizá-los, em quais situações eles melhores se encaixam… https://goo.gl/mCaZ9x

Em sua fala no 7Masters MySQL, Danilo Santos retratou os 4 anos do banco de dados em 7 minutos! Danilo é desenvolvedor Fullstack e DBA na Memed. Trabalha com desenvolvimento web desde 1999 é formado em Sistemas da informação. https://goo.gl/RHLPDY

Em sua talk, Alexandre “Taz” tratou sobre o uso do JSON Datatype para diminuir a complexidade da aplicação, reduzir a complexidade das buscas e diminuir a necessidade de conhecimento tecnológico para a aplicação. https://goo.gl/IIbcS6

Anderson Casimiro, também conhecido como Duodraco, é CEO e fundador do Codário, além de voluntário no PHPSP. Em sua palestra, falou sobre as novidades que os usuários vão encontrar no MySQL 8. https://goo.gl/iWyyHg

Em sua palestra no 7Masters, Michael Douglas falou um pouco sobre MySQL Full Text Search e seus usos no dia a dia do desenvolvedor. Ele é criador e mantenedor da Laravel PagSeguro e idealizador do evento Laravel Conference Brasil. https://goo.gl/7OvRGP

Estratégia no uso de PK no MySQL foi o tema de Ricardo Ledo no 7Masters MySQL. Ricardo é desenvolvedor web há 5 anos e atualmente faz parte do time da Pagar.me. https://goo.gl/YBenvv

iMasters #23 Agosto 2017


86 //

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 “ser um desenvolvedor” para você, cabe aqui! Quer participar? Envie uma foto e descrição para redacao@imasters.com.br

BRASIL EXPORTA SOFTWARE DE GESTÃO DE HOSPITAL PARA ARÁBIA SAUDITA Um hospital saudita será o primeiro no mundo árabe a usar o software de gestão de saúde Tasy, desenvolvido pela unidade brasileira da Philips. O trabalho começou em fevereiro desse ano e a data de implantação ainda está em aberto. Criado pela empresa catarinense Wheb Sistemas, o Tasy passou a ser desenvolvido e aprimorado pela Philips desde 2010, quando a companhia holandesa comprou a brasileira. Hoje, o Tasy é usado em mais de mil hospitais pelo Brasil e, em 2013, a solução passou a ser comercializada no exterior, começando pelo México. O software pode ser utilizado nas mais diferentes funções, incluindo controle de fluxo de caixa, prontuário eletrônico, controle de faturamento e contabilidade, entre outras. “O Tasy é usado desde o registro do paciente na recepção e em funções como encontrar uma cama para o paciente e a refeição que ele vai comer até o registro de dados médicos por cardiologistas, oncologistas, etc.”, explica Jérôme Galbrun, líder global de Marketing de Electronic Medical Records (EMR) da Philips. O segundo cliente a adotar o Tasy no exterior foi um hospital na Alemanha, cujo sistema começou a ser desenvolvido em fevereiro desse ano para entrar em operação em março de 2018.

iMasters #23 Agosto 2017


// 87

DESENVOLVIMENTO DE SOFTWARE E DISCOS DE VINIL Que o brasileiro gosta de música não é segredo para ninguém. Que os devs também gostam, também não é segredo. Que tal unir estas duas paixões a uma terceira, o vinil? Foi nesse cenário que os empreendedores brasileiros Emílio Malaman, Addo Del Grossi, Igla Generoso w Oswaldo Maurício Neto se uniram para criar o Vinil180. O Vinil180 é uma plataforma que possibilita a descoberta, o compartilhamento e a venda de discos ao redor do mundo. A arquitetura é altamente escalável, baseada em big data e machine learning. Além disso, a plataforma conta com recomendações, raridades e novidades para cada usuário. Acesse a plataforma e saiba mais. https://vinil180.com/

DEV BRASILEIRO CRIA APP QUE ACOMPANHA EVOLUÇÃO DA SWIFT O desenvolvedor brasileiro Thiago Holanda facilitou a vida dos desenvolvedores que desejam acompanhar de perto a evolução da linguagem Swift, da Apple. Agora, basta acessar o aplicativo Evolution – App. Na época do lançamento, algumas pessoas que trabalham na Apple twittaram sobre o app, que acabou ganhando um RT de ninguém menos que Chris Lattner, o próprio criador da linguagem. O app também foi listado no Product Hunt e comentado em vários outros sites internacionais.

iMasters #23 Agosto 2017


88 //

POR AÍ

GAZEUS PLANEJA MONTAR ESTÚDIO DE GAMES NO EXTERIOR A desenvolvedora brasileira de jogos móveis, Gazeus, tem planos de abrir um estúdio de games no exterior. A empresa alega que a principal razão é a falta de mão de obra especializada no Brasil. Mas apontam também que essa seria a possibilidade de estarem dentro de um ecossistema mais sofisticado de produção de jogos eletrônicos. O país que mais se destaca para a empreitada é o Canadá, onde o governo oferece uma série de incentivos para atrair desenvolvedores do mundo inteiro. “Sinto dificuldade de encontrar mão de obra no Rio de Janeiro (onde a empresa está sediada). Tem profissionais bons aqui, mas não é fácil achálos. E quando encontramos, eles são disputados, custam caro. Poderíamos ir para São Paulo, mas, juntando com outros benefícios, acho que Canadá é melhor. Vancouver tem um pólo gigantesco de games. A cultura de desenvolvimento de jogos lá é mais sólida”, avalia o executivo. O plano é tomar a decisão até o final do ano e entrar em operação em 2018 com um time de pequeno, de até dez pessoas, revela o executivo. O estúdio no exterior terá como foco a produção de jogos em HTML5, para suprir a demanda que virá da plataforma de instant games do Facebook e outras que trabalham com esse padrão, como Telegram e vários mensageiros da Ásia.

iMasters #23 Agosto 2017


A PLATAFORMA OPENSTACK DO UOL HOST É TÃO INOVADORA QUE FEZ O REAL VALER MAIS A PENA QUE O DÓLAR.

// 89

Pagamento em reais Sistema pré-pago com recarga automática Suporte técnico 24 horas em português

UOL HOST é pioneiro na implantação de nuvem pública em Openstack no Brasil. SAIBA MAIS EM:

UOLHOST.COM.BR/OPENSTACK OU LIGUE:

4003 5973

iMasters #23 Agosto 2017


90 // POR DENTRO DO W3C

UM PROJETO PATROCINADO POR

iMasters #23 Agosto 2017


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.