revista imasters #10

76
R$24,00 Nós fazemos a Internet no Brasil Maio 2014 / Ano 03 / Edição 10 Esqueça PS4 e Xbox One: o futuro dos games está nas plataformas abertas #games #pag46 AS SUAS COISAS O PODER DE FABRICAR #capa #pag18 Bots no Twitter: como automatizar interações #api #pag28 O futuro dos BitCoins #opinião #pag64

Upload: imasters-redacao

Post on 22-Mar-2016

290 views

Category:

Documents


55 download

DESCRIPTION

DIY - O poder de fabricar as suas coisas; O futuro dos games está nas plataformas abertas; Bots no Twitter - como automatizar interações; BitCoins - para onde vamos?

TRANSCRIPT

Page 1: Revista iMasters #10

R$24

,00

Nós

faze

mos

a In

tern

et n

o Br

asil

Maio

201

4 /

Ano

03

/ E

diçã

o 10

Esqueça PS4 e Xbox One: o futuro

dos games está nas plataformas abertas

#games #pag46

aS SuaS cOiSaS

O POdEr dE fabricar

#capa #pag18

bots no Twitter:

como automatizar interações

#api #pag28

O futuro dos bitcoins

#opinião #pag64

Page 2: Revista iMasters #10
Page 3: Revista iMasters #10

Expediente

TIAGO BAETA Publisher

LuIs LEãO E KEmEL ZAIdAn Editores

RInA nOROnHA (MTB 2759-ES) Chefe de Redação/Jornalista Responsável

Edu AGnI Projeto Gráfico / Diagramação

nATHÁLIA TOREZAnI Revisão

COLABORAdOREs Adam Junqueira, André Horta, Alan Hoffmeister, Anderson Casimiro, Diego F. Aranha, Fernanda Weiden, Flavia Jobistraibizer, João Antônio Mangueira, João Batista Neto, Kemel Zaidan, Leandro Vieira, Lucas Vanzin, Luis Cipriani, Luis Leão, Marco Gomes, Mateus Zitelli, Paulo Silveira, Paulo S. L. M. Barreto, Reinaldo Ferraz, Rina Noronha, Rodrigo Batista, Rodrigo Alves Ruza, William Bruno.

ImAGEm dA CApA Arduino (Wikipedia) - http://bit.ly/1jtKVB6

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 [email protected] 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.

Page 4: Revista iMasters #10
Page 5: Revista iMasters #10

Esta é uma edição que chega recheada de novi-dades e com um convite para você colocar a mão na massa! O “movimento maker” está cada vez mais forte no Brasil, não apenas pelo surgimento de novos sites sobre o tema, novas empresas que desenvolvem hardware no Brasil começaram a comercializar produtos “open hardware”, mas te-mos também novos espaços para que você tenha acesso a esses hardwares (como hackerspaces e fablabs).

Além de um artigo especial sobre o assunto, con-fira o texto do Mateus Zitelli, que conta um pouco da experiência de construir uma uma máquina de corte CNC em casa (se você não sabe o que é isso, não leu o artigo da edição número 8 sobre fabricação digital).

Na entrevista, Tom Cucato, da Open Knowledge Foundation, fala sobre organização e os motivos de uma representação oficial da OKF no Brasil, a primeira fora da Europa. Dados abertos e direitos civis na internet estão na pauta!

Entre as novidades que chegam com essa edição, estão três colunas novas: Flávia Jobistraibizer, editora da Linux Magazine, assina a Tecnologia do Futuro, com novidades para os devs. Ander-

son Casimiro traz a Desenvolvimento Zen para a Revista, um espaço para falar de PHP, claro, mas muito além da linguagem, boas práticas e dicas importantes para programadores de qualquer lin-guagem. E Fernanda Weiden é nossa nova Co-nexão Vale do Silício e vai contar, a cada edição, suas experiências e mostrar um pouco das seme-lhanças das empresas gringas com as brasileiras.

Se você sentiu falta de algum tema que gostaria de ser abordado, entre em contato com a gente. Pode ser um nome para entrevista, uma indica-ção de review ou mesmo um artigo seu. A Revista iMasters é feita para a comunidade, mas principal-mente pela comunidade. Aguardamos um email no [email protected]

Boa leitura e mãos à obra!

Luis Leão é desenvolvedor web que encontrou em APIs e hardware aberto novas formas de integrar a web com o mundo [email protected]

Editorial

Page 6: Revista iMasters #10

Capa - O poder de fabricar as suas coisas

API bots no Twitter:como automatizar interações

Games Esqueça PS4 e Xbox One: o futuro dos games está nas plataformas abertas

Opinião Que futuro o bitcoin e outras moedas criptográficas terão nos próximos anos?

6 > Sumário

46 6428

18

Page 7: Revista iMasters #10

A iMasters é uma revista de Tecnologia/Web aberta a novas ideias. Para colaborar envie o seu material por e-mail <[email protected]>

08 :: Entrevista > Tom cucato, diretor executivo do OKfN brasil

14 :: NodeJS > Testando o seu código Node com o Mocha

16 :: Desenvolvimento Zen > PHP + Google app Engine

22 :: DIY > faça você mesmo: como eu construí uma fresadora cNc

24 :: Desenvolvimento > JavaScript como língua franca

26 :: Por dentro do W3C > Os 25 anos da Web

38 :: Comunidade > SouJava: o portal para o futuro da tecnologia Java

40 :: Conexão Vale do Silício > aposte no bom comportamento

42 :: Review > brackets: o editor para web que faz jus ao seu propósito

50 :: Tecnologia do futuro > Sempre disponível

53 :: Código Livre > informações e dicas sobre projetos Open Source

54 :: WordPress > Por que contratar serviços especializados em WordPress?

56 :: Node.JS > Configurando NodeJS em produção em um Cloud Server

60 :: Sr. Conteúdo > Você, cada vez mais próximo

66 :: Servidores > O servidor dedicado morreu?

68 :: Desenvolvimento > aprenda a programar de forma divertida

72 :: iMasters Box

Sumário < 7

Page 8: Revista iMasters #10

8 > Entrevista

Como é o trabalho de uma Rede pelo Conhecimento Livre no BrasilPor Kemel Zaidan, Editor da revista iMasters

a OKfN (Open Knowledge foundation Network) é uma ONG com sede no reino unido, porém com abrangência mundial. dedicada a fomentar o conhecimento livre ao redor do mundo, muitas de suas bandeiras – como dados abertos e os direitos civis na internet – são de grande interesse para um país com tamanha carência em iniciativas de educação e inclusão digital, como é o caso do brasil. Por esses mesmos motivos, a oficialização de uma representação oficial no país no ano passado (a primeira fora da Europa) é algo que pode ter um grande impacto positivo no longo prazo.

Para saber mais sobre a instituição, suas ações e as pessoas por trás do projeto, fomos até Tom Cucato, diretor executivo do OKfN brasil. O resultado é a entrevista desta edição.

Crédito: acervo pessoal Tom Cucato

Page 9: Revista iMasters #10

Revista imasters: O que é a Open Knowl-edge Foundation e quais os objetivos dessa instituição?

Tom Cucato: A Open Knowledge Foundation (OKF) é uma organização da sociedade civil sem fins lucrativos e apartidária, fundada em 2004 em Cambridge, Reino Unido, dedicada à promoção de dados abertos e conhecimento livre - o que inclui, por exemplo, dados gover-namentais, pesquisa financiada com dinheiro público e bens culturais no domínio público.

A organização funciona em rede (daí o “N” em OKFN, OKF Network), trabalhando de forma descentralizada com seus embaixado-res, grupos locais e capítulos (“chapters”) em mais de 40 países (veja em okfn.org/local/). Atualmente temos oito capítulos que são or-ganizações que representam oficialmente a Open Knowledge Foundation em outros pa-íses, sendo o Brasil o primeiro e único fora da Europa, formalmente estabelecido no final de 2012 e lançado no começo de 2013.

Rim: Quais os objetivos da OKF para o Brasil?

TC: Foi em julho de 2011, durante a Confe-rência da Open Knowledge em Berlim, que pensamos pela primeira vez em organizar um capítulo brasileiro. Era realmente algo empolgante enxergar aquela rede global de pessoas abrindo o conhecimento em diver-sas áreas: dados governamentais, recur-sos educacionais, conhecimento científico e bens culturais. Mesmo aqueles entre nós que não participaram da conferência entra-ram no questionamento dos tantos grupos e indivíduos no Brasil que estavam fazendo projetos incríveis relacionados ao conheci-mento livre, e que poderiam contribuir e co-laborar com essa rede global.

Desde aqueles dias, e no mesmo espírito que guia a rede global da Open Knowledge, o gru-po local no Brasil tem trabalhado para cons-truir uma rede de apoio local para iniciativas de abertura de dados, chamada “Rede pelo Conhecimento Livre”. Claro, isso começou com e permanece no centro da comunidade,

Entrevista < 9

com o objetivo de conectar todos os incríveis atores dos movimentos de cultura livre e de abertura de conhecimento e dados no País.

Valorizamos as raízes da nossa comunida-de, enfatizando a colaboração descentrali-zada para aproveitar ao máximo a força de todos os grupos e indivíduos que promovem a abertura de conhecimento e dados no Bra-sil. E a nossa principal tarefa é facilitar essa colaboração, seja através de projetos alinha-dos com a nossa missão de abrir todas as formas de conhecimento, seja apoiando co-munidades e grupos de trabalho.

Para tornar esse capítulo possível, o traba-lho duro de muitas pessoas foi necessário. O ambiente que conduziu a criação da Open Knowledge Brasil é uma mistura intensa e diversificada de atores e grupos que promo-vem a abertura de dados em diversas formas no nível local, mas também na América Latina e internacionalmente, como a Transparência Hacker, em que as pessoas estão trabalhan-do para melhorar a transparência do governo e ensinar jornalismo de dados; a Wikimedia Brasil, o ambiente local de promotores e co-laboradores wiki, como a Wikipédia; Recur-sos Educacionais Abertos Brasil, para me-lhorar o acesso aos recursos educacionais; o Grupo de Trabalho em Ciência Aberta no Brasil, pelo qual pesquisadores têm trocado experiências sobre práticas científica abertas; o movimento Hackerspace brasileiro, exem-plificado pelo Garoa Hacker Clube, e muitas outras iniciativas que constituem a verdadei-ra força do movimento global de abertura de conhecimento que a Open Knowledge Brasil deseja conectar e apoiar.

Rim: O que é o movimento de dados abertos e qual a sua importância? E qual a situação dos dados abertos no país?

TC: Dados governamentais num forma-to aberto (veja aqui um uma introdução br.okfn.org/dados-abertos/) podem gerar uma maior transparência e agregar um va-lor social a esses dados, além de possibili-tarem uma maior participação das pessoas em questões públicas.

Page 10: Revista iMasters #10

10 > Entrevista

Sobre o Brasil, estamos muito mal colocados em um censo de dados abertos produzido pela rede da Open Knowledge (veja em index.okfn.org), uma comparação entre 10 con-juntos de dados de diversos países, como mapas, tabelas de transporte, orçamento e gasto públicos, legislação etc. Há mais de 35 países à nossa frente se levarmos em conta esses conjuntos de dados, então há muito a ser feito no Brasil com relação à melhoria na publicação de dados.

Rim: Quais os desafios que existem para uma maior disseminação e utilização dos dados abertos no Brasil?

TC: Um dos maiores desafios é criar uma cul-tura nos órgãos públicos na qual se entenda que a maior parte dos dados produzidos por eles é de interesse público. E, entendido isso, a próxima etapa seria começar a melhorar a qualidade do que é publicado.

A Lei de Acesso à Informação (LAI) pode aju-dar a mudar essa cultura dentro dos órgãos públicos, na medida em que mais e mais ci-dadãos interessados passarem a pedir da-dos. Mas a LAI ainda é muito nova, foi san-cionada só no final de 2011, então se você conversar com muitos setores da sociedade civil organizada, verá que ainda há um grande caminho a ser percorrido para que as pesso-as conheçam esse direito recente. Também será necessário o cumprimento do que está previsto na LAI para os órgãos públicos que não fornecerem os dados solicitados por qualquer cidadão. Ainda parece ser comum que funcionários questionem para que fim alguém está pedindo os dados e quem é a

“O grupo no brasil tem trabalhado para construir uma rede de apoio local para iniciativas de abertura de dados, chamada rede pelo conhecimento Livre”

pessoa solicitante, ou se ela vai usar aquilo para alguma pesquisa, por exemplo.

Para uma maior disseminação, também preci-samos entender as dificuldades que as orga-nizações da sociedade civil estão encontrando para obter os dados e como querem utilizá--los. A Open Knowledge Brasil está fazendo um esforço para identificar alguns usos de da-dos no Brasil e criar cursos e guias através do projeto Escola de Dados (escoladedados.org), hoje coordenado pelo Marco Túlio Pires. Por exemplo, estamos coordenando um grupo de estudos de programação para auxiliar pesso-as que estão seguindo um curso sobre a lin-guagem de programação Python, e o número de interessados foi muito grande. Infelizmente a maior parte das pessoas envolvidas com a organização está em São Paulo, mas preci-samos pensar em formas de atuar de forma descentralizada, para que esse tipo de inicia-tiva possa ocorrer em outros estados.

Rim: O que você acha da Lei de Acesso à Informação? Ela está sendo cumprida?

TC: A Lei de Acesso à Informação (LAI), quan-do mais utilizada e seguida, será fundamental para criarmos uma cultura em que cidadãos e governo usem melhor os dados. Primeiro porque os cidadãos, organizados ou não, po-dem solicitar dados públicos ainda não publi-cados, o que não é pouco, para entenderem questões do seu interesse tendo números como base. Na medida em que dados pas-sarem a ser mais publicados, com uma boa qualidade e num formato aberto (veja aqui uma introdução sobre o tema br.okfn.org/dados-abertos), melhor.

Page 11: Revista iMasters #10

Entrevista < 11

Numa matéria publicada pela Folha de São Paulo, em março deste ano, a Controladoria Geral da União diz que a Lei de Acesso à In-formação não funciona em 11 estados, o que já é algo preocupante (http://ow.ly/w35B8). Mas se formos olhar como estão sendo trata-dos alguns pedidos de dados federais, como neste caso de dados de educação http://ow.ly/w35Lf ou essa base de dados de dados dos currículos Lattes http://ow.ly/w35Qb, ve-mos que estamos bastante longe do ideal. Al-guns dos argumentos recorrentes que estão sendo utilizados é de que isso aumentará os custos daqueles que produzem esses dados, mas isso já devia ter sido previsto.

Rim: Os desenvolvedores brasileiros estão prontos para utilizar os dados abertos, ou ainda é preciso investir em educação?

TC: Certamente temos diversos desenvol-vedores no Brasil que podem trabalhar com esses dados públicos. Acredito que muitos ainda desconhecem a Lei de Acesso à In-formação (LAI), ou alguns podem não ter in-teresse no assunto, o que é compreensível. Mas na medida em que formos criando uma cultura do hacking cívico, e com o ensino da programação sendo incorporado cada vez mais no currículo escolar ou a partir da de-manda profissional que estamos vendo cres-cer, acredito que teremos usos incríveis dos dados públicos em pouco tempo. Mas as pessoas não vão começar isso do nada.

Acredito, sim, que é preciso investir em cur-sos, guias e tutorais sobre como podemos usar esses dados e ferramentas que pode-mos criar para usá-los. Também é necessário

ampliar o conhecimento sobre a LAI, ainda muito recente no País. Nem todo mundo tem interesse em se envolver nessas questões, mas quanto mais exemplos tivermos dos potenciais usos positivos para a sociedade, mais pessoas se juntarão ao movimento pe-los dados abertos e conhecimento livre.

Rim: Quais são os melhores exemplos hoje da utilização de dados abertos?

TC: De alguns anos para cá, estão se tor-nando cada vez mais comum os desafios de dados abertos, também chamados de ha-ckatons. Eles são uma boa maneira de criar uma comunidade e uma cultura em torno do uso de dados públicos. Nessas competições têm surgido diversos aplicativos e essa pode ser uma boa forma de aproximar a popula-ção em torno do tema, formando comuni-dades e uma cultura ao redor do uso dos dados, inclusive sendo bastante didático para que as pessoas usem a LAI para exigir dados ainda não publicados.

Em 2012, a Open Knowledge Brasil realizou um hackaton com a Câmara Municipal de São Paulo (CMSP). Foi uma atividade incrível, de-monstrando como o diálogo entre a socieda-de civil e seus representantes pode funcionar para fazermos algo acontecer. Desenvolvedo-res e cidadãos interessados participaram do evento e usaram esse momento para dialogar com os técnicos da CMSP, esclarecendo do que precisavam e como queriam fazer uso dos dados. Foi uma das primeiras experiên-cias de atividades dessa natureza resultante desse diálogo e da colaboração entre a so-ciedade civil e o governo.

“Um dos maiores desafios é criar uma cultura nos órgãos públicos na qual se entenda que a

maior parte dos dados produzidos por eles é de interesse público”

Page 12: Revista iMasters #10

12 > Entrevista

Rim: O que ainda falta ser feito nesse campo?

TC: Pegando o exemplo citado anteriormen-te, temos o problema da sustentabilidade dos aplicativos desenvolvidos nesses desafios. Há um custo para manter aplicativos no ar e deixá-los atualizados, resolvendo bugs e desenvolvendo melhorias. Com a criação da Open Knowledge Brasil, esperamos poder manter alguns projetos que nossa comuni-dade avaliar alinhados com nossa missão e encontrarmos modelos para que isso se tor-ne viável. Espero que surjam outras iniciativas assim ao redor do País, e muito nos interessa aprender com elas. Nos Estados Unidos e na Europa (Sunlight Foundation, Open Knowled-ge Foundation e suas várias filiais, My Society) é comum termos organizações da sociedade civil apoiando e desenvolvendo isso, mas no Brasil me parece que o Terceiro Setor ainda está bem no começo nesse sentido, princi-

palmente quando pensamos em organiza-ções sem fins lucrativos com uma forte atu-ação em projetos de TI.

Rim: Alguns argumentam que certos tipos de dados devem ser mantidos privados. Por que certos dados não deveriam ser abertos?

TC: Os casos em que dados devem ser man-tidos privados ocorrem principalmente quan-do temos que respeitar a privacidade do indi-víduo. Há outros casos previstos pela Lei de Acesso à Informação, como a publicação de dados que podem colocar em risco a sobe-rania nacional ou requerem um planejamento estratégico de alguns órgãos. Mas deve-se tomar muito cuidado para que esses casos em particular não sirvam de desculpa para ór-gãos públicos deixarem de publicar os dados solicitados pelos cidadãos. </>

“a Open Knowledge brasil está fazendo um esforço para identificar alguns usos de dados no brasil e criar cursos e guias através do pro-jeto Escola de dados”

Quer saber mais?

Introdução resumida aos dados abertos: http://br.okfn.org/dados-abertos

Guia de dados Abertos: desenvolvido pela Open Knowledge Foundation e traduzido para o português por voluntários no Brasil - http://opendatahandbook.org/pt_BR/

Guia de Jornalismo de dados: também produzido pela Open Knowledge Foundation junto ao European Journalism Centre, foi recentemente traduzido para o português sob coordenação da Abraji. Leia este guia se o seu interesse for num enfoque mais jornalístico e se quiser saber como jornalistas e programadores vêm trabalhando juntos para resolver problemas usando dados - http://datajournalismhandbook.org/pt/

participe da Open Knowledge Brasil: se quiser acompanhar as discussões de nossas atividades e saber mais sobre conhecimento livre em geral - http://br.okfn.org/participe.

Page 13: Revista iMasters #10
Page 14: Revista iMasters #10

Por Alan Hoffmeister, administrador da comunidade brasileira de Node.js

Testes unitários são os aliados mais poderosos de qualquer projeto. Eles garantem a integrida-de estrutural e evitam que qualquer código seja posto em produção com alguma falha já testada.

No Node.js não poderia ser diferente, já que essa poderosa ferramenta conta com amigos à sua al-tura para ajudar na tarefa de testar o seu código.

Um pouco sobre o Mocha

O Mocha é um framework para testes extre-mamente flexível, simples e divertido. Ele se encaixa perfeitamente no seu estilo de testes, seja ele BDD ou TDD, síncrono ou assíncro-no, usando o gerador de relatório que mais se adequa ao seu projeto.

Desenvolvido por TJ Holowaychuk, foi um dos pri-meiros frameworks para testes a se destacar na plataforma Node.js, sendo vastamente usado por vários desenvolvedores, e está listado entre os pa-cotes mais favoritados do npm (http://ow.ly/voatI).

Entre as alternativas ao Mocha podemos citar Jasmine, Expresso, NodeUnit, jsUnit e o Vows.

Estruturando o seu projeto

Primeiramente temos que pensar como será o melhor jeito de criarmos uma aplicação testável, e para isso podemos usar o conceito primordial de qualquer projeto designado para rodar na plataforma Node.js: pequenos módulos que jun-tos formam uma funcionalidade maior.

Classes grandes e funções com múltiplas fun-cionalidades podem ser complicadas de testar e até mesmo de dar a devida manutenção em um momento posterior. Tenha em mente que peque-nos pedaços de código, que fazem somente uma tarefa, são facilmente reaproveitáveis, testáveis e muito menos propícios a falhas inesperadas.

Um projeto testável

Vamos iniciar um projeto simples, mas que tenha a capacidade de mostrar o Mocha atuando. Primei-ramente vamos instalar todas as dependências:

14 > NodeJS

Testando o seu código node com o mocha

# Crie um projeto em uma pasta vaziamkdir meu-projeto && cd meu-projeto && npm init

# Logo após instale o Mocha globalmentesudo npm install -g mocha

# Criamos as pastas principais do projetomkdir test lib

# Assim como o arquivo principaltouch index.js test/general-test.js

# Logo após abra o arquivo general-test.js com o seu editor favoritovim general-test.js

// Vamos usar a lib assert, que já vem no core do Node.jsvar assert = require(‘assert’);

// E também vamos incluir a lib da calculador, que criaremos mais tardevar calculadora = require(‘../lib/calculadora’);

// Descrevemos um tópico inicial usando o método describe() do Mochadescribe(‘Testes gerais da calculadora’, function(){

// Dentro do tópico criamos os testes relacionados aos mesmos, fazemos isso usando o método it() it(‘A calculadora deve ser uma função’, function(){

Nesta aplicação, construiremos uma biblio-teca capaz de executar os cálculos que são passados via linha de comando. Primeiramen-te vamos aos testes:

Page 15: Revista iMasters #10

NodeJS < 15

// Usamos o assert.equal() para verificar se o tipo da variável ‘calculadora’ realmente é uma função assert.equal(typeof calculadora, ‘function’);

});

it(‘O cálculo 191 * 7 deve ser igual a 1337’, function(){

assert.equal(calculadora(‘191 * 7’), 1337);

});});

Fácil e rápido, você já pode usar o comando mo-cha ./test/*-test.js para ver o que está de errado com sua aplicação, ou utilizar o parâmetro --re-porter spec para ter um relatório mais agradável. Certamente o teste reclamou da ausência do arquivo ../lib/calculadora.js, então vamos criá-lo:

// Vamos usar o módulo VM para compilar o input do usuário, lembre-se: evite o eval()var vm = require(‘vm’);

module.exports = function(calculo){

// Vamos executar o código que fora passado e retornar o seu resultado return vm.runInNewContext(‘(function(){ return ‘ + calculo + ‘})()’);

};

Agora, usando o Mocha, seus testes devem passar. Só está faltando o programa principal, vamos editar o index.js:

var calculador = require(‘./lib/calculadora’);

var resultado = calculador(process.argv[2]);

console.log(resultado);

Executando node ./ ‘1 + 1’, você deve ver o output 2 em seu terminal.

Testes assíncronos

Utilizando um callback juntamente com o mé-todo it() do Mocha, é possível testar bibliote-cas assíncronas:

Conclusão

Uma ferramenta tão flexível como o Mocha faz com que a plataforma Node.js ganhe mais confiança e agilidade nos projetos desenvolvi-dos com ela. Junte isso como módulo request (https://github.com/mikeal/request) e zombie (http://zombie.labnotes.org/), e você poderá fazer um teste de ponta à ponta: bibliotecas, API e frontend. </>

it(‘Deve retornar um buffer’,

function(callback){

algumMetodoAsync(function(buff){

assert.ok(Buffer.isBuffer(buff));

callback() // Não esqueça de chamar

o callback

});});

Veja mais Github do TJ Holowaychuk: github.com/visionmedia

Alternativas ao Mocha Jasmine: jasmine.github.io/

Expresso: visionmedia.github.io/expresso/

nodeunit: github.com/caolan/nodeunit

jsunit: github.com/pivotal/jsunit

Vows: vowsjs.org/

Alan Hoffmeister é administrador da Comunidade Brasileira de Node.js. Trabalha 24h com Node.js implementando software e hardware para medicina remota usando esta tecnologia. Também escreve sobre JavaScript de um jeito humorado no http://caba.re. https://github.com/cranic | @alan_hoff

Page 16: Revista iMasters #10

16 > desenvolvimento Zen

Há algum tempo, o Google criou o App En-gine, plataforma como serviço na nuvem do gigante das buscas, que até então suportava Java, Python e Go. No Google I/O de 2013, foi apresentada uma nova linguagem supor-tada pelo PaaS da empresa mais buscada de Mountain View: PHP. Essa foi a “feature” mais pedida pela comunidade App Engine e, nesse caso, os pedidos foram atendidos.

O que é cloud computing? O App Engine é melhor que seus concorrentes? Consigo fazer café no App Engine? São perguntas que não serão respondidas neste arti-go. Pretendo apresentar um aplicativo sim-ples até seu deploy no GAE (Google App Engine). Em um próximo artigo, iremos mais fundo no SDK PHP.

O primeiro passo é criar um aplicativo no Con-sole de Desenvolvedor do GAE, informando um nome e um ID para o mesmo - para isso, basta ter uma conta Google. O ID, como es-perado, deve ser um identificador único para o projeto e o usaremos em breve - para este artigo, usarei imasters-simple-math. Por hora, isso é suficiente.

Em seguida, você deve baixar o SDK e pre-parar seu ambiente de acordo com seu sis-tema operacional. Em suma, você deve ter Python 2.7, PHP 5.4 e MySQL 5.5 instalados e disponíveis no sistema para tirar proveito do GAE SDK. Descompacte o arquivo e mova o diretório google_appengine para o diretório de sua preferência - voltaremos já para ele.

Agora vamos criar nossa aplicação. Criei um diretório para ela em meu diretório de proje-tos. Vou usar o Composer para gerir minha dependência (no caso, o microframework Respect) e realizar o autoloading. Algo não

padrão que também precisarei é o BCMath, extensão PHP com funções de aritmética em nível binário, que traz resultados precisos - essa é uma das extensões PHP suportadas pelo GAE. Vale ressaltar que o imasters--simple-math está no GitHub, portanto tudo o que precisa para rodá-lo em sua própria instância de GAE é cloná-lo forká-lo, rodar o update do Composer e editar o arquivo app.yaml com as configurações do seu projeto.

O arquivo app.yaml contém a configuração do seu projeto para o SDK. Na diretiva han-dlers, você configura o comportamento das requisições para sua aplicação (por exemplo, que toda requisição deve ser tratada pelo in-dex.php, que é o comportamento padrão de nossa aplicação). Definimos também o runti-me (php, duh :P) e, por último, mas não me-nos importante: application - este deve conter como valor o ID de sua aplicação (aquele que criamos no Console de Desenvolvedor; no nosso caso, imasters-simple-math).

Com tudo isso pronto, podemos rodar o servi-dor embutido no sdk com o seguinte comando:

/path/para/google_appengine/dev_appserver.py /path/para/seu-projeto/

Se você tiver não tiver problemas em seu am-biente, uma instância local estará disponível em http://localhost:9999. É possível que o SDK não encontre sua instalação de PHP: se isso acontecer, ele vai avisar, e você precisa informar no parâmetro --php_executable_path o caminho para o executável do PHP.

Aqui vale um pequeno lembrete: é o exe-cutável CGI de seu ambiente - em algumas instalações, já há um executável php-cgi, e é para este que você deve apontar; em algu-mas distribuições Linux, esse executável se

PHP + Google App EnginePor Anderson Casimiro, entusiasta PHP e Open Source, co-criador e organizador do PHPSP

Page 17: Revista iMasters #10

chama php mesmo, mas se encontra em ou-tro diretório. Nas versões mais recentes, ele está incluído no pacote php5-fastcgi. No meu caso, a chamada ficou assim, pois também quero usar outra porta para o webserver:

~/bin/google_appengine/dev_appserver.py --port=9999 --php_executable_path=/srv/www/cgi-bin/php ~/Projects/imasters-simple-math

Com o AppServer rodando, você tem dispo-nível um ambiente com muitas das funciona-lidades do GAE, inclusive um painel adminis-trativo da instância na porta 8000. Agora você pode testar sua aplicação.

Com a aplicação testada, podemos fazer o deploy no GAE. Para isso, é só rodar:

/path/para/google_appengine/appcfg.py update /path/para/seu-projeto/

Insira seu usuário e senha (conta Google) e aguarde o término do processo. Agora é só testar sua aplicação em http://seu-projeto.appspot.com. No caso do projeto para este artigo, é http://imasters-simple-math.apps-pot.com (sim, ela está no ar e rodando).

Você pode utilizar essa aplicação como uma API. Por exemplo, para somar dois números, você deve acessar /add/55/128. Uma sub-tração com /sub/5.38/3.14. Uma multiplica-ção com /mul/5.43/0.44. Uma divisão com /div/0.1/0.7, e podemos ter o resto de uma divisão com /mod/5/4. Também deixei dispo-níveis um recurso para potência (/pow/2/8) e uma de raiz quadrada (/sqrt/144). Os núme-ros nos recursos que passei aqui podem ser substituídos, e a precisão que deixei é de 10 casas decimais. Se for usar em seu projeto “forkado”, você pode mudar essa precisão no arquivo application/bootstrap.php.

Se estiver usando Windows ou Mac, você pode contar com o GAE Launcher - um app que facilita sua vida lidando com o SDK; os instaladores estão no diretório dele. Há também uma integração com o GAE se você estiver utilizando o IDE PHPStorm - fiz um vídeo curtinho há pouco tempo mos-trando por cima essa integração, veja em http://youtu.be/sdnaL_ud6bQ.

desenvolvimento Zen < 17

Esqueci de mencionar que você pode fazer tudo isso sem custos: o Google não vai te cobrar por simplesmente levantar uma aplica-ção simples. Se precisar de mais recursos, aí você pode configurar o GAE para a cobrança quando ultrapassar a cota grátis. Esse am-biente é muito poderoso - sem contar que é um serviço muito interessante para colocar uma PoC (Proof of Concept - Prova de Con-ceito) no ar sem custos em um ambiente de nuvem. Vale lembrar que, além das vantagens do Cloud Computing, no GAE sua aplicação tira proveito da camada de Cache do Google.

No próximo artigo, entraremos mais a fundo no SDK PHP do Google App Engine.

Até a próxima! </>

Anderson Casimiro atua com desenvolvimento web desde 2001 também gerindo times de desenvolvi-mento nesse período. Entusiasta PHP e Opensource, cocriador e organizador do PHPSP. Colaborador de projetos opensource, apaixonado por Desenvolvimento bem feito. Curte um bom e velho Rock e Geek sempre. http://duodra.co | @duodraco

Links úteisimasters-simple-math: github.com/duodraco/imasters-simple-math

Console de desenvolvedor do Google App Engine: console.developers.google.com

Baixe o sdK do GAE: developers.google.com/appengine/docs/php/gettingstarted/installing

Composer: getcomposer.org

Respect: respect.li

BCmath: br1.php.net/bcmath

Extensões pHp suportadas pelo GAE: developers.google.com/appengine/docs/php/#PHP_Enabled_extensions

Page 18: Revista iMasters #10

18 > capa

Imagem: http://bit.ly/1scMiXO

Por Luis Leão, colaborador do fazedores.com e Editor da revista iMasters

o poder de fabricar as suas coisas

faZEr aPrENdENdO

aPrENdEr faZENdO E

Page 19: Revista iMasters #10

capa < 19capa < 19

Algo que me impressiona na cultura ameri-cana é o fato de que as pessoas colocam a mão na massa. Muitas vezes eles são au-todidatas, mas são, principalmente, proati-vos e criativos, e se aventuram a fazer um pouco de tudo: de coisas “normais”, como marcenaria, carpintaria e pintura, a questões altamente complexas, como modelagem e impressão 3D, eletrônica, programação e até mesmo lançar foguetes. O DIY – Do It Yourself, ou Faça Você Mesmo – é realmente bastante forte por lá.

Você deve ter lido nas últimas edições da Revista sobre hackerspaces, FabLabs, ofi-cinas colaborativas, fabricação digital e mui-tos outros assuntos que tratam um pouco do “movimento maker”, que também envol-ve a cultura DIY, focada na auto-suficiência e no aprendizado em qualquer área – não apenas em tecnologia. E nesta edição eu quero falar um pouco mais sobre isso, que vai muito além da criação de novas tecnolo-gias. O movimento maker trata da apropria-ção dos modelos de produção e construção de coisas, o que envolve desde atividades manuais, como tricô, costura e artesanato em geral, até técnicas mais complexas de marcenaria, carpintaria, metalurgia, eletrôni-ca e robótica. É óbvio que novas tecnologias e processos já mencionados em outras edi-ções, como fabricação digital, impulsionam o movimento por permitirem a criação de novos métodos de fabricação, antes acessí-veis somente a grandes empresas.

Mas não confunda Arduino e Open Hardware com o movimento - eles são apenas catalisa-dores do processo, não o objetivo final. Tudo começou “muito tempo atrás”, e é preciso um pouco de história: lembra da Revolução Industrial? Apesar de todos os benefícios tra-zidos após essa época, nós perdemos nos-sa capacidade de criar coisas únicas; tudo foi homogeneizado, ganhou escala e perdeu originalidade: o celular que você tem hoje é igual ao de muita gente por aí, todos podem (dentro das condições financeiras de cada um) adquirir um determinado bem que foi fa-bricado na China e que é idêntico ao mesmo modelo fabricado/vendido em outro país etc. Apenas dois exemplos simples. E até aí, tudo

bem! Temos acessos a diferentes bens e ser-viços, e eles são padronizados, o que nos dá certa “garantia” de qualidade, mas esquece-mos que, muitas vezes, por conta dessa pa-dronização, criar um novo produto é algo caro e nunca vai ser feito em uma garagem.

Produto final ou protótipo?

Este é um dos primeiros aprendizados de quem começa a trabalhar com hardware: fazer um único item sai caro. Mandar fabricar uma placa de circuito e incluir os componentes não é viável se você precisa de uma única peça, mas se você produz um lote de 20, 50 ou 100 peças, os custos principais estão diluídos (isso não quer dizer que o valor total é baixo).

Prototipar coisas é um pouco diferente; você não precisa ter um produto pronto e bonito, em uma única placa e com o melhor acabamento possível. O objetivo é apenas provar que aquilo funciona com os com-ponentes modularizados. É por isso que o Arduino e todos os seus acessórios se tor-naram um grande sucesso: eles têm esca-la e o custo para produção, devido a essa escala, cai, tornando-se viável para usá-los como protótipo até se conseguir recurso suficiente para produzir em escala.

Pensando ainda na produção em massa e no custo ao se gerar apenas uma única peça (ou pelo menos uma peça adaptada a alguma demanda específica), vou citar um caso inte-ressante em que já existia um produto, cha-mado WREX (Wilmington Robotic Exoskele-ton), adaptado a uma cadeira de rodas e que pode ser utilizado por crianças (a partir dos 6 anos) ou adultos que nasceram com uma sín-drome congênita que afeta a força muscular.

Neste exemplo, Emma, uma criança aos dois anos de idade, não podia utilizar o aparelho porque ele era muito pesado. Sabendo disso, médicos conseguiram reproduzir a mesma tec-nologia utilizando ligas metálicas mais leves e impressão 3D (veja mais: http://ow.ly/vMEL7), criando peças facilmente substituíveis e leves o suficiente para que uma criança pudesse co-meçar a se alimentar sozinha.

Page 20: Revista iMasters #10

20 > capa

Essa demanda por produtos personalizados, paramétricos e com pequena escala impul-sionou a fabricação digital, permitindo criar coisas novas usando tecnologias não tão no-vas assim, mas que ficaram mais acessíveis, produzindo coisas em uma quantidade não massificada. Junto com os hardwares abertos e com as mesmas práticas de comunidades open source, deram origem a impressoras 3D (nos seus mais variados modelos), máquinas de corte a laser (como a Lasesaur - http://www.lasersaur.com/) e de corte de vinil, além de outros aparatos eletromecânicos utilizados em processos de fabricação.

Voltando ao hardware, embora em 1999 Ri-chard Stalman não acreditasse que projetos de hardware aberto pudessem se tornar rea-lidade, surgiram as iniciativas de open source hardware, como o Arduino e muitas outras. O resultado: artistas, programadores e en-genheiros voltaram sua atenção para criação de objetos tecnológicos que utilizam um mi-crocontrolador de baixo custo com uma pla-

taforma de desenvolvimento também livre e simples. Quem já trabalhou com PIC sabe como é viver num mundo onde tudo tem pre-ço, inclusive o gravador do microcontrolador.

Depois disso, surgiram as plataformas de fi-nanciamento coletivo (crowdfunding), como o Kickstarter, em 2009, o que permitiu a exe-cução de projetos maiores, nas mais diferen-tes categorias, com atenção especial para tecnologia, pois financiamentos gigantes permitiam a produção em escala baseada em um protótipo construído e apresentado dentro da plataforma.

Ainda hoje, financiar um projeto através de crowdfunding significa acreditar na ideia e na capacidade de execução do inventor, e isso implica correr riscos e financiar algo que pode não será realizado, mas também há grandes casos de sucesso e projetos como o Peeble (http://ow.ly/vMFnI), maior sucesso de arre-cadação da plataforma e que se tornou um produto de sucesso, impulsionando o surgi-

Imagem: Flickr - http://bit.ly/1kQ2P0C

Page 21: Revista iMasters #10

capa < 21

mento dos “smartwatches” e do Oculus Rift (http://ow.ly/vMFqI).

Mas daí vem o software. Como o movimen-to maker se encaixa quando a gente fala de desenvolvimento de software? Eu já afirmei anteriormente sobre o surgimento do open hardware, e grande parte disso foi graças à integração da comunidade. Se falarmos exatamente de Arduino, sabe-se que ele tem três pilares: o hardware em si, com seu pro-jeto aberto e padronizado e todas as placas de expansão; o software aberto e multipla-taforma; e, principalmente, a comunidade focada no desenvolvimento de mais expan-sões e bibliotecas, além da melhoria da pró-pria interface de desenvolvimento.

Hoje é praticamente impossível alguém ter uma dúvida sobre desenvolvimento de software que outra pessoas já não tenha questionado antes, e muitas das vezes essa dúvida já foi respondida em sites como o Stack Overflow. Isso acontece exatamente porque existem pessoas com essa mesma essência do movimento maker (autodida-tas, criativas, próativas) que estão lá com interesse em ajudar, compartilhar conheci-mento e aprender com o processo.

Indo além

Onde mais o movimento maker pode ser apli-cado? Na educação! Vou citar aqui um artigo do Humberto Zanetti (leia o texto: http://ow.ly/vMFB6), professor há nove anos e mestran-do com foco na aplicação de tecnologia em educação, que começa citando uma frase de Aristóteles: “É fazendo que se aprende a fazer aquilo que se deve aprender a fazer”.

Você travou, certo? Eu também ;)

Ele faz uma abordagem bem crítica sobre o processo educacional “de mão única” e como teorias como o Construtivismo e o Constru-cionismo se baseiam na mesma lógica do movimento maker: colocar a mão na massa, aprender durante o processo, resgatar o pro-cesso criativo e identificar talentos, relacio-nando-se também com o desenvolvimento

de habilidades como liderança, empreende-dorismo e trabalho em equipe, sempre de-mandadas pelo mercado de trabalho.

Próximos passos

Então fica a pergunta: “o que eu posso fazer?”. A resposta é simples: estude e comece a fazer! (lembre-se de Aristóteles!). Veja a qual proces-so você mais se adequa e comece a explorar as possibilidades, mas não foque apenas na questão tecnológica, pois, às vezes, é mais importante entender como fazer as coisas do que simplesmente fazer algo no computador e mandar “imprimir”. Além disso, não tenha medo de errar, isso faz parte do jogo.

Se você é desenvolvedor, o que pode fazer agora é começar a contribuir com iniciativas de softwares livres (participe daquela que você já utiliza e/ou mais tem afinidade) e abra seus projetos no GitHub ou outro site de ver-sionamento de código. Não tenha medo de expor seus códigos: fazendo isso, você pode receber contribuições de outros desenvolve-dores e aprender ainda mais. </>

DIY - Saiba maisSobre a cultura Maker http://ow.ly/vMGhU

Cultura maker na educação http://ow.ly/vMGgn

Open Hardware no InterCon 2013 http://ow.ly/vMGdG

Móveis com design aberto http://ow.ly/vMGaD

Luis Leão é um desenvolvedor web que encontrou em APIs e hardware aberto novas formas de integrar a web com o mundo real. www.luisleao.com.br

Page 22: Revista iMasters #10

22 > diY

faça você mesmo: como eu construí uma fresadora cNcPor Mateus Zitelli, desenvolvedor front-end

Quem nunca teve vontade de produzir um ob-jeto qualquer em casa, como um utensílio para cozinha, uma réplica daquela pecinha que se quebrou e você não acha em lugar nenhum para comprar ou até mesmo um presente per-sonalizado para alguém? Foram desejos como esses que motivaram a meu pai e a mim a acei-tar o desafio de construir uma fresadora CNC (Controle Numérico Computadorizado).

PLanejaMentO

capacidade para trabalhar tanto peças grandes como pequenas, com boa qualidade e também ter a robustez para ser usada com diversos ma-teriais, desde madeira até alumínio. Tudo isso sem gastar muito, reutilizando material que já tínhamos em mãos.

Para controle da fresadora, decidimos usar somente software livre, tal decisão permitiu que tivéssemos flexibilidade em todo o pro-cesso de produção, além de utilizar ferramen-tas que estão em constante desenvolvimento

e que possibilitam expansão para as mais diferentes necessidades que poderiam apare-cer no decorrer do projeto.

SOftware

Tendo essa decisão em mente, não tivemos dú-vidas sobre qual sistema operacional escolher: o GNU/Linux. Não poderíamos ter feito escolha melhor - após uma breve pesquisa, encontra-mos a distribuição LinuxCNC, e foi amor à pri-meira vista. Ela oferece uma solução completa para controle de máquinas CNC, contendo até extensões para o Kernel Linux trabalhar com requisições em tempo real, característica fun-damental para evitar travamentos e acidentes durante o funcionamento da máquina.

Além disso, a interface com o driver, que já en-trarei em detalhes, seria feita totalmente por via serial, sem a necessidade de nenhum interme-diário. Essa distribuição também inclui o sof-tware de controle EMC2, que oferece mais do que todas as funcionalidades necessárias, um sistema completo de visualização e interpreta-ção de g-code (linguagem para descrição de ro-tas e comandos para CNCs) e um esquema de configuração passo a passo simples e eficiente.

eLetrônICa

Como queríamos poder trabalhar com mate-riais mais duros como metais, decidimosusar um fuso com 1,5 cv com resfriamento a água, possibilitando a fresa com até 24 mil rpm. Além do fuso, precisaríamos de motores de passo com um torque para aguentar o tranco. Para suprir tal necessidade, escolhemos motores NEMA 23 bipolares com 12,6 Kgf.cm que re-

Imagem 1: A CNC, estrutura montada Imagem 2: A CNC em outra perspectiva

Page 23: Revista iMasters #10

diY < 23

queriam 2.8 amperes cada. Devido a essa exi-gência, utilizamos a placa para três eixos com drivers TB6560, permitindo trabalhar com até 3,5 amperes por eixo, microstepping (proces-so para suavizar o passos do motor e diminuir a vibração) de até 1/16, que no nosso caso era mais que suficiente, isolamento óptico para porta serial, evitando que possíveis sobrecar-gas danificassem o computador, entre outras características que faziam dessa, mesmo sen-do uma solução relativamente barata, uma boa escolha para o nosso projeto.

eStrutura

Parte fundamental para alcançarmos a robustez desejada foi preparar uma estrutura que aguen-tasse o impacto do processo de fresa, mas essa se mostrou a etapa mais árdua da construção.

Decidimos utilizar eixos-guia de 25 milímetros, que pareciam suficientes até para as tarefas pe-sadas. Como tínhamos algumas peças de alu-mínio disponíveis, resolvemos usá-las na estru-tura, mas para que se adequassem ao projeto precisariam ser cortadas. Como não tínhamos uma outra CNC, todo o corte foi feito à mão. Após horas de trabalho árduo, muito barulho e com os braços cansados de tanto serrar, con-seguimos as peças de que precisávamos.

MOntageM

Com todos os componentes da máquina em ordem, era hora da montagem. Começamos pela parte estrutural, tomando os devidos cui-dados para evitar que deixássemos passar qualquer folga ou desalinhamento dos eixos. Com a parte estrutural concluída, partimos

para a instalação da parte elétrica, e então para a configuração do EMC2.

O processo foi muito simples, definimos o ta-manho da região de trabalho, que no nosso caso foi de 1000 mm X 800 mm X 150 mm, mapeamos os pinos da saída serial de acordo com a documentação da placa de controle, ti-vemos que definir também o quanto equivale cada passo do motor em distância percorrida pelo fuso e, após mais alguns detalhes, está-vamos prontos para testar (imagem 1).

reSuLtadOS e COnSIderaçõeS fInaIS

Toda a configuração foi tão simples e intuitiva que no primeiro teste a CNC já estava funcio-nando corretamente. Foi fantástico ver que, após meses de planejamento e montagem, obtivemos numa das primeiras tentativas tudo funcionando como desejado.

Alguns meses após o término da construção e várias horas fresando, descobrimos que os eixos-guia que escolhemos são finos demais para trabalhar com metais, sofrendo uma leve torção, mas no geral a qualidade está ótima.

A CNC tem sido muito útil, e até fundamental, para nossos projetos. Agora, o próximo pas-so é montar uma impressora 3D fresando tan-to as peças como a própria placa de circuito impresso em casa! </>

Imagem 3: Objeto de madeira fresada Imagem 4: Resultado da peça de latão fresada

mateus Zitelli é front-end. Faz graduação em Ciência da Computação na UFABC, é apaixonado por tec-nologia, inovação e empreendedorismo. http://zitell.li | @MateusZitelli | [email protected]

Page 24: Revista iMasters #10

24 > desenvolvimento

JavaScript como língua francaPor Paulo Silveira, Editor na casa do código e fundador da caelum

Designers, marketeiros, arquitetos de informa-ção e outros colegas da equipe podem tirar proveito desse skill. Mas com qual linguagem ele deve começar a programar? Perl, Python, Ruby, PHP, Java, C#? Realmente as verten-tes são muitas, e a resposta pode depender de um contexto: experiência de programação, gostos, front-end, backend, tipo de empresa em que se quer trabalhar etc.

Ao mesmo tempo em que há essa pluralidade de caminhos, se eu pudesse dar só uma dica, seria esta: faça seu amigo começar pelo Ja-vaScript. Não importa em qual plataforma sua equipe programar, o JavaScript muito provavel-mente estará envolvido.

Mais: o webdesigner tirará proveito de conhecer JavaScript, podendo pedir recursos mais espe-cíficos ao time de desenvolvimento ou até mes-mo comitar pequenas mudanças. O profissional de analytics saberá dizer melhor onde disparar eventos, como colher essas informações. O ar-quiteto de informação conhecerá o que é possí-vel e impossível de fazer.

JavaScript é também a linguagem onipresente: o designer, por exemplo, não precisará instalar nada no seu computador, pois já há uma má-quina virtual instalada no seu browser. Editor? Qualquer um. Do notepad e vi ao emacs e su-blime. Também não precisa de debugger, pois seu browser traz um embutido. O designer nem mesmo precisará entender esses jargões para começar o seu aprendizado.

Uma linguagem que era considerada o patinho feio há 15 anos, é hoje uma das queridinhas dos desenvolvedores. A compatibilidade entre os browsers tem melhorado vertiginosamente, e um profissional com profundo conhecimento

designers, marketeiros, arquitetos de informação e outros colegas da equipe de desenvolvimento podem tirar proveito desse skill. Mas com qual linguagem ele deve começar a programar? Perl, Python, ruby, PHP, Java, c#?

nessa linguagem é um dos mais buscados no mercado. Ela aparece no DevOps, ela está em bancos de dados não relacionais, ela está no servidor com node.js.

Não é a toa que escolhemos JavaScript como a linguagem do Ano do Código, uma iniciativa inspi-rada no Code.org para trazer aos jovens uma for-ma de ter o primeiro contato com a programação. Saiba mais sobre isso em anodocodigo.com.br.

O que você está esperando? Seu time de não-desenvolvedores pode tirar muito pro-veito aprendendo JavaScript. O trabalho com analytics, SEO, adwords, mídias sociais e de-sign será certamente melhor aproveitado, além de o diálogo com o time de desenvolvimento melhorar consideravelmente. </>

paulo silveira é Bacharel e Mestre em Ciência da Computação pela USP. Editor na Casa do Código (www.casadocodigo.com.br) e um dos fundadores do GUJ.com.br e da Caelum.com.br. Um entusiasta da inovação na educação. [email protected] | @paulo_caelum

Links interessantesComeçar a programar é com Javascript: http://ow.ly/vohsK

Javascript for designers - An Intro to Js Terms and Concepts, de Rachel nabors: http://ow.ly/vohmI

Aprenda scratch (projeto do grupo Lifelong Kindergarten, no media Lab do mIT): http://scratch.mit.edu/

Code.org: http://code.org/

Page 25: Revista iMasters #10
Page 26: Revista iMasters #10

Os 25 anos da WebPor Reinaldo Ferraz, Especialista em desenvolvimento Web do W3c brasil

26 > Por dentro do W3c

sitivo computacional que não era barato para a maioria das famílias da época.

Trabalhos escolares envolviam volumes de pesadas enciclopédias que ocupavam um enorme espaço físico dentro de casa. Barsa e Enciclopédia Britânica eram praticamente unânimes para qualquer pesquisa. Trabalhos em grupo reuniam os colegas em torno da enciclopédia e cada um fazia sua parte, mas algumas vezes era necessário esperar alguém terminar de utilizar o volume para você pudes-se começar sua pesquisa.

Algumas tarefas que hoje parecem muito simples eram complicadas em 1989, como pesquisar preços e comprar uma passagem aérea. Era necessário ir até uma loja da com-panhia aérea, esperar ser atendido e comprar a passagem com o atendente. Queria pesqui-sar preços? Dificilmente o atendente “segura-ria” uma passagem para você enquanto você fazia pesquisa nas lojas dos concorrentes. Ou então você poderia comprar por telefone. E re-servar um hotel no exterior?

Percebeu como o mundo mudou? A evolu-ção do acesso à informação, a facilidade com que qualquer pessoa pode buscar e encontrar conteúdo e principalmente o empoderamento do cidadão, desde fazer comentários em sites, blogs e redes sociais até a articulação da sua

Em 2014, a Web completa 25 anos de existên-cia. Em março de 1989, Tim Berners-Lee apre-sentava sua proposta para o gerenciamento de informação que propunha o uso do “hiper-texto” como forma de conectar documentos entre si. Uma simples linguagem de marcação que mudaria a forma de como consumimos e acessamos informação na Internet. Sim, a Web mudou nossa forma de acessar e usar a Internet, e grande parte da popularização da rede mundial de computadores se deve a ela. Hoje pelo menos duas em cada cinco pessoas no mundo estão navegando pela Web e esse número tende a crescer ainda mais.

Para entender a sua importância, sugiro fa-zermos um simples exercício de lembrar como era executar algumas atividades antes da criação da Web.

Antes de 1989, a televisão, o rádio e o tele-fone (fax não conta, por favor) eram os prin-cipais canais de comunicação, sendo este último o único com a possibilidade de envio e recebimento de informações (por voz). Televi-são e rádio eram sistemas de mídias em mas-sa, mas tinham como principal característica o espectador passivo, que pouco interagia a não ser por telefone ou carta. Os canais de comunicação mais modernos como Video-texto ou BBS eram complicados demais para o grande público e dependiam de um dispo-

“Não é somente para celebrar que o W3c reforça a participação da comunidade. a Web corre sérios riscos, e Tim berners-Lee chama a comunidade para se engajar nos debates políticos da Web”

Page 27: Revista iMasters #10

comunidade para exigir seus direitos e cobrar seus governantes. E isso é só um pouco do que a Web oferece, de forma livre e aberta desde a sua concepção.

COmEmORE, pARTICIpE, dEBATA E dEfEndA A WEB duRAnTE TOdO O AnO

O ano de 2014 será marcado pelas comemora-ções do aniversário da Web não só no mês de março. O W3C está criando uma programação de ações e eventos que serão constantemente atualizados no site http://www.webat25.org/. Mas não é somente para celebrar que o W3C reforça a participação da comunidade. A Web corre sérios riscos, e Tim Berners-Lee chama a comunidade para se engajar nos debates polí-ticos da Web sobre pontos extremamente rele-vantes para o seu desenvolvimento e evolução:

• Como podemos conectar as quase três em cada cinco pessoas em todo o mundo que ainda não estão conectadas à Web?

• A regulamentação da Internet está muito disputada em terreno mundial e nacional. Que novas soluções inclusivas podem evi-tar os danos de uma Web fragmentada?

• A nossa capacidade de usar a Web para falar e se organizar coletivamente está sob ameaça de censura e vigilância, e qualquer usuário online está ameaçado por cibercri-mes. Como podemos atender à sociedade com necessidades crescentes de liberda-de, privacidade e segurança online?

• Globalmente, menos de 10% do conjun-to de dado-chave do governo têm sido abertos gratuitamente para reuso online, limitando drasticamente o empoderamen-to de inovação da Web em áreas como

a melhoria do transporte público e a luta contra a corrupção. Que medidas podem ser tomadas para despertar o verdadeiro poder dos dados abertos?

• A Plataforma Web aberta deve ser capaz de se expandir para atender à indústria que demanda por interoperabilidade, mo-bilidade e desempenho em dispositivos conectados de todas as formas e tama-nhos. Como vamos enfrentar os desafios colocados por essa diversidade?

• Como vamos promover um rico ecossiste-ma de diversidade e inovação a longo prazo, em vez de jardins murados menos férteis?

Para concluir, deixo aqui a frase de Tim Ber-ners-Lee sobre a importância de cada indiví-duo na evolução da Web e na celebração dos 25 anos da sua criação:

“Se queremos uma Web verdadeiramente para todos, então todos devem ter um papel na for-mação de seus próximos 25 anos”.

Aqui no Brasil, o W3C está planejando diver-sas ações para celebrar os 25 anos da Web durante a conferência anual Web.br, que ocorrerá em setembro deste ano em São Paulo. Para maiores informações, acesse http://conferenciaweb.w3c.br/ </>

Reinaldo ferraz é especialista em desenvolvimento web do W3C Brasil. Formado em Desenho e Compu-taçã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 Acessibilida-de na Web e do Grupo de Trabalho em Acessibilidade na Web e representante do W3C Brasil em plenárias técnicas do W3C. @reinaldoferraz

“Se queremos uma Web verdadeiramente para todos, então todos devem ter um papel na

formação de seus próximos 25 anos”

Tim Berners – Lee

Por dentro do W3c < 27

Page 28: Revista iMasters #10

Bots no Twitter: como

automatizar interações

Por Luis Cipriani, developer advocate

no Twitter

Imagem: Quka / Shutterstock.com

28 > aPi

Page 29: Revista iMasters #10

O objetivo é entender quais recursos da aPi você vai precisar e como identificar quando você deve responder a um usuário para poder interagir automaticamenteDesenvolvedores adoram APIs porque elas permitem que você interaja com um serviço via có-digo, trazendo assim uma série de benefícios como incrementar um produto, automatizar uma tarefa ou capturar dados. A plataforma do Twitter (https://dev.twitter.com) oferece um conjunto de APIs para que os desenvolvedores e empresas possam usufruir dos dados gerados pelos seus usuários, e uma das aplicações possíveis é a criação de um bot (robô, em inglês), cuja função é interagir com usuários à medida que ele recebe tweets dirigidos a ele.

A função desse bot pode variar. Por exemplo, durante a Campus Party, foi disponibilizado um bot chamado @oquevernaCp (O que ver na Campus Party?) que, ao receber tweets dos usuá-rios com a hashtag de um palco do evento, ele respondia com o próximo evento da programa-ção - naquele palco ou na programação geral. É uma ótima maneira de ajudar participantes a se planejarem em um evento com vários acontecimentos em paralelo.

Fonte: https://twitter.com/oquevernaCP/statuses/427593696570531840

A Startbucks foi mais longe e criou um bot que, até dezembro de 2013, havia rendido mais de US$ 180 mil (http://ow.ly/voQe8) em vendas de café: o @Tweetacoffee. Esse bot ajuda os usuários a presentearem amigos com café da Starbucks, bastando que você crie um tweet como este abaixo:

aPi < 29

Page 30: Revista iMasters #10

30 > aPi

Fonte: https://twitter.com/tessaemilyhall/status/441622323343286272

O bot envia instruções de pagamento para você e, logo após a efetuação desse pagamento, ele envia as instruções de como pegar o vale-café no site. É uma solução simples, porém com um impacto grandioso.

Este artigo apresentará como criar um bot simples, que responde “Sim”, “Não” ou “Talvez” para qualquer pergunta de um usuário. Você pode trocar essa simples resposta por algo bem mais complexo. O objetivo é entender quais recursos da API você vai precisar e como identificar quando você deve responder a um usuário para poder interagir automaticamente. A imple-mentação será em Ruby, mas desenvolvedores de qualquer outra linguagem serão capazes de entender como funciona.

Criando a aplicação no Twitter

Para obter os tokens de acesso para utilizar a API do Twitter, você precisa acessar apps.twit-ter.com e criar sua aplicação em “Create new app”. Você terá que preencher um formulário com os dados dela. Logo após sua aplicação ser criada, você deve criar os access tokens, que serão necessários para a autenticação na API. Para obtê-los, você deve entrar na sua aplicação e depois clicar na aba “API keys” e pedir para gerá-los. Depois desse procedimento, você deve possuir quatro tokens: consumer key, consumer secret, access token key, access token secret. Não compartilhe esses tokens com ninguém, pois com eles qualquer pessoa pode acessar sua conta. Certifique-se também, na aba “Permissions”, de que a sua aplicação possui acesso de leitura e escrita à API.

Page 31: Revista iMasters #10
Page 32: Revista iMasters #10

32 > aPi

API de Streaming e a biblioteca Tweetstream

Normalmente, uma API é oferecida no modelo requisição e resposta, no qual para cada re-curso que um desenvolvedor deseja recuperar ele realiza uma requisição HTTP e manipula a resposta obtida do servidor da API. Esse tipo de modelo é aplicado pela REST API no Twitter, porém, para o caso dos bots, desejamos saber em tempo real quando um tweet com uma pergunta é feito para que possamos responder o mais rápido possível. Sendo assim, o Twitter também oferece a API de Streaming, que trabalha com um modelo de conexão persistente, ou seja, a requisição é feita e a conexão fica aberta indefinidamente, e qualquer tweet criado que esteja dentro do critério estabelecido pela conexão é retornado na resposta com uma latência muito baixa entre sua criação e a entrega.

Para o nosso bot, utilizaremos a URL GET user da API de streaming. Essa URL faz parte do stream do usuário, ou seja, ela retorna eventos e dados relativos ao usuário que está autentica-do, como quando alguém passa a seguir ou quando algum tweet é retweetado. No caso deste bot, estamos interessados em quando algum usuário cria um reply (resposta), ou seja, quando alguém cria um tweet que se inicia com arroba e o nome do usuário do bot.

A conexão será feita utilizando a biblioteca tweetstream (http://ow.ly/voRoP), que é uma gem do Ruby própria para lidar com conexões à API de Streaming. Além disso, essa gem tem como dependência o EventMachine (http://ow.ly/voRGO), que é uma biblioteca que suporta o desenvolvimento de aplicações orientadas a eventos. Esse tipo de arquitetura é importante para um bot no Twitter, pois ela permite que requisições à API não sejam bloqueantes, o que poderia deixar a resposta do bot lenta.

Configuração do Tweetstream

Basicamente, o que precisamos para configurar a biblioteca são os tokens obtidos quando se cria a aplicação em apps.twitter.com. Crie um arquivo chamado bot.rb e coloque o código abaixo:

require “rubygems”require “tweetstream”require “em-http-request”require “simple_oauth”require “json”require “uri”

# config oauthOAUTH = { :consumer_key => “EDIT_HERE”, :consumer_secret => “EDIT_HERE”, :token => “EDIT_HERE”, :token_secret => “EDIT_HERE” } ACCOUNT_ID = OAUTH[:token].split(“-”).first.to_i TweetStream.configure do |config| config.consumer_key = OAUTH[:consumer_key] config.consumer_secret = OAUTH[:consumer_secret] config.oauth_token = OAUTH[:token]

Page 33: Revista iMasters #10

O código acima apenas cria uma constante para configuração dos tokens de OAuth. Você deve trocar os valores “EDIT_HERE” pelos valores de consumer_key e consumer_secret, que são obtidos logo ao criar a aplicação, e token e token_secret, que são obtidos ao re-quisitar os tokens de acesso.

Logo depois, como precisamos do ID da conta de Twitter para saber se as perguntas são dirigidas a esse usuário, extraímos o ID do valor da variável OAUTH[:token], que se localiza no início da string.

Por fim, chamamos o método de configuração da biblioteca tweetstream, que simplesmente atribui os valores dos tokens para as variáveis equivalentes na biblioteca.

Realizando a conexão ao User Stream

Como já temos a biblioteca configurada, podemos escrever o código que realiza a conexão ao User Stream.

aPi < 33

@client = TweetStream::Client.new puts “[STARTING] bot...” @client.userstream() do |status| # Cada status recebido pelo User Stream será manipulado dentro desse bloco puts status.text # print do texto do tweet

end

Nesse trecho de código, estamos criando uma instância do cliente de tweetstream que vai lidar com a conexão à Streaming API e logo após adicionando o método @client.userstream que realiza essa conexão. Esse método requer um bloco de código, que será executado toda vez que a conexão com o User Stream retornar um status. Esses status são representados por objetos JSON que são mapeados automaticamente para objetos Ruby, o que permite o fácil acesso e a manipulação dos eventos recebidos. Por exemplo, para saber qual é o texto do tweet, basta acessar status.text.

Decidindo se você deve responder ou não a um tweet

Vamos expandir um pouco o código anterior para incluir a decisão se vamos ou não responder a um tweet recebido via Streaming. Isso é importante, porque não queremos gerar respostas automáticas para retweets ou para simples menções ao nosso usuário, por exemplo.

config.oauth_token_secret = OAUTH[:token_secret]

config.auth_method = :oauth

end

Page 34: Revista iMasters #10

34 > aPi

@client = TweetStream::Client.new

puts “[STARTING] bot...”@client.userstream() do |status|

if !status.retweet? &&status.in_reply_to_user_id? && status.in_reply_to_user_id == ACCOUNT_ID && status.text[-1] == “?”

tweet = { “status” => “@#{status.user.screen_name} “ + %w(Sim Não Talvez).sample, “in_reply_to_status_id” => status.id.to_s

}

# Aqui vai o código que posta a resposta no twitter (apresentado abaixo) end

end

O comando if acima é dividido em três partes:

1. a primeira linha do comando verifica se o status recebido não é um retweet, pois não queremos gerar respostas automáticas para perguntas que já foram respondidas; isso também pode gerar um uso abusivo da API;

2. a segunda linha verifica se o tweet é em resposta ao usuário bot, ou seja, se o tweet se inicia com arroba (@) e o nome do usuário, e esse usuário possui ID igual ao ID do nosso bot, então esse tweet é dirigido apenas para o bot;

3. a terceira linha apenas verifica se o último caractere do texto do tweet é um ponto de interrogação, ou seja, se o tweet é mesmo uma pergunta.

Se todas as condições forem satisfeitas, nós criamos o hash que vai conter a resposta e que possui dois campos: o status a ser retornado, que é simplesmente um sorteio entre “Sim”, “Não” e “Talvez”; e o ID do usuário que estamos respondendo, o que faz com que o Twitter notifique esse usuário e conecte esse tweet como uma resposta da pergunta que o usuário fez.

Criando o tweet de resposta

Por fim, só precisamos postar o tweet com a resposta. Para isso, utilizaremos a REST API, mais especificamente o endpoint POST statuses/update. Vamos atualizar o trecho de código anterior com a requisição HTTP que realiza o post do tweet.

@client = TweetStream::Client.new

puts “[STARTING] bot...”@client.userstream() do |status|

if !status.retweet? &&

Page 35: Revista iMasters #10

aPi < 35

status.in_reply_to_user_id? && status.in_reply_to_user_id == ACCOUNT_ID && status.text[-1] == “?”

tweet = { “status” => “@#{status.user.screen_name} “ + %w(Sim Não Talvez).sample, “in_reply_to_status_id” => status.id.to_s

}

twurl = URI.parse(“https://api.twitter.com/1.1/statuses/update.json”) authorization = SimpleOAuth::Header.new(:post, twurl.to_s, tweet, OAUTH)

http = EventMachine::HttpRequest.new(twurl.to_s).post({ :head => {“Authorization” => authorization}, :body => tweet

}) http.errback { puts “[CONN_ERROR] errback”

} http.callback { if http.response_header.status.to_i == 200 puts “[HTTP_OK] #{http.response_header.status}”

else puts “[HTTP_ERROR] #{http.response_header.status}”

end }

endend

Há dois pontos importantes nesse trecho que realiza a requisição. Primeiramente, a requisição deve ser autenticada, portanto deve possuir a assinatura OAuth. Para isso, utilizamos a biblio-teca simple_oauth (http://ow.ly/voRPb), cujo objetivo é receber como parâmetros os detalhes da requisição e os tokens OAuth configurados anteriormente e gerar a assinatura que deve ser atribuída ao header Authorization da requisição.

Outro ponto importante é que desejamos que essa requisição não seja bloqueante, pois sua latência pode fazer com que as respostas do nosso bot sejam entregues com atraso. Para implementarmos essa requisição, usamos a biblioteca em-http-request (http://ow.ly/voRUh), que implementa a execução da requisição dentro da arquitetura do EventMachine e, portanto, é executada de forma assíncrona.

Perceba também que adicionamos o header Authorization na instanciação do request, bem como o tweet a ser feito no body. Após a instanciação, adicionamos o código que lida com os resultados da nossa requisição, em casos de falha ou de sucesso.

Executando o bot

Pronto! Agora basta entrar no terminal e executar o bot com o comando ruby bot.rb. Após a conexão, entre no Twitter e crie um tweet que inicia com o usuário do bot. O exemplo abaixo foi obtido rodando o código deste artigo (dê uma olhada nas datas de criação dos tweets para ter uma ideia da latência entre a pergunta e a resposta):

Page 36: Revista iMasters #10

Fonte: https://twitter.com/lfcipriani/status/441907645822533632

36 > aPi

Conclusão

Este artigo mostrou com menos de 80 linhas de código como você pode criar um bot no Twitter que responde automaticamente a perguntas de outros usuários. Apesar de simples, essa imple-mentação apresenta a linha geral a ser seguida quando você tiver alguma ideia interessante de um bot. O código final pode ser encontrado em um gist na URL bit.ly/botnotwitter.

Se você quiser ver uma implementação um pouco mais elaborada, que implementa fluxos alternativos da conexão ao User Stream, como casos nos quais acontecem erros ou tweets são perdidos devido ao volume alto de tweets, ou como implementar Rate Limit para evitar que um usuário faça perguntas demais, você pode consultar o código do bot @oquevernaCP, que foi executado na última Campus Party, em São Paulo. O código pode ser acessado pela URL bit.ly/oquevernacp </>

Luis Cipriani é Developer Advocate no Twitter e Cientista da Computação com especialização em sistemas distribuídos. Possui experiência em empresas financeiras e de mídia, trabalhando com engenharia e arquitetura de software em vários tipos de projetos, desde back-office applications até sistemas web em tempo real. Mantém o blog talleye.com e a conta de relacionamento com desenvolvedores do Twitter no Brasil, @TwitterDevBr. Twitter pessoal: @lfcipriani

Page 37: Revista iMasters #10
Page 38: Revista iMasters #10

SouJava: o portal para o futuro da tecnologia JavaPor Rodrigo Alves Ruza, coordenador da Sociedade de usuários da Tecnologia Java

38 > comunidade

Desde a década de 90, quando Java nasceu, desenvolvedores de todo mundo foram cativa-dos pela nova forma de desenvolvimento, que facilitava a criação de aplicações para Internet e criou uma verdadeira comoção no mundo do desenvolvimento. Foi graças à própria Internet que os desenvolvedores brasileiros logo tive-ram contato com a tecnologia Java. O acesso ao código fonte, disponível desde o início, fez começar uma grande onda de colaboração en-tre os desenvolvedores da linguagem, criando uma enorme comunidade ao seu redor. Vários grupos de usuários se formaram, entre eles, no Brasil, a Sociedade de Usuários da Tecnologia Java, ou “SouJava”. Criado no final dos anos 90 a partir do trabalho de evangelistas e desen-volvedores Java no Brasil, o SouJava cresceu e se tornou um dos mais ativos e importantes grupos de usuários Java no mundo, tendo como foco participar da evolução da tecnolo-gia, expandir a adoção e principalmente com-partilhar intensamente o conhecimento.

Atualmente o grupo possui diversas atividades na comunidade brasileira, como reuniões, pre-senciais e online, focadas na divulgação técni-ca da tecnologia Java, com um foco na aplica-ção em projetos reais. Além das reuniões, que são mensas, gratuitase e abertas a qualquer desenvolvedor interessado, o SouJava tam-bém realiza diversos eventos como o JustJava, Café Brasil, Javali, Sou+Java, Maratona 4 Java, e vários outros. Em todos estes eventos os membros do SouJava, junto com palestrantes de todo o País, se esforçam para dividir conhe-cimentos e auxiliar os desenvolvedores, tornan-do a comunidade ainda mais forte e unida.

Desde o seu início, o SouJava acompanha as novidades e evoluções da tecnologia. Recen-temente, o grupo participou do lançamento do Java 8, o que foi um grande momento para a

comunidade Java. A nova versão traz novidades importantes como suporte a programação fun-cional com Lambdas, nova biblioteca de data e tempo, e muitas outras funcionalidades importan-tes. Participar dessa evolução e explorar novos conhecimentos a partir de tecnologias inovadoras é fundamental para minha carreira de desenvol-vedor, assim como a de todos os que utulizam a tecnologia. Por isso que projetos como o Open-JDK e as discussões sobre o futuro da plataforma ajudam a revigorar os membros da nossa comu-nidade. Presenciar a evolução do Java, assim como o aumento de usuários e projetos espalha-dos pelo mundo, é o que nos motiva no grupo de usuários SouJava a continuar ativos e plenamen-te concentrados em promover a tecnologia Java em todo o seu conteúdo e detalhes técnicos.

muITO ALém dA TECnOLOGIA

Minha história com o SouJava começou em 2012, no evento JustJava, quando conheci o Bruno Souza (JavaMan), na época o presidente do grupo. Por se tratar do presidente, eu espe-rava um comportamento bastante formal, o que me deixou nervoso só pelo fato de eu não saber como me portar na sua presença. Porém, eu es-tava redondamente enganado. Mostrando bem o espírito colaborativo e acolhedor do SouJava, além de bastante humilde, Bruno trata a todos de igual para igual, sempre confiando o mesmo nível de responsabilidade a cada um de nós.

Quando me interessei em participar do grupo e comecei a ajudar na organização, fui designado para ajudar nos eventos de São Paulo. Como parte da organização, pude participar ativamen-te dos evento, assistindo as palestras e apren-dendo bastante sobre Java, o que para mim é de extremo valor até os dias de hoje. Quando me tornei oficialmente um membro ativo do

Page 39: Revista iMasters #10

SouJava, passei a fazer parte de uma equipe de grandes amigos, que já estavam no SouJava háalgum tempo. O nosso grupo era formado por alunos de escola técnica e minha equipe era composta por Fabio Silva, William Moreira, Caio Magalhães, Fellipe Barreto, Johnny Santos e posteriormente Ygor Siqueira e Alexandro Mar-tins. Com eles, aprendi muito sobre a tecnologia Java, e também muito além, sobre amizades.

Como parte do SouJava conheci pessoas de que nem imaginaria me aproximar um dia. Vini-cius Senger e Yara Senger (Fundadores da Glo-balcode), Felipe Pedroso (Intel), Stephen Chin (evangelista Java), Maurício Leal (RedHat), Otávio Santana (desenvolvedor do OpenJDK), Fábio Ve-loso (representante no JCP) e uma grande lista de pessoas que fazem a diferença tanto no mun-do Java como em outras áreas da tecnologia. O SouJava me permitiu ir além das expectativas e encontrar a minha verdadeira identidade no meu “mundo tecnológico”. Descobri que posso testar meus limites a todo momento, pois sempre te-rei amigos no SouJava com quem contar. Esse apoio e incentivo tem sido muito importante na minha carreira. Para mim, o SouJava é mais do que apenas um grupo: é parte da minha família, e eu faço parte da família SouJava.

Para participar do SouJava basta ir às reuniões técnicas, que acontecem todos os meses. Nes-ses encontros, você vai aprender muito sobre a tecnologia Java, fazer amigos e comer uma pi-zza com a gente. Agora, se você quiser realmen-te se envolver, e passar a fazer parte do grupo, o SouJava é um grupo muito aberto e qualquer in-teressado pode participar. Você será muito bem vindo a fazer parte de nossas atividades.

Compartilhando conhecimentos, inovando, e expondo ao mundo a importância da tecnolo-gia Java, você pode participar da organização e do dia a dia da Sociedade de Usuários da Tecnologia Java, fazer parte da família SouJa-va. Eu me envolvi, e com isso, cresci como pro-fissional, fiz amigos, aprendi muito e aumentei minhas oportunidades.

E sei que não vou parar por ai. Eu ainda quero muito mais, quero me envolver com o futuro da tecnologia Java, quero poder ensinar e comparti-lhar o que aprendi, quero me posicionar muito bem

no mercado, e me firmar como um desenvolve-dor Java de qualidade. E sei que o SouJava vai continuar fazendo parte da minha vida, e vou ter o apoio que preciso para ir ainda mais longe. </>

Participe do SouJava

Reuniões técnicas mensais: o SouJava or-ganiza encontros técnicos nos auditórios de algumas das mais importantes empresas do mercado Java mundial. Nesses encontros, temos muita informação e muita tecnologia. Os encontros são gratuitos. Detalhes sobre as próximas reuniões: http://soujava.org.br

Canal IRC: diversos membros e organizado-res do SouJava participam diariamente do ca-nal #SouJava no IRC, trocando informações e experiências: http://soujava.org.br/servicos/canal-irc-soujava/

Lista de discussão: o SouJava mantém um conjunto de listas de discussão sobre a tec-nologia: http://soujava.org.br/servicos/listas--de-discussao/

Reuniões semanais de Organização: nes-sas reuniões, o grupo que organiza o SouJava discute as próximas atividades, organiza o dia a dia do grupo, e divide as tarefas necessárias para o SouJava funcionar. Todas as segunda--feiras, das 21 às 22hs, por telefone. Detalhes para participar da reuniao: http://soujava.org.br/organizacao

Adopt-a-JsR: o programa de padronização do SouJava, onde é discutido o futuro da tec-nologia Java, e as ideias e discussões são le-vadas para o Java Community Process (JCP): http://soujava.org.br/servicos/adopt-a-jsr/

jduchessBR: uma rede mundial de tecno-logia, voltada para o público feminino, que reúne algumas das melhores programadoras do mundo para discutir o papel da mulher no mundo da programação Java: http://soujava.org.br/jduchessbr/

Rodrigo Alves Ruza, Coordenador da Sociedade de usuários da Tecnologia Java

Page 40: Revista iMasters #10

40 > conexão Vale do Silício

Aposte no bom comportamento

Por Fernanda Weiden, Gerente de Engenharia do facebook

Ultimamente tenho participado de diversas conversas com desenvolvedores que têm dúvidas sobre como monitorar o desempe-nho de softwares criados por eles. Com base nessas conversas, quero aproveitar este es-paço para falar um pouco sobre formas de monitoramento de serviços, e não somente sobre tecnologias em si. Afinal, tecnologia é um pouco como gente: cada uma tem seu lado positivo e negativo e está sempre cerca-da de pessoas que a amam ou odeiam, sem nem sempre entender o porquê.

Quando falamos de serviços rodando 24x7, é fundamental conhecer muito bem o sistema ou o software para entender qual é o compor-tamento desejado: utilização de rede, CPU, memória, disco, quantidade de mensagens de alerta em logs, quantidade de erros em logs, número de ativos em um determinado período, entre outros. Também é importante compreen-der o desempenho do software, obter núme-ros de latência e outras informações específi-cas sobre o serviço que é oferecido.

De forma geral, desenvolvedores e adminis-tradores acompanham o funcionamento de

seus serviços para saber quando as coisas param de funcionar. Para isso, são criados di-versos monitores na tentativa de capturar fa-lhas no sistema. A intenção é, na ocorrência de um incidente, ter conhecimento de que há algo errado ou inesperado. Entretanto, é no momento em que os problemas acontecem (e eles sempre acontecem) que os envolvidos percebem que não estavam monitorando o serviço em um sinal específico, que naquela ocasião foi o sintoma de uma falha.

Pela minha experiência, acredito que o erro mais comum cometido durante o monitora-mento de desempenho ocorre na sequência de incidentes que causam alguma interrup-ção no serviço. Nesse tipo de situação, todo o foco inicial vai para resolver o problema e restabelecer o serviço. Só então os respon-sáveis preocupam-se com os sintomas que diversas vezes passaram despercebidos. É então, no “calor do momento”, que monito-res (código para detecção de certos compor-tamentos) e alertas (métodos de notificação para esses monitores) são criados para todos os sintomas de que algo está errado. E isso se repete cada vez que um incidente ocorre.

Page 41: Revista iMasters #10

conexão Vale do Silício < 41

Existe uma percepção de que esse tipo de resposta a incidentes garante que da próxi-ma vez o sistema estará mais preparado. Mas isso nem sempre é verdade.

O que acontece é que os sistemas, a cada vez, “encontram” um jeito novo e impres-sionante de falhar, e as coisas falham de uma forma sempre mais fantástica. Querer prever todos os tipos possíveis de falhas é como mirar em um alvo móvel, ou como dizemos em inglês “aiming at a moving tar-get”. Pode ser divertido e poupar tempo, mas é extremamente ineficiente.

Então, como se preparar para incidentes e saber o que realmente está acontecendo?

Minha resposta para essa pergunta é: iden-tifique e aposte no bom comportamento. Se você sabe qual é e tem dados de diversos ângulos sobre o comportamento esperado, sempre que algo estiver fora da normalida-de você será alertado. Esse conhecimento vai fazer com que você sempre saiba das falhas, não importa qual a situação que levou o sistema a isso, pois elas são um

desvio do bom comportamento do serviço. Comportamento esse que, vale lembrar, não muda tão frequentemente.

Assim, fica claro que sistemas de monito-ramento de desempenho são somente um alerta de que algo está errado e não podem ser confundidos com sistemas de diagnósti-co de falhas. Para encontrar a solução ou a causa central de um problema, é necessário investir em ferramentas de diagnóstico. Por fim, separar a expectativa entre diagnóstico e monitoramento é essencial para que façamos um bom trabalho em cada uma dessas disci-plinas, que são igualmente importantes, mas completamente diferentes entre si.</>

Tecnologia é um pouco como gente: cada uma tem seu lado positivo e negativo e está sempre cercada

de pessoas que a amam ou odeiam, sem nem sempre entender o porquê

fernanda Weiden trabalha com infraestrutura de grande escala, atualmente no time de engenharia do Facebook responsável for caching e segurança. An-teriormente, Fernanda trabalhou no Google, na Suíça, e na IBM, em São Paulo. Participante da comunidade Software Livre desde 2002, foi uma das organizadoras do FISL (Fórum Internacional Software Livre) por vários anos e entre 2009 e 2011 foi vice-presidente da Free Software Foundation Europe.

Page 42: Revista iMasters #10

Brackets: o editor para web que faz jus ao seu propósitoPor João Batista Neto, Líder de desenvolvimento do iMasters

42 > review

Logo que fui convidado para fazer este review, me foi sugerido que escrevesse sobre o, até en-tão desconhecido para mim, editor Brackets. Honestamente, por usar o Vim desde que lembro como desenvolvedor, essa euforia recente por editores como Atom.io, Sublime text etc., me cansa. Mas também entendo a necessidade dos desenvolvedores por uma ferramenta que seja rica em recursos, mas simples e leve o suficiente para ser utilizada no dia a dia.

Primeira impressão

Se você já usou alguma vez o Sublime Text, então provavelmente terá a mesma primeira im-pressão que a minha: a interface de usuário é praticamente igual. O tema padrão do Brackets é mais suave que o padrão do Sublime, mas os elementos visuais são dispostos de uma forma tão semelhante, que quase dá para dizer que é um clone. O editor também abre ridiculamente rápido. Mais rápido, inclusive, que a versão do Vim com interface gráfica – gVim.

Uma análise mais profunda

Ao fazer uma análise sobre alguma coisa, tenho o cuidado de procurar antes saber: qual o propósito disso?

“Brackets is an open source code editor for web designers and front end developers.”

O editor Brackets deixa muito claro seu propósito, mas, mais importante, o cumpre com maes-tria. A mágica desse editor e, certamente, o motivo para o desenvolvedor front end dar-lhe uma chance, é o recurso Live Preview.

Ao ativar o recurso, uma aba no navegador Google Chrome é aberta. A partir de então, cada caractere modificado, elemento adicionado ou removido na marcação, valor modificado de pro-priedades CSS, cada simples edição, reflete instantaneamente no navegador.

Page 43: Revista iMasters #10

review < 43

Chega a ser divertido ver as coisas acontecendo no navegador, enquanto vamos editando o código. Por utilizar Node.js, o Live Preview é instantâneo, sem refreshes. Isso permite, por exem-plo, que ao selecionar um parágrafo no editor, o mesmo parágrafo seja destacado no navegador.

Prós

é open-source – o Brackets é lançado sob licença MIT. Esse foi, pelo menos para mim que não conhecia o editor, o principal motivo que me fez instalá-lo.

é rápido – muito rápido. Excelente para desenvolvimento front-end, desde pequenas coisas até grandes projetos.

Tem o recurso de Live preview – por utilizar o próprio navegador para exibir o resultado do desenvolvimento on-the-fly, temos uma visualização real do que está acontecendo.

é fácil – a interface é simples e intuitiva. Tem opção para vários idiomas, incluindo o português brasileiro.

é extensível – o editor pode receber novos recursos através da adição de extensões. Além dis-so, o repositório de extensões é grande o suficiente para cobrir soluções para diversas situações pelas quais outros desenvolvedores já passaram.

Integração com Theseus – o desenvolvimento, a análise de código e a depuração de Javas-cript ficam fáceis com o a integração com Theseus. De fato, não é surpresa um editor que utiliza Node.js como infra ter uma boa integração para depuração JavaScript.

é multiplataforma – possui pacotes pré-compilados para Windows, Mac e Linux. Apesar de o pacote para Linux ser Debian, a característica open source do editor permite que terceiros empacotem para outras distros, como o Fedora.

Page 44: Revista iMasters #10

44 > review

Gerenciador de projetos – o gerenciador de pastas funciona como um gerenciador de proje-tos. Um recurso que falta no Sublime text, mas que foi bem implementado no Brackets. Não é preciso levantar várias instâncias do editor, basta selecionar o projeto em que vamos trabalhar. Além disso, o editor se lembra dos arquivos abertos na última vez que o projeto foi trabalhado, trazendo essa seleção automaticamente.

Construído com tecnologia web – a ferramenta não é apenas focada em web, é construída com tecnologia web. Exatamente por isso, ela pode ser modificada utilizando apenas marcação, CSS e JavaScript.

Contras

É fundamental uma resolução alta para o Live Preview – a grande vantagem do Live Preview é poder colocar o editor lado a lado com a janela do navegador. No meu caso, com 1920x1080px, a experiência foi excelente. Mas, em resoluções menores, a experiência do Live Preview pode ser prejudicada.

Conclusão

Brackets é um projeto open source da Adobe, lançado sob licença MIT, que nasceu para ser guiado e desenvolvido pela e para a comunidade de desenvolvedores. É um editor com foco em web e leva isso muito a sério. Tanto é que a própria ferramenta utiliza de tecnologias web, tanto em sua interface quanto em sua infraestrutura.

É fácil, leve e pode ter novos recursos adicionados através de extensões próprias ou de tercei-ros, que podem ser desenvolvidas utilizando HTML, JavaScript e CSS. Só o fato de ser open source com licença MIT já justifica sua instalação para, pelo menos, dar uma chance. Mas o Live Preview é a cereja do bolo, que faz do Brackets um dos melhores editores para web com que tive contato até agora. </>

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

Page 45: Revista iMasters #10
Page 46: Revista iMasters #10

46 > Games

Esqueça PS4 e Xbox One: o futuro dos games está nas plataformas abertas

Por Kemel Zaidan, membro da comunidade de Software Livre brasileira e Editor da revista iMasters

O final de 2013 e o início de 2014 foram agitados por dois grandes lançamentos: as duas maiores plataformas de jogos, PlayStation e Xbox, lançaram novas versões de seus consoles, o PlayStation 4 e o Xbox One, da Sony e da Microsoft, respecti-vamente. Conforme costuma acontecer nessas ocasiões, ambos os lançamentos receberam plena atenção da mídia e dos meios de comunicação.

Por mais interessante que essas plataformas possam parecer, lançamentos desse tipo sempre trazem mais do mesmo: hardware que incorpora os avanços dos últi-mos anos, gráficos mais realistas, maior poder de processamento e a continuidade de muitas das franquias que fizeram sucesso anteriormente, sendo esta uma das formas mais antigas de trazer os jogadores mais fanáticos para as novas versões dos consoles. Dessa forma, eles esperam poder reviver as velhas aventuras de seus personagens e jogos favoritos em versões melhoradas.

Contudo, desenvolver jogos para essas plataformas é algo para poucos. Para come-çar, o custo de aquisição do kit de desenvolvimento (que é cotado em algo próximo a US$ 2.500 para o PS4 - http://ow.ly/vqRpg) já afasta muitos desenvolvedores inde-pendentes. Em seguida, o grau de complexidade que essas plataformas exigem de-manda um número elevado de profissionais trabalhando em equipe e, consequente-mente, os custos dos jogos giram hoje em torno das centenas de milhões de dólares. Tome como exemplo o jogo Grand Theft Auto V, considerado o mais caro da história. Lançado em 2013, ele custou US$ 266 milhões, cifra que supera o orçamento de muitos blockbusters hollywoodianos.

Mas se depois de tudo isso você ainda assim tiver conseguido criar seu jogo, estará inevitavelmente “amarrado” aos donos da plataforma (nesse caso, as gigantes Sony e Microsoft), tendo que optar pela necessidade da custosa distribuição de mídias físicas (as caixinhas com os discos que tendem a desaparecer) ou a distribuição digital atra-vés do modelo de “app store”. Em ambas as situações, você terá que se submeter aos termos e às condições que essas empresas impõem para a venda de conteúdo através de suas redes de distribuição online.

Situações como essas tendem a afastar a inovação, pois, quando há somas tão gran-des em jogo, é compreensível que haja uma maior aversão ao risco e uma grande pres-são por lucro. Isso justifica todo o marketing envolvido e a continuidade das franquias.

Não seria bom se o desenvolvimento de jogos fosse mais acessível a uma quantidade maior de desenvolvedores independentes que pudessem colocar em prática ideias e jogabilidades inovadoras? Pois é isso que está acontecendo agora, a partir das plataformas móveis e dos sistemas abertos.

Page 47: Revista iMasters #10

Games < 47

OUYA - o pioneiro

Imagem: http://bit.ly/1kLQlEv

A pioneira delas foi o OUYA (ouya.tv). Surgi-do de um dos projetos de maior sucesso no Kickstarter (http://ow.ly/vqRzp), a campanha conseguiu arrecadar mais de US$ 8,5 milhões através da plataforma de financiamento cola-borativo, valor nove vezes superior ao objetivo inicial de US$ 950 mil.

A ideia do OUYA é simples: levar os jogos da plataforma Android para a TV e possibilitar o uso de joysticks, da mesma forma como fa-zem os consoles tradicionais. As vantagens dessa abordagem vão além do conforto de uma tela maior e de um joystick nas mãos: os jogos possuem preços compatíveis com as plataformas móveis (girando em torno de US$ 5) e qualquer desenvolvedor pode dis-ponibilizar seus jogos para o console. Assim como acontece com o Android, não há custo para a aquisição do SDK, e a loja fica apenas com uma porcentagem dos jogos vendidos. Isso é um estímulo à criatividade: quanto mais gente no ecossistema, melhor - ganha a plataforma e ganham os jogadores. Há espaço inclusive para jogos de nicho, como aqueles com visual retrô, coisa impraticável nas plataformas mais “modernas”.

Apesar de custar apenas US$ 99 (um quar-to do valor do PS4 e um quinto do XBox One no mercado americano), o hardware do OUYA se assemelha ao de um tablet topo de linha: processador NVidia Tegra 3 quad-core, 1 GB RAM, 8 GB de armazenamento em flash, cone-xão HDMI com saída 1080p, WiFi 802.11bgn e bluetooth 4.0. É possível até mesmo montar seu próprio hardware e imprimir o case em um impressora 3D - http://ow.ly/vqS8M.

SHIELD - a aposta da Nvidia

Imagem: http://bit.ly/SzL0Kb

Com abordagem semelhante ao OUYA, a Nvidia lançou seu console próprio, o SHIELD, com o mesmo intuito de dar vida nova aos jogos criados para a plataforma Android. Nesse caso, o apelo principal continua sendo a aposta na mobilidade, mas com a jogabili-dade de um dispositivo dedicado: um joystick semelhante aos videogames comuns, LCD de alta definição, alto falantes de excelente qualidade. Além disso, o SHIELD aposta no processador de última geração da fabricante (o Tegra 4) e traz a interessante possibilida-de de fazer streaming de alguns jogos do PC para o console ou de eventualmente jogar os jogos na TV através de conexão Wi-Fi.

Tanto o OUYA quanto o SHIELD se benefi-ciam do ecossistema Android, permitindo a instalação de aplicativos que podem expan-dir as possibilidade de entretenimento dos aparelhos, ao possibilitar o uso de aplicativos Android, como YouTube, XBMC, Netflix, Plex, Pandora, Google Play Books etc.

SteamOS - foco na distribuição de jogos

O último jogador a entrar nesse campo pare-ce ter sido a Valve, conhecida pela sua pla-taforma pioneira na venda de jogos online, o Steam. Em 2012, o cofundador da Valve, Gave Newell ganhou as manchetes ao de-clarar que o Windows 8 era “um desastre”, fazendo com que a empresa apostasse for-temente no Linux ao criar uma distribuição voltada para jogos e para a execução de

Page 48: Revista iMasters #10

sua plataforma Steam, o SteamOS. Por sua vez, as Steam Machine nada mais são do que um hardware dedicado com a platafor-ma SteamOS pré-embarcada. Contudo, o download do sistema operacional foi dis-ponibilizado online (http://ow.ly/vqSth) para aqueles que desejam montar ou reaprovei-tar seu próprio hardware.

Do ponto de vista técnico, a aposta faz muito sentido: o Linux é, de fato, uma plataforma muito mais estável e flexível do que o Win-dows para o desenvolvimento de jogos e já atingiu um amadurecimento que permite seu uso para esse fim. Ao contrário de outros sis-temas proprietários, ele não está suscetível a mudanças bruscas de rumo por parte de uma única empresa, gerando incompatibilidades e rupturas com versões anteriores. Como o de-senvolvimento do GNU/Linux é aberto e cola-borativo, sempre existe ainda a possibilidade de influenciar nos rumos do desenvolvimento e adaptá-lo a necessidades particulares.

Do ponto de vista estratégico, a posição também parece inteligente, pois a empresa cria uma plataforma de jogos que é “har-dware agnostic”, ou seja, independente de hardware, focando o negócio na distribuição dos games - que já é a vocação da empresa - e na experiência do usuário.

Ponto sem volta

Resta ainda saber se todas essas iniciativas terão sucesso comercial. Apesar de tudo, não

Alienware com SteamOS. Imagem: http://bit.ly/1oq3kiN

faltam críticos a cada um dos projetos cita-dos: uma busca rápida na Internet e não é difícil encontrar reviews negativos. Entretanto, a minha aposta vai na direção diametralmen-te oposta: independentemente de sucesso comercial, já é possível pensar em modelos de negócio e distribuição que não eram pos-síveis há poucos anos. Modelos mais aces-síveis tanto ao consumidor final quanto aos desenvolvedores e que contemplam nichos que não eram viáveis até pouco tempo.

A caixa de Pandora foi aberta, e creio que tenhamos chegado a um ponto sem volta: no caso de algum projeto fracassar, outros se sucederão corrigindo eventuais falhas e com a vantagem de ter as experiências anteriores como bússola para se guiar. As oportunidades são grandes, e quem se sair bem sucedido na criação de um mercado de games alternativo ganhará uma boa dianteira em relação aos concorrentes que vierem depois. É ver para crer. </>

48 > Games

Kemel Zaidan Kemel Zaidan é membro ativo da co-munidade de software livre brasileira e um defensor das causas ligadas à inclusão digital e ao conhecimento livre. No campo profissional, já coordenou projetos de educação e inclusão em entidades do terceiro setor e foi editor-chefe da Linux Magazine, tendo palestrado nos mais diversos eventos da área de tecnologia. Nos últi-mos anos, tem se dedicado a pesquisar o universo da cultura digital e seus desdobramentos. @kemelzaidan

Page 49: Revista iMasters #10
Page 50: Revista iMasters #10

50 > Tecnologia do futuro

Sempre disponívelPor Flávia Jobistraibizer, Editora-chefe das revis-tas Linux Magazine e admin redes & Segurança

Em tempos em que informações valem ouro e estas precisam manter-se disponíveis em tempo integral para que possam ser manipu-ladas, consultadas, transferidas, copiadas ou qualquer outra finalidade a que se destinem, é necessário redobrar a atenção com a disponi-bilidade dos servidores de bancos de dados.

Um servidor instável, offline ou mesmo da-nificado pode trazer sérios prejuízos para empresas que trabalham com informações, realizam métricas e análises de dados, para o mercado de Big Data etc.

Uma técnica já bastante popularizada de “backup” das informações de servidores de bancos de dados é a replicação. Ela consiste em criar réplicas dos dados entre servidores paralelos, de forma que, em caso de falha de um servidor, os dados ainda estejam dispo-níveis em outra instância para que o negócio não deixe de funcionar, garantindo dessa forma a confiabilidade e a disponibilidade centralizada das informações para todos os sistemas que delas necessitem.

Um bom cenário de replicação útil para diversas empresas com as quais trabalhei é o seguinte:

• Uma empresa possui sua matriz loca-lizada no estado de São Paulo e algu-mas filiais espalhadas pelo Brasil;

• A matriz da empresa precisa analisar em tempo real as informações gera-das pelas filiais: cadastros de novos clientes, vendas, ordens de serviços, orçamentos etc.;

• As filiais necessitam de aprovação de

determinadas ações das filiais, como nos casos de ordens de compra. Sen-do assim, uma vez que os dados es-tejam centralizados na matriz, quais-quer alterações serão replicadas para as filiais e vice-versa.

No caso de uma falha em qualquer um des-ses servidores, após sua resolução, os dados serão atualizados de forma que nada seja perdido e o processo de negócios continue com a menor taxa de impacto possível, redu-zindo o risco de prejuízos.

No mundo realVocê pode adaptar esse cenário para a sua necessidade com a finalidade de verificar se e quando é necessário ter replicação de da-dos na sua empresa.

No mercado de SGBDs (Sistemas Geren-ciadores de Bancos de Dados) atuais, é praticamente inexistente um sistema que não tenha o recurso de replicação de da-dos, uma vez que ele passou a ser priorida-de e item de suma importância para quem precisa consumir a informação armazenada rapidamente, sem preocupações em rela-ção à disponibilidade dos dados.

Replicação ou espelhamento?Até pouco tempo atrás, o espelhamento - no caso dos bancos de dados - era diferente da replicação que temos hoje. A replicação tinha algum retardo, levava algum tempo para atualizar os outros servidores, enquanto o es-pelhamento consistia em manter uma cópia fiel em tempo real do servidor em outro local.

Page 51: Revista iMasters #10

Tecnologia do futuro < 51

Atualmente, a replicação pode ter o mesmo efeito de um servidor espelho, quando bem configurado, e o retardo, se existente, é muito pequeno, possuindo alguns milissegundos. No entanto, para fins didáticos do conceito de ambos os recursos, o espelhamento de vo-lumes lógicos (locais onde são armazenados os dados) são tratados como volumes físicos presentes em uma infraestrutura única, o que não acontece na replicação, na qual os volu-mes podem estar em diferentes arquiteturas e infraestruturas, remota ou localmente.

Replicação no MySQLA replicação de dados em servidores MySQL é bastante facilitada e trabalha basicamente com a configuração de binários. No cenário exemplo deste artigo, vamos trabalhar com apenas dois servidores. Ambos devem pos-suir o parâmetro server-id configurado, para que seja mais fácil identificá-los.

Não é o objetivo deste artigo ensinar a insta-lação do servidor MySQL, então vamos par-tir da premissa de que você já possui duas instâncias do MySQL instaladas em dois ser-vidores, que em meu exemplo terão os IPs 192.168.11.1 (master principal, que será o servidor que sofrerá efetivamente todas as al-terações) e 192.168.11.2 (o slave), e ambas as versões são 5.1.x.

Nesse cenário, a máquina master possui um banco de dados chamado finance e que será replicado para o servidor escravo. O servidor escravo possui um usuário previamente cria-do chamado adamante e que possui aces-so ao banco de dados que será replicado. No arquivo my.cnf, deverá ser configurado o

banco de dados a ser replicado e o server-id do servidor master seguinte:

como manter os dados dos seus servidores de bancos de dados replicados de forma que estejam sempre

disponíveis em uma eventual falha no sistema

log-bin = /var/log/mysql/mysql-bin.log

binlog-do-db=finance

server-id=1

log-bin = /var/log/mysql/mysql-bin.log

replicate-do-db=finance

server-id=1

GRANT REPLICATION SLAVE ON *.* TO ‘adamante’@’%meudominio.com.br;

FLUSH PRIVILEGES;

USE finance;

FLUSH TABLES WITH READ LOCK;

O servidor escravo poderá sofrer a mesma alteração no arquivo my.cnf, no entanto, seu server-id será 2 (server-id=2):

Reinicie o servidor de banco de dados master e em seguida execute os comandos que irão garantir os privilégios necessários ao usuário adamante (presente no servidor escravo) para que este tenha acesso à replicação de dados do servidor master:

O próximo passo consiste em bloquear a ta-bela para receber dados, de forma que pos-samos realizar um dump completo para a primeira carga de dados no servidor escravo.

Page 52: Revista iMasters #10

52 > Tecnologia do futuro

Dessa forma, todas as tabelas do banco de da-dos finance estarão congeladas para que seja possível criar um arquivo de exportação íntegro.

É possível fazer a exportação do arquivo dump do banco de dados de duas formas: a primeira utilizando o comando mysqldump + nome da tabela e gerando um arquivo .sql que poderá ser importado no servidor es-cravo posteriormente, ou então através do nome do binário de dados, o que pode ser mais interessante caso sua massa de da-dos seja muito grande.

Vamos trabalhar com o comando mysqldump que é bastante ágil e atende à maioria dos ce-nários atuais de pequenas e médias empre-sas. Vamos criar uma cópia do banco finance em um arquivo .sql que será transportado para o servidor escravo e que servirá para deixá-los idênticos nesse primeiro momento - lembrando que as tabelas do servidor mas-ter permanecem bloqueadas pelo comando LOCK enviado anteriormente. Execute o co-mando com o usuário root da máquina mas-ter (isso também poderia ser feito com algum usuário que tivesse permissões para expor-tação de dados, como o usuário adamante presente no servidor escravo):

mysqldump --u root --p 123456 --database finance > finance_export.sql

CHANGE MASTER TO MASTER_HOST=192.168.11.1’, MASTER_USER=’adamante’, MASTER_PASSWORD=’123456’, MASTER_LOG_FILE=’mysql-bin.000159’, MASTER_LOG_POS=114;

SLAVE START;

+------------------+----------+--------------+------------------+

| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |

+------------------+----------+--------------+------------------+

| mysql-bin.000159 | 114 | finance | manual,mysql |

+------------------+----------+--------------+------------------+

mysqldump --u adamante --p 123456 --database finance < finance_export.sql

Uma vez exportados os dados, teremos um arquivo .sql contendo todo o conteúdo do banco de dados finance. Copie esse arquivo .sql para o servidor escravo, crie um banco de dados com o mesmo nome (finance) nes-se servidor e importe o arquivo .sql que cria-mos para populá-lo com os dados.

Reinicie o banco de dados escravo para que as configurações tenham efeito e em segui-da vamos coletar uma informação importante para finalizar a configuração da replicação: o local do binário de dados. Execute o co-mando SHOW MASTER STATUS; no servidor

master de forma que tenhamos um resultado parecido com este:

Veja que o binário do banco de dados finan-ce possui o nome mysql-bin.000159 e sua posição é 114.

No servidor masters, vamos informar de onde os dados serão recebidos através do coman-do CHANGE MASTER.

Isso finaliza a configuração da replicação en-tre os dois servidores. Desbloqueie as tabelas do servidor master com o comando UNLOCK TABLES; e a partir de então todas as altera-ções realizadas no servidor master serão re-plicadas no servidor escravo.

Futuramente vou abordar a replicação de da-dos em outros SGBDs. Até lá! </>

flávia Jobstraibizer é gerente de projetos, editora--chefe das Revistas Linux Magazine e Admin Magazine, analista de sistemas, autora de livros de informática e defensora da liberdade digital. http://flaviajobs.com.br | @flaviajobs

Page 53: Revista iMasters #10

Informações e dicas sobre projetos Open SourcePor Kemel Zaidan, membro da comunidade de Software Livre brasileira e Editor da revista iMasters

jQuery-maskMoneyTrata-se de um plugin para o jQuery, popular biblioteca JavaScript que permite mascarar a entrada de dados numéricos em um formulário HTML para formato de moeda. Há opções para utilizar os símbolos monetários (ex.: R$, US$, € etc.) antes ou depois do valor, exibir separado-res de casas, separador decimal como vírgula ou ponto, e exibição de número negativo; tudo isso com uma baixa curva de aprendizado. http://ow.ly/w1UHu

DoseÉ uma ferramenta gráfica em forma de semáfo-ro e escrita em Python que exibe o estado dos testes que são normalmente utilizados em dojos (TDD, ou test driven development, na sigla em inglês). O programa utiliza a biblioteca gráfica wxPython e pode funcionar facilmente com su-ítes de testes de praticamente qualquer lingua-gem, incluindo JavaScript, C, Bash Script, Ruby e, obviamente, Python. http://ow.ly/w1WOy

PencilÉ uma ferramenta de código aberto para a pro-totipagem de mockups e interfaces de usuário. Além de estar disponível para todas as platafor-mas (Windows, Linux, Mac etc.), pode ser insta-lada como uma extensão do Firefox ou como um programa autônomo. Entre seus recursos estão o suporte para diagramas de fluxo e diferentes coleções de objetos de design (como botões, menus, caixas de diálogo etc.), que podem ser utilizados facilmente para o projeto de interfaces. Além das coleções disponíveis, é possível instalar mais algumas a partir do site e de contribuições da comunidade. http://ow.ly/w22Fu

HomebrewO projeto se autodenomina “o gerenciador de pacotes que faltava ao Mac OS X” e se propõe a facilitar a instalação de diversos softwares e fer-ramentas de desenvolvimento que são muito uti-lizados e que foram propositalmente deixados de fora do sistema operacional pela Apple. O pro-grama é escrito em Ruby e cada software é ins-talável através de um script Ruby simples deno-minado “formula”. São mais de 2700 softwares e bibliotecas instaláveis por meio do programa. http://ow.ly/w1Ynj

LimeÉ um clone 100% livre do editor de texto mais hipster do momento, o Sublime Text. Ao con-trário de seu irmão mais famoso, o Lime é es-crito em Go e dividido em backend e frontend, sendo que o primeiro já suporta a maior parte dos recursos do Sublime, como a compati-bilidade com os esquemas de cor do Text-Mate, as definições de sintaxe, os snippets, a API de plugins em Python e os múltiplos cur-sores. No frontend, há diversas opções, ainda em estágio inicial de desenvolvimento, como qml, HTML e até mesmo linha de comando. http://ow.ly/w21dg

Kemel Zaidan é membro ativo da comunidade de soft-ware livre brasileira e um defensor das causas ligadas à inclusão digital e ao conhecimento livre. No campo profissional, já coordenou projetos de educação e in-clusão em entidades do terceiro setor e foi editor-chefe da Linux Magazine, tendo palestrado nos mais diver-sos eventos da área de tecnologia. Nos últimos anos, tem se dedicado a pesquisar o universo da cultura di-gital e seus desdobramentos.

código Livre < 53

Page 54: Revista iMasters #10

Por que contratar serviços especializados em WordPress?Por Leandro Vieira, cEO da apiki WordPress

Ao escolher o WordPress, você fará uma boa escolha para o seu negócio. Quem toma essa decisão precisa estar seguro e seguir con-fiante, e para te ajudar vou apresentar alguns bons e sólidos motivos para a sua escolha.

Antes de mais nada, certifique-se de que o WP é a melhor escolha - sim, pode ser que não seja a melhor para você. Depois, conhe-ça os tipos de serviço e toda as possibilida-des. Tudo isso é necessário antes de contra-tar uma empresa especializada.

Atualmente, o WordPress tem a maior de par-ticipação de mercado entre os CMS (Content Manager Service), com 21,8% e crescen-do. Não possui custo de licença e é código

aberto. Além disso, possui uma comunidade incrível e participativa, de pessoas que são apaixonadas pela plataforma. Novas versões são lançadas periodicamente, o que o torna sempre atualizado, sem falar na interface in-tuitiva, que facilita o uso pelos editores. A pla-taforma ainda é amigável para as ferramentas de busca e pode ser facilmente integrada a inúmeras plataformas sociais.

Com sua popularidade e adesão, tanto por empresas como por desenvolvedores diver-sos, você não fica refém de um único fornece-dor, e a troca de prestador de serviço, quando for o caso, torna-se facilitada. No Brasil e no mundo, já temos empresas e casos de uso muito expressivos. O importante é você saber

Imagem: Ingvar Bjork / Shutterstock.com

Page 55: Revista iMasters #10

o que deseja, aonde quer chegar e encontrar algum serviço baseado em WordPress.

O WordPress oferece inúmeros temas, pron-tos ou personalizáveis, para dar vida às suas ideias, e o investimento nisso é mínimo. O sis-tema também oferece dezenas de milhares de plugins, que agregam novos recursos e funcio-nalidades à plataforma - você pode usar um plugin já existente ou desenvolver algum que atenda melhor às suas necessidades. Como os números são superlativos, é importante fi-car atento a importantes detalhes.

Esqueça o WordPress, pense no seu projetoO desenvolvimento personalizado em Word-Press é o caminho que lhe permite esquecer a plataforma e focar no seu projeto, pensando na ideia, na arquitetura de informação, no de-sign, na implementação do design responsivo. Você só precisa confiar o trabalho a especialis-tas que farão tudo acontecer, do jeito que você planejou. Não existe limite, ou ele pode ir até onde forem sua criatividade e ousadia.

Alguns projetos de Internet são monitorados com ênfase em performance e resultados, gerando atualizações constantes no site de-senvolvido. Portanto, lembre-se de que o seu fornecedor deve te atender com serviços de suporte, melhorias evolutivas e desenvolvimen-to contínuo, para levar seu projeto sempre ao próximo estágio. Contratar uma empresa de hospedagem, na hora de publicar o seu site, também não é um problema - praticamente

Fonte: http://w3techs.com/technologies/history_overview/content_management/all/q

todas as empresas de hosting já possuem um produto direcionado para WordPress, algumas até com suporte especializado.

Por falar em suporte, é comum que o forne-cedor ofereça um treinamento inicial para que você conheça bem a plataforma e se sinta confortável. No mercado também são oferta-dos cursos especializados em WordPress fo-cados em gestores de conteúdo e desenvol-vedores. Assim, você garante conhecimento técnico para o seu time e pode até contar com soluções in house.

Com tanta flexibilidade, você terá liberdade para focar em seu negócio, gerir seu conte-údo e dar ênfase ao marketing de conteúdo através do WordPress, aplicando facilmente técnicas de otimização para mecanismos de busca, integrações sociais, landing pages, Google Analytics e o que precisar.

Ah, e atente-se para o fato de que o tama-nho do seu negócio não é fator determinante. WordPress é para empresas grandes e para aquelas que pensam grande. Há serviços di-recionados para todo público, e as pequenas e médias empresas ganham cada vez mais atenção e espaço. A sigla PME sempre teve espaço junto ao WordPress.

Leandro Vieira Leandro Vieira é uma das grandes refe-rências de WordPress no Brasil, entusiasta e evangelis-ta da plataforma. Fundador e CEO da Apiki, empresa especializada no desenvolvimento web com WordPress. [email protected] | @leandrovieira

WordPress < 55

Page 56: Revista iMasters #10

56 > Node.JS

A idéia de poder utilizar apenas JavaScript tanto no client-side quanto no servidor é o trending do momento. NodeJS está aí, e já vemos grandes cases de empresas migrando plataformas, escalando e reduzindo custos.

Mas e como colocaremos em produção? Usarei neste artigo um Cloud Server Pro da Locaweb, com o Sistema Operacional Debian com configuração mínima 512 MB de RAM, e você pode usar estes passos para instalar em qualquer máquina Debian, ou em outra dis-truição Linux, com algumas diferenças.

Depois de conseguir acesso ssh ao seu servi-dor, via chave privada, vamos passar por to-dos os passos até você conseguir utilizar uma aplicação em produção, na porta 80.

Preparando para instalar

Vamos precisar do python e do wget, e va-mos instalá-los:

Configurando NodeJS em produção em um Cloud Server

Por William Bruno, desenvolvedor front-End da Locaweb

Execute cada um dos comandos abaixo in-dividualmente, esperando o anterior terminar para enviar o próximo:

apt-get install wget python vim

wget http://nodejs.org/dist/v0.10.26/node-v0.10.26.tar.gz

tar xvf node-v0.10.26.tar.gz

pushd node-v0.10.26

Depois decompactamos:

Pressione TAB após digitar “node” para com-pletar o nome do arquivo.

Digite apenas node e pressione TAB novamente.

./configure

make

make install

node -v

Após alguns minutos para testar, digite apenas:

No terminal, você deverá ver algo como:

v0.10.26

Tudo certo, NodeJS instalado e funcionando. Após isso, você pode apagar o diretório que usamos e o tar que foi baixado:

Eu sempre instalo o VIM, pois estou mais familiarizado com ele.

Instalando o NodeJS

Copie o link de download do source code mais atual no site: http://nodejs.org/download/

No momento em que escrevo este artigo, a versão é 10.26.

Vamos baixar diretamente para o servidor utilizando wget:

Page 57: Revista iMasters #10

Node.JS < 57

Criei apenas duas rotas para testar a aplicação.

Feito isso, deixe uma aba rodando o servidor Node, com o comando:

rm -r node-v0.10.26*

rm -r node-v0.10.26*

/var/www/seusite.com.br

Hello World

Nesse ponto, você pode subir a aplicação NodeJS que desenvolveu localmente, utili-zando um git clone, rsync ou outra forma de deploy que preferir.

Vou fazer um Hello World bem simples com o Express para continuarmos a ver como deixar o servidor rodando e configurar as dependências.

Instale o expressjs globalmente:

Iremos utilizar o diretório:

Como root da aplicação. Dentro dele, crie um arquivo chamado app.js com o conteúdo:

var express = require(“express”), app = express();app.get(‘/’, function(req, res){ res.send(‘Hello World’);});app.get(‘/node’, function(req, res){ res.send(‘/node’);});app.listen(3002);

node app.js

curl http://localhost:3002

E em outra aba ssh, faça um teste digitando:

O output do terminal será um “Hello World” como escrevemos no app.js

Nginx como proxy reverso

Deixamos a aplicação node rodando na por-ta 3002 (escolha qualquer porta de número alto) e, para acessarmos via http, a partir do browser, vamos utilizar o nginx como proxy reverso, escutando a porta 80 para direcionar as requisições para o node.

Por boa prática, sempre configure o seu fi-rewall para bloquear todas as outras portas, liberando somente aquelas que forem neces-sárias, como a 80 do http, e a 22, caso você não tenha mudado a porta do seu ssh.

apt-get install nginx

Caso tenha algum problema na instalação de algum pacote, limpe tudo daquela instalação usando o comando:

apt-get purge nome_do_pacote

server {

listen 80;

server_name seusite.com.br;

root /var/www/seusite.com.br/;

if ($http_host != “seisite.com. br”) {

rewrite ^ http://seusite.com. br$request_uri permanent;

}

Assim, além de desinstalar, vai limpar todos os vestígios dele.

Depois de instalado, vamos configurar o nginx. Crie o arquivo “seusite” no diretório /etc/nginx/sites-available, com o conteúdo abaixo:

Page 58: Revista iMasters #10

58 > Node.JS

location / {

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header X-Forwarded- For $remote_addr;

proxy_set_header Host $host;

proxy_pass http:// localhost:3002;

}

location ~* \.(?:ico|css|js|gif|jp e?g|png|ttf|woff)$ {

access_log off;

expires 30d;

add_header Pragma public;

add_header Cache-Control “public, mustrevalidate, proxy-revalidate”;

proxy_pass http:// localhost:3002;

}

location = /robots.txt { access_ log off; log_not_found off; }

location = /favicon.ico { access_ log off; log_not_found off; }

location ~ /\.ht {

deny all;

}

}

Vamos deixar o nginx escutando a porta 80, então se por acaso você já tiver um apache ou outro servidor nessa porta pare ele, no caso do apache, basta digitar no terminal:

service apache2 stop, ou apachectl stop

ln -s /etc/nginx/sites-available/seusite /etc/nginx/sites-enabled/seusite

/etc/init.d/nginx start

npm install -g forever

Faça um link simbólico do arquivo para a pas-ta sites-enabled:

Nessa parte, a estrutura do nginx é bem igual à do apache.

E então iniciamos o nginx com:

Feito isso, caso a aba com node app.js ain-da esteja em execução, você já conseguirá acessar o nosso Hello World pelo browser, passando pelo nginx, e o último passo para deixar em produção é usar um serviço para que você não precise ficar com o terminal aberto, para rodar o servidor node.

usando o forever

Instale-o via npm

Basicamente, você usará poucos comandos dele por enquanto:

• forever list: mostra todos as aplica-ções node que estão em execução

• forever start/stop: inicia ou para um servidor node

• forever restartall: reinicia todas as aplicações

E como eu não iniciei o forever com watch, a cada alteração que você fizer nos arquivos precisará reiniciá-lo.

É isso, pessoal, temos um servidor Debian rodando NodeJS na porta 3002, com o nginx como proxy reverso na porta 80!

Até a próxima!

William Bruno é Desenvolvedor Front-End da Loca-web, apaixonado por JavaScript, estará estudando matemática, design patterns ou boas práticas de programação sempre que você o encontrar. [email protected] | @tiu_uiLL

Page 59: Revista iMasters #10
Page 60: Revista iMasters #10

60 > Sr. conteúdo

Você, cada vez mais próximoPor Bruno Rodrigues, consultor de informação e comunicação digital.

Para o bem ou para o mal, a Copa do Mun-do no Brasil colocou o país em outro patamar de relacionamento, dentro e fora da fronteira: agora não somos mais apenas reativos, que-remos – e podemos – nos relacionar melhor com nossos públicos, seja à distância ou pre-sencialmente. Mais que aproveitar uma opor-tunidade, ir além é um baita desafio.

Fazer contato (e ele surtir efeito) é sempre uma incógnita, e o sucesso de uma empreita-da depende inteiramente de você, aquele que se coloca à disposição, todo o tempo, para dar informações, resolver problemas, agradar.

Se queremos estar um passo adiante, como criar relacionamentos maduros, duradouros e eficazes?

As mídias sociais, por exemplo, pedem um contato mais profundo do que aquele com que estávamos acostumados há décadas, e que acontecia, até então, em outros canais de atendimento.

A palavra oral ou escrita, ferramenta de tan-tos outros meios, aqui se faz matéria-prima da construção de uma relação realmente es-tratégica, e vai além da solução de problemas pontuais ou de uma mera disponibilização de informações.

Como, então, utilizá-la da melhor maneira, aproveitando todo o seu potencial?

Que fique claro que, nas redes, relacionamen-to e escrita são dois lados de uma mesma

moeda. Enquanto o relacionamento trabalha o emocional e o subjetivo, a palavra traba-lha o racional e o lado objetivo do contato. O relacionamento trata e cuida do usuário, a escrita entrega o que é esperado da marca. É impossível desvincular um do outro, pois eles se mesclam o tempo todo, e por isso é im-portante criar bases sólidas na construção de um bom relacionamento e usar a palavra para concretizá-lo.

Nas mídias sociais, assim como nos outros canais, existem seis momentos no contato com o cliente: recepção, dúvida, reclamação, crise, manutenção e fechamento.

Vamos checar cada um deles e investigar como relacionamento e palavra se compor-tam nas redes:

■ recepção - Nas mídias sociais, o com-portamento é bem diferente de um chat ou contato telefônico. Como já dito, aqui o que se deseja é a construção de uma relação, não um atendimento pontu-al. Nenhuma marca deve perder tempo criando perfil ou fanpage para questões específicas, pois já existem outros meios e canais para resolvê-las. A marca, na rede, deve ser como uma bem preparada recepcionista no stand de uma feira: sim-pática, prestativa e bem informada. Ela está ali para fazer o visitante se interessar pelo que a marca tem a mostrar.

■ A boa recepção é o momento da identi-ficação, é ali que o relacionamento surge

Page 61: Revista iMasters #10

Sr. conteúdo < 61

– e é com a palavra que ele começa a se concretizar. Trate-o pelo nome, sem-pre, e esqueça o ‘senhor’. O objetivo é a aproximação. E como você representa a marca, faça-o perceber que ele está fa-lando com uma pessoa, não uma máqui-na. Mostre que você é alguém prepara-do para iniciar um relacionamento. Seja simpático, prestativo e bem informado – como a recepcionista do stand.

■ dúvida - Faça com que com a pergunta do cliente seja percebida como a ques-tão mais importante do dia, porque, para ele, ela realmente é. Se você tem a res-posta, dê na hora. Se for uma pergunta específica e você não tiver a resposta, solicite uma forma reservada de contato. Contudo, se não tiver a resposta, e ela for importante para todos os que seguem ou frequentam o seu perfil/fanpage, diga quando a terá. E sem medo de mostrar que (ainda) não sabe.

■ Cumpra o prometido: no dia e hora anun-ciado, esteja lá, e faça com que sua res-posta seja vista por todos e especialmente por quem perguntou – as redes nos dão esses recursos para que eles sejam usa-dos. Depois, ‘cerque’ a resposta. Apro-veite o meio e converse com o usuário. Pergunte sobre a percepção da marca. Se ele gosta dos produtos. O que poderia ser melhorado. Este é um momento precioso, não o desperdice como se estivesse em canais com menos recursos.

■ reclamação - Neste caso, a reclama-ção do cliente não deve ser percebida como a questão mais importante do dia, mas a do ano. Ligue o alerta vermelho. Um usuário insatisfeito em uma rede so-cial é capaz de iniciar um incêndio de proporções devastadoras, arranhando a imagem de uma marca para sempre. Detenha-o. Converse com ele. Nos bas-tidores, mobilize quem for preciso, mas na rede continue no controle da situ-ação. Jamais interrompa o contato e, em especial, tente perceber o nível de tolerância e o timing de quem está recla-mando, ou seja, qual informação irá fazer com que ele pare, pelo menos momenta-neamente, de reclamar – e, portanto, de espalhar sua insatisfação -, e em quanto tempo ele espera que a questão seja re-solvida. Lembre-se de que ele está em uma mídia eternamente ‘ligada’ e de que a irritação pede tudo para ontem. E de que todos estão vendo. Controle a si-tuação com muita informação: esta é a melhor arma.

■ Crise - Neste cenário, tudo saiu do con-trole e não há nada que satisfaça o clien-te. Ele usa a rede social para espalhar a insatisfação. Perceba: é simplesmente impossível apagar um incêndio dessas proporções. Em muitos casos, ele ultra-passará as redes e invadirá blogs, portais, televisão, jornais impressos. E não escon-da nada, pois a mentira escorrerá pelos seus dedos, como tudo na Internet. Seja transparente e assuma os erros. Esta é a etapa do aprendizado mais difícil, doída

“Enquanto o relacionamento trabalha o emocional e o subjetivo, a palavra trabalha o racional e o lado

objetivo do contato. O relacionamento trata e cuida do usuário, a escrita entrega o que é esperado da marca“

Page 62: Revista iMasters #10

Bruno Rodrigues é Consultor de Informação e Comuni-caçã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

e complicada que a realidade das redes trouxe para as marcas no meio digital. Lide com a verdade. Peça ajuda à assessoria de imprensa e espere que o incêndio di-minua, apenas. Parte da sua marca estará para sempre queimando, em algum lugar da web, para sempre. É fato.

■ Manutenção - Você precisa manter con-tato com o usuário, pois toda relação pres-supõe constância. O novo contato pode ser resultado de uma questão tranquila ou de uma crise sem precedentes. Ops! Como assim? Por que você conversaria mais uma vez com alguém que lhe causou problemas? Sejamos sinceros, porque, em muitos dos casos, ele estava certo em re-clamar. E, portanto, não pode ser descar-tado como parte do seu público.

■ Diferentemente de outros canais, superfi-ciais por natureza, nas mídias sociais não podemos nos dar ao luxo de descartar ou ignorar o que aconteceu. Com exceção de ações de usuários que são explicitamente nocivas e sem fundamento - a menor parte dos casos, a bem da verdade -, é aconse-lhável chamar o usuário antes insatisfeito para ‘tomar um café’ passada a tormenta. Manter o contato é fato, não opção.

■ fechamento - Hoje é quase regra que ações como lançamentos de produtos ou a realização de eventos tenham per-fis e fanpages para se aproximar dos pú-blicos, mas poucos se lembram de que, nas mídias sociais, o apoio dos usuários

às marcas acontece espontaneamente, e por isso merece agradecimento. Va-mos deixar de lado agências e clientes que mantêm páginas e perfis quando as ações se encerram, dando vida a verda-deiras ‘cidades-fantasma’, mas falemos de quem deseja encerrar com decência e profissionalismo um relacionamento de curto ou médio prazo. Primeiramente, agradeça. Depois, crie posts especiais de despedida. Fale de outros perfis e fanpages que porventura a marca possua nas redes. Dê brindes digitais. Marque uma data especial para a desativação. E, como consequência de tanto trabalho e atenção, receba de lambuja clientes satis-feitos, impressionados e - uau - fiéis.

Em tempo: qualquer forma de contato, na vida ou no trabalho, seja presencial ou à dis-tância, pede envolvimento. Tentar trabalhar nessa área sem paixão é como pedir que todo e qualquer esforço vá por água abaixo. E, nesse caso, não há forma de relaciona-mento ou palavra que console o usuário. </>

“Nas mídias sociais, assim como nos outros canais, existem seis momentos no contato com o cliente: recepção, dúvida, reclamação, crise, manutenção e fechamento”

62 > Sr. conteúdo

Page 63: Revista iMasters #10
Page 64: Revista iMasters #10

64 > Opinião

O futuro dos BitcoinsEm 2013, o bitcoin atingiu o maior valor de mercado em seus cinco anos de existência. impulsionado por isso, houve um aumento significativo da sua adoção por comercian-tes e varejistas. Qual a sua opinião sobre o

Bitcoin e outras moedas criptográficas? Que futuro você acredita que essas tecnologias

terão nos próximos anos?

André Horta - empreendedor e fundador do site Bitcoin2You, que permite a compra e venda de Bitcoins.

Apesar de o Bitcoin ter sido criado em 2009, agente observa que sua adoção ainda está no início sob todos os aspectos. A adoção do Bitcoin pelos varejistas e comerciantes ainda vai aumentar muito, o que pode ser observado pelo movimento que se inicia nos Estados Unidos, em grandes lojas como overstock.com, tigerdirect, entre outras. Transações financeiras utilizando criptomoe-das são mais práticas, simples e baratas, já que é possível enviar um Bitcoin do Brasil para a Chi-na tão fácil como se envia um e-mail, sem taxas bancárias, impostos ou burocracia. Bitcoin é a moeda global que pode ser utilizada por qualquer pessoa. São essas características que tornam o Bitcoin e outras moedas virtuais uma invenção tão surpreendente quanto o celular e a Internet.

diego f. Aranha - Professor do Instituto de Computação da Universidade Estadual de Campinas e especialista em Criptografia e Segurança Computacional.

Moedas criptográficas representam uma solução promissora para descentralização da in-fraestrutura financeira internacional e das relações de poder associadas. Além disso, suas realizações concretas atuais agregam uma série de inovações tecnológicas de interesse independente, como a demonstração prática de que é possível manter consenso distribu-ído, com inúmeras aplicações em potencial. Não sabemos quão realmente disruptiva será essa tecnologia frente a Estados cada vez mais controladores e bisbilhoteiros, mas é certo que não vivemos mais em um mundo onde moedas puramente digitais são impossíveis ou inviáveis de se construir.

Page 65: Revista iMasters #10

marco Gomes - empreendedor, programador e nerd.

As criptomoedas resolveram, de maneira muito elegante, um problema clássico. Com a tecnolo-gia do blockchain, é possível confirmar a autenticidade de um documento (moeda, contrato, cer-tidão) sem a centralização em uma entidade verificadora (como uma casa da moeda ou cartório), e a exploração dessa tecnologia está apenas começando, por enquanto focada em transferência de valores (como uma moeda). Com as criptomoedas, já é possível solucionar problemas insolú-veis no sistema financeiro tradicional: micropagamentos, transferências internacionais sem taxas, irreversibilidade de transações, e muito mais. Acredito que as criptomoedas serão revolucioná-rias nas transformações pelas quais a sociedade vai passar nas próximas décadas.

paulo s. L. m. Barreto - Professor Associado (Engenharia de Computação) da Poli/USP, onde obteve o doutorado em 2003 e a livre-docência em 2011.

Bitcoin, bem como outras moedas criptográficas mais aperfeiçoadas com a mesma nature-za distribuída e cooperativa (como Zerocoin), devem crescer em popularidade ao longo dos próximos anos, à medida que sua utilização se tornar progressivamente mais amigável e se não for artificialmente bloqueada por iniciativas governamentais. O principal desafio social que essas moedas enfrentarão, quero crer, será estabilizar o comportamento complexo e flutuante do câmbio, ainda típico de processos que não atingiram o equilíbrio. As tecnologias criptográ-ficas mais robustas em desenvolvimento podem favorecer decisivamente essa estabilização, se lograrem inspirar confiança proporcional da parte dos usuários.

Rodrigo Batista - CEO do MercadoBitcoin.com.br. Formado em computação pelo IFSP, em Administração de Empresas pela USP e é pós-graduado em Engenharia Fi-nanceira pelo PECE-USP.

Por que as moedas virtuais vieram pra ficar? Elas são uma das tecnologias de maior crescimento atualmente. E qual o motivo disso? Acredito que a principal reposta para essa pergunta é estar-mos em um mundo em que as pessoas se conhecem, se comunicam, trabalham e até mantêm relacionamentos amorosos umas com as outras, independentemente de em que parte do mundo estejam. Contudo, nesse ambiente global, sempre houve a falta de uma maneira de elas pagarem umas às outras de maneira eficiente, barata e fácil. Assim, se eu tenho aula de inglês com o profes-sor em Dublin por Skype, como pagá-lo?

O Bitcoin, ao ser criado em janeiro de 2009, trouxe essa solução simples de transações financeiras, em que não dependemos de intermediários caros para fazer pagamentos presencialmente ou pela Internet. Com a criação das moedas virtuais, não precisamos de empresas de envio de dinheiro, ou de cartão de crédito para pagar o professor de inglês na Irlanda ou quem quer que seja. O pa-gamento é praticamente instantâneo e vai direto para ele, sem que haja chance de fraude. É essa necessidade simples e básica de mover dinheiro que faz o sucesso do Bitcoin, e que garante que as moedas virtuais chegaram e não vão mais embora.

Opinião < 65

Page 66: Revista iMasters #10

Comenta-se muito sobre a tecnologia revo-lucionária chamada cloud computing, a qual utiliza um pool de recursos físicos, distribu-ídos em servidores virtuais de forma redun-dante e isolada, denominados no mercado como cloud servers. Sua lista de benefícios é vasta, como a redundância de hardware, a fácil e rápida escalabilidade vertical e hori-zontal, a redução de custos tanto por sazo-nalidade como por precisão no dimensiona-mento e a rapidez no aprovisionamento por uso de templates prontos.

E como praticamente ocorre com toda che-gada de uma nova tecnologia, é comum o mercado questionar a continuidade das tradi-cionais. Aconteceu com a televisão ao termos a Internet difundida, aconteceu com o e-mail com a expansão das redes sociais e agora muitas vezes é questionado se o servidor pu-ramente físico, comumente referenciado no mercado como servidor dedicado, ainda tem seu espaço em novos projetos.

O fato é que, apesar dos avanços conquis-tados com a nova tecnologia, assim como os outros exemplos citados, ainda existem características únicas que apenas os tradicio-nais servidores dedicados podem oferecer, como a alta densidade de recursos, a veloci-dade de leitura e gravação em dispositivos de armazenamento como discos e SSDs e a re-siliência que esse mix oferece. Benefícios que são muito úteis em projetos que envolvem servidores de e-mail, servidores de banco de dados, entre outros que necessitam de uma quantidade maior de recursos.

Certamente não se deve desconsiderar o impacto que os cloud servers geraram no mercado, mas este se adaptou, dividindo-se em duas linhas de IaaS (Infraestructure as a Service), seguindo orientações de raciocínio

66 > Servidores

O servidor dedicado morreu?Por Lucas Vanzi, diretor e co-fundador da EVEO cloud.

Page 67: Revista iMasters #10

de teorias de marketing, como a estratégia do oceano azul, publicada em 2005 por W. Chan Kim e Renée Mauborgne, que diz que em um mercado tão concorrido a melhor estratégia é sempre se especializar em um nicho, de forma que não haja concorrência tão direta a ponto de ela prejudicar os players com redu-ção exagerada de preços.

O que aconteceu, então, com o mercado de servidores dedicados? Grandes fabricantes de servidores enxer-garam essa divisão de linhas, e passaram a fabricar servidores com especificações enaltecendo suas características. Temos servidores hoje com mais slots para dis-positivos de armazenamento, que podem ser aproveitados para disposições em array (RAID) com latências praticamente nulas na leitura e gravação de dados e com mais espaço para armazenamento. Vemos ainda o aumento na concentração de processa-dores, com vários cores em cada CPU e pentes de memórias extremamente den-sos. Tudo isso ocupando o mesmo espaço, consumindo a mesma energia e custando praticamente o mesmo preço de sempre.

O que ganhamos com isso?Ganhamos duas linhas de produtos total-mente distintas e com características únicas que podem ser aproveitadas em cada proje-to. Podemos ter aplicações simples, que não teriam recursos financeiros para lançamentos em servidores dedicados, tornando-se viáveis

por usarem cloud servers, bem como cam-panhas de marketing sazonais lançadas com investimentos condizentes com a realidade e prontas para ser escaladas em caso de um sucesso acima do planejado.

Os servidores dedicados de altíssima den-sidade podem ser utilizados para aglutinar operações em menos servidores com recur-sos verticais, reduzindo a necessidade de grandes e complexos projetos de balancea-mento de carga entre vários e menores cloud servers com recursos horizontais. Podemos, ainda, ter servidores de bancos de dados e e-mails operando de forma mais rápida e di-nâmica, dada a capacidade de leitura e gra-vação característica da linha.

Nesse sentido, ainda temos estruturas mis-tas, nas quais, por exemplo, hospedamos a aplicação em alguns cloud servers e o banco de dados em servidor dedicado, aproveitan-do assim as principais características de cada arquitetura para melhor atender a cada ponto de um projeto mais elaborado.

Então, respondendo à pergunta título, o servi-dor dedicado não morreu. Longe disso, evo-luiu bastante e se tornou distinto de servido-res virtuais a ponto de atender a seu próprio nicho de negócio. Ele continuará crescente, principalmente no mercado corporativo, no qual o fator principal na tomada de decisão é a resiliência, e os recursos financeiros neces-sários para isso são justificáveis. </>

Lucas Vanzin é Diretor e Co-fundador da EVEO Cloud. Formado em engenharia elétrica e com MBA em gestão estratégica pela Fundação Getúlio Vargas, é responsável por toda arquitetura tecnológica da em-presa, bem como a linha de produtos corporativos e seus nichos de mercado. [email protected] | @lucasvanzin

O servidor dedicado evoluiu bastante e se tornou distinto de servidores virtuais a ponto de atender a seu próprio nicho de negócio

Page 68: Revista iMasters #10

Três maneiras divertidas de desenvolver suas habilidades

de programação

Três maneiras divertidas de desenvolver suas habilidades

de programaçãoPor Adam Junqueira, redator de tecnologia do Grupo impacta

Se alguma vez você tentou aprender a codificar em um livro, então sabe o quão maçante esse esforço pode se mostrar. Embora esse ainda seja o método abordado em praticamente to-das as instituições de ensino do planeta, muitas pessoas não conseguem extrair o melhor de um processo de aprendizado através de livros.

Novas opções de metodologia surgem dia-riamente com o intuito de agradar a diversos tipos de público, principalmente na Internet, onde é possível encontrar cada vez mais cur-sos práticos, com transmissão e interação ao vivo. No entanto, muitos desses cursos ainda conseguem ser entediantes e cansativos, prin-cipalmente para iniciantes ou para quem quer aprender uma função específica da linguagem.

Pensando nisso, diversos desenvolvedores têm criado jogos voltados para o ensino de técnicas e para estimular as habilidades de desenvolvi-mento, uma forma mais divertida e informal de treinamento, que favorece o aprendizado atra-vés da prática, frequência de uso, ambientação e familiaridade com ferramentas.

Destacamos aqui três opções distintas dentre as tantas disponíveis para apresentar como essa maneira peculiar de apresentar conceitos

de programação pode ser efetiva, graças ao seu tom recreativo e capacidade de manter o usuário sempre voltando para aprender mais.

Code CombatPara quem deseja aprender JavaScript e não tem muita – ou mesmo nenhuma – experiên-cia com a linguagem, o Code Combat é o jogo ideal, por introduzir seus conceitos de forma gradativa, desde os mais simples, como com-portamento pré-programado e condicional, até mais avançados, como cálculos.

68 > desenvolvimento

Page 69: Revista iMasters #10

O jogo é muito bem ambientado em um cená-rio de fantasia medieval, tornando a sensação de aventura presente em todos os processos de aprendizado. O usuário assume o papel de cavaleiros, magos e outros guerreiros em ce-nários nos quais deve usar habilidades de co-dificação para executar diferentes ações a fim de derrotar as hordas de adversários malignos, subir de nível e passar pelas diferentes fases.

Um ponto muito interessante desse jogo gra-tuito é que, como foi lançado em 2013, ele ainda está em desenvolvimento, e o time por trás de sua criação o tornou completamen-te open source, permitindo que os usuários criem suas próprias fases.

www.codecombat.com Open source | Gratuito | Português

CodewarsVoltado para usuários de Ruby, JavaScript e Coffeescript, ao Code Wars falta o apelo visual do jogo anterior, mas sobra charme graças à temática voltada às artes marciais e samurais. Mais indicado para desenvolve-dores com boa noção das linguagens, o jogo trabalha as habilidades do usuário através de desafios e kata, que uma vez completados garantem ao jogador pontos de honra para que suba para o próximo nível e libere desa-fios de programação mais complicados.

A cereja do bolo é um reconhecimento aos es-forços dos jogadores mais habilidosos: quem conseguir vencer o personagem Gridmancer, ganha a ajuda do pessoal do Code Combat para conseguir um emprego em San Francisco, Califórnia, como programador.

O ambiente promove a interação entre os joga-dores, premiando aqueles que escrevem seus próprios kata, deixam comentários nos kata de outras pessoas e indicam o jogo para amigos com pontos de honra. O Code Wars também possui uma comunidade grande e ativa, o que ajuda bastante na acolhida de novatos, no ne-tworking e na colaboração coletiva.

Os desafios apresentados são ao mesmo tem-po divertidos e úteis, porém o jogo peca por não ser tão intuitivo como o Code Combat, e por ter poucas instruções, forçando o jogador a fazer muitas pesquisas para solucionar pro-blemas. Apesar de ser um processo mais lento, é uma grande experiência para sentir como o trabalho de programação realmente funciona.

Lado a lado com o ambiente colaborativo, a grande vantagem do Code Wars é permitir que você teste seus próprios códigos. A varieda-de de linguagens também conta muito a favor

desenvolvimento < 69

Page 70: Revista iMasters #10

dele, principalmente se levarmos em conta que já existem planos para a inclusão de outras, como Python, Java, PHP e Objective-C.

www.codewars.com Open source | Gratuito | Sem tradução

Code SchoolAo contrário dos outros dois jogos, que podem atrair tanto entusiastas de longa data quanto curiosos, o Code School é indicado somente para quem realmente deseja se dedicar a fundo à codificação. O motivo é claro: o jogo é pago (U$29/mês). O engajamento e a funcionalidade do site, além do vasto portfólio de cursos, tor-nam o investimento válido, no entanto.

Com uma conta, o usuário pode fazer quantos cursos e desafios desejar e trocar de um para o outro à vontade, tendo como opção trabalhar com desenvolvimento em Ruby, HTML/CSS e iOS, além de ferramentas como Chrome De-vTools, Google Drive API e Git.

Embora tenha menos características que o con-figurem como um jogo de fato – cada lição con-siste em uma apresentação de vídeo seguida por desafios –, o sistema de pontuação, no qual cada questão tem um valor, que é reduzido caso sejam solicitadas dicas, funcionava com recom-pensas em forma de vouchers de desconto para uso no site. Graças à crescente popularidade do jogo, esse sistema foi derrubado e no momento as pontuações não servem para nada, exceto medalhas no seu perfil, mas a equipe por trás dele já está trabalhando em soluções.

Uma grande vantagem do Code School é o Hall Pass, um voucher que garante dois dias

70 > desenvolvimento

Page 71: Revista iMasters #10

gratuitos para que os usuários testem o site e os desafios antes de se inscrever.

www.codeschool.com Código fechado | Pago | Sem tradução

CodecademySeguindo a mesma premissa do Code School, o Codecademy é um site voltado para treina-mentos completos de habilidades de codifica-ção em uma grande variedade de linguagens como HTML/CSS, jQuery, JavaScript, PHP, Python e Ruby. Os seus maiores diferenciais são o vasto portfólio e o fato de ser gratuito.

Mais do que um lugar para praticar e afiar seus conhecimentos através de desafios, o site é uma grande comunidade colaborativa em que programadores e desenvolvedores do mundo todo se reúnem para trocar experiências, so-lucionar problemas, encontrar parceiros para projetos e até mesmo oportunidades de tra-balho. Sendo open source, os usuários podem criar seus próprios cursos e desafios e lançá--los para a comunidade.

Desde o seu primeiro passo no site, o usuário se sente em casa. Isso se dá graças à ambien-tação, ao design e à interatividade, que juntos dão uma pegada familiar à experiência. A tela de apresentação – antes mesmo da tela de inscrição – já trabalha, de forma extremamente simpática, com codificação simples para aque-cer os navegantes, dando uma prévia do que encontrarão no Codecademy.

oferecidas a quem completa as tarefas e vence os desafios impostos, o que funciona como um incentivo para que usuários mais avançados passem por todas as etapas dos treinamentos, recapitulando e testando suas habilidades.

www.codecademy.com Open source | Gratuito | Sem tradução

Mesmo as habilidades mais específicas, que aparentam ser mais difíceis, podem ser desen-volvidas com facilidade em um ambiente com o incentivo correto. Os jogos são uma maneira dinâmica e prazerosa de estimular e absorver novos conhecimentos, principalmente por sua capacidade de tornar possível a mensuração de resultados e o senso de conquista.

Bonus Stage: Ano do CódigoPara quem deseja se embrenhar participa-tivamente no universo da programação e desenvolvimento, vale a pena dar uma con-ferida no projeto Ano do Código, uma inicia-tiva que visa a aproximar a programação das pessoas, mostrando através de um processo colaborativo contínuo que todos podem pro-gramar e aprender a pensar e planejar com lógica de programação.

www.anodocodigo.org.br </>

Também similar ao Code School é o sistema de reconhecimento aos feitos dos usuários: o site tem um sistema de medalhas que são

desenvolvimento < 71

Adam Junqueira é redator publicitário na equipe de marketing do Grupo Impacta e também escreve dia-riamente sobre tecnologia para o blogimpacta.com.br. No twitter, é @adamjunqueira. Colaboraram: Davi Romero (Revisão), André Ribeiro, Lucas Ohara, Wilson Divino (De-talhes Técnicos), Fernando Garcia, Miro Brito (Direção).

Page 72: Revista iMasters #10

iMasters BoxSeleção: João antônio Mangueira Envie suas sugestões de ferramentas para [email protected]

72 > iMasters box

IntelliJ IDEA é um Java IDE por JetBrains, para computadores que possuem sistema opera-cional Linux. Oferece suporte para todos os desenvolvedores que querem trabalhar com frameworks, serviços corporativos e dispositi-vos móveis. Para programação web o IntelliJ IDEA possui várias ferramentas que irão aju-dar, usando ferramentas como Spring MVC , Webflow , Reproduzir , Grails , Web Services , JSF , Struts e Flex, além de incluir assistência a códigos de programação HTML5, CSS3, SASS, LESS, JavaScript, CoffeeScript, Node.js e ActionScript.

Acesse http://ow.ly/vsTdY

intelliJ idEa

Android Studio é um ambiente de desenvolvi-mento integrado (IDE) do Google para quem quer montar aplicações para o Android. Ele está disponível para download para Windo-ws, Mac OS X e Linux. Assim como o Eclipse (com o plugin ADT), oferece uma ferramenta completa para o desenvolvimento e a depu-ração de aplicações para o SO da Google para dispositivos móveis.

Acesse http://ow.ly/vsTHj

android Studio

Page 73: Revista iMasters #10

Sidr é um plugin jQuery para a criação de me-nus secundários. É provavelmente a melhor ferramenta para adicionar facilmente menus laterais para seus projetos web, sem ter que escrever uma única linha de código. Sidr fun-ciona para menus laterais carregados de dis-positivos de toque e tem opções para casos de uso esquerda e direita. Não é apenas um menu lateral com links, você pode adicionar conteúdo e outras coisas se você quiser.

Acesse http://ow.ly/vsu29

Sidr

Code::Blocks é um IDE de código aberto e multiplataforma para as linguagens de pro-gramação C, C++ e Fortran. Trata-se de um projeto independente e criado com a cola-boração de diversos desenvolvedores ao re-dor do mundo. Sua arquitetura é orientada a plugin, de forma que suas funcionalidades são definidas pelos plugins fornecidos a ele. Ele é voltado para o desenvolvimento em C/C++, D e agora Fortran. O Code::Blocks está sendo desenvolvido para Windows e Linux, apesar de alguns usuários compilarem com sucesso para FreeBSD e Mac OS X (com alguns pro-blemas na interface). A intenção do projeto Code::Blocks é ser uma solução gratuita e de excelente qualidade, tanto para programado-res experientes quando para quem está dando os primeiros passos.

Acesse http://ow.ly/vsTOI

Lembra aquela vez que você precisou de uma boa ferramenta para ajudar no seu trabalho e não conseguiu nenhuma indicação? da próxima vez, procure no iMasters box, um agregador de serviços voltado para desenvolvedores web que reúne ferramentas específicas para esse profissional.

aqui na revista iMasters trazemos sempre alguns dos destaques do box. E você pode participar! indique a sua ferramenta favorita em http://bit.ly/indiqueumaferramenta e torne-se um colaborador do Portal iMasters!

iMasters box < 73

code::blocks

Page 74: Revista iMasters #10
Page 75: Revista iMasters #10
Page 76: Revista iMasters #10