Maio 2015 / Ano 04 / Edição 14 R$24,00
Nós fazemos a Internet no Brasil
Pensando o desenvolvimento
FORA DA CAIXA
#capa #pag23
CEWEB.BR
BLOCKCHAINS
LABHACKER
#PorDentroDoW3C #pag16
#Tendências #pag33
#Comunidade #pag45
CENTRO DE ESTUDOS SOBRE TECNOLOGIAS WEB NO BRASIL
APPS DISTRIBUÍDAS EM UMA INTERNET PÓS-CLOUD
A INVASÃO HACKER CONTINUA
INSPIRAÇÃO QUE TRANSFORMA MAIS DE 30 CURSOS DE CURTA E MÉDIA DURAÇÃO NAS ÁREAS DE TECNOLOGIA, EMPREENDEDORISMO, PROJETOS E INOVAÇÃO. SHIFT irá inspirar mentes transformadoras, quebrar paradigmas, promover a ousadia, criar tendências, buscar o ineditismo em cada solução e acima de tudo, tirar você de sua zona de conforto. Experimente SHIFT. Reinvente-se. Deixe a marca da transformação em sua carreira.
INOVAÇÃO
Aprenda na prática como desenvolver processos e metodologias para gerar impactos positivos por meio da inovação em sua empresa ou negócio.
EMPREEDEDORISMO
Aprenda como captar recursos para sua startup, criar produtos e serviços vencedores, administrar finanças, negociar estrategicamente com executivos e muito mais.
BEYOND
TECNOLOGIA
GESTÃO DE PROJETOS
Explore temas como Digital Branding, Social Media, Social Branding, Creative Thinking e Storytelling. Explore tecnologias como Big Data, Internet das Coisas, Desenvolvimento de Apps, CCNA Routing & Switching, Java, C# e outras grandes tendências do mercado com constante demandas. Domine todas as etapas da gestão de um projetos: definição de escopo, avaliação de custos e riscos, controle de qualidade e administração de recursos entre outras coisas.
ACESSE WWW.FIAP.COM.BR/SHIFT
Expediente TIAGO BAETA Publisher RINA NORONHA (MTB 2759-ES) Editora/Jornalista Responsável FABIO LODY Direção de Arte / Diagramação NATHÁLIA TOREZANI Revisão COLABORADORES Anderson Casimiro, Breno Oliveira, Bruno Rodrigues, Christiano Anderson, Fabrício Matos, Flávia Jobstraibizer, Guilherme Oderdenge, Ivo Nascimento, João Batista Neto, João Freitas, Kemel Zaidan, Kleber Bacili, Laura Lou, Leandro Vieira, Lucílio Correia, Reinaldo Ferraz, Ricardo Azevedo. ESKENAZI INDÚSTRIA GRÁFICA Gráfica GRUPO IMASTERS Organização > 1000 exemplares > ISSN 1981-0288
Rua Claudio Soares 72, conjunto 1302, Pinheiros - São Paulo/SP CEP: 05422-030 Telefone: (11) 3063-5941 www.imasters.com.br/revista redacao@imasters.com.br Twitter: @iMasters Facebook: /PortaliMasters Os artigos assinados são de responsabilidade dos autores e não refletem necessariamente a opinião da revista. É proibida a reprodução total ou parcial de textos, fotos e ilustrações, por qualquer meio, sem prévia autorização dos artistas ou do editor da revista.
Editorial Se você tem uma opinião sobre determinado assunto, ou mesmo um método de trabalho que funciona, talvez tenha um pouco de dificuldade em mudá-lo - não se mexe em time que está ganhando, não? No entanto, estar aberto a novas propostas pode trazer benefícios diversos, como tempo e menos trabalho (ou retrabalho). No caso de linguagens de programação, se você consegue pensar de forma diferente, pode até mesmo encontrar um novo caminho profissional, utilizando basicamente as mesmas ferramentas. Por exemplo, por que não utilizar PHP e JavaScript para projetos que não são de web? Esse é o assunto do artigo especial desta edição, escrito por João Batista Neto. E por falar em “Web fora da web”, leia a coluna de Ricardo Ferraz para entender melhor o que é o Ceweb.br, novo departamento do NIC.br. O Centro de Estudos sobre Tecnologias Web, criado no início deste ano, tem foco em experimentações e promoção de tecnologias abertas, além de fornecer subsídios para a proposição de políticas públicas tendo a plataforma web como principal propulsor para a inovação social. A web caminha a passos largos para fazer parte cada vez mais do nosso dia a dia, agora em carros, eletrodomésticos e acessórios pessoais, e o Ceweb.br será fundamental para fazermos isso de forma melhor. A edição 15 da Revista iMasters ainda traz artigos sobre tecnologia 4k, conteúdo para web, startups e blockchain. Um texto especial apresenta a história do Labhacker, e na coluna “Por Aí” trazemos uma novidade: a partir desta edição mostraremos o perfil de um membro do Fórum iMasters. São histórias de pessoas que atuam em comunidade, ajudando um ao outro no desenvolvimento pessoal. Aliás, a importância de atuar em comunidade é assunto de outra coluna, Desenvolvimento Zen.
Abraços, Rina Noronha Editora - iMasters redacao@imasters.com.br
O PRESENTE É estudar online.
| CURSOS ONLINE
TOP RANKING HISTÓRIAS DA VIDA REAL o que estão estudando mais no Cursos Imasters Online
DESENVOLVENDO SITES COM BOOTSTRAP - TREINAMENTO ESSENCIAL
Facebook Marketing
PHP ORIENTADO A OBJETOS TREINAMENTO ESSENCIAL
depoimentos de quem já estudou e estuda no Cursos Imasters Online
Consegui desenvolver projetos profissionais e lucrar com isso após fazer basicamente todos os cursos do grupo, hoje a Metrossexuais é um dos maiores E-commerce para o público Metrossesual do país. Rafael Zaia - metrossexuais.com.br
Fiz os cursos de e-commerce, pricipalmente de magento e consegui desenvolver a loja virtual da Pink Sweet, voltado para moda feminina e potencializar minhas vendas rapidamente. Antonilza Barros - pinksweet.com.br
SEO - SEARCH ENGINE OPTIMIZATION - TÉCNICAS DE MARKETING NO GOOGLE
Com uma linguagem simples e direta, os cursos disponíveis na plataforma foram feitos para atender um público que precisa de flexibilidade de tempo para organizar a sua grade de estudos.
O EAD VEIO PRA FICAR Hoje, um dos espaços onde a educação mais cresce é nas empresas, como uma ferramenta estratégica para desenvolver e ampliar o negócio. A Educação Corporativa se estabeleceu no mercado para atender a expectativa de vencer a concorrência com estratégias sustentáveis e econômicas. Os prazos para alcançar as metas organizacionais estão mais curtos, porque as transformações são quase instantâneas.
https://cursos.imasters.com.br
6 > Sumário
23
Capa - Pensando o desenvolvimento: Fora da caixa
16 Ceweb.br Centro de estudos sobre tecnologias Web no Brasil
33 Blockchains Apps distribuídas em uma Internet pós-cloud
45 Labhacker A invasão hacker continua
Sumário < 7
09 :: Entrevista > Cal Evans e Paul Jones 16 :: Por dentro do W3C > Um centro de estudos sobre tecnologias Web no Brasil 19 :: API > Os fundamentos da segurança de APIs 23 :: Capa > Pensando o desenvolvimento fora da caixa 29 :: Tecnologia do Futuro > E a bola da vez é ... 4k! 33 :: Tendências > Blockchain e apps distribuídas em uma Internet pós-cloud 37 :: Mobile Payment > Hora de ser disruptivo no desenvolvimento de soluções de pagamento 40 :: Por Aí > Fazendo a internet do Brasil pelo mundo 43 :: Por Aí > Perfil: quem faz a internet no Brasil? 45 :: Comunidade > Labhacker - a invasão hacker continua 49 :: Banco de Dados > Persistência poliglota e NoSQL 53 :: Cyberlaw > Startups enxutas, porém sustentáveis 57 :: Desenvolvimento > Como eu precisei ver Testes 62 :: Sr. Conteúdo > Diferença entre Comunicação e Marketing no meio digital 66 :: Desenvolvimento Zen > Trabalhe (Z|B) em acompanhado 69 :: WordPress > O WordPress é seguro. Inseguro é você 72 :: 7Masters 75 :: Desenvolvimento > Seu site tão rápido quanto o Google usando ElasticSearch 78 :: Código Livre > Informações e dicas sobre projetos Open Source
A iMasters é uma revista de Tecnologia/Web aberta a novas ideias. Para colaborar envie o seu material por e-mail revista@imasters.com.br
Entrevista < 9
Cal Evans
Paul Jones
Passe adiante! Por Por Laura Lou, para Revista iMasters Cal Evans e Paul Jones, keynote speakers do iMasters PHP Experience 2015, que aconteceu em abril, contam suas experiĂŞncias para fomentar a comunidade mundial de desenvolvedores.
10 > Entrevista
RiM - Em que você tem trabalhado recentemente?
Paul Jones: Aura (auraphp.com) é um projeto contínuo; há sempre mais refinamentos e melhorias a serem adicionados. Mais recentemente, eu comecei um projeto chamado Bookdown (bookdown.io). Ele gera páginas HTML similares ao DocBook, a partir de fontes Markdown e JSON (em vez de XML). É ótimo para documentação em narrativa. Pretendo adicionar um conversão PHPDocumentor-to-Bookdown também, de forma que a documentação de uma API possa ser incorporada ao mesmo site. Também terminei o meu segundo livro, “Solving the N+1 Problem in PHP” (leanpub.com/sn1php). É uma sequência de um tópico específico do “Modernizing…”, que ajuda a melhorar a performance de aplicações quando você construir coleções de objetos entity.
Cal Evans: Meu projeto mais recente foi “Wisdom of the ElePHPant” (wisdomoftheelephpant. com). Escrevi para mais de 20 desenvolvedores PHP, amigos muito mais gabaritados do que eu, e pedi a cada um que contribuísse com dois ou três parágrafos curtos de “sabedoria PHP”. Eles foram reunidos em um livro que muitos de nós agora distribuímos em conferências. Foi um “projeto comunitário” muito divertido de montar.
RiM - Cal, você poderia falar sobre as iniciativas “Nomad”? Como começaram e por que são importantes para você?
Cal Evans: A inspiração para o NomadPHP (nomadphp.com) foi Khayrattee Wasseem (@7php), que mora nas Ilhas Maurício (África). Ele tinha criado um codinome na comunidade para compartilhar entrevistas maravilhosas com diversos membros considerados de alto calibre na comunidade. Mas, por conta de onde morava, ele teria poucas chances de encontrar essas pessoas em uma conferência. Comecei a pensar sobre isso e percebi que havia profissionais em diversas localidades que não tinham o benefício de poder participar de pelo menos uma conferência de desenvolvedores a cada ano. Foi então que criei um PHP User Group para levar esses palestrantes até ele. NomadPHP cresceu ao ponto de termos duas reuniões mensais, uma no fuso da Europa Central e outra no fuso dos Estados Unidos. Cada reunião conta com um palestrante diferente, que apresenta uma talk que já fez em uma conferência. Atualmente, temos empresas que adquirem “Team Tickets”: elas fazem reuniões para assistir às apresentações e discutir a respeito dos assuntos tratados. Estamos muito entusiasmados por ajudarmos equipes inteiras a crescer. Ao início de cada reunião Nomad, deixamos muito claro que não somos um substituto para grupos de usuários PHP locais. Ou seja, se você tem um grupo, esperamos que você se envolva com ele. No entanto, se você não tiver um, nós nos propomos a ser o seu grupo de usuários locais.
“Você pode fazer tudo sozinho, mas a questão é: por que você faria isso? Deixe a comunidade PHP te ajudar! Envolva-se, pergunte, responda a dúvidas”
Entrevista < 11
RiM - Em seu livro “Modernizing Legacy Applications In PHP”, eu li a seguinte frase: “Você vai flanar pelo seu código como o vento. Ele terá carregamento automático, injeção de dependências, testes unitários, separação em camadas e controlado no front”. Por que isso é tão importante a ponto de ter te inspirado a escrever esse “guia”, como o livro é chamado na comunidade PHP?
Paul Jones: Tive a oportunidade de trabalhar em vários lugares diferentes, com missões igualmente diferentes. Com isso, esbarrei com os mesmos problemas de código aparecendo sempre. Com códigos tão bagunçados como um prato de espaguete, com includes e globals, você fica receoso de encostar em alguma coisa para resolver e acabar quebrando outra coisa em outro lugar. E isso por si só já significa que os desenvolvedores estão infelizes, sem moral e sofrendo; eles odeiam seus trabalhos, porque é difícil lidar com o código. Então, muito do trabalho feito nesses lugares tem sido o de fazer o código mais fácil de ser trabalhado. Ao longo de 10 anos, mais ou menos, eu cheguei a uma série de pequenas mudanças que podem ser aplicadas com algum esforço, mas com grande recompensa. O livro “Modernizing” é uma versão ordenada e formalizada dessas mudanças. À medida que elas são aplicadas, os desenvolvedores voltam a gostar de seus trabalhos, pois o código se torna mais fácil de lidar. Tudo isso para dizer que a inspiração não foi apenas “melhorando a qualidade da aplicação”, mas “melhorando a qualidade de vida do desenvolvedor”. É uma forma de ampliar a felicidade com o trabalho que fazemos diariamente. A meta realmente é uma vida de trabalho melhor e mais satisfatória.
RiM - Resumidamente, seu livro “Cultura do Respeito” trata do porquê investirmos tempo e energia para construir “uma equipe da qual os desenvolvedores querem fazer parte”. Qual foi sua motivação para escrever esse livro?
Cal Evans: Sou desenvolvedor há 30 anos. Nesse tempo, trabalhei com muitos chefes, alguns bons, outros ruins, outros excelentes e outros terríveis. Eu também construí várias equipes na minha carreira. Esta é provavelmente uma das coisas que mais gosto de fazer: construir e gerenciar equipes de desenvolvimento. Ao longo do caminho, reuni inúmeros insights sobre o que é preciso para encontrar, contratar e reter bons desenvolvedores. A gênese do livro, no entanto, remonta a um artigo que escrevi há 15 anos intitulado “Nerd Herding” (http://blog.calevans.com/nerd-herding/). Se você já leu “Cultura do Respeito”, verá muitos dos temas tratados em “Nerd Herding”. Em “Cultura do Respeito”, no entanto, tenho 15 anos mais de estrada e experiência. Assim, o livro foi escrito para compartilhar meus pensamentos e minha experiência em uma área na qual muitas empresas apresentam dificuldades para se adaptar. A primeira parte do livro trata de como encontrar desenvolvedores para contratar. Conheço muitas empresas que lutam constantemente para encontrar bons desenvolvedores. Então, compartilho com elas coisas que fiz, e coisas que vi os outros fazerem.
12 > Entrevista
RiM – Atualmente, temos diferentes estilos de arquitetura para aplicações: o famoso MVC, hexagonal, DCI, e microframeworks/microservices. Você enxerga ainda espaço para novos formatos nos próximos anos?
Paul Jones: Acredito que novas tecnologias e novas formas de trabalhar surgem, e há sempre espaço para novos estilos. Mas também acho que esses novos estilos devem ser modificações, revisões e refinamentos dos antigos, mais do que arquiteturas completamente novas e diferentes.
RiM - Você pode falar mais sobre MVC (Model View Controller) e ADR (Action Domain Responder) em termos de Desing Patterns Arquitetônicos?
Paul Jones: Antes de tudo, é preciso lembrar que MVC não é uma arquitetura de aplicação, pois isso é muito fácil de esquecer - eu mesmo fiz essa confusão por anos. Model View Controler é um padrão de “interface de usuário” que é aplicado dentro da arquitetura de aplicações, da mesma forma que Row Data Gateway é um padrão de dados-fonte que é aplicado em arquiteturas de aplicações. O curioso sobre o MCV é que é um padrão bastante antigo. Trygve Reenskaug o utilizou nos anos 1980, há 30 anos. Na década de 1990, a Sun decidiu utilizar esse termo para a arquitetura “Model 2”. Eles mantiveram os “noems” dos componentes do padrão (model, view, e controller) mas subverteram as relações desses componentes, inventando um novo padrão, mas com o mesmo nome. Por isso que MVC “para a web” é diferente de MVC “para desktop”. Isso nos leva ao Action Domain Responder (pmjones.io/adr). ADR é uma tentativa de nomear os padrões UI que temos que realmente usar no desenvolvimento web, mais do que utilizar erroneamente o nome MVC para descrever o que acreditamos estar fazendo. Um dos pontos centrais do ADR é a camada view. Pensamos no template como a view, mas é realmente uma “resposta HTTP como um todo” que é a view. Tudo o mais sobre ADR parte dessa revelação.
RiM - O PHP é, de fato, uma grande linguagem para desenvolvimento web. Mas o que dizer do php-cli? Poderia ser usado para a criação de grandes ferramentas que extrapolariam a web?
Cal Evans: Eu não sou bom na construção de interfaces de usuário utilizáveis. É por isso que, provavelmente, usar o PHP a partir da interface de linha de comando (CLI) é o que mais faço. Construí ferramentas para gerenciar sistemas de e-mail usando o php cli, e já palestrei a respeito dele em 2009. Até recentemente, porém, o PHP tinha um problema. Houve um vazamento de memória que nos impedia de escrever programas de longa duração. Muito php from the cli foi usado para obter ferramentas ‘hip pocket’. Mas isso foi resolvido. Tenho um script em execução no meu servidor privado que tem sido executado há três meses, sem interrupção. E não é um “script” ou uma página da web, é um programa.
Entrevista < 13
O PHP não é a ferramenta perfeita para fazer isso, mas ele está ficando melhor a cada lançamento. Algumas das coisas que virão no PHP 7 tornarão possíveis escrever programas melhores e mais robustos que funcionam a partir da CLI. Com o avanço da IoT, estou ansioso para o dia em que eu poderei escrever um programa PHP executando no meu servidor privado que irá bloquear a porta da minha geladeira, se estiver comendo demais, por exemplo. Espero poder usar o PHP para construir as ferramentas e fazer a IoT acontecer.
“Novas tecnologias e novas formas de trabalhar surgem, e ha´ sempre espaço para novos estilos. Mas eles devem ser modificações, revisões e refinamentos dos antigos estilos, mais do que arquiteturas completamente novas e diferentes”
RiM – No Brasil, os desenvolvedores têm criado comunidades bastante fortes. Por que é importante para o profissional ser parte de um grupo, e que tipo de experiência e conhecimento ele pode aproveitar ali?
Paul Jones: No mínimo, participar de um grupo ensina que você não é o Melhor E Mais Inteligente Desenvolvedor Em Tudo. No geral, cada desenvolvedor tem uma percepção muito alta de sua própria inteligência, até que ele leva uma “surra intelectual” de outros profissionais. O desenvolvedor sábio leva isso como uma chance de aprender humildade e ampliar seu conhecimento; o tolo fica ressentido e se rebela contra isso. Você também pode encontrar grandes amigos e aliados nesses grupos. Eu me acho muito sortudo por ter encontrado bons amigos (como o Cal!) nos meus grupos. Eles me enriquecem, e espero que eu faça o mesmo por eles!
Cal Evans: Eu passei os primeiros 15 anos da minha carreira sendo um “desenvolvedor solo”. Eu não trabalhava em equipes, não participava da comunidade, era apenas eu sozinho. Gastei a maior parte desse tempo procurando por respostas que outras pessoas ficariam felizes em me ajudar a encontrar, a compartilhar comigo, se apenas eu estivesse me envolvido e perguntasse. O melhor lugar para ir quando se tem uma dúvida é a comunidade PHP. Claro que existem exceções, mas a maioria dos participantes quer, tem vontade e disposição para ajudar. O outro lado da moeda é que, se alguém te ajuda, é implícito que você também vai ajudar alguém, não importa o seu nível de experiência. Sim, você pode fazer tudo sozinho, mas a questão é: por que você faria isso? Deixe a comunidade PHP te ajudar! Envolva-se, pergunte, responda a dúvidas. Você vai descobrir que é possível aprender mais ao ajudar os outros do que simplesmente por pedir ajuda.
14 > Entrevista
RiM – Tecnologia de Informação é uma das carreiras mais promissoras no Brasil. Muitos jovens brasileiros também possuem fortes habilidades empreendedoras. Qual conselho vocês dariam aos jovens brasileiros que estão prestes a ingressar na faculdade?
Paul Jones: Se você já for um empreendedor e tiver um bom plano de negócios, talvez nem precise ir para a faculdade. Provavelmente, você aprenderá muito na vida real ao tentar construir o seu negócio. No mínimo, vai aprender como isso é difícil, e que suas ideias não valem muita coisa se não forem bem implementadas. Por outro lado, ir para a faculdade não vai fazer você gostar de algo que você já não goste. Será um exercício de disciplina, e isso é muito valioso para empreendedores e empregadores. Você ganhará créditos que serão úteis ao procurar um emprego nessa área. Mas você realmente vai aprender mais ao fazer as cosias por si só, mais do que ao fazê-las em sala de aula.
Cal Evans: 1: Aprenda PHP! É sério, se você aprender o básico, imediatamente poderá começar a ajudar pessoas que usam sites em WordPress. O próprio WordPress alimenta boa parte da Internet. Saber como fazer o WordPress funcionar é um excelente ponto de partida. 2: Aprenda um framework! Meu amigo Mr. Paul Jones possui um grande framework, Aura, que fornece um novo conjunto de ferramentas para resolver problemas. Mas não se pode realmente aproveitar tudo isso até entender o próprio PHP. Agora, se o Aura não for o ideal para você, tente Zend Framework, Symfony, Cake PHP ou Laravel. Continue experimentando diferentes frameworks até encontrar aquele que se adapte à maneira como você deseja programar. Mas não pare por aí, continue experimentando outros frameworks. Sim, é muito trabalho. E é difícil, mas você precisa saber o que acontece no mundo, e com qual framework se sente mais confortável em trabalhar e por quê. 3: Continue aprendendo! Programação não é uma carreira estática. Novas ideias são apresentadas o tempo todo. Novas tecnologias surgem o tempo todo e você PRECISA saber o que as pessoas fazem, e como elas se encaixam nos projetos que você estiver construindo. Eu amo o PHP, mas posso escrever código em Java, Pascal e em .NET. Em suma: não se limite, aprenda o máximo que puder. 4: Envolva-se! A comunidade PHP é uma vibrante e cheia de pessoas que gostariam de ajudá-lo a aprender. Junte-se a seu grupo de usuários PHP locais. Se você não possui um grupo de usuário PHP local, comece um. Você precisa estar entre seus pares, e mergulhar na comunidade. 5: Compartilhe! Se você usar o PHP para qualquer coisa, estará sobre os ombros de gigantes. A comunidade PHP abraça o princípio da “Pay It Forward” (passe adiante). Assim, logo que possível, comece a compartilhar o que aprendeu. Você pode ser novo na programação, mas garanto que aprendeu algo que alguém não sabe. Então crie um blog, fale sobre isso, entre no IRC e, quando alguém fizer uma pergunta a respeito, ofereça a resposta. Outros antes de você fizeram o mesmo para que um dia você pudesse estar onde está, logo esperamos que você também faça o mesmo.
Exposição e gerenciamento de APIs com segurança e velocidade
Com o API Management Suite da Sensedia você consegue:
Conheça melhor e agende sua demo em sensedia.com
a a a a a a
Expor dados e serviços com segurança Engajar desenvolvedores Proteger o seu backend Gerenciar as dependências de APIs externas Monitorar o seu tráfego Entender o uso das suas APIs
16 > Por dentro do W3C
Um centro de estudos sobre tecnologias Web no Brasil Por Reinaldo Ferraz, Especialista em Desenvolvimento Web do W3C Brasil
Em 25 de março, foi oficialmente anunciado o Centro de Estudos sobre Tecnologias Web – Ceweb.br, novo departamento técnico do Núcleo de Informação e Coordenação do ponto BR - NIC.br. O Ceweb.br foi criado em janeiro de 2015, por iniciativa do Comitê Gestor da Internet no Brasil - CGI.br, e tem foco em experimentações e promoção de tecnologias abertas da Web, além de fornecer subsídios para a proposição de políticas públicas tendo a plataforma Web como principal propulsor para a inovação social. Ao lado do W3C Brasil, o Ceweb.br busca também fortalecer globalmente a representação brasileira da comunidade e obter avanços significativos para a plataforma da Web aberta. Muitos me perguntaram sobre as atividades do Ceweb.br e como ele vai trabalhar com o W3C Brasil. Explico nos parágrafos a seguir. O crescimento exponencial da Web e a evolução do seu modelo livre e não “proprietário” transformaram o que era um conjunto de páginas HTML conectadas por hiperlinks em uma complexa e dinâmica rede de dados e usuários conectados. A Web é a camada da Internet que conecta pessoas, que gera
negócios e movimenta recursos financeiros pela rede. Ela está ultrapassando a barreira dos computadores, celulares e tablets. A Web está caminhando a passos largos para fazer parte cada vez mais do nosso dia a dia, agora em carros, eletrodomésticos e acessórios pessoais. A estrutura consolidada do W3C como consórcio para a criação de padrões interoperáveis na Web em conjunto com organizações filiadas criou esse ambiente fértil para inovação tecnológica. Esse formato garante que a Web atinja todo seu potencial máximo e possibilitou seu crescimento ao longo do tempo. A representação do W3C no Brasil acompanha de forma muito ativa o modelo aberto e colaborativo da Web. Desde a sua chegada em 2008, o W3C Brasil promove uma Web livre e acessível para todos, com atividades constantes e mantém uma relação muito próxima com quem faz a Web: gestores, diretores, representantes governamentais, representantes do setor privado, desenvolvedores e usuários. Todos, sem exceção, têm papel importante na construção de uma Web melhor. Com esse novo centro de estudos no Brasil, damos início a uma nova jornada. Acompanhando os passos do W3C, o Ceweb.br en-
Por dentro do W3C < 17
globa a iniciativa de extrapolar as fronteiras dos padrões para integrar novos elementos ao escopo do trabalho e reforçar ainda mais o desenvolvimento da Web no Brasil. O Ceweb.br se propõe a incentivar novas pautas e ações sobre diversos temas extremamente atuais e que já são objetos de estudo para a evolução do modelo da Web que temos hoje. Entre esses temas de impacto, posso destacar alguns tópicos importantes de estudos do Centro: Internet e Web das Coisas - explorar e promover experimentos e estudos especialmente sobre o uso de tecnologias Web para a Internet das Coisas. Pagamentos pela Web - investigar e estudar a utilização da Web como plataforma de pagamentos online e seu impacto na economia global Web e TV Digital - participar ativamente da discussão sobre TV na Web e Web na TV, que vai além do conteúdo entregue ao usuário. O debate sobre as tecnologias envolvidas nesse tema é fundamental para que o modelo de interoperabilidade seja preservado no ambiente da TV Digital. Web automotiva - estudar e participar ativamente na construção e elaboração de padrões Web para uso em veículos automotivos. A Web móvel cresceu e ganhou motores, que
precisam ser estudados, debatidos e propostos em um fórum global de desenvolvimento. Estudos da Web como interface da nova economia - Muito mais do que colaborar na construção de padrões Web, o Ceweb.br pretende promover estudos de impacto sobre como a Web atua, interfere e principalmente muda o cenário da economia mundial. A criação do Centro é uma vitória para a Web brasileira. Agora contamos com mais uma entidade para expandir o debate e a inovação em fóruns nacionais e internacionais, dando sinergia para as ações já realizadas pelo W3C Brasil sobre padrões da Web aberta. Participe e acompanhe os projetos do Ceweb. br pelo site www.ceweb.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. Coordenador do Prêmio Nacional de Acessibilidade na Web e do Grupo de Trabalho em Acessibilidade na Web e representante do W3C Brasil em plenárias técnicas do W3C. @reinaldoferraz
API < 19
Os fundamentos da segurança de APIs Por Kleber Bacili, fundador e CEO da Sensedia
As APIs estão por toda parte. Com o “boom” das estratégias digitais em mobilidade, cloud computing, mídias sociais e os dispositivos inteligentes da Internet das Coisas, muitas empresas estão desenhando e expondo REST APIs – desde jovens startups até grandes empresas. E temos que considerar que 2014 foi o ano em que o assunto “segurança” esteve nos holofotes - desde a Sony Pictures e a Jennifer Lawrence (que nada tem a ver com APIs) até casos como o da Tesla Motors, Snapchat e Bitly, em que vulnerabilidades nas APIs os levaram para os destaques dos portais de tecnologia e segurança da informação.
tam os dados de forma severa (como remoção em bulk etc.)? Dependendo da sua resposta a esses questionamentos, você poderá saber com mais precisão o risco de se negligenciar questões de segurança. Sugerimos que faça uma classificação de criticidade para embasar suas decisões de design.
Crítico Intermediário Básico
Mas como, então, sua empresa que já expõe ou pretende expor APIs pode se preparar para evitar que dados sigilosos de usuários possam cair em mãos erradas? É o que o restante deste texto aborda. Bom, mas partindo do pressuposto que sua Antes de qualquer coisa, é importante deAPI requer a adição de certo nível de seguterminar o nível de criticidade e o risco ao rança, agrupamos os 5 principais atributos, qual sua API está exposta. Por exemplo, se bem como as ameaças, vulnerabilidades e os aplicativos que consomem sua API forem dicas de como mitigar os principais riscos. apenas apps internos, ou seja, desenvolvidos por sua própria empresa, o nível de risco é bem mais baixo do que quando a API possui centenas de apps externos desenvolvidos por outras empresas ou pela Autenticação/ comunidade. Outros elementos que Autorização também devem ser considerados são: os dados que a API maniIntegridade Disponibilidade pula são relacionados ao usuário e são informações sensíveis? A API permite operações que afePrivacidade Auditoria
20 > API
Desenvolvidos por sua própria empresa, o nível de risco é bem mais baixo do que quando a API possui centenas de apps externos desenvolvidos por outras empresas ou pela comunidade 1. Autenticação e autorização Primeira e principal preocupação relacionada à exposição de APIs. Sempre! Você é realmente quem diz ser? Você tem acesso a esse recurso? Estas são perguntas fundamentais. Evitar ataques de força bruta e roubo de credenciais são ameaças relacionadas à autenticação e autorização de APIs. As alternativas de mitigação desses riscos vão desde uma simples autenticação Basic HTTP a padrões mais modernos e seguros, como OAuth2 e OpenID Connect. OAuth2 está se firmando como principal forma de autorizar acesso a determinado recurso, especialmente quando o acesso deve ser concedido pelo próprio usuário. Gigantes digitais como Facebook, Google, Twitter, LinkedIn o adotaram. Você já deve ter se deparado com uma tela de um dos serviços acima solicitando que você dê permissão para um determinado aplicativo. Pois é, trata-se de um OAuth2, onde o Facebook é o Authorization Server e o TripAdvisor é o Client Application. Nessa situação, eu, como dono dos dados (Resource Owner), estou concedendo acesso a um determinado escopo de informações para o Client Application que, a partir daquele momento, pode buscar informações em meu nome. Importante destacar que essa pode não ser a melhor alternativa para a sua API, mas certamente é um padrão que vale a pena ser estudado/considerado.
Vale destacar também que, independentemente de qual seja o mecanismo de autenticação/autorização que você escolheu, valem as máximas de nunca salvar tokens em plain-text, não enviar senhas por e-mail e tomar cuidado com forward/redirect de requisições em redes desconhecidas.
2. Privacidade Ataques como Man-in-the-middle e Network Eavesdropping podem revelar dados sensíveis dos seus usuários. Então, é importante atentar para algumas contramedidas que diminuam o risco de exposição desse tipo de informação. Destaca-se a importância do uso do SSL/ TLS e, em algumas situações, é até recomendável que você use um mecanismo adicional de criptografia. Além disso, arquivos de log são fontes preciosas de informações que não deveriam estar lá, então, sempre faça o mascaramento de informações sensíveis, como números de cartão de crédito, informações de saúde etc.
3. Disponibilidade As APIs estão acessíveis? O desempenho está satisfatório? Ataques distribuídos de negação de serviço (DDoS) estão entre os mais comuns. Então, como desenvolver as estruturas básicas para resistir bravamente? A recomendação básica é instrumentalizar a monitoração do tráfego nas APIs, preferencialmente com alertas capazes de identificar comportamento malicioso.
API < 21
Um recurso bastante útil em soluções de gerenciamento de APIs é a capacidade de limitar o uso dos apps por meio de controles de rate limiting (ou throttling).
4. Auditoria E se um dos seus clientes alegar que ele não fez aquele conjunto de invocações à sua API e, portanto, não irá pagar o valor correspondente? Esse fenômeno é chamado de repudiação. Como evitá-lo? Logs detalhados são a melhor alternativa. A capacidade de evidenciar o resumo das chamadas recebidas, bem como mostrar os detalhes dessas chamadas, é uma resposta bastante eficiente para a não-repudiação.
A principal recomendação aqui é a busca pela redução da superfície de ataque, ou seja, nunca exponha recursos e operações que não precisem ser expostos. Parece óbvio, mas muitas empresas aplicam técnicas de geração automática de APIs a partir dos serviços e dados do backend. Essas técnicas, além de gerarem APIs com design deselegante e de difícil entendimento, por vezes podem abrir brechas indesejáveis. Sim, realmente são muitos pontos a levar em consideração quando o assunto é segurança de APIs. Além de tudo isso, nunca é demais lembrar que o ser humano ainda é o elo mais fraco nessa corrente.
Importante destacar que essa pode não ser a melhor alternativa para a sua API, mas certamente é um padrão que vale a pena ser estudado/considerado Alguns cuidados especiais devem envolver o fato de que arquivos de logs podem crescer (e muito!), e que esses arquivos nem sempre são fáceis de inspecionar / buscar. Uma alternativa interessante é deixar essa tarefa para ferramentas de API management.
5. Integridade As APIs são como um canal de comunicação entre o mundo externo e seu backend. Permitir que recursos críticos sejam apagados requer sempre cautela. Alguns tipos de ataques como injeção de SQL, XML e JSON podem causar sérios danos.
Kleber Bacili é fundador e CEO da Sensedia, empresa especializada em tecnologia de serviços Web - SOA e APIs. É formado em Engenharia de Computação pela Unicamp, com MBA pela FGV e especialista em Empreendedorismo e Inovação pelo programa Endeavor, no Insper e na Stanford University. Professor associado do Instituto de Computação da Unicamp, sócio do fundo de capital semente IVP e também colunista no portal ComputerWorld. Entusiasta por tecnologia, geek convicto, palmeirense sofrido e pai apaixonado da Helena e do Hugo. kleber.bacili@sensedia.com | @kleberbacili
Integre o checkout transparente do MercadoPago E aumente as vendas dos seus clientes
Totalmente customizável
O consumidor paga sem sair do ambiente do site
Menos etapas no fluxo de pagamento
Visualização de todos os itens do carrinho durante a finalização de compra
Acesse:
developers.mercadopago.com
Pensando o desenvolvimento fora da caixa Por Jo達o Batista Neto, especial para Revista iMasters
24 > Capa
Tão logo começamos a trabalhar com determinada tecnologia, aprendemos seus objetivos, forças e fraquezas para, então, utilizá-la para resolver problemas. Com o passar do tempo, nos tornamos realmente fluentes naquela tecnologia e, consequentemente, eficientes ao utilizá-la em determinado caso de uso. Tão fluentes e eficientes, de fato, que acabamos vendo aquela tecnologia específica como a solução para aquele problema específico. Não que seja ruim ser fluente numa tecnologia e eficiente na resolução de determinado problema. Ruim é quando enxergamos na tecnologia somente o problema, ou vice-versa. Quando isso ocorre, criamos um engessamento criativo. Nos tornamos especialistas somente na resolução de determinado problema com determinada ferramenta; entramos numa espécie de caixa. Vamos fazer um rápido teste. Responda: qual o propósito da linguagem PHP? Se você disse que PHP é uma linguagem para web, bom, sinto lhe informar, mas você está em uma caixinha. Não é que você esteja errado, mas está apenas parcialmente correto. O PHP também é uma linguagem para web, mas não se resume a isso - é uma linguagem de propósito geral, que pode ser utilizada para resolver n tipos de problemas, inclusive para o desenvolvimento para web. Quando surgiu, o PHP vinha para resolver um problema: desenvolver páginas dinâmicas para web. Através de scripts que eram embutidos na marcação HTML, era possível adicionar tornar as páginas mais dinâmicas, permitindo que o conteúdo fosse gerado no momento do carregamento.
Se sempre seguimos pelo caminho comum, dificilmente erramos, mas também dificilmente criaremos algo novo O tempo passou, as necessidades mudaram e, com isso, o PHP evoluiu. Hoje, temos uma gama enorme de possibilidades. É possível criar ferramentas de processamento de grandes volumes de dados, aplicações desktop com PHP-GTK, adicionar heurística a essas ferramentas para que sejam independam da intervenção humana. Podemos, também, utilizar o php-cli para criar daemons e serviços em background, ferramentas de automação de tarefas comuns - como a criação de esqueletos de novos projetos - análise de qualidade código, gestão de dependências. As possibilidades são tão grandes, que desenvolver para web deixa de ser a única possibilidade com PHP e passa a ser só mais uma.
Sucesso fora da caixa Existem vários exemplos de uso do php-cli para a criação de ferramentas que utilizam web, mas que não são para web. O composer, por exemplo, é uma ferramenta para gestão de dependências em PHP que permite que o desenvolvedor declare quais bibliotecas precisa e as instale/atualize separadamente, sem que elas fiquem misturadas ao código: [neto@localhost project]$ composer install Loading composer repositories with package information Installing dependencies (including require-dev) - Installing symfony/console (dev-master abb1308) Cloning abb13086ec995421b82de3a814c3d67075a93768 - Installing symfony/event-dispatcher (v2.6.5) Downloading: 100%
Capa < 25
Outro caso interessante é o do sistema de controle de versão git. Antes de ser criado, os sistemas de controle de versão seguiam um mesmo padrão - eram praticamente variações uns dos outros. O kernel do Linux utilizava um sistema chamado BitKeeper, que, apesar de ser considerado bom, foi envolvido em alguns problemas e deixou de ser gratuito. Linus Torvalds, ao desenvolver o novo sistema de controle de versão, sabia exatamente o que não queria. Todos os requisitos para o desenvolvimento do novo sistema eliminavam qualquer proximidade funcional com todos os outros sistemas existentes na época. Na prática, Linus tinha um único requisito: pensar fora da caixa. Hoje, descentralizado e popularizado por ferramentas como Github, Bitbucket e outras, o sistema de controle de versão Git é um dos mais utilizados por desenvolvedores. [neto@localhost git]$ git log --reverse
commit e83c5163316f89bfbde7d9ab23ca2e25604af290 Author: Linus Torvalds <torvalds@ppc970.osdl.org> Date: Thu Apr 7 15:13:13 2005 -0700
Initial revision of “git”, the information manager from hell
commit 8bc9a0c769ac1df7820f2dbf8f7b7d64835e3c68 Author: Linus Torvalds <torvalds@ppc970.osdl.org> Date: Thu Apr 7 15:16:10 2005 -0700
Add copyright notices.
Mais um caso de pensamento fora da caixa ocorreu com JavaScript, que por muito tempo foi uma tecnologia utilizada no client side - navegador do usuário - para adicionar comportamentos à uma página. Porém, seu formato assíncrono, com uma boa orientação a eventos, se mostraram excelentes recursos para desenvolvimento em geral, inclusive no server-side. Com a engine v8 e a criação do Node.js, toda uma nova gama de possibilidades foram criadas - aplicações não bloqueantes, serviços de streaming de dados, análise em tempo real de grandes volumes de dados etc.
Erros devem ser utilizados como aprendizado para que, na próxima tentativa, possam ser corrigidos
26 > Capa
Ainda, podemos utilizar JavaScript para a criação de aplicações e ferramentas para desktop – no Gnome Shell –, serviços web com Node.js, entre vários outros casos. O próprio Node.js tem sido utilizado como infraestrutura para editores, como o Brackets, e tem se mostrado um excelente recurso para esses editores.
Falhas acontecem, e podem ser boas Tendemos a ser conservadores no desenvolvimento de software, seguindo princípios que foram definidos, muitos deles, quando a web ainda era recém -nascida e não tínhamos coisas se conectando com outras. Temos essa tendência porque lidamos com problemas delicados e que, às vezes, podem causar prejuízos enormes, incluindo, até mesmo, a queda de um avião. Se tem algo que pode ser assustador na área de desenvolvimento de software, é a ideia de errar. Principalmente se as consequências desses erros forem tão graves. Mas errar não é ruim. Pelo contrário, é bom. Se sempre seguimos pelo caminho comum, dificilmente erramos, mas também dificil-
mente criaremos algo novo. Sem contar, claro, que aprendemos muito mais com os erros do que seguindo os caminhos padrões já pré-estabelecidos. O projeto Alky, por exemplo, é um caso de insucesso ao pensar fora da caixa. Muitos que convivem com o ambiente Linux às vezes precisam, por algum motivo, utilizar uma aplicação que simplesmente não existe para Linux, ou que as opções disponíveis para Linux são insuficientes para o propósito da pessoa. Para tentar contornar esse problema, é possível utilizar ferramentas como Wine, que permite simular o ambiente Windows no Linux e, com alguma configuração, executar determinados softwares no Linux. A ideia do Alky era ir além. Eles queriam converter os executáveis Windows para que funcionassem nativamente no Linux. O projeto foi abandonado no mesmo ano em que foi lançado, assim como o canal no IRC, e o domínio do projeto está à venda por uma dessas empresas que vendem domínios. E existem vários casos de projetos para Linux, inclusive distribuições malucas, que simplesmente não deram certo. Mas dar errado não pode ser motivo para não tentar novamente. Talvez uma falha de projeto, de planejamento ou até mesmo de definição de
Capa < 27
público comprometam o sucesso da ideia. Mas esses erros devem ser utilizados como aprendizado para que, na próxima tentativa, possam ser corrigidos.
Quebrando paradigmas Para conseguir pensar fora da caixa, é necessário, primeiro, desconstruir a imagem formada sobre determinada tecnologia, derrubando todas as paredes que o impeçam de ver o que está do lado de fora. Já ouviu alguém dizer que quem está dentro da garrafa não consegue ler o rótulo? Isso se torna especialmente complicado para linguagens, porque, na grande maioria das vezes, o estudo delas começa a partir de ideias que já estão dentro de uma caixa. Quanto mais vemos sobre essas ideias, mais acoplados a elas ficamos.
Se tem algo que pode ser assustador na área de desenvolvimento de software, é a ideia de errar. Principalmente se as consequências desses erros forem tão graves Quebrar paradigmas significa abrir mão dos conceitos já estabelecidos para, então, ser original. É tornar-se lúcido para tomar decisões. É escolher o caminho que se quer percorrer, em vez de simplesmente seguir o mesmo caminho que alguém começou há duas décadas. Se decidirmos ir por determinado caminho, que seja uma decisão consciente, e não porque todos estão neste mesmo caminho. Algumas vezes, um bom caminho é aquele que foi seguido por Linus Torvalds: definir requisitos que eliminam todas as possibilidades existentes e, a partir daí, criar algo totalmente novo.
Como pensar fora da caixa Existem várias listas sobre como pensar fora da caixa. A minha é bem simples: 1. Não acredite em listas que mostram como pensar fora da caixa. Nem nesta. Seguir listas de como pensar fora da caixa irá, talvez, tirá-lo da sua caixa, mas muito provavelmente irá colocá-lo dentro da caixa do autor da lista. E a ideia é que você não esteja em caixa alguma. Não é fácil pensar fora da caixa, e não existe uma fórmula mágica que vai ajudá-lo com isso. É um exercício mental que devemos fazer a todo instante e começa com um questionamento: por que estou fazendo isso dessa forma? Compreender o porquê de aquilo estar sendo feito daquela forma funciona para mim pois me obriga a analisar minhas motivações e decisões. Essa análise me torna um pouco mais lúcido sobre o que estou fazendo. E se eu errar, bom, pelo menos terei aprendido muito mais sobre o problema do que apenas estar seguindo pelo caminho de sempre.
João Batista Neto é Engenheiro de Aplicações e trabalha com ambiente web desde 2000 em diversas linguagens, como Java e PHP, dedicando esforços ao desenvolvimento de bibliotecas reutilizáveis para a comunidade. Especialista em integração de sistemas, possui várias bibliotecas reutilizáveis publicadas como open-source para a comunidade, como biblioteca Cielo, PayPal, ECT (Correios), BuscaPé, Lomadee, Twitter, Facebook entre várias outras. É administrador do Fórum iMasters e iMasters Code, onde compartilha conhecimento com a comunidade de desenvolvedores. Também é autor de artigos no Portal iMasters e de cursos no iMasters PRO. @netojoaobatista
Tecnologia do Futuro < 29
E a bola da vez é… 4k! Por Flávia Jobstraibizer, Analista de Sistemas, Editora-chefe das Revistas Linux Magazine e Admin Magazine
Muito tem se falado da popular resolução de vídeos 4K, que existe em televisores digitais e em cinema digital. O termo refere-se à densidade total de pixels na tela, ou seja, 8.3 megapixels, 3840 × 2160 pixels, quatro vezes mais que o padrão Full HD, que é de 2.1 megapixels. A resolução 4k é apontada como a resolução limite para um televisor doméstico, uma vez que seriam necessários equipamentos cada vez maiores para exibir resoluções além dessa faixa. Segundo o oftalmologista da Unifesp, Paulo Schor, a resolução 4k pode ter superado o limite para o olho humano. A relação entre o olho humano e as telas de alta resolução é muito pequena. Mas, ainda
assim, alguns parâmetros podem medir mais ou menos quanto o olho humano enxerga: o primeiro é a capacidade de detecção de dois pontos, o chamado mínimo ângulo de resolução visual, e o segundo é a luminosidade mínima captada pelo olho humano. Além disso, é preciso levar em conta o campo visual que nós temos. Considerando uma série de variáveis de cálculo e nosso ângulo de visão de 120 graus, chegou-se ao valor de 576 megapixels – esta seria a resolução máxima que poderíamos enxergar. Mas como telas são diferentes do olho humano, é inegável que em breve vamos realmente atingir o limite aproveitável de uma tecnologia como essa, pelo menos para uso em nossas casas. O
Confira na imagem abaixo a diferença em resolução das tecnologias de vídeo existentes versus a tecnologia 4k:
30 > Tecnologia do Futuro
importante mesmo nessa história, na qual as resoluções de vídeo são cada vez maiores, é o armazenamento e a transmissão de dados necessária para atender a essa tecnologia. Outdoors e monitores 4k de última geração são amplamente utilizados em partidas de jogos, shoppings e centros de compras, onde as telas são maiores e o público está mais distante da tela. É questionável o uso de tecnologias 4k para smartphones, tablets e relógios inteligentes.
A resolução 4k é apontada como a resolução limite para um televisor doméstico, uma vez que seriam necessários equipamentos cada vez maiores para exibir resoluções além dessa faixa Há algum tempo, Dave Evans, chefe do grupo de soluções de Internet da Cisco, previu que a capacidade de armazenamento de cinco exabytes, criada em 2008, - o equivalente a um bilhão de DVDs - se tornaria rapidamente obsoleta devido ao alto tráfego de dados em vídeo. Como o montante de informação criado atualmente gira em torno da casa de 1,2 zettabytes (10²¹ exabytes) e muita da informação criada neste momento já é multimídia, a previsão de Dave é que em breve 90% do tráfego na web sejam vídeo (o que pode ser questionável…). Assim, a era do zettaflood demandará muito das redes. É claro que lá fora já são comercializados equipamentos munidos da tecnologia 4k, como ultrabooks, TVs inteligentes, tablets e monitores, há bastante tempo. Na feira CES
de 2012, grandes marcas já traziam esses dispositivos, e a comoção pela novidade foi enorme. A Copa do Mundo foi a mola propulsora da tecnologia 4k no Brasil. Era uma época em que o dólar estava relativamente acessível, o que facilitou a importação e as aquisições das novíssimas TVs OLED com tecnologia 4k e também nos moveu alguns passos adiante no que tange à transmissão de videos 4k através da grande rede. Provedores de conteúdo como a Netflix já estão adaptados (em grande parte) para exibir vídeos em 4K (o público internacional já se beneficia disso diretamente), tanto no que se refere ao alto tráfego de seus servidores quanto no formato da resolução para exibição de seus filmes. Os recursos necessários para a exibição de vídeos 4k em streaming e a grande capacidade de armazenamento desse conteúdo que possui GBs de tamanho são desafios constantes. Melhorias na velocidade de acesso ao conteúdo armazenado com melhor indexação são uma das principais necessidades.
O importante mesmo nessa história, na qual as resoluções de vídeo são cada vez maiores, é o armazenamento e a transmissão de dados necessária para atender a essa tecnologia O espaço de armazenamento deixou de ser um grande problema, uma vez que se tornou produto de baixo custo. Já o link, que garantiria a alta velocidade necessária para acesso ao conteúdo, ainda é um problema. A velocidade de conexão
Tecnologia do Futuro < 31
brasileira está muitíssimo abaixo do esperado em termos de evolução. Enquanto muitos experimentam conexões em gigabit em suas casas fora do Brasil, ainda apanhamos de conexões na casa dos MB e que não são entregues em sua totalidade (contratualmente, e com a conivência dos órgãos reguladores, para completar). É importante ressaltar que já está em pleno uso a tecnologia de vídeo 8K (o dobro da resolução 4k, obviamente). As câmeras para
a tecnologia 4K foram lançadas em 2013 e, muito em breve, é possível que a tecnologia 8k apareça por aqui (para usuários finais, é bom lembrar que sérios problemas com os preços dos equipamentos serão experimentados), mesmo que seja questionado o uso real dessa tecnologia por usuários domésticos, já que o olho humano não consegue distinguir diferenças entre tantas cores, fato que já foi levantado quando do surgimento da tecnologia 4k.
Confira na imagem abaixo a diferença em resolução das tecnologias de vídeo existentes versus a tecnologia 8k:
Para onde vamos em termos de evolução das tecnologias de vídeo? A aposta de empresas de streaming de conteúdo é alta. Vamos acompanhar!
Flávia Jobstraibizer é editora-chefe das Revistas Linux Magazine e Admin Magazine, analista de sistemas, autora de livros de informática e defensora da liberdade digital. Mãe de dois meninos lindos, solteira convicta e workaholic assumida, mantém vários projetos em paralelo nas áreas de TI e terceiro setor. Toca violoncelo, odeia cigarro e adora estudar, aprender, conversar com gente inteligente e tomar Piña Colada de vez em quando. http://flaviajobs.com.br | @flaviajobs
#WordPressSeguro O WordPress é Seguro. Inseguro é você.
BAIXE GRATUITAMENTE NOSSO
GUIA PRÁTICO DE IMPLEMENTAÇÕES PARA
SEGURANÇA EM WORDPRESS apiki.com/wordpress-seguro
Tendências < 33
Blockchain e apps distribuídas em uma Internet pós-cloud Por Fabrício Matos, BSc., desenvolvedor, empreendedor e especialista em tecnologia Blockchain
Blockchain é a tecnologia que permite a criação de aplicações baseadas em cryptoledgers distribuídas e que promete revolucionar a Internet. O potencial disruptivo é tão grande que, para se ter uma ideia, em 2014 foram investidos US$ 315 milhões (cerca de R$ 1 bilhão) em seed money para startups recém-fundadas que trabalham especificamente com essa tecnologia. Você pode estar se perguntando: “por que investir tanto em aplicações baseadas em cryptoledgers distribuídas?” ou ainda “afinal, o que cryptoledger distribuída significa?”. Se você se perguntou isso, pode ficar tranquilo, porque a grande maioria das pessoas de TI ainda não sabe exatamente do que se trata. O fato é que tem algo importante acontecendo no mundo da tecnologia, e não podemos ficar alheios.
Um novo protocolo para uma nova Internet Blockchain é a tecnologia por trás da moeda digital Bitcoin. E é aqui que muita gente
perde o bonde. Enquanto a mídia em geral crítica e alerta sobre os riscos dos investimentos em Bitcoin, dada a sua volatilidade, falham em perceber a inovação importante que ele introduz, ao resolver um importante problema da computação que até poucos anos atrás não tinha solução, abrindo um leque enorme de aplicações que permitem resolver de forma mais eficiente, segura e econômica problemas importantes que afetam a todos. E, nesse contexto, a discussão sobre o Bitcoin ser ou não um bom investimento torna-se irrelevante.
O fato é que tem algo importante acontecendo no mundo da tecnologia, e não podemos ficar alheios Temos muitos motivos para acreditar que o Bitcoin e as moedas digitais em geral vieram para ficar, e que serão cada vez mais adotadas, o que é reforçado pelo fato de grandes nomes como Microsoft, DELL,
34 > Tendências
O potencial disruptivo é tão grande que, para se ter uma ideia, em 2014 foram investidos US$ 315 milhões (cerca de R$ 1 bilhão) em seed money para startups recém-fundadas Paypal, entre outros, estarem incluindo Bitcoin em seus negócios. Mas não é objetivo deste artigo discutir as características econômicas específicas da moeda Bitcoin. Nosso foco é mostrar como essa tecnologia ajuda a viabilizar uma série avanços tecnológicos, como Internet of Things, decentralized cloud, smart properties, decentralized apps (dApps), decentralized autonomous organizations (DAOs) e outros.
Afinal, o que é Blockchain? Muitos acham que Bitcoin é um dinheiro eletrônico semelhante aos pontos de um programa de milhagem. Definitivamente, não. Ele é totalmente diferente. A Blockchain é como um livro-razão, um registro de transações chamado de cryptoledger, mas mantido de forma distribuída através de uma rede peer-to-peer, e protegida por uma parafernália criptográfica que, ao final, permite que transações sejam realizadas diretamente entre um peer A e um peer B, sem qualquer necessidade de um confiar no outro ou de haver um intermediário de confiança. Há tempos já manipulamos dinheiro eletronicamente. Contudo, nós não somos portadores do nosso próprio dinheiro eletrônico. Em geral, ele está “guardado” (registrado) em alguma instituição bancária de forma
centralizada, e dependemos deles para quaisquer transações. E o motivo é simples. Imagine que você tivesse um arquivo especial no seu computador que representasse R$ 50,00 em dinheiro digital. Como você faria para transferir esse valor para outra pessoa sem uma entidade central? Como garantir que você não irá duplicar o arquivo ou enviá-lo para várias pessoas diferentes? Como a pessoa que estiver recebendo o arquivo irá verificar se esse arquivo é o “verdadeiro”, e assim impedir um gasto duplo? A Blockchain é exatamente a solução distribuída para o gasto duplo. Descoberta em 2008, ela se baseia num mecanismo por meio do qual a rede sempre chega a um consenso sobre qual transação é a válida, tornando possível essa forma de dinheiro virtual transacionado ponto-a-ponto. É importante entender também que Bitcoin é uma moeda programável. Se alguém transferir 1 Bitcoin para você, na verdade o que será feito é o registro de uma nova transação na Blockchain contendo um “contrato” que determina em quais condições esse Bitcoin pode ser transferido. E esse “contrato”, na verdade, é um pequeno programa (script). Para conseguir transferir esse Bitcoin, você precisa ser capaz de fornecer um input que permita o programa ser executado e retornar TRUE. Por exemplo, você poderia ter de provar que é o dono de
Tendências < 35
uma chave privada associada a uma chave pública hardcoded no script desse Bitcoin. Por ser programável, diversos tipos de transações podem ser criadas, e vários tipos de contratos inteligentes podem ser construídos, cujas cláusulas imutáveis são checadas e autogarantidas pela Blockchain, de forma segura e escalável, eliminando a necessidade de alguém externo que faça valer o contrato. Quem rege a Blockchain é a matemática. E não se discute com a matemática.
Muitos acham que Bitcoin é um dinheiro eletrônico semelhante aos pontos de um programa de milhagem. Definitivamente, não. Ele é totalmente diferente
uma moeda digital própria (semelhante ao Bitcoin). Nenhum usuário precisa saber ou entender isso. Através de contratos inteligentes, os peers que provarem que estão mantendo partes do conteúdo do usuário disponíveis serão recompensados. Se comparado ao Dropbox, o custo estimado do Storj.io será mais 10 vezes menor.
Conclusão Ficamos devendo uma explicação mais detalhada sobre como a Blockchain faz sua mágica. Mas nossa intenção neste artigo foi trazer um olhar para além do Bitcoin “investimento arriscado”, indo na direção dos desdobramentos da tecnologia Blockchain do Bitcoin e de suas aplicações.
Exemplo de aplicação: Startup Storj.io A oportunidade de descentralizar, eliminando intermediários e aumentando a eficiência oportuniza muitas inovações. Vejamos o caso da startup Storj.io - http://storj.io. Storj.io é um tipo de Dropbox distribuído na Blockchain. Uma mistura de Dropbox, Torrent e Bitcoin. Imagine um Dropbox sem servidor para armazenar o conteúdo das pessoas. Em vez de utilizar a infraestrutura própria (ou cloud), seus arquivos serão criptografados com sua chave privada e espalhados por uma rede P2P rodando sobre a Blockchain. Além disso, os usuários serão remunerados por manterem conteúdo dos outros em seus computadores. O cliente Storj.io irá pagar um assinatura, que será internamente convertida para
Fabrício Vargas Matos é um empreendedor em série, com sólida experiência em computação, que tem nos últimos anos se especializado em tecnologia Blockchain. Com Bacharelado em Ciência da Computação e Mestrado em Métodos Formais/Computação Distribuída pela UFES, busca combinar o background acadêmico com mais de 10 anos de experiência empreendedora visando a criação de novos negócios e startups. É Sócio e CEO da Qualidata – empresa de produtos de software – na qual lidera a equipe de inovação aberta que já gerou 3 spin-offs nos últimos anos. fabricio@qualidata.com.br | @iFabricioMatos
Garanta uma formação tão ampla quanto o futuro que você merece. Há mais de 25 anos, a Impacta atua na formação de profissionais de destaque no mercado, sendo a maior referência em TI, Gestão e Design da América Latina. Com mais de 300 treinamentos e 40 certificações, a amplitude da formação Impacta se traduz em 7 escolas distintas, que visam contribuir com a geração de profissionais qualificados em todas as áreas do mercado, e uma metodologia de ensino comprovada, presente em todo o Brasil.
Conheça mais sobre a Impacta, sua tradição e diferenciais exclusivos. Invista hoje mesmo em um ensino forte para um futuro de sucesso!
informações: consultores@impacta.com.br
11 3254 2200
www.impacta.com.br blogimpacta.com.br
/grupoimpacta
@grupoimpacta
Mobile Payment < 37
Hora de ser disruptivo no desenvolvimento de soluções de pagamento Por João Freitas, desenvolvimento de soluções de pagamento 2015 é, definitivamente, o ano do pagamento móvel. Uma pesquisa da KPMG indicou que 83% dos executivos do varejo de serviços financeiros, tecnologia e telecomunicações acreditam que, até o final de dezembro, os pagamentos móveis vão ter uma adoção generalizada pelos consumidores. Uma outra pesquisa internacional indicou que uma em cada quatro transações é paga com dispositivo mobile. No entanto, para que esse número seja alcançado, é necessário que o varejo físico e o virtual sejam cada vez mais inovadores na hora de oferecer ferramentas ao cliente. É hora de ser disruptivo no desenvolvimento de soluções de pagamento. Ao ver números como os passados pela pesquisa, é difícil imaginar que existam muitos estabelecimentos que não possuem nenhum tipo de sistema de controle, seja na frente de caixa, para aceitar cartões, ou no ERP. Mas esse público – carente de tecnologia pelo seu custo elevado, ou por puro desconhecimento – deve ser visto como uma grande oportunidade pelo desenvolvedor.
Imagine um programa instalado em um tablet, em que o dono de uma pizzaria de bairro pode controlar estoque, registrar pedidos, administrar o controle de caixa e, ainda, aceitar cartão de crédito, a fim de aprimorar a experiência de compra do cliente e simplificar toda a gestão da loja. Imaginou? Os desenvolvedores precisam começar a pensar em plataformas já conectadas a sistemas de pagamentos, principalmente em se tratando dos adquirentes de cartão de crédito. Somente dessa forma a experiência de pagamento se tornará um diferencial para a fidelização do cliente.
APIs e SDKs Fazendo a integração Para transacionar informações de cartão de crédito, são necessários vários itens de segurança e certificações, como o PCI DSS 2.0, entre outros. No entanto, não deixe que isso atrapalhe o desenvolvimento criativo do aplicativo. É
38 > Mobile Payment
É preciso pensar em plataformas já conectadas a sistemas de pagamentos, principalmente em se tratando dos adquirentes de cartão de crédito, para que a experiência de pagamento seja um diferencial para a fidelização do cliente
possível encontrar APIs, SDKs e documentações com tudo o que é preciso para incluir uma funcionalidade de pagamento nas mais diversas soluções. Essas possibilidades com infraestrutura de captura e transações de pagamento das principais bandeiras do mercado já são oferecidas por alguns adquirentes no País.
Como funcionaria? O usuário terá uma transação de interface que o levará da sua aplicação para a aplicação do adquirente. Quem se comunica com o PinPad é o aplicativo do adquirente, previamente conectado dentro dele. Na maioria dos casos, o aplicativo já é encarregado de avisar quando há ou não uma conexão com algum PinPad. Se o usuário não estiver conectado com nenhum dispositivo, o aplicativo exibirá um botão para buscar e conectar com algum dispositivo. Conectado o dispositivo e realizada a primeira transação, cabe ao adquirente, via integração, responder a transação, aprovada ou negada, e retornar para o aplicativo que o chamou, enviando algumas informações que foram recebidas do autorizador. A ideia da integração é fornecer a experiência de integração simples e rápida a qualquer desenvolvedor, e levar a solução de
pagamentos com cartões de crédito e débito para todos os lojistas. A integração é feita a partir de um .jar que é adicionado ao projeto do lojista - um método simples fica responsável por passar os parâmetros para o aplicativo do adquirente, que fará todo o resto, conexão, validações e o processamento da transação. Em resumo, se tornar disruptivo na hora de desenvolver soluções que auxiliem o comércio a se automatizar, com gestão e, ainda por cima, tornar o pagamento algo agradável ao cliente, é um novo mercado de oportunidades.
João Freitas é desenvolvedor mobile da Stone, novo adquirente com soluções inovadores para um mercado de cartão de crédito em mudança. A Stone traz ao mercado o Dev Center Stone, que possibilita ao desenvolvedores utilizarem a tecnologia de adquirência da marca em suas aplicações. https://github.com/jgabrielfreitas jfreitas@stone.com.br
Conte com os especialistas do Sebrae para ter toda a orientação para a sua loja virtual.
: EBIT
nte o Fo
jeçã *Pro
No Brasil e no mundo, o comércio eletrônico cresce a cada ano e pode ser um ótimo canal para pequenos negócios que desejam aumentar o faturamento e conquistar mais público com presença digital. Conheça as soluções e serviços do Sebrae para quem quer montar ou expandir seu negócio on-line em sebrae.com.br/comercioeletronico. /sebrae
@sebrae
40 > Por aí
Fazendo a internet do Brasil pelo mundo Que os brasileiros têm feito muita coisa, a gente sabe. Mas quem está fazendo o quê e onde, nem sempre fica bem claro. A ideia aqui é que você apareça, com a sua equipe, sua turma, seus amigos, mostrando um trabalho, a participação num hackaton, palestra etc. Tudo o que signifique “fazer a internet do Brasil” para você, cabe aqui! Quer participar? Envie uma foto e descrição para redacao@imasters.com.br
Crédito: Kadu Potinatti/Videoclick
PHP Experience 2015
Aconteceu em 25 de abril, em São Paulo, o PHP Experience 2015, um dos maiores eventos técnicos de PHP da América Latina. Em sua segunda edição (antigo InterCon PHP), o congresso, realizado em parceria com o grupo PHP-SP, reuniu cerca de mil programadores para palestras nacionais e internacionais, áreas de comunidade e diversas ações de networking. Paul Jones, Cal Evans, Diana Arnos e Erika Heidi foram alguns dos especialistas que palestraram no evento. As palestras foram gravadas e estarão disponíveis em http://youtube.com/imasters. Você pode ver a cobertura especial aqui http://ow.ly/MbVqw - e se prepare, ainda este ano acontece o DevCommerce (13/06 - http://devcommerce.imasters.com.br - inscrições abertas!) , o Android DevCon (29/08) e o InterCon (24/10)!
Usuários de Recife promovem encontro sobre linguagem Python
Cerca de 20 pessoas participaram da 37ª edição do Encontro de Usuários de Python de Pernambuco, realizada em março, no espaço do CESAR.EDU, em Recife. O evento reuniu profissionais, entusiastas e acadêmicos para discussões sobre a plataforma Python e suas aplicações em diversos nichos como web, sistemas embarcados, computação científica. O encontro contou com o apoio do CESAR, Centro de Inovação de Recife, que é um dos pioneiros do Porto Digital. Saiba mais em www.cesar.org.br
Por aí < 41
Modificação de aplicações na plataforma Android Há alguns meses Mauro Pichiliani, Colunista do iMasters, está desenvolvendo um experimento sobre modificação de aplicações na plataforma Android. No trabalho, ele explora o potencial de técnicas para alterar aplicações existentes na plataforma Android, de forma que a aplicação suporte algumas funcionalidades colaborativas, empregando técnicas da engenharia de software experimental para auxiliar o entendimento de como programadores se comportam durante a tarefa de modificações de aplicações. Os participantes são monitorados através da gravação da tela do computador, logs do sistema e face por meio de uma webcam. Este experimento é pioneiro no Brasil por se concentrar em desenvolvimento Android e por coletar
dados biométricos com Batimentos Cardíacos por Minuto junto com ondas metais captadas diretamente do cérebro do participante através de um BCI (Brain Controlled Interface). Além de contribuir para a engenharia de software experimental brasileira, o experimento possui o potencial de alterar detalhes do sistema operacional Android para que ele permita novos níveis de colaboração entre aplicações existentes. Os resultados serão apresentados junto com a tese de doutorado de Mauro Pichiliani, que tem previsão de conclusão para o 2º semestre deste ano. Interessados em participar podem entrar em contato com ele pelo email pichiliani@gmail.com
Como criar startups de tecnologia no Brasil? Idealizado por Nei Grando, “Empreendedorismo Inovador” reúne 25 grandes nomes especializados em empreendedorismo, tecnologia e startups. O livro é dividido em capítulos que podem ser lidos de maneira independente e que abordam o contexto do empreendedorismo no Brasil, o mercado para empresas de tecnologia e carreira e sociedade, além de trazer orientações sobre gestão e modelagem de negócios, networking e criatividade. Entre os autores estão Edson Mackeenzy, Gestor de Novos Negócios do Grupo iMasters, e Cezar Taurion, Colunista do Portal iMasters. O livro foi publicado pela Editora Évora e está disponível para compra no site da editora.
Semana da Mulher na Tecnologia Em março, aconteceu a 1ª Semana da Mulher na Tecnologia, uma celebração à igualdade e à inclusão social por meio da tecnologia. Durante toda a semana seguinte ao Dia Internacional da Mulher, foi promovida uma série de eventos práticos e discussões com foco nas mulheres na área de tecnologia, com o objetivo de inseri-las, fortalecê-las e oferecer a elas suporte nesse mercado, historicamente masculino. A Semana homenageou Alda Lovelace, primeira programadora conhecida. Foram cinco dias de atividades que reuniram desde meninas do ensino fundamental até senhoras da terceira idade. Em uma das ações, a influenciadora digital Camila Achutti liderou avós, mães, filhas e netas para aprenderem a programar juntas, em um hackaton no qual elas desenvolveram ideias de apps que ajudassem nos problemas de relacionamento entre as gerações. http://semanadamulhernatecnologia.com.br
Perfil< Por aí < 43
Quem faz a Internet no Brasil? Nesta edição, começamos uma parte muito especial dentro da coluna “Por aí” - vamos mostrar quem são as pessoas que participam do Fórum iMasters e ajudam a fazer a Internet no Brasil.
Guilherme Oderdenge é desenvolvedor web focado em front-end. Ele participa do Fórum iMasters há oito anos.
Eu “pisei” no fórum do iMasters pela primeira vez em 2007, aos 12 anos. Àquela época, nos meus primeiros passos sobre desenvolvimento de software, eu andava de mãos dadas com PHP e MySQL, por serem as tecnologias com a maior abundância de material em português da Internet. Na verdade, talvez “Internet” signifique iMasters, uma vez que a maior parte do meu conhecimento saiu de lá. Eram bons tempos — eu era um completo iniciante com um desejo enorme de progredir, de construir coisas incríveis e de algum dia ser aquele que ajuda. Nos primeiros meses acompanhando a comunidade de PHP do Fórum, eu ficava com um pouco de medo de me manifestar — a minha falta de conhecimento dava ênfase à qualidade das perguntas dos meus quase-colegas da “casa”. Finalmente, depois de alguns meses sendo um anônimo sanguessuga, decidi ir além e efetuar o meu cadastro. Voi là! A partir daí, por mais sensacionalista que isso possa soar, a minha vida mudou. Aprendi muito. Inclusive muito além do código. Aprendi que não existe uma linguagem melhor que a outra, mas que elas são diferentes e em muitos casos são complementares; aprendi que existem padrões e frameworks; aprendi que existem boas práticas e convenções; e, principalmente, aprendi a aprender. Hoje, depois de quase oito anos do início da minha jornada, tento devolver para a comunidade o que ganhei por tanto tempo: conhecimento. Mas não foi só a didática, a parte técnica e até mesmo o português que eu pude aprimorar ao participar da comunidade. Recebi numerosas — e boas — propostas devido aos meus artigos e à minha participação na comunidade. Em 2007, eu tinha 12 anos. Hoje, 19. Pode parecer engraçado isso tudo vindo de alguém tão jovem, mas foram os exemplos de profissionais que eu tive tão cedo que me fizeram almejar, acima de tudo, a carreira que eu tenho hoje — que, apesar de também ser jovem, é incrível. oderdenge.com | github.com/chiefGui | twitter.com/chiefgui | www.imasters.com.br/perfil/guilhermeoderdenge
11:29
SAIBA MAIS gerencianet.com.br/desenvolvedores
Comunidade < 45
Labhacker - a invasão hacker continua Por Lucílio Correia, hacker do Labhacker O numero 506 da Alfredo Maia abriga um espaço difícil de descrever, e é possível que quase todo transeunte que já tenha se aventurado a entrar lá e perguntar o que é aquele lugar tenha saído menos informado do que entrou. Não somos uma lan house, mas temos uma. Temos também uma biblioteca. Nos dois casos, é difícil explicar que, sim, é de graça. Somos também um ambiente de trabalho colaborativo, um ponto de cultura e muitas outras coisas que às vezes nos perguntam se somos. Tem gente que vem aqui pedir ajuda pra imprimir um currículo, pra arrumar o computador, tem gente que entra só pra saber se temos determinado livro sem imaginar que os livros ali expostos não são para venda, mas para empréstimo. E outros que entram pra nos oferecer os seus. Fizemos uma parceria com o Pedala Sampa e volta e meia aparece alguém querendo alguma coisa relacionada a bicicletas. Às vezes encontra... O LabHacker abriu as portas discretamente em 2014 e só aos poucos foi tomando fôlego e agregando a equipe que hoje toca o térreo do prédio da Armênia, facilmente identificável, desde novembro, pela fachada grafitada com uma menina de bicicleta. No espaço acontecem oficinas, hackdays, debates, exibições de filmes, jogatinas, apresentações
Oficina de little bits
ou o que mais alguém achar interessante e tiver paciência para fazer. O ponto comum é a ética hacker. O que não é um ponto tão comum assim, convenhamos.
Tanto faz se você curte programação, hardware, jogos de tabuleiro, literatura, cinema, gastronomia, moda ou ciências sociais. Tem um jeito hacker de fazer isso A ética hacker é uma metadefinição. O hacker age no mesmo espaço de disputas em que se encontra, corriqueiramente, o próprio termo “hacker”. A nossa dificuldade em aceitar a pluralidade das coisas e querer defini-las impedem que o hacker, no imaginário popular, seja ao mesmo tempo o perigoso invasor de computadores e o habilidoso resolvedor de problemas. Quando definimos, o limitamos, e ser hacker é contornar as limitações (às vezes só pra descobrir se consegue). Alguém disse certa vez, muito acertadamente, que o processo de aprendizado do Ônibus Hacker se baseava em “erro, erro, erro, falta de noção, erro” (posso estar deturpando um pouco as palavras, mas, afinal, todas as histórias são verdadeiras).
46 > Comunidade
Oficina Hacker na Kantuta
Como versão menos móvel do ônibus hacker, o LabHacker, sem saber (a maior parte de nós fez o caminho inverso e chegou ao ônibus por meio do Lab), adotou a mesma premissa do seu “irmão mais velho”.
A ética hacker é uma metadefinição. O hacker age no mesmo espaço de disputas em que se encontra, corriqueiramente, o próprio termo “hacker” Entender e estender a ética hacker para além da computação foi uma das grandes coisas que aconteceram comigo no Ônibus Hacker: fui (ou sou?) costureiro, pedreiro, professor, jornalista, catador, ativista, DJ, cozinheiro... conheci muito hacker que nunca escreveu uma única linha de código. Enxerguei hackers na família e em diversos círculos de amizade ou de interesses afins. Achei (e provavelmente só porque eu procurava) espaço pra respeitar e valorizar mais pessoas e saberes diferentes dos meus, e gosto de pensar que cresci
Oficina de pipas
com isso. Recentemente, de repente, nos encontrávamos na primeira ação Ônibus + LabHacker, uma invasão na Praça Kantuta, uma praça com Wi-Fi a poucos quilômetros do LabHacker. Tal qual a rua onde estamos instalados, a Kantuta é um tipo de bolsão de baixa renda, menos distante do que as periferias de São Paulo, mas igualmente invisível. Tentamos fazer uma cisterna, “contação” de história, oficina de pipas, tentamos transmitir tudo via streaming pela Internet, lidar gentilmente com “a imprensa”, tentamos fazer uma sessão de cinema ao ar livre. Conseguimos fazer muitas coisas: algumas até do jeito que foi planejado, e outras acidentais.
Achei (e provavelmente só porque eu procurava) espaço pra respeitar e valorizar mais pessoas e saberes diferentes dos meus, e gosto de pensar que cresci com isso De volta à base, o desafio de lidar com crianças entusiasmadas com um ambiente aberto com computadores, jogos e um tipo de liberdade a qual eles - mesmo os que passam boa parte do dia na rua - não estão acostumados. Nem nós. Somos um ponto de cultura, somos abertos ao público, subestimamos o esforço que esse “estar aberto” significava para o nosso cotidiano. Erro, erro...
Comunidade < 47
CineHacker na Kantuta
cimento e da autonomia possível em cada atividade, incluindo aí as mais corriqueiras. Tanto faz se você curte programação, hardware, jogos de tabuleiro, literatura, cinema, gastronomia, moda ou ciências sociais. Tem um jeito hacker de fazer isso. Ao contrário do que pode parecer, esse processo de produção de conhecimento não é
Somos todos hackers aqui e, em alguma medida, ser hacker significa errar até aquele erro não ser mais um erro. Para isso, claro, é preciso errar coisas diferentes. Se essa definição não ficou clara, talvez valha a pena fazer a definição inversa. Não ser hacker significa delegar a uma outra pessoa – potencialmente alguém desconhecido – a tarefa (árdua) de percorrer o caminho por meio do erro até o resultado desejado e, só então, comprar o resultado final do processo. Há justificativas razoáveis para você fazer as coisas dessa forma, e talvez essa seja a medida do ser hacker de cada um: o quanto você se dispõe a abrir mão da aquisição de conhe-
Oficina de cisterna
exatamente fácil. Não é mais fácil que a produção acadêmica, nem mais difícil. Não precisa ser. Não é essa a medida que nos faz escolher esse jeito de fazer as coisas. Queremos o conhecimento livre, e sabemos que “livre” significa uma coisa para cada um. Lidar com as próprias frustrações faz parte, tanto (e talvez seja mesmo algo umbilicalmente ligado) quanto conseguir se divertir no processo.
Saiba mais lab@labhacker.org.br labhacker.org.br Rua Alfredo Maia, 504 – Luz (próximo ao Metrô Armênia) Telefone: 11 4323 6919
Lucílio Correia não se formou em Processamento de Dados na FATEC-SP nem em Jornalismo na Cásper Líbero. É partidário da transparência e da livre circulação de conhecimento e colabora com iniciativas como o Ônibus Hacker, o LabExperimental e o LabHacker.
lucilio@labhacker.org.br
Pagamentos online de um jeito fácil, seguro e flexível.
Utilize o MundiCheckout para capturar transações online. www.mundipagg.com.br | contato@mundipagg.com Capitais e Regiões metropolitana: 3003-0460 | Outras regiões 21 3554-2800 SP - Av. Brigadeiro Faria Lima, 1811, 12º andar - Jardim Paulistano RJ - Rua da Quitanda, 199 - 10º andar - Centro
Desenvolvendo para você
Banco de Dados < 49
Persistência poliglota e NoSQL Por Christiano Anderson, consultor, palestrante e evangelizador de banco de dados não relacionais Muito tem se falado em bancos de dados não relacionais, também conhecidos como NoSQL. Eles se tornaram muito populares e grandes players do mercado, como Twitter, Facebook e Google, para citar alguns, não teriam tantos recursos e escalabilidade em seus serviços se não fossem os bancos não relacionais. Mas bancos não-relacionais não resolvem todos os problemas e não vão substituir os tradicionais bancos relacionais. Os NoSQLs nasceram com um objetivo específico: preencher algumas lacunas deixadas pelo modelo relacional, sendo uma alternativa de persistência e que podem ser mais adequados para alguns tipos de projetos, mas não para todos. Os NoSQLs nasceram com um objetivo específico: preencher algumas lacunas deixadas pelo modelo relacional Dizer que NoSQL vai substituir um banco de dados tradicional é inválido e incoerente, porque estamos falando de arquitetura de dados, de entender como determinada aplicação lê e grava seus dados e, assim, utilizar o modelo mais adequado para que essa leitura e escrita sejam eficientes, sem gerar gargalos. Além disso, é muito comum utilizar mais de um banco na mesma aplicação – nesse ponto é que surge o termo persistência poliglota –, aproveitando-se o melhor de cada banco. Antes de entrar nesse assunto, é importante lembrar que existem vários tipos de bancos não-relacionais.
Como a persistência poliglota pode ser útil na vida real O primeiro passo é entender bem cada um dos paradigmas e para que servem. Existem muito mais modelos e tecnologias do que as citadas neste artigo – apenas as principais foram mencionadas aqui –, mas podemos pegar um exemplo da vida real para ilustrar um caso no qual persistência poliglota funcionaria como uma luva: um e-commerce. Pegaremos esse exemplo e simularemos uma arquitetura usando persistência poliglota. 1. Analisando a arquitetura: Um e-commerce precisa ter catálogo de produtos, carrinho de compras, controle de usuários, sistema de recomendações, comentários de usuários e gateway de pagamentos. Sabemos que a grande maioria das pessoas navega bastante pelo catálogo de produtos e z comparações antes de finalizar a compra. Se você procura um smartphone novo, vai certamente comparar diversos modelos para comprar o seu. Ou seja, a navegação se concentra muito no catálogo de produtos, que nada mais é que documentos compostos de chave/valor com as características de cada produto. E elas mudam dependendo da categoria de produto. Por exemplo: um smartphone possui algumas características, como câmera, se possui ou não 4G, capacidade de armazenamento, se possui expansão de memória, entre outras, enquanto um refrigerador possui características como 110 volts ou 220 volts, cor prata ou branca, se possui
50 > Banco de Dados
freezer ou não etc. Fazer isso no relacional é custoso, pois é difícil prever todas as características de diferentes produtos. No NoSQL, é bem simples. Se usar um banco como MongoDB, é possível que a estrutura de documento do smartphone seja completamente diferente do refrigerador – isso no mesmo banco e na mesma coleção (tabela). Sabemos também que o catálogo de produtos é bastante acessado em épocas como Black Friday, Natal e Dia dos Namorados. Se usar MongoDB, pode facilmente ser escalado com sharding, réplicas e assim fazer uma estrutura bastante elástica para evitar que o site fique fora do ar por acessos simultâneos. Além do catálogo de produtos, temos sistema de recomendação, algo do tipo “quem comprou esse produto também comprou esses outros”. Fazer essa análise é um pouco complicado, pois é necessário cruzar diversos comportamentos e fatores. Fazer isso em grafos é bastante simples, então adotar um banco como o Neo4J para essa etapa é uma saída de mestre, pois um grafo pode fazer essa seleção facilmente. O carrinho de compras é uma informação temporária, que dura enquanto o usuário está navegando pelo site e morre depois que ele conclui a compra. Não há necessidade de gravar em disco uma informação que vai durar tão pouco tempo. Para isso, pode-se usar a memória RAM, que é barata e rápida. Um banco como o Redis pode muito bem fazer o papel de carrinho de compras. O pagamento é algo mais delicado, e empresas antifraude homologam bancos relacionais. Também é interessante que seja transacional, então, nessa etapa, um banco SQL (como PostgreSQL) cairia como uma luva.
Por último, controle de usuários. Também é uma informação com jeito de documento, haverá chaves e valores, senha e demais informações pessoais do usuário, como seu histórico de compra (que pode ser um documento embarcado). Mais uma vez, o MongoDB pode fazer muito bem esse papel. 2. Criando um barramento: Nessa suposta aplicação de e-commerce, temos quatro diferentes tecnologias em uso: MongoDB, Redis, Neo4J e PostgreSQL. Como manter a consistência dos dados? A melhor resposta para isso é construir um barramento, uma camada de aplicação que apenas converse com os diferentes bancos. Essa camada libera algumas APIs (REST ou de alguma outra forma que achar melhor) para que seja o elo com a camada frontend. A grande vantagem de trabalhar com um barramento é que toda inteligência fica em um único lugar, e o frontend apenas consome essas APIs. Isso facilita muito o desenvolvimento de soluções mobile e a inclusão de novas funcionalidades, pois será necessário apenas adicionar novos métodos ao barramento e depois programar no frontend, evitando paradas e migrações de sistema. 3. Escalabilidade: Conhecendo bem as características do projeto, é possível escalonar no lugar certo. Nem todo mundo que navega em um e-commerce finaliza a compra, então escalonar o catálogo de produtos é muito mais fácil - será necessário apenas aumentar estrutura de MongoDB quando houver um número elevado de acessos. Não é preciso mexer em todo o sistema para escalar, basta plugar novas instâncias MongoDB, que continuará transparente para o barramento. Facilita muito o trabalho! Conclusão Persistência poliglota pode ser um grande aliado, se for trabalhada de forma adequa-
Banco de Dados < 51
da. Pode parecer que envolve custos e exige competências distintas, mas se o objetivo é manter um serviço no ar em situações que envolvem muitos acessos, é uma alternativa a ser pensada. Grandes players utilizam mais de um banco em suas aplicações, e a experiência mostra que isso é bastante viável.
Tipos de bancos não relacionais
Tipo
Descrição
Tecnologias
Orientação a documento
Cada “registro” no banco é O mais popular é o MongoDB, chamado de documento, pode mas existem outros como ser feito de vários formatos, CouchDB e Redis. sendo o mais comum salvar uma espécie de JSON nas “tabelas”, que são chamadas de coleções.
Orientação a grafos
Trabalha com estrutura de grafos O mais popular é o Neo4J, e consultas semânticas com vér- mas existem outros que tamtices e arestas. bém suportam grafos, como ArangoDB e OrientDB.
Orientação a colunas
Possui uma ou múltiplas chaves Hbase e Cassandra são os e valores intercalados, simulando mais populares. uma coluna.
Multi-model
São bancos que atendem a dois ArangoDB e OrientDB são ou mais paradigmas, como doc- os mais populares, ambos umentos e grafos. suportam tanto orientação a documento como grafos.
Christiano Anderson trabalha como arquiteto de dados, especialista em bancos não relacionais (NoSQL), big data e tecnologias emergentes. É sócio-fundador da Propus Science, empresa especialista em NoSQL e Big Data, também parceira da MongoDB e Hortonworks no Brasil. Também é professor e palestrante nos principais eventos no Brasil e exterior. http://christiano.me | chris@christiano.me | @dump
Cyberlaw < 53
Startups enxutas, porém sustentáveis Por Por Ricardo Azevedo, advogado, sócio do COTS Advogados
É muito famoso o conceito de startup formulado por Eric Ries, em seu livro Lean Startup, no sentido de que “é uma instituição humana desenhada para criar um novo produto ou serviço em condições de extrema incerteza”. Por isso, muitas vezes os novos empreendedores iniciam a execução de seus projetos sem se preocuparem com uma estrutura jurídica e contábil mínima e necessária a fim de evitar maiores problemas no futuro. Isso ocorre na medida em que startups adotam custos extremamente enxutos, minimizando despesas, pois ainda não há certeza da viabilidade do negócio. Ocorre que, algumas vezes, a redução de custos, por si só, pode redundar em prejuízos futuros. Isso porque alguns empresários acabam optando pela contratação de profissionais contábeis sem qualquer conhecimento específico do mundo das empresas startups, bem como relegam os advogados para os chamados momentos de crise. Desde o estouro da bolha da tecnologia no final dos anos 1990, o mundo mudou e a famosa ideia da empresa de g a r a g e m formada por um grupo de jovens gênios que almejam encontrar um investidor que colocará uma pequena fortuna na sociedade para o projeto deslanchar já desapareceu. Atualmente, os investidores esperam encontrar um projeto minimamente organizado e sustentável, pois, como explica Eric Ries, a “atividade
fundamental de uma startup é transformar ideias em produtos, medir como os clientes reagem e, então, aprender se é o caso de pivotar ou perseverar. Todos os processos de startup bem sucedidos devem ser voltados a acelerar esse ciclo de feedback”. De mais a mais, vale lembrar que esses investidores, sejam eles agências de fomento, fundos de investimentos ou investidores-anjos, vêm acompanhados, além de toda a sua experiência, de advogados especializados ou de grandes bancas, contadores, auditores etc. Embora a administração do negócio não seja a parte, digamos, mais envolvente de um projeto startup, é essencial, e compete ao empresário, pensar um pouquinho nessas questões, tanto quanto na estrutura tecnológica necessária para fazer o produto rodar. Assim, vamos volta atrás no tempo, embora, desde já, esclareça-se que não pretendemos inovar ou esgotar nenhuma matéria, mas apenas ajudar o empreendedor em seus primeiros passos. O novo empresário provavelmente terá sócios e parceiros no projeto. E o início do projeto é o momento
54 > Cyberlaw
adequado para se estabelecer as regras de relacionamento entre sócios e colaboradores, assim como estabelecer as decisões societárias e as responsabilidades de cada um dos participantes do empreendimento, entradas de novos sócios, forma de pagamento de dividendos e até mesmo prever as regras para o caso de saída de algum sócio.
A partir daí, a startup deverá tomar decisões tributárias bastante relevantes que poderão impactar na lucratividade dos sócios, bem como nas relações com os investidores, como no caso de escolha dos sistemas de apuração do lucro real ou lucro presumido, e mesmo a opção pelo Simples Nacional (ou até a figura do Microempreendedor Individual – MEI).
Embora a administração do negócio não seja a parte, digamos, mais envolvente de um projeto startup, é essencial, e compete ao empresário, pensar um pouquinho nessas questões
Essas escolhas são importantes e deverão ser adotadas de acordo com as peculiaridades dos negócios, custos e despesas da empresa. Por exemplo, se a empresa puder usufruir de benefícios fiscais oferecidos pelo Governo Federal, terá que, obrigatoriamente, adotar a apuração dos tributos federais pela sistemática do lucro real. De outra forma, caso a empresa tenha que efetuar o pagamento de royalties relativos a softwares ou patentes para o exterior, a opção pelo lucro real também poderá ser interessante. Por outro lado, se a empresa não puder aproveitar créditos para o sistema não-cumulativo do PIS/COFINS, a fim de reduzir o montante daquelas contribuições, talvez seja o caso de adotar a sistemática do lucro presumido. E por aí vai.
A definição da estrutura societária logo no início das operações da startup também será muito importante para o futuro da nova companhia, pois influenciará a forma de distribuição de lucros, bem como o aporte de capitais pelos investidores. A legislação brasileira possui diversos modelos, como sociedade anônima por ações, sociedade limitada, EIRELI (empresa individual de responsabilidade limitada) etc., sem falar em figuras previstas na legislação societária, como Sociedades em Conta de Participação (SCP) e Sociedades de Propósito Específico (SPE), que podem ser bastante úteis em determinados modelos de negócios. Mais recentemente, as startups passaram a adotar um novo modelo de contratação chamado vesting, a fim de atrair consultores, executivos e grandes talentos do mercado, com garantia de progressiva aquisição de participação no capital social das novas empresas. Contudo, os contratos de vesting precisam ser elaborados com extremo cuidado, regras claras, e percentuais e prazos de opção muito bem definidos, para não frustrar as partes contratantes, bem como não afugentar os futuros investidores.
Recentemente, o Governo Federal encaminhou um projeto de lei que estabelece a opção para as empresas adotarem ou não o regime de desoneração fiscal da contribuição previdenciária patronal de 20% em substitui-
Cyberlaw < 55
ção de uma alíquota de 2% (que será majorada para 4,5% pelo mesmo projeto de lei). Nesse caso, quando a referida legislação for aprovada pelo Congresso Nacional, as empresas que atuam no setor de prestação de serviços de tecnologia da informação (desenvolvimento de programas de computador, elaboração, licenciamento ou cessão de uso de softwares, processamento de dados, instalação e manutenção de programas e sistemas etc.) precisarão fazer anualmente uma análise em relação ao faturamento versus folha de pagamento para determinar se vale a pena se manter no programa de desoneração fiscal. E já que estamos na seara da relação de emprego, nunca é demais lembrar como o sistema de proteção dos direitos trabalhistas brasileiro é extremamente complexo e exige das empresas verdadeiros malabarismos de custos a fim de atender às disposições da CLT, do FGTS, e às exigências dos sindicatos, como a introdução de programas de participação nos lucros e resultados das empresas (PLR) em benefício aos funcionários. Você não vai querer apresentar um grande negócio para um possível investidor que já nasce com um passivo fiscal e trabalhista. Tudo isso sem considerar que o modelo de negócio precisa estar adequado e obedecer às melhores práticas de regulamentação, governança corporativa, princípios contábeis, de controladoria, ou normativos do setor em que atua. É o chamado compliance, que exige muitos cuidados e atenção do novo empresário para fazer cumprir as normas legais e regulamentares, as políticas e as diretrizes estabelecidas para o negócio e para as atividades da empresa, bem como evitar, detectar e tratar qualquer desvio ou inconformidade que possa ocorrer. A adequação das empresas aos regulamentos de compliance, em especial daqueles adotados pelos investidores, é cada vez mais exigida em um mundo em que a transparência passou a ser pré-requisito para aceitação da empresa no mercado.
Exemplo disso constitui a discussão pública patrocinada pelo Ministério da Justiça acerca do Anteprojeto de Lei de Proteção de Dados Pessoais. O desenvolvimento de tecnologias que enviam ou capturam dados sem qualquer controle do usuário, bem como serviços adicionados, passará a requerer, após a votação dessa legislação, como contrapartida à facilitação diária, a adoção de cuidados jurídicos para que as empresas não se vejam em grandes enrascadas com os seus consumidores. Assim, mais do que nunca, os chamados “termos de aceite”, “acordos de confidencialidade” e “políticas de privacidade” serão de suma importância para os negócios que envolverem tecnologia da informação e Internet das Coisas, demandando regras de compliance extremamente rígidas quanto ao uso e tratamento dos dados pessoais para proteção dos usuários. Portanto, é certo que os empreendedores no modelo de startups, dado o ambiente de incerteza em que existem, devem se preocupar com a redução continua de custos, mas não devem abrir mão de se cercar de bons consultores e de profissionais que entendem as regras dos mercados onde irão atuar. A sustentabilidade de um negócio, por mais brilhante e inovador que seja o projeto de negócio, vai depender da compreensão do empresário quanto às diversas regras jurídicas e regulamentadoras que regem o mercado.
Ricardo Azevedo é sócio do COTS Advogados, escritório especializado em Direito Digital e E-commerce. Especialista em Direito Tributário pela EDESP/GVLAW e professor universitário de Sistemas Tributários, no MBA de Gestão de Negócios da FIAP (Faculdade de Informática e Administração Paulista). Palestrante da APET (Associação Paulista de Estudos Tributários). Foi Gerente Jurídico de empresas de Tecnologia por aproximadamente 10 anos. ricardo.azevedo@cots.adv.br
12 ,90*
Conheça os novos planos a partir de R$
Locaweb Hosting: hospedagem 24 horas para pessoas 24 horas.
*Valor equivalente por mĂŞs para a primeira anuidade.
EAT SLEEP CODE REPEAT Locaweb.com.br
www.locaweb.com.br/hospedagem
Desenvolvimento< 57
Como eu precisei ver Testes Por Ivo Nascimento, Project Manager na startUp Smart Entrega
Alguns fatos: - Fato 1: Eu invisto (alguns dizem que eu perco) tempo compreendendo alguma coisa pela qual surja interesse (fato 1).
- Fato 2: Há algum tempo venho refletindo sobre testes e também – aliás, especialmente –, sobre Test Driven Development (TDD).
- Fato 3: O último fato, e de menor importância é que este artigo é longo. Logo, se você reclama de textos longos, não acho que valha a pena dedicar seu tempo a ele
Vamos ao que interessa Conversando com o Diogo Baeder, o Ney Basilio e o Rafael Valeira, acabei juntando uma peça aqui e outra acolá, e encontrando uma maneira realística, não ligada diretamente a software, mas sim à vida, na qual apoiar uma escolha por TDD.
apresentar aqui: “um software deve ser desenvolvido para sobreviver em um ambiente previamente definido”. Se definirmos o domínio de um problema como um mundo e o software como um ser que deve viver naquele mundo, ele, o software, pode ser colocado pra treinar em um mundo simulado (testes) e ir melhorando, antes de passar a realmente viver (live). O mundo real está lá, com efeitos imprevisíveis. Os usuários (com seu julgamento) estão lá. A latência está lá. A falha em um serviço está lá. Num espaço onde os efeitos são reais. E se pudermos, antes de estar lá, praticar como fazemos em um treinando ou como o faz um jovem aprendiz ou um estudante, tanto melhor.
Mas para isso precisamos pressupor que um software tem certas características:
Eu perguntava sobre as dificuldades que tenho em utilizar testes, tais como racionalizar o porquê dos mocks, que criamos e mantemos em paralelo à implementação original para poder isolar completamente uma teste de suas dependências, ou também a diferença entre usar fixtures em um teste e “mockar”, quando uma das resposta me levou a lembrar, não sei porquê, da seguinte frase: “A gente devia ter duas vidas, uma pra treinar e outra pra viver”.
1.
E foi daí que cheguei à síntese de como resolvi encarar testes, e é isso que pretendo
Podemos definir uma lei baseada no
Um software, assim como uma criança, pode, apesar de seus pais o achar perfeito, sofrer com o ambiente em que vive e cresce influenciado pelas companhias. Crescer na companhia de bons softwares/hardwares é muito saudável e o contrário pode fazer com que se pareça errar por sua própria natureza, mas na realidade é só um “bubbles” de coisas que acontecem no ambiente.
58 > Desenvolvimento
clichê que é “dize-me com quem andas e te direi quem és“.
2.
Um software aprende sempre, mesmo que não tenha sido escrito para isso. Uma regra escrita hoje se prova obsoleta amanhã, porque agora existe um dado que permite mais acurácia. O programador vai alterar aquela regra e, por reflexo, podemos ver, num sistema de versionamento de arquivos, toda a evolução em termos psicológicos, algorítmicos e físicos, a quantidade de código (linhas apagadas, acrescidas e alteradas) e todo o ganho de novas capacidades e aperfeiçoamento das habilidades já existentes.
“um software deve ser desenvolvido para sobreviver em um ambiente previamente definido” Podemos definir essa como uma segunda lei, e utilizar aqui a frase “interação e tempo geram conhecimento”. Precisamos pressupor essas duas características para entender que o melhor lugar para um software aprender a lidar com “as coisas da vida” é o mesmo melhor lugar de quem está em processo de aprendizado. Este lugar é um ambiente controlado, sem as penalidades reais, onde as situações que precisam ser aprendidas podem ser reproduzidas e seus resultados analisados, para que se saiba o que deve ser aperfeiçoado. Este lugar tem nome: ele é chamado de “ambiente de testes”. O equivalente para um software do que é a escola, para os humanos. Construir um lugar assim e utilizá-lo tem um custo, assim como construir um mun-
do qualquer (consultar os ratos sobre isso - http://ow.ly/LgsPV), mas é um custo infinitamente menor que o de “errar na realidade. Aliás, se pegarmos o espírito dos seriados de sucesso atual, essa diferença pode ser explicada como a diferença de emoção em passar um capítulo inteiro de Walking Dead atirando em alvos imóveis de feno, ou atirar diretamente em zumbis. Criar um “mundo ambiente de testes” para que os “seres vivos softwares” possam praticar ser testados é a melhor maneira de garantir que tenham uma vida, um deploy no live, segura e tranquila, sem que seu criador seja apedrejado por heresia. A conclusão disso foi que, ao escrever testes, o ato de escrevê-los antes é primordial para o relacionamento programador/teste ser positivo (e não simplesmente boring) e que, ao escrever um teste, você está poupando uma vida (uma peça de software deixa de morrer). Existe uma diferença tênue entre escrever um teste para uma peça de software e escrever uma peça de software através de um teste. Se softwarelogia existisse, e se tivesse uma missão como a da antropologia, mas voltada a software, teríamos: - No primeiro caso, você está lidando com um ser pronto, cuja única parte visível é a externa (interface) e cujo conteúdo, se você quiser conhecer, terá de dissecar (uma tarefa complexa, e o ser pode morrer no processo). - No segundo, não existe ser, mas você está dizendo que, para que ele exista, deve atender a certas regras (como um peixe, que obedece a regra de viver grande parte do tempo em meio aquático) e você não
Desenvolvimento< 59
Podemos definir uma lei baseada no clichê que é “dize-me com quem andas e te direi quem és“ precisará dissecá-lo para saber que ele cumpre tal regra, afinal, de inexistente, você, o criador, o fará existente e, fato, ele só conseguirá existir se atender aos requisitos do mundo que você projetou para validá-lo (fatalista, não?!). Outra coisa muito importante é: ninguém consegue escrever um teste para uma peça de software sem cair na armadilha de concluir que não vai conseguir escrever um teste para um problema que não tenha pensando e tratado no código, porque se não conseguiu imaginar o problema na implementação, também não vai imaginá-lo no teste. Para quem curte quadrinhos, e leu “A morte do Super Man”, a diferença do que foi definido acima é algo como se o Bertron tivesse criado o Apocalipse em laboratório, de acordo com o que imagina ser o certo, e colocasse ele pra matar o Super Homem (provavelmente o Apocalipse morreria) e criar o mesmo Apocalipse fazendo ele sobreviver no mesmo ambiente que o Super Homem. Praticamente, neste segundo caso, além do benefício de evolução incremental e positiva, ele ainda ganhou um parâmetro com o profiling todo publicado contra o qual comparar a sua criação (a saber, o próprio Super Homem). O ambiente de testes fica então caracterizado como a peça mais importante dentro do processo de desenvolvimento de software, assim como é a escola dentro da formação de um ser humano. É nele que um software vai ser confrontado
com situações reais, com penalidades controladas, como um aluno que faz uma prova de aritmética e erra o troco de uma compra de 10 Reais quando deu uma nota de 100. Ele pode dizer na escola que o troco é de nove reais e, mesmo assim, não perder dinheiro, mas na vida real, ele teria um prejuízo de… responda aí! Assim como na escola, o mundo de teste apresenta um novo desafio, à medida que julga que o software está preparado para ele. Você não cria todos os testes que caracterizam o “mundo de provas” de uma vez. Faz isso de maneira incremental, à medida em que vai assistindo à peça de software ir vencendo os desafios anteriores. Este processo incremental permite que se saiba qual foi o erro, onde ele está e o que deve ser melhorado. Assim como uma prova baseada em um bimestre de aulas, e não em um ano inteiro: corrigir os erros de um bimestre é um processo bem menos doloroso do que corrigir os de um ano inteiro. Da mesma forma, corrigir um algoritmo de 7 linhas é mais compreensível do que corrigir um software de 100 linhas. Foi assim que tive que pensar em testes para me sentir à vontade enquanto os uso.
Recapitulando 1.
Dize-me com quem andas e te direi quem és: um software deve ser testado
60 > Desenvolvimento
isoladamente para que seu comportamento não seja influenciado pelos erros dos outros.
processo de testes de um software permite uma co-relação com o processo de aprendizado de uma criança.
O ambiente de testes fica então caracterizado como a peça mais importante dentro do processo de desenvolvimento de software, assim como é a escola dentro da formação de um ser humano
4. Crie o ambiente de teste antes do soft-
2. Interação e tempo geram conhecimento: o processo de testes deve ser incremental e seguir uma linha de tempo pré-estabelecida. Isso adiciona conhecimento e permite sua recuperação, não importa se seu software utiliza algoritmos mutáveis ou não. O conhecimento se acumula no servidor de controle de versão de código que você esta utilizando.
3.
Ambiente de testes devem ser levados tão a sério para o software quanto é a escola para a educação de seres humanos: o
ware a ser testado: ninguém que projeta um software deixa de analisar questões que estejam ao seu alcance (falo de pessoas justas). Isso torna impossível em um momento não ver um defeito, e no outro, vê-lo. Na realidade, quando você passa a ver um erro depois do software criado é porque está sendo penalizado por ele com o custo mais caro possível, em produção. Assim como uma criança que deixa a escola, e não é mais criança, é penalizada pela vida quando percebe que não aprendeu algo quando devia tê-lo feito.
Ivo Nascimento é Project Manager na startUp Smart Entrega onde alia sua experiencia como Analista de Sistemas, Arquiteto de software e com gerenciamento para desenvolver práticas que aproximam a área de negócio e desenvolvimento de software em busca de eficiência. iannsp@gmail.com | github.com/iannsp | ivonascimento.wordpress.com | @ivonascimento
Tenha uma solução completa com uma integração super simples.
62 > Sr. Conteúdo
Diferenças entre Comunicação e Marketing no meio digital Por Bruno Rodrigues, Consultor de Informação e Comunicação Digital
Assim como acontece em qualquer mercado de trabalho, as ações de Comunicação e Marketing no mercado digital surgiram sem que ninguém dissesse ‘já!’. Profissões e atividades nascem da demanda do mercado e aos poucos vão se formalizando, não há um ponto de partida exato. A diferença, com a web, é que tudo aconteceu na velocidade da luz.
tão? Você saberia definir, à luz do meio digital, o que é Comunicação e o que é Marketing, por exemplo, ou apontar suas diferenças? Para o profissional de mercado, saber responder a estas questões é fundamental.
Quando a teoria é atropelada pela prática, como ocorre desde meados dos anos 90 com o mercado digital, os profissionais – eu e você – muitas vezes precisam tatear no escuro em busca de teorias e comprovações que ajudem a basear o trabalho. Já foi tempo em que apenas a experiência era aceita pelos clientes como argumento.
Imagine um jogo de tênis. Em lados opostos da quadra, estão dois jogadores – e a bola, o motivo de tudo. Na Comunicação, assim como no tênis, a função do jogador 1 é fazer com que a bola chegue até o jogador 2, e ponto final. Temos, então, o emissor e o receptor – e a mensagem. Até duas décadas atrás, o que importava para a Comunicação era fazer com que a bola chegasse ao outro lado da quadra. Se ela seria rebatida (e como), era secundário. Desde então, com o meio digital, tudo mudou.
A boa notícia é que, de uma década para cá, a área foi inundada por boa bibliografia, sejam livros, blogs, grupos etc. Afinal, quem acumulou estrada compreendeu que a única forma de o mercado avançar é dividir com os outros os conhecimentos. Em meio à evolução de autodidatismo para profissionalização de mercado, conceitos básicos de Comunicação Social ficaram na poeira, contudo. Quando perdemos o fio da meada de onde viemos, a consequência imediata é a criação de ruídos nas ações que planejamos e executamos, sejam elas as mais avançadas ou intrincadas. Sem base, damos cem passos para a frente, mas com o risco de recuarmos mil passos. Para começar, que tal bebermos da fonte, en-
O que é Comunicação
O que parecia ser um jogo com dois participantes – e vamos ser sinceros, não era – virou uma partida de verdade em que mais que importante do que a mensagem chegar ao receptor era estar preparado para o próximo movimento. A mesma bola que vai, volta diferente, e a mensagem se transforma ao longo do jogo. Neste processo, todos ganham. No tênis da Comunicação Digital, não há um vencedor – até porque, para quem iniciou a partida, o interesse é fazer com que o jogo nunca termine. O que era uma simples interação transformou-se em interatividade. O que seria um pesadelo para a Comunicação de
Sr. Conteúdo < 63
décadas atrás virou ‘sonhar acordado’ para as (boas) marcas de hoje.
O que é Marketing Você não sabia, mas meu objetivo, ao fazer o convite para jogar tênis, era convencê-lo a tornar-se sócio do clube – do qual eu sou o dono. Uma função e tanto para uma bola de tênis, não é? Mas é esta a razão de ser do Marketing: usar a mensagem para algo mais ambicioso. O objetivo pode ser apenas vender uma caixa de bola de tênis, mas também pode ser convencê-lo a comprar o clube inteiro. Por isso, no Marketing, a sedução é o centro de tudo. Ela tem a missão - quase mágica - de incutir na mensagem o desejo de compra. No Marketing, o que uma marca tem a fazer vai muito além do informar; a informação existe como ponte para um objetivo maior: atender ou criar necessidades.
O que parecia ser um jogo com dois participantes – e vamos ser sinceros, não era – virou uma partida de verdade em que mais que importante do que a mensagem chegar ao receptor era estar preparado para o próximo movimento No meio digital, a dinâmica fica bem mais complexa. A mensagem sofre metamorfose
nas mãos de quem queremos atingir: o receptor. Ele a toma para si e, tal e qual massa de modelar, cria uma nova mensagem que é passada adiante. A marca deixa, então, de ser algo ‘uno’ para tonar-se coletivo. O público analisa, questiona e até muda a própria mensagem. Às marcas recai, então, a obrigação de estar lado a lado com o receptor da mensagem, lapidando-a a medida que ela se multiplica na rede, evitando que os ruídos a desfaçam e trabalhando para que o ‘norte’ da conversão à compra continue no campo de visão do público.
Comunicação x Marketing Em um ambiente como o digital, em que o Marketing é vital para a sobrevivência das marcas, ainda é possível apostar na mensagem pura e simples, apenas como veículo de Comunicação? Para os desavisados, não. Uma vez compreendidos os conceitos de Comunicação e Marketing no contexto do meio digital, é possível, então, fazer uma crítica ao caminho inverso: de forma alguma é possível trabalhar informação na área sem que se entendam as peculiaridades da mídia. Ser conceitual, apenas, não basta. É preciso trabalhar teoria e prática. Quem compreende os meandros do meio online sabe o valor da informação pura e simples, e coloca em ação sua dupla função. A
64 > Sr. Conteúdo
primeira está na raiz do hipertexto: a capacidade quase infinita de servir como fonte de conhecimento para o receptor, aprofundando as informações e tirando dúvidas ao longo do caminho. A segunda está no fato de que a web é formadora, capaz de ‘preparar’ os usuários para o consumo. Quanto mais informado, mais c apacitado para a compra. Com o saber, cria-se a ponte para o consumo. Ao analisar um processo de compra, chega-se muitas vezes à conclusão de que uma informação sem propósito de estímulo ao consumo foi o principal motivador.
Dominar ferramentas Dominar ferramentas, aprender na prática e acumular conhecimentos sempre foi, desde o ponto zero do mercado digital, o caminho para alcançar o sucesso. Saber o quanto destes três itens utilizamos no nosso dia a dia é o que garante que não sairemos dos trilhos, hoje e sempre.
No Marketing, o que uma marca tem a fazer vai muito além do informar; a informação existe como ponte para um objetivo maior: atender ou criar necessidades Você não precisa ser pós-graduado para mexer no Google Analytics. Lidar com ferramentas não é diferencial no mercado – é um item obrigatório, mas jamais um diferencial. Seu primo de 16 anos é capaz de dar um banho em você no uso do Analytics, pois é bem provável que ele tenha mais tempo para entender dos meandros do ferramental. Ou seja, você não é mais que ninguém porque sabe
lidar com aplicativos, mas porque sabe transformar dados coletados em informações, e informações em conhecimentos úteis ao trabalho. Isso, sim, é um diferencial e tanto.
Aprender na prática Seguir o ‘feeling’ é trabalhar à beira do precipício. O apoio nesta hora precisa ser a autocrítica, que sempre nos puxa de volta para o reino da subjetividade, deixando para trás as armadilhas do subjetivo (‘estou certo porque tenho estrada, e ponto final’). No terreno do objetivo, as perguntas precisam de respostas palpáveis; saber responder para você, sua equipe, seu chefe e seu cliente os porquês das ações tomadas é o caminho certo para trabalhos de sucesso – e uma carreira promissora.
Acumular conhecimentos No mercado digital, quanto mais restritivo um MBA ou curso de pós-graduação, menor a chance dos conhecimentos adquiridos valerem, de fato, para alavancar a carreira. Este cenário não é apenas característico da Comunicação Digital: qualquer mercado oferece estas ‘pegadinhas’. A não ser que você tenha optado por dedicar sua vida profissional à ‘rebimboca da parafuseta’, jamais faça um ‘MBA Executivo em Rebimboca da Parafuseta’. O efeito colateral é você chegar à conclusão de que precisa fazer outro curso, mais abrangente. Fique atento aos modismos, portanto. ;-)
Bruno Rodrigues é Consultor de Informação e Comunicação Digital, autor dos livros ‘Webwriting’ (2000, 2006 e nova edição em 2014) e de ‘Padrões Brasil e-Gov: Cartilha de Redação Web (2010), padrão brasileiro de redação online’. Também é instrutor de Webwriting e Arquitetura da Informação no Brasil e no exterior. bruno-rodrigues.blog.br | @brunorodrigues
66 > Desenvolvimento Zen
Trabalhe (Z|B) em acompanhado Por Anderson Casimiro, CTO da Agrosmart e ativista do PHPSP
Salve, desenvolvedores!
descobertas pessoais uns com os outros.
A ideia dessa coluna sempre foi de passar experiências para que vocês consiga desenvolver melhor, mais tranquilos e focados em seus objetivos. Zen é uma palavra originada nos estudos do Budismo e dá nome a uma de suas principais vertentes. O Zen pode ser atribuído à prática dos ensinamentos e meditação com o fim de alcançar o estado de espirito de realização. Não sou budista, embora a cultura envolvida sempre tenha me admirado.
Na nossa realidade, costumeiramente distante de monastérios, é comum termos pessoas ao nosso lado. Mas colaboramos normalmente entre nós? Nem sempre. Aqui quero introduzir, caso você ainda não conheça, o conceito de comunidade. Uma comunidade é constituída de pessoas que agem em prol de um objetivo comum. O monastério é um exemplo claro de comunidade, assim como deveria ser o time com o qual você trabalha.
Ora, nosso objetivo como desenvolvedores é de evoluir nossos produtos e a nós mesmos, de maneira a trabalhar um circulo virtuoso de melhoria contínua – não guerreando com essa evolução, mas fazendo-a da maneira mais sensata possível.
Se você desenvolve software hoje, com certeza já ouviu falar de comunidades de software. Essas comunidades trabalham, muitas vezes sem dinheiro, em prol de espalhar conhecimento sobre determinada área de conhecimento – seja de uma linguagem, plataforma, tecnologia…
O Zen pode ser atribuído à prática dos ensinamentos e meditação com o fim de alcançar o estado de espirito de realização Como parte dessa experiência de evolução, vamos citar um exemplo bem simples, ligado inclusive ao budismo: imagine algo relacionado à palavra “meditação”. Provavelmente você, assim como a maioria dasw pessoas as quais pedi isso, imaginaram um monge meditando, provavelmente por ser uma cena recorrente em diversos filmes. Agora expanda isso: um monge dificilmente vive sozinho. Um monastério normalmente abriga mais monges, aprendizes, colaboradores, entre outros… Nunca estão de fato sozinhos. Eles compartilham seus pensamentos, ensinamentos,
Temos como exemplos aqui no Brasil diversas delas – notadamente Appsterdam, SouJava, GURUs e PHP-(alguma coisa) país afora, e tantos outros que seria impossível listar aqui. Todos, além de construir uma estrutura de aprendizado em seu próprio foco interagem entre si por ter objetivos em comum. Mesmo empresas investem nessas comunidades, como é o caso dos GDGs (Google) e da MSDN (Microsoft). Além do óbvio compartilhamento de conhecimento por meio de palestras e eventos, o que mais uma comunidade pode trazer de bom para o seu dia a dia codificando? Ora, praticamente todas as ferramentas que o auxiliam no desenvolvimento hoje, como frameworks, suítes de testes, documentação, servidores… de novo: uma comunidade trabalha em prol de um mesmo objetivo. Pessoas trabalham, muitas vezes sem
Desenvolvimento Zen < 67
ganhar um tostão para isso, para fazer a biblioteca de url routing que você está usando nesse momento. E como fazer isso sem dinheiro, sem um gerente? Compartilhando conhecimento, obtendo feedback continuamente e, principalmente, aprendendo um com o outro. “Ok, mas o que isso tem a ver com o time aqui da empresa?”, você pode estar se perguntando. Imagine seu time, trabalhando com o mesmo ânimo que um projeto opensource, como uma comunidade. Pessoas interagindo ao invés de competir (sim, eu sei que isso acontece no seu time de um jeito ou de outro). É uma mudança de mentalidade. Imagine seu time discutindo o produto no qual vocês estão trabalhando como se estivessem a definir os próximos passos do Spring/Symfony/Rails/Django… se o empenho em trocar conhecimento entre o time for incentivado, se as pessoas fossem reconhecidas publicamente pelos seus feitos e fossem humildes com relação às suas falhas. Aceitar feedback como forma de aprendizado. Este não é um ambiente mais amigável? É o clima em comunidades de software. Se você leu isso e achou algo revolucionário, no mau sentido da palavra, (então provavelmente você é um gestor à moda antiga), aqui vai uma outra “revolução”: trabalhar com TI é evoluir constantemente. Diferente de outras áreas do conhecimento, a cultura que gira em torno desta matéria está sendo reinventada todos os dias. Scrum, Integração Contínua, Gestão do Conhecimento são tópicos nos quais você deve pensar não só pelo valor que eles agregam ao seu produto, mas também às pessoas executando-o. E, como uma comunidade aberta, saber aprender mesmo em situações negativas - como em feedbacks/retrospectivas com críticas a empresa ou a gestão. Sim, gestores, diretores, e vários “C-alguma coisa-O”s devem deixar de pensar no cargo e sim no papel executado no contexto da empresa - assim como cada um tem seu papel nas comunidades. Essa mudança de pa-
radigma, de descer do degrau e conversar como pessoas em diferentes papeis aproxima o Executivo do Tático e ambos do Operacional. Mais uma nota aqui: em empresas ou comunidades, sempre devem ser pessoas a lidar umas com as outras - apesar de que alguns ainda acreditem que seu cargo deva fazer esse meio de campo. Em resumo, trazer o ambiente de comunidade para dentro da empresa só tem benefícios, se devida e sensatamente executado. Seja o desenvolvedor que interage com os outros do time, aprenda e ensine sempre. Seja o gestor que ouve e faz o que é necessário para que o time, que inclui você, estejam alinhados com relação ao objetivo. Seja o executivo a deixar sempre clara a visão do projeto para todos. Sejam a comunidade a levar seu desenvolvimento a um novo patamar. Sejam fãs de sua própria comunidade e façam o possível para que ela tenha cada vez mais fãs. Façam isso juntos, como comunidade, fazendo o necessário para tornar seu dia a dia num “estado de espírito” compartilhado, prazeroso e produtivo, para todos.
Desenvolvam Zen, até a próxima! PS: Perdoem-me budistas se cometi algum equivoco aqui; sou todo ouvidos para aprender corretamente e de maneira mais ampla. Precisei ser breve nesta descrição. Anderson Casimiro é CTO da Agrosmart e ativista do PHPSP. Apaixonado por Tecnologia desde sempre, tendo atuado como desenvolvedor, instrutor, evangelista e líder de times de desenvolvimento, além de palestrante nos principais eventos de tecnologia do país. @duodraco | duodraco@gmail.com
Wordpress < 69
O WordPress é seguro. Inseguro é você. Por Leandro Vieira, fundador e CEO da Apiki
Segurança é processo, e os processos precisam ser bem executados e garantidos para que você se sinta seguro com sua aplicação, ou pelo menos mais tranquilo. Os casos e as notícias veiculadas sobre falhas de segurança no CMS mais popular do mundo são, em sua maioria, decorrências de ações e de alguns cuidados que não foram tomados. Quando alguma brecha é encontrada, ela é rapidamente corrigida e uma nova versão do software é disponibilizada. Todas as instalações são notificadas sobre esse lançamento, alertando o usuário para o processo de atualização. Passado um determinado tempo, essa falha se torna pública, e você certamente ainda permanece com uma versão antiga.
Atualizações Manter o WP sempre rodando a última versão, sim como seus plugins e temas, é o primeiro passo para estar com a casa em ordem e com um procedimento bem executado. Ou seja – e para reforçar –, mantenha o WordPress, seus plugins e temas sempre atualizados. Uma versão desatualizada pode deixar a porta dos fundos, ou a da frente, aberta ou com a chave na fechadura, e essa responsabilidade não pode ser creditada à aplicação. E também é muito comum recursos complementares leia-se plugins e temas - não terem sido bem codificados, nem uso de boas práticas e, assim, colocarem as coisas em risco.
Verificações de segurança Manter uma rotina de verificação e análise de segurança é crucial para detectar alguma lacuna e atuar de forma corretiva quando preciso.
As verificações podem ser combinadas para serem manuais e automatizadas. Utilizando dois processos diferentes e com metodologias distintas, é possível uma abrangência maior da cobertura e das análises. O WP Scan é um exemplo de ferramenta que pode ser instalada em máquinas Linux ou Mac - que me desculpe o Windows - para atuar na verificação do WordPress e seus complementos. Seu uso através do terminal é simples, e precisamos somente informar a URL do site para que o escaneamento seja realizado. Algumas empresas, como a Sucuri, oferecem um serviço de monitoramento 24/7 e envio de alertas por e-mail. Você envia um arquivo PHP para a raiz do seu site, e ele se comunica com os servidores da empresa para uma análise atualizada e eficaz. Na descoberta de seres estranhos, o arquivo e a linha são informados e podemos entrar em ação para corrigir o problema.
Senhas pessoais Por falar em portas, ao sair de casa, você sempre as fecha - ou deveria. O seu login deve ter a mesma tratativa: logou, usou, deslogou. Simples. Se fizer uso de computador público, esse processo deve ser levado muito mais a sério. Recentemente, foi disponibilizado um recurso que permite ao usuário desconectar as demais contas abertas de forma remota por meio da página de edição do perfil. Isso é característico de plataformas seguras, que se importam com o assunto e que desejam ajudar a implementar processos importantes facilmente.
70 > Wordpress
Ainda espero o dia em que não será permitido criar ou atualizar os dados de um usuário que tenha uma senha fraca ou faça uso de nome de usuário como “admin”. Isso é facilitar o processo de ataques de força bruta para ganhar acesso à sua administração e injetar malwares ou postar aquelas lindas e simpatizantes propagandas de Viagra, Cialis e companhia limitada.
Fornecedores de serviços Você e sua empresa, além de adotarem procedimentos de segurança, devem cobrar o mesmo de seus fornecedores - sejam as empresas especializadas em WordPress, as gestoras de conteúdo ou as de hospedagem. As empresas de hospedagem são responsáveis por implantar e executar processos no servidor, como manter o sistema operacional e suas bibliotecas atualizados e ter uma infraestrutura impeditiva de ataques DDOS, por exemplo. A implementação dos processos técnicos de segurança deve ser de responsabilidade das empresas especializadas, a não ser que você domine o assunto e queira fazê-los. Os procedimentos a que me refiro são os cuidados com atualizações, verificações e correções de segurança, gestão da hospedagem do site e diversos outros fatores.
No arquivo wp-config.php, há constantes que definem o comportamento da aplicação - algumas são padrão e outras você precisa muito conhecer e fazer uso. As chaves de segurança, por exemplo, são padrão e nesse serviço - https://api.wordpress.org/ secret-key/1.1/salt - hashes poderosos são gerados. Ainda temos as credenciais do banco de dados. Duas dicas rápidas e simples: use uma senha forte e evite o prefixo das tabelas como “wp_”.
Vire o jogo Várias outras possibilidades de melhorias de segurança podem ser implementadas através da definição de constantes no referido arquivo - considere conhecê-las e adotar as mais pertinentes em seu caso. Os desenvolvedores por trás do WordPress realizam um grande esforço constantemente para garantir uma aplicação segurança e inovadora. As empresas especializadas em WP e de hospedagem também cumprem seu papel. Mas nós, usuários, somos falhos, teimosos e acreditamos que ataques acontecerão sempre no site ao lado. Considere melhorar seus processos para que assim possamos afirmar: o WordPress é seguro. E você também.
Diretórios, arquivos e o wpconfig.php Ao realizar o deploy, certifique-se de que os arquivos e os diretórios estão com as devidas permissões - 0644 para os arquivos e 0755 para os diretórios. Nada de 0777, por favor. E por falar em arquivo, considere manter o wp-config.php um nível acima da pasta pública do seu servidor. O WordPress lida bem com sua localização, mesmo que fora dos famosos diretórios www e/ou public_html.
Leandro Vieira é uma das grandes referências de WordPress no Brasil, entusiasta e evangelista da plataforma. Fundador e CEO da Apiki, empresa especializada no desenvolvimento web com WordPress. leandro@apiki.com | @leandrovieira
DESENVOLVEDOR, RENTABILIZE SEU CÓDIGO! USE A REVENDA DE SERVIÇOS PARA TER GANHOS RECORRENTES
REVENDA DE HOSPEDAGEM http://kingho.st/revenda
REVENDA DE E-MAIL MARKETING http://kingho.st/revenda-emm
LIGUE AGORA QUE LHE AJUDAMOS COM OS PRIMEIROS PASSOS:
4003.5464 Primeiro mês grátis* até dia 30/06.
MIGRAÇÃO
GRÁTIS
KINGHOST.COM.BR
SUPORTE
24h X 7
*Apenas p/ Revenda de Hospedagem plano III para contratação realizada até 30/06/2015 mediante contato com equipe comercial.
72 > 7Masters
Se você quer melhorar a comunicação com o seu público, o Marketing de Conteúdo pode ser uma boa estratégia para você. No 7Masters Content Marketing os mestres que participaram – e também a platéia, discutiram diversas formas de como melhorar o conteúdo de uma marca. Para começar, Cassio Politi, Diretor de content Marketing da Tracto e autor do livro “Content Marketing – O Conteúdo que Gera Resultados”, apontou sete coisas que não são marketing de conteúdo. Assista ao vídeo: http://ow.ly/LBCGK Tábata Cury tem 8 anos de experiência em conteúdo digital. Cuida do planejamento estratégico das redes sociais de Bradesco e ficou conhecida pelo case da poesia. Nesta talk, ela mostrou a importância de não utilizar estereótipos nas comunicações da marca nas Redes Sociais: http://ow.ly/LBCJ0 Relevância e autoridade para conteúdo foi o tema da talk de Diego Ivo, CEO da Conversion empresa especializada em SEO. Diego possui mais de uma década de experiência no mercado digital e é um dos principais experts no Brasil. http://ow.ly/LBCLq Kadu Potinati é especialista em Web Video Marketing, gerente do Google Business Group São José dos Campos, fundador e diretor e da empresa Video Click, produtora especializada em vídeo online. Ele deu exemplos práticos de como utilizar vídeos como estratégia de conteúdo online. http://ow.ly/LBCSf
Duas correntes de geração de resultados usando conteúdo foi o tema da palestra de André Rosa, que é jornalista, professor universitário, mestre em comunicação pela Faculdade Cásper Líbero e doutorando em Comunicação pela Universidade Metodista de São Paulo. Ele também é colaborador da Tracto Content Marketing e docente nos cursos de Comunicação Social (área de novas mídias e tecnologia) das Faculdades Integradas Rio Branco. http://ow.ly/LBCNi Ana Carolina Barbosa falou sobre Expectativas do Cliente neste 7Masters. Ela é jornalista, especialista em mídias institucionais e em branding. Diretora Criativa da Cabrun! Conteúdos. http://ow.ly/LBCPJ Felipe Wasserman falou sobre a questão da obrigatoriedade de estar nas redes sociais - a falácia disso. Ele é CEO da Petite Box, possui 10 anos de experiência profissional com forte atuação na área de Marketing e experiência em Merchandising, Trade Marketing, Finanças e Áreas administrativas. Também é professor de extensão da ESPM em cursos sobre mídias sociais. http://ow.ly/LBCQW
7Masters < 73
O 7Masters é o nosso Encontro de Especialistas. Todos os meses reunimos 7 mestres que apresentam palestras curtas sobre assuntos inovadores e diferentes, para uma plateia de profissionais. Os temas de cada encontro são definidos pelo iMasters e uma equipe de curadoria, liderada em 2015 por Edu Agni. Se quiser dar alguma sugestão, escreva para setemasters@imasters.com.br. Confira aqui como foi a edição do 7Masters OOD. Acompanhe o calendário e assista a todos os vídeos em setemasters.imasters.com.br
Outro 7Masters que aconteceu foi de CSS. A casa estava cheia e tinha mais do que 7 Mestres – a plateia super participativa abrilhantou ainda mais as discussões!
Fundador do Tableless e atual coordenador do time de Front-end da Locaweb, Diego Eis apresentou um pouco do que será o CSS 4. Confira o vídeo: http://ow.ly/LBATu
Filtros com CSS foi o tema da palestra de Deivid Marques, que é desenvolvedor Front-End na Locaweb, organizador do Front in Sampa e da Conferência CSS Brasil. Veja: http://ow.ly/LBAV5
CSS e UX foi discussão promovida por Raphael Fabeni, analista de interface front-end na Netshoes, co-criador do Meetup CSS SP e co-organizador da Conferência CSS Brasil. http://ow.ly/LBB37
Bernard De Luna fez um desabafo na palestra LOVEHATE CSS. Ou na “não-palestra”, como ele mesmo chamou. O atual Líder de Produto no iMasters trouxe várias provocações, dúvidas e questionamentos para a platéia. http://ow.ly/LBB5f
Rafael Lyra é programador na Leroy Merlin e manager do FEMUG-SP. Nesta talk, falou sobre SMACSS: http://ow.ly/LBB74 Rafael Rinaldi é pushador de código na Netshoes, co-organizador do FEMUG-SP e co-host do ZOFE podcast. Nesta palestra, falou sobre consistência visual em projetos web. http://ow.ly/LBBb2
Hugo Bessa é desenvolvedor front-end na @ mktvirtual e organizador do santos.frontend(). Sua talk foi sobre performance em animações. Assista aqui: http://ow.ly/LBB96
Desenvolvimento < 75
Seu site tão rápido quanto o Google usando ElasticSearch Por Breno Oliveira, Arquiteto de Software e Líder Técnico no Moip Muitos sites são referências na área em que atuam devido à relevância do conteúdo. Mas não basta oferecer informação/produto/serviço de qualidade, é preciso fazer com que o usuário encontre o que ele tanto procura. Sabe por quê? Porque quando ele não acha o que precisa, desiste e abandona o site. E agora, o que devemos fazer? Uma solução é utilizar um mecanismo de FullTextSearch do MySQL que, aparentemente, irá resolver o problema por um tempo. Mas digamos que o CEO de sua loja virtual resolva fazer uma megaliquidação, no Black Friday (por exemplo) e, para turbinar os acessos e vender ainda mais, promove uma megacampanha no Google e no Facebook. De repente, o fluxo de pessoas procurando desesperadamente por promoções no site aumenta 10 vezes. É aí que começa a complicar para você que resolveu utilizar o FullTextSearch.
Empresas como GitHub, Twitter, Google, Ebay, FourSquare, Bloomberg, The Guardian, Globo.com, Yelp e Moip já usam o ElasticSearch em produção para buscar e agregar em tempo real.
Colocando o ElasticSearch para funcionar A instalação do mecanismo é bem simples. Basta fazer download da última versão <https://www.elastic.co/downloads>, descompactar e rodar bin/elasticsearch. Ou acessar bin/elasticsearch.bat e em fazer uma requisição $ curl -XGET http://localhost:9200/.
Será que você estava de fato preparado para enfrentar essa situação? Acho que você não vai querer surpresas e descobrir da pior maneira que não estava pronto para todo esse fluxo. É justamente nesse ponto que o ElasticSearch irá te ajudar.
O ElasticSearch O ElasticSearch é um mecanismo de busca open source construído em cima do Apache Lucene, poderoso motor de busca full-text. Esse recurso conta com uma amigável RESTFul API, dados em tempo real, alta disponibilidade, documentos de orientação, entre outras características.
Alguns conceitos antes de começar Para facilitar a compreensão de alguns conceitos e termos, elaboramos uma tabela comparativa do ElasticSerarch com um banco de relacional (MySQL):
76 > Desenvolvimento
MySQL
ElasticSearch
Database
Index
Table
Type
Row
Document
Column
Field
Schema
Mapping
Partition
Shard
Outro conceito muito importante é entender como ele armazena os seus documentos. Quem já utilizou um banco de dados NoSQL, como MongoDB, não terá problema em compreender. Esse mecanismo utiliza a estrutura de JSON, suportada pela a maioria das linguagens de programação.
Search, ele irá gerar um id para você. Você terá a seguinte resposta do ElasticSearch: { “_index”: “produtos”, “_type”: “bicicletas”, “_id”: “1”, “_version”: 1, “created”: true, “_source”: { “modelo”: “speed”, “nome”: “Specialized Tarmac”, “marchas”: 14, “cor”: “azul”, “tags”: [ “bike”, “speed”, “specialized”, “tarmac”, “14 marchas” ], “valor”: 1500000 }
Criando os primeiros registros Para melhor acompanhamento dos passos seguintes, você pode utilizar um cliente REST de sua preferência. Neste exemplo, vamos utilizar um curl para simplicidade. Modelo para inserir dados no ElasticSearch: $ curl -X PUT http://localhost:9200/produtos/ biclicletas/1 -d ‘{ “modelo”10: “speed”, “nome”: “Specialized Tarmac”, “marchas”: 14, “cor”: “azul”, “tags”: [ “bike”, “speed”, “specialized”, “tarmac”, “14 marchas” ], “valor”: 1500000 }’
O que fizemos foi o seguinte: no Index produtos no Type bicicletas, adicionamos uma bicicleta, e o id dela é 1. Caso você não forneça um Id para o documento do Elastic-
}
Se você desejar buscar o registro acima, basta executar a seguinte requisição:
$ curl -XGET http://localhost:9200/produtos/ biclicletas/1
Existem duas maneiras de realizar buscas no ElasticSearch. A mais simples é apenas utilizando query strings na URL da requisição. Utilizamos essa forma geralmente para pes-
Desenvolvimento < 77
“tarmac”, “14 marchas”
quisas mais simples e rápidas.
], “valor”: 1500000
A outra maneira, para queries mais complexas, é enviando um JSON com a Query DSL. Em geral, utilizamos essa opção quando queremos resultados mais refinados ou fazer agregações entre outras features do Elasticsearch.
} } ] } }
Agora, vamos supor que você queira buscar por bicicletas azuis, utilizando Query String:
$ curl -XGET http://localhost:9200/produtos/ biclicletas/_search/?q=cor:azul
Na query acima, enviamos o Field cor com a cor desejada - no caso, azul. Assim, a query seguinte irá procurar por todas as bicicletas que tenham a cor azul. O ElasticSearch irá retorna o seguinte resultado: { “took”: 3, “timed_out”: false, “_shards”: { “total”: 5, “successful”: 5, “failed”: 0 }, “hits”: { “total”: 1, “max_score”: 0.30685282, “hits”: [ { “_index”: “produtos”, “_type”: “bicicletas”, “_id”: “1”, “_score”: 0.30685282, “_source”: { “modelo”: “speed”, “nome”: “Specialized Tarmac”, “marchas”: 14, “cor”: “azul”, “tags”: [ “bike”, “speed”, “specialized”,
Para realizar a mesma busca utilizando Query DSL:
$ curl -X GET http://localhost:9200/produtos/ bicicletas/ -d ‘{ “query”: { “match”: { “cor”: “azul” } } }’
Conclusão Esta foi apenas uma introdução ao ElasticSearch, que ainda inclui features como geolocation, sugestão e analytics. Outro ponto interessante é que o ElasticSearch possui diversas libs para facilitar sua utilização em sua linguagem de programação favorita. Vale a pena visitar o site deles e conferir!
Breno Oliveira é bacharel em Sistemas de Informação. Trabalha com desenvolvimento de software a mais de 10 anos e, atualmente, compõe a equipe de desenvolvedores do Moip, como Arquiteto de Software e Líder Técnico. É apaixonado pelo que faz e ainda mais apaixonado por café. No GitHub, está como @brenooliveira
78 > Código Livre
Informações e dicas sobre projetos Open Source Por Kemel Zaidan, evangelista Locaweb em tempo integral e de software livre nas horas vagas
Código Livre O F-Droid é uma loja de aplicativos alternativa para a plataforma Android. Ao contrário de outros softwares do gênero, como o Google Play ou a Amazon App Store, todos os aplicativos disponibilizados são livres e possuem código-fonte aberto. Ele não possui tantos recursos, nem é tão bonito quanto seus concorrentes mais conhecidos, porém, através dele, é possível encontrar algumas “pérolas” e ainda economizar precisos centavos. Além disso, ele exibe a licença dos apps e o link para o código-fonte, inclusive dos aplicativos livres que você já tem instalados no seu dispositivo e que foram baixados pelo Google Play, por exemplo. Todos os exemplos a seguir podem ser baixados através dele. https://f-droid.org
Transdroid Você tem um cliente de torrents instalado em seu servidor doméstico ou NAS? Por meio deste aplicativo, é possível controlá-lo remotamente pelo celular. O Transdroid é compatível com quase todos os clientes de torrents mais conhecidos, como µTorrent, Transmission, rTorrent, Vuze, Deluge, BitTorrent 6, qBittorrent e muitos outros. Você pode adicionar e remover torrents, definir rótulos, receber notificações quando acabar de baixar um torrent e muito mais. http://www.transdroid.org
Yaacc Com o Yaacc, é possível tocar vídeos e músicas acessíveis através de um servidor UPNP/ DLNA que esteja disponibilizando os arquivos via streaming em sua rede local. Com ele, é possível também iniciar um servidor UPNP diretamente em seu dispositivo Android e fazer o streaming das fotos, músicas e vídeos em seu celular para qualquer aparelho compatível, tal como smart, TVs ou videogames de última geração. http://www.yaacc.de
Beam File Comprou aquele smartphone de última geração, mas não conseguiu usar o NFC dele até hoje? Enquanto o pagamento por NFC não decola no Brasil, é possível utilizá-lo para enviar arquivos sem fio de um dispositivo para outro. E o melhor de tudo é que apenas quem envia o arquivo precisa ter o app instalado. Basta que ambos tenham NFC e Android 4.1 ou superior. Na realidade, o arquivo é transferido via Bluetooth, e o NFC é utilizado apenas para efetuar o pareamento dos dispositivos. https://github.com/MohammadAG/android-file-beam
Kemel Zaidan é um pseudo-programador, metido a jornalista, com alma de artista e evangelista na Locaweb. kemel.zaidan@locaweb.com.br | @kemelzaidan