Revista iMasters #11 - Agosto

Page 1



Expediente TIAGO BAETA Publisher LUIS LEÃO Editor RINA NORONHA (MTB 2759-ES) Chefe de Redação/Jornalista Responsável FABIO LODY Direção de Arte / Diagramação NATHÁLIA TOREZANI Revisão COLABORADORES Alexandre Alvaro, Anderson Casimiro, André Rosa, Andressa Dorneles, Bruno Koga, Bruno Rodrigues, Carine Roos, Fernanda Weiden, Filipe Cífali, Flávia Jobstraibizer, George Villasboas, Ivo Nascimento, João Batista Neto, Manoel Lemos, Mauro Pichiliani, Reinaldo Ferraz, Victor Torres. ESKENAZI INDÚSTRIA GRÁFICA Gráfica GRUPO IMASTERS Organização > 1000 exemplares > ISSN 1981-0288

Rua Claudio Soares 72, conjunto 1302, Pinheiros - São Paulo/SP CEP: 05422-030 Telefone: (11) 3063-5941 www.imasters.com.br/revista redacao@imasters.com.br Twitter: @iMasters Facebook: /PortaliMasters Os artigos assinados são de responsabilidade dos autores e não refletem necessariamente a opinião da revista. É proibida a reprodução total ou parcial de textos, fotos e ilustrações, por qualquer meio, sem prévia autorização dos artistas ou do editor da revista.


Vem aí a 3ª edição do Conexão KingHost

A KingHost sabe que abrir um negócio é só o primeiro passo, e está ao lado do empreendedor nessa! Confira as datas e os locais: 19/08

BELO HORIZONTE Hotel Ouro Minas

03/09

PORTO ALEGRE

09/10

RECIFE

JCPM Trade

Teatro do CIEE

Venha saber mais sobre: Cultura Empreendedora - Monetização - E-commerce - Marketing digital

Inscreva-se: www.conexaokinghost.com.br


Editorial Desenvolvimento único, múltiplas plataformas. Já faz alguns anos que batemos nessa mesma tecla. O conhecimento técnico já existe, mas falta planejamento ao desenvolvedor e compreensão de quem é o seu usuário e qual o motivo real do desenvolvimento. Esse planejamento é a pauta principal nesta edição, e vai além do aplicativo em si. É preciso avaliar inclusive a questão da propriedade intelectual de um software: até onde vale a pena o registro no INPI? Essa é a discussão que Alexandre Alvaro, professor da UFSCar, traz com exclusividade nesta edição. Planejar não é necessário simplesmente para que haja organização. É um passo importante para atingir a excelência enquanto profissional. É o que dará base para todas as métricas necessárias, como testes unitários e de comportamento, étricas de performance, benchmarks, dentre outras. Isso não quer dizer que não há espaço para a criatividade, ao contrário! É um dos caminhos para estimulá-la, fazendo experimentos com código, processos, ou qualquer projeto que você ainda não imaginou. Acredite, isso faz, sim, toda a diferença! Uma prova disso são os tantos profissionais brasileiros que são reconhecidos não só aqui, mas em todo o mundo. Como uma forma de premiar essas pessoas que fazem a diferença, lançamos nesta edição a coluna “Fazendo a Internet do Brasil pelo mundo”, que vai mostrar experiências e histórias de brasileiros que têm se destacado. Esse reconhecimento, no entanto, não é de agora. É o caso do Bruno Rodrigues, profissional superexperiente em gestão de conteúdo para web, nosso entrevistado. Confira o que mudou nessa área nos últimos 15 anos, e como a integração de conteúdo com SEO e Arquitetura da Informação é importante. Esses são apenas alguns dos destaques desta edição. Mineração de dados e sentimentos, a nova linguagem da Apple e o que muda no desenvolvimento para iOS, ferramentas open source para ambientes virtuais e acessibilidade, indicações de ferramentas e muito mais, você encontra nas próximas páginas. Deixe-nos saber sua opinião sobre os temas abordados. Mantenha contato conosco pelo revista@imasters.com.br Tenha uma boa leitura!

Tiago Baeta Diretor Executivo - Grupo iMasters www.imasters.com.br | redacao@imasters.com.br


6 > Sumário

20

Capa - Device-agnostic: desenvolvimento único, múltiplas plataformas

28 Aplicações Conteúdo dinâmico acessível

36 Tecnologia do Futuro Ambientes virtuais com ferramentas open source

61 Dados Minerando experiências e histórias


Sumário < 7

08 :: Entrevista > Bruno Rodrigues, consultor de informação 12 :: Por aí > Fazendo a internet do Brasil pelo mundo 14 :: Criatividade Tecnológica > A inevitável obsolescência programada 18 :: PHP > Password Hashing – API nativa para gerenciamento de senhas 25 :: Comunidade > CocoaHeads Brasil 30 :: Design de Dados > Contando histórias com visualização de dados 34 :: DIY > É hora de programar a sua casa e as coisas à sua volta! 36 :: Tecnologia do futuro > Ambientes virtuais com ferramentas open source 40 :: Propriedade > Propriedade Industrial: e o software? 43 :: Wordpress > 3 ferramentas de cache para acelerar seu WordPress 46 :: 7Masters - Encontro iMasters de Especialistas 49 :: E-commerce > E-commerce: desafios e frameworks 52 :: Sr. Conteúdo > Conteúdo para todos 55 :: Review > Apiary – Fazendo muito mais que apenas documentar 59 :: Conexão Vale do Silício > Operações sem operador 64 :: Desenvolvimento Zen > Excelência no Desenvolvimento 69 :: Mobile > Desenvolvimento para iOS - uma reflexão 72 :: iMasters Box

A iMasters é uma revista de Tecnologia/Web aberta a novas ideias. Para colaborar envie o seu material por e-mail <revista@imasters.com.br>


8 > Entrevista

Gestão de Informação Digital mais atual do que nunca

Foi no ano 2000, no início do que muitos julgam como sendo a “era da internet moderna”, que Bruno Rodrigues lançou seu primeiro livro sobre webwriting. Na época, redação para o meio online era uma novidade, assim como a própria plataforma. Em quase 15 anos, bastante coisa mudou – tanto que o livro ganhou dois novos volumes, em 2006 e um neste ano de 2014. Bruno Rodrigues, que é consultor de informação e comunicação digital, além de instrutor de webwriting e arquitetura da informação, fala, nesta entrevista, sobre as mudanças que a área de conteúdo online sofreu nos últimos anos, sua integração com SEO e Arquitetura da Informação e como profissionais de texto e de desenvolvimento podem caminhar juntos e melhor. Por Rina Noronha, para Redação iMasters


Entrevista < 9

RiM: Você foi um dos primeiros profissionais a falar sobre conteúdo para a internet no Brasil, no início dos anos 2000. E há anos cunhou a afirmação que “webwriter não é redator”. O que mudou nesta área em quase 15 anos? Em especial, o entendimento de que ‘escrever para a internet’ vai além da redação propriamente dita. No meio digital, existe a convivência de vários tipos de informação: texto, foto, ilustração, ícone, áudio, vídeo, infográfico, tabela. O verdadeiro ‘gestor da informação digital’ é aquele que, antes de tudo, entende o que é informação, independetemente do meio, e consegue trabalhá-la em um ambiente de convergência. Hoje, alguém que se vê como um mero redator para a mídia digital está morto profissionalmente. RiM: A grosso modo, o que diferencia a redação para a web dos demais tipos de escrita e redação? Com uma leitura digital naturalmente fugaz e com o crescimento do mercado de e-books e e-readers, quais as mudanças e perspectivas para o webwriting? Na mídia impressa, por exemplo, escreve-se para ser lido, o que significa que estilo e fluência são itens fundamentais. Na mídia digital escreve-se para que o conteúdo seja visto ser lido é uma consequência, uma espécie de ‘prêmio’ para o conteúdo que consegue ser localizado. Além disso, são raros os textos que os leitores leem até o fim, o mais comum é que o trecho final de um texto seja desprezado. Por isso, é preciso ser muito objetivo no que se escreve. Vale ressaltar que texto curto nunca foi sinônimo de objetividade, há diversos testes que demonstram que textos longos conseguem ser extremamente objetivos. Quantos às perspectivas para o webwriting, hoje o mercado de produção de conteúdo

deseja saber o que e como os leitores querem consumir a informação, e isso é inédito. Antes, os testes como usuários eram vistos como um mero detalhe; agora, por necessidade mercadológica, entender profundamente os anseios dos consumidores de conteúdo é essencial. Por isso, estamos em um momento especial, promissor, bem diferente de cinco, seis anos atrás. RiM: Qual a relação de texto para web/webwiting, SEO e arquitetura da informação? A gestão da informação digital é como uma ‘caixa de ferramentas’. Nela, o profissional precisa, ao longo de sua trajetória profissional, adicionar novos recursos para que consiga acompanhar as necessidades do mercado e dos usuários. Por exemplo: deve-se levar em conta a usabilidade dos textos? Para isso criou-se o webwriting. É preciso estruturar bem a forma das informações serem acessadas? Há a arquitetura da informação. Como facilitar que os mecanismos de busca encontrem meus conteúdos? Utilize técnicas de SEO. Estas novas ferramentas nunca cessam de surgir, já que o usuário da mídia digital está cada vez mais exigente, e o universo de informações, cada vez maior. RiM: Como esses profissionais podem trabalhar melhor em conjunto? É um desperdício criar equipes interdisciplinares fixas para a produção de conteúdo. Apenas em momentos-chave eles precisam se encontram e, depois, rever o que foi feito, os resultados a cada etapa do trabalho. Para que o trabalho fique cada vez melhor, é preciso, também, que cada um dos lados tenha noções básicas das atividades do outro. Ou seja, tentar falar a mesma língua é uma grande vantagem.


10 > Entrevista

“(É preciso) ir além, ou seja, conhecer e estudar novas ferramentas do universo da informação para a mídia digital. É um mercado fascinante, em que nada é estático” RiM: Os drafts da W3C tem tido bastante foco na semântica. Temos tags específicas para data, local, etc. Além disso, temos também microformats, com foco em definir certos termos para as máquinas. Como o webwriter lida com essa parte, que é mais técnica do que de conteúdo? Cabe tanto aos webwiters quanto aos desenvolvedores terem noção de que, no momento em que informação e programação se juntam, é preciso ‘trocar figurinhas’ todo o tempo para que o resultado seja o esperado, em especial quando novas regras e parâmetros surgem. Como o código é base de um sistema de informação digital, eu sempre espero que o desenvolvedor aponte o que os redatores devem fazer, mas, ao mesmo tempo, se o webwriter não entender o universo do desenvolvimento, ele não saberá tirar dúvidas e nem mesmo questionar. RiM: O que ainda é necessário mudar na comunicação com o leitor/usuário/cliente no meio online? A questão cultural. Quem produz conteúdo ainda é formado por ‘escolas’ que focam no texto para ser ‘lido’, e apenas no texto. É como se ele fosse intocável, independentemente da mídia em que é publicado. Quanto ao leitor, ele sabe, cada vez mais, que deseja encontrar rapidamente sua informação, que ela vá direto ao ponto e que seja extremamente detalhada. Quem precisa mudar, portanto, é quem produz a informação. RiM: É correto afirmar que estamos em uma época onde o conteúdo online está cada vez mais visual, mais dependente de imagens e vídeos do que texto?

Sim. Mas não podemos esquecer que imagem é informação. Quando fazemos esta comparação, é como se estivéssemos ficando mais ‘pobres’ na forma com que nos comunicamos. É um erro. O fato é que estamos consumindo outro formato de informação, apenas isso. Mas vale lembrar, também, que o uso da palavra - e não necessariamente do texto - vem aumentando cada vez mais por conta das redes sociais, vide nossos posts no Facebook e no Twitter. RiM: Como a palavra se relaciona com a imagem em um ambiente onde a convergência de mídias é a regra? Primeiramente, funcionando como um indexador para o Google. Um mecanismo de busca só consegue ‘ver’ uma imagem se existe uma palavra a ela associada. Depois, como uma expansão da informação que está sendo veiculada, ou até mesmo como uma forma de complementá-la. RiM: Em termos de design e desenvolvimento, tem se falado muito de sites responsivos. Como isso se aplica à parte de conteúdo? Existe “conteúdo responsivo”? De certa forma, sim. A palavra-chave do design responsivo é adaptação. Então, o webwriter precisa ter noção de que um componente em que uma informação é veiculada pode tomar o lugar de outro componente, justamente para que não se empobreça a experiência do usuário. O design responsivo adapta interfaces, mas não a ‘resume’. O conteúdo apresentado em um site pode ou não ser excessivo, e isso depende justamente da interface através da qual a estamos acessando.


Entrevista < 11

RiM: Temos visto muita novidade na área de mobile - não só smartphones e tablets, mas também em objetos que até pouco tempo não eram conectados, como carros e eletrodomésticos. Como o conteúdo deve ser planejado hoje em dia, com uma variedade tão grande de possíveis dispositivos para leitura? É preciso entender cada um destes meios, e criar diversos formatos para uma mesma informação. Cada um destes formatos deve ser o usuário irá consumir da forma mais confortável nos diversos ambientes. Pensar nisso chama-se Estratégia de Conteúdo, e nada mais é que mapear os caminhos e formatos que a informação irá tomar. RiM: Marketing de conteúdo tem sido um dos grandes temas discutidos na área nos últimos anos. Webwriting e marketing de conteúdo podem ser considerados a mesma coisa, ou o segundo estaria contido no primeiro? Considerando que você já afirmou, em seus livros, em artigos e entrevistas, que “webwriting não é uma linguagem jornalística ou publicitária — é uma mistura das duas”, e marketing de conteúdo é uma forma de oferecer um produto ou serviço como objetivo final. É simples entender a diferença: o webwriting se preocupa com a produção do conteúdo propriamemente dita, enquanto o marketing de conteúdo avalia de que forma este conteúdo deve ser aprimorado para que seja possível ‘vendê-lo’ para o usuário de uma maneira mais persuasiva, objetiva, transparente - e o que precisa ser alterado no conteúdo para que ele possa ser encontrado mais facilmente. RiM: Apesar de os seus três livros terem como título “webwriting”, os subtítulos deles trazem detalhes talvez sutis que mostram as diferenças: “Pensando o texto para mídia digital” (2000), “Redação & Informação para a web” (2006) e, por fim, “Redação para a mídia

digital” (2014). Fale um pouco sobre o conteúdo de cada livro. O primeiro focava no texto e em suas transformações do meio impresso para o digital, pois ainda estávamos nos primeiros anos da web comercial. O segundo ampliava o ‘leque’, apresentava outros formatos da informação além do texto, mas explicava de que forma eles se relacionavam com a palavra. O terceiro, recém-lançado, aborda as boas práticas acumuladas ao longo de mais de uma década, e ressalta a importância de irmos além, ou seja, conhecer e estudar novas ferramentas do universo da informação para a mídia digital. É um mercado fascinante, em que nada é estático.

Webwriting – Redação para a mídia digital

Lançado em maio de 2014, pela editora Atlas, o livro dá sequência às publicações “Webwriting – Pensando o texto para mídia digital” (2000, esgotado) e “Webwriting – Redação & Informação para a web” (2006, esgotado). Além desses três livros, Bruno Rodrigues também foi o responsável, em 2010, por desenvolver o padrão brasileiro de redação para a web, atráves da “Cartilha de Redação Para Web”, do Ministério do Planejamento (Governo Eletrônico), que está disponível em www.governoeletronico.gov.br


12 > Por aí

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

Durante o Google I/O 2014, em São Francisco/EUA, aconteceu um encontro dos Organizadores dos Google Developer Groups (GDG) de várias partes do mundo. Você consegue encontrar os brasileiros Luis Leão e Paulo Fernandes?

Luis Leão, Zeno Rocha, Paulo Fernandes e André Moretzsohn - Google I/O 2014 São Francisco/EUA


Por aí < 13

Durante o Up Summit, um dos maiores eventos para líderes de startup do mundo, Edson Mackeenzy, do Videolog.tv, e Justin Wilcox, da Ninbus Helth, se encontraram com Tony Celestino e Dave Parker, respectivamente Country Manager Brasil e VP da UP Global, entidade responsável pelo Startup Weekend no mundo. O UP Summit aconteceu em maio, em Las Vegas.

Hangouts sobre Design de Software A ideia nasceu na comunidade PHP Brasil e hoje já abrange várias outras comunidades de desenvolvedores de todo o país. Toda semana novos participantes compartilham suas experiências sobre Design de Software Orientado a Objetos. Veja os hangouts já realizados no canal do PHP Brasil no YouTube http://ow.ly/z8TIH Maujor lança mais um livro Maurício Samy Silva, o Maujor, grande dinossauro da web e colunista do iMasters, lançou o livro Web Design Responsivo, pela editora Novatec. Com informações detalhas sobre as técnicas do design responsivo, seus princípios, métodos e tecnologias aplicáveis, Maujor explica através de exemplos práticos e de forma simples e clara tudo o que é preciso saber para a criação de uma página com design adaptável e layout responsivo. O iMasters teve o prazer de colaborar com este livro - o site foi utilizado para testes e análises da publicação. O conteúdo final é incrível e vale muito a leitura do livro! http://ow.ly/z8TCj


14 > Criatividade Tecnológica

A inevitável obsolescência programada Por Fabio Lody, Diretor de Arte do iMasters

Era meados de 1986 e minha mãe, ao chegar em casa, disse que tinha uma surpresa pra mim. Eu era uma criança e não fazia ideia de o que era a surpresa, embora esperasse um G.I.Joe. Foi quando ela me deu um envelope e disse: “Torce, filho! Fizemos um consórcio para um videocassete!”. Peraí, torcer para ganharmos um consórcio? E o que seria um vídeocassete?

Motors, Alfred Sloan, que procurou atrair consumidores a trocar de carro frequentemente, como apelo à mudança anual de modelos e acessórios. De lá para cá, o avanço tecnológico muitas vezes foi maior que a necessidade de ter tais “produtos inovadores” e como quis Alfred Sloan, grande parte destes produtos ou tendência, nada mais são que aprimoramentos de um produto anterior.

Naquela época, vídeocassete era caríssimo e para poucos. Lembro que fiquei encantado em poder gravar a programação da TV e mais ainda em passar dias aguardando a chegada de filmes “lançamento” na locadora perto de casa.

“Torce, filho! Fizemos um consórcio para um videocassete!”

Alguns anos depois, ganhei um computador usado, era um CP200S. Era necessário ligá-lo à TV e ao rádio, pois os jogos eram em fitas K-7. Nascia aí a minha paixão por computadores e, principalmente, por tecnologia. Ao comprar um computador um pouco melhor, já com Windows, percebi que enfrentaria um grande choque de realidade. Era a obsolescência programada, estratégia de negócio usada por grandes empresas como Microsoft. A obsolescência programada foi criada na década de 20, pelo então presidente da General

Muitos destes produtos se tornam obsoletos de forma muito rápida, e isso tem acontecido principalmente nos últimos 30 anos. O que não é ruim, pois faz com que o mercado seja sempre ativo e movimentado. Sim eu sei, posso estar sendo chato, afinal cada geração passa por transformações tecnológicas (e talvez de forma cada vez mais rápida). Me lembro bem quando comprei meu primeiro celular. Era enorme, mal cabia no bolso e – pasmem – a bateria durava semanas! Hoje possuem GPS, internet, sensores e


Criatividade Tecnológica < 15

Alguns anos depois, ganhei um computador usado, era um CP200S. Era necessário ligá-lo à TV e ao rádio, pois os jogos eram em fitas K-7. Nascia aí a minha paixão por computadores e, principalmente, por tecnologia. tudo aquilo que nunca imaginei precisar. Em especial, pessoas da “Geração X” e “Geração Y” passaram por avanços tecnológicos menos frequentes. Temendo por alguns hábitos, a adaptação nem sempre é simples. Como por exemplo: ler um bom livro ou jornal. Aliás, nada mais prazeroso que abrir um livro novo (ah, o cheiro de um livro novo...). Graças aos avanços atuais, há quem diga que o fim dos livros está próximo, principalmente por causa dos leitores digitais. De certo que tal tecnologia, veio para ficar. Pequeno, leve e com grande espaço de armazenamento, faz com que esse gadget seja um enorme passo tecnológico. E é bem provável que o uso do livro habitual como conhecemos, ocorra cada vez menos, principalmente com a chegada de novas gerações e costumes, ou seja, a

escolha se aquela tecnologia ou habito será extinto, provavelmente não é nossa, mas de nossos filhos e netos. A cada novo aparelho ou atualização de sistema, novas tecnologias e funcionalidades são criadas e aprimoradas. Isso faz com que algumas pessoas encarem esses novos produtos como a verdadeira solução para alguns problemas (que ainda não tínhamos), já que o “novo produto” oferece muito mais recurso que a versão que possui. E nem sempre isso se faz necessário. A publicidade cumpre bem seu papel e essa “necessidade” de novos produtos é induzida, também, a partir de estratégias de fabricantes e suas propagandas, nos fazendo acreditar que a tecnologia que possuímos não atinge mais nossas necessidades, muitas vezes


16 > Criatividade Tecnológica

impondo que “precisar” ou “ter” tal tecnologia é determinante para uma construção social adequada na inclusão de um determinado grupo. Isso é obsolescência programada. Rápida obsolescência de produtos ou tecnologias, em um curto espaço de tempo, ou seja, quando empresas criam algo que poderia durar por mais tempo. Outras técnicas dessa obsolescência estão em fabricar produtos para durar menos horas, dias ou anos e perder qualidade de tal forma que se torna totalmente ineficiente, exigindo sua substituição por outro novo e mais eficiência. Particularmente, torço para que as próximas gerações consigam ponderar certas coisas. Não só na criação desenfreada de produtos e componentes que virarão um tremendo lixo tóxico descartado, como na reutilização dele e se realmente precisaremos de tais produtos, que acabam tornando nossa convivência e interação pessoal, cada vez menor, graças a aparelhos nem sempre tão úteis.

“A publicidade cumpre bem seu papel e essa “necessidade” de novos produtos é induzida, também, a partir de estratégias de fabricantes e suas propagandas, nos fazendo acreditar que a tecnologia que possuímos não atinge mais nossas necessidades” Fabio Lody é Diretor de Arte do iMasters e colunista de Photoshop. Desenvolveu trabalhos para vários países, foi aluno de Alexandre Wollner e participou da equipe de criação de projetos como Lollapalooza Brasil, Centenário do Santos, Centenário Vinícius de Moraes, Futebol Run, Expo Money, Super Bike Series, Galinha Pintadinha, FIC, MMA Rocks entre outros. Conquistou o Best Mkt Design 2012 com a marca do centenário do Santos e teve seu nome publicado no selo comemorativo do centenário, com tiragem de 300 mil exemplares. É praticante de Krav Maga e está há 11 anos nessa vida maluca de subir/descer a serra todos os dias por morar em Santos. @fabiolody


SSL Blindado EV


18 > PHP

Password Hashing – API nativa para gerenciamento de senhas Por Victor Torres, cientista da computação e gerente de desenvolvimento da DialHost A segurança de dados sensíveis dos usuários é sempre um fator determinante para a integridade de qualquer aplicação. Dada essa premissa, esforços são constantes nessa área para prover os sistemas computacionais de formatos criptografados cada vez mais seguros. Senhas geralmente são armazenadas em hash, que nada mais é do que um símbolo derivado de um algoritmo que o torna incapaz de, à luz da teoria, obter seu estado original. Apesar do nível de complexidade de algoritmos que geram hashes, temos hoje diversas formas que tentam recuperar dados originais “escondidos” através de dicionários, rainbow tables ou força bruta. Pensando nisso, desenvolvedores da linguagem PHP, preocupados não só com a integridade de senhas mas também com a facilidade de programação oferecida pela linguagem, optaram por criar uma API nativa capaz de somar ao mesmo tempo segurança e simplicidade para armazenamento de credenciais. Criaram então uma extensão de criptografia chamada Password Hashing, disponível desde a versão 5.5.0. Essa extensão utiliza o algoritmo bcrypt, o mais forte suportado pelo PHP atualmente.

Recursos oferecidos A API oferece um pequeno e poderoso conjunto de funções capazes de auxiliar o programador a criar hashes seguros, realizando todo o trabalho braçal de forma segura e com alto grau de confiabilidade. A seguir, suas respectivas funções:

password_hash <?php echo password_hash(“imasters”, PASSWORD_BCRYPT, [ “cost” => 12, // Se omitido, custo 10 ‘salt’ => mcrypt_create_iv(22, MCRYPT_DEV_URANDOM) // Você pode omitir este parâ metro para gera ção de salt aleatório também. ] ); // Resultado $2y$12$syPYpcHYHWfyraREZ5BCc./ OiKezWghwO/5HsbvNv0U4G1xqjsguW

Observação: O $2y$ indica qual algoritmo está sendo utilizado (no caso, bcrypt). O $12$ indica o custo do algoritmo (potência). E, por fim, a parte restante representa o hash gerado.

password_verify Verifica se uma senha corresponde a um hash.


PHP < 19

password_get_info Retorna informações sobre o hash dado como algoritmo usado e custo. (eu não entendi essa frase direito... como assim custo? Custo do algoritmo usado? Se for o caso, não é melhor colocar “e seu custo”?) <?php var_dump(password_get_ info(‘$2y$12$sy...’));

11]); // Gerei o novo hash echo $hash; // Basta salvar no banco de dados agora

} else echo “Senha não precisa de novo hash”;

password_needs_rehash

}

Verifica se um determinado hash corresponde a informações fornecidas. Caso não seja, assume-se que ele precisa sofrer o processo de hash novamente. Como a função retorna apenas um valor booleano, seu real uso pode ser observado abaixo, quando troco as configurações de geração de hash, ou seja, a senha é válida para aquele algoritmo, mas não para o novo custo que inseri, então gero o hash novamente para a nova configuração.

else

<?php $senha = ‘imasters’; $hash = ‘$2y$12$sy...’; if(password_verify(‘imasters’, $hash)) { echo “A senha é válida\n”; if(password_needs_rehash($hash, PASSWORD_BCRYPT, [‘cost’ => 11])) { // Mudei o custo para 11

echo “Senha precisa de novo

hash\n”;

$hash = password_hash($senha, PASSWORD_BCRYPT, [‘cost’ =>

echo “Senha não verificada”;

Conclusões Neste artigo, mostramos a facilidade e a simplicidade do gerenciamento de senhas com a API Password Hashing, acompanhadas de um poderoso algoritmo, o bcrypt. O grande objetivo desse recurso é fazer com que você se preocupe mais com as funcionalidades da sua aplicação ao usuário e menos com a complexidade da segurança de senhas.

Referências 1. Password Hashing Book: http://is.gd/eQ5KuS 2. Password Hashing RFC: http://is.gd/mphonW 3. Blowfish (bcrypt): http://is.gd/JVhrMf Victor Torres é engenheiro de software da DialHost e mestrando em Modelagem Matemática e Computacional pelo Cefet-MG. Linux hard user e apreciador de um bom café, possui experiência em diversas linguagens de programação e aplicações de paradigmas computacionais sobre elas desde 2007. @vhte


20 > Capa


Capa < 21

A palavra “agnóstico”, de origem grega (a gnose, não-conhecimento), tem ligação com questionamentos profundos do ser humano, especialmente religiosos. Um pensamento agnóstico é, essencialmente, cético em relação a crenças: elas existem, mesmo que não seja possível provar. Essa postura de “dúvida permanente”, capaz de revelar respostas e abrir a mente, vem sendo adotada por desenvolvedores web ao projetarem e implementarem produtos e serviços.

“Não se trata de ‘projetar para celular’, mas também não é ‘projetar para desktop’. Em vez disso, é sobre a adoção de uma abordagem mais flexível para a web, uma abordagem device-agnostic” - Ethan Marcott A crença, nesse caso, é a de que “plataformas e dispositivos diferentes exigem soluções específicas”. O desenvolvedor e web designer norte-americano Ethan Marcotte foi um dos primeiros a questionar essa premissa, em 2010, ao escrever em seu blog sobre as vantagens do design responsivo (Toffee-nosed: http://ow.ly/ytJfC). “Não se trata de ‘projetar para celular’, mas também não é ‘projetar para desktop’. Em vez disso, é sobre a adoção de uma abordagem mais flexível para a web, uma abordagem device-agnostic”. Ao contrário da visão tradicional, centrada em dispositivos, a expressão device-agnostic aponta para um desenvolvimento único, baseado na web, capaz de funcionar em qualquer lugar, mesmo em dispositivos que ainda não foram criados. “A presença da web em múltiplos dispositivos não é novidade. O W3C possui dezenas de grupos de trabalho e interesse, que discutem a evolução na web tanto em dispositivos móveis quanto sua aplicação em automóveis, por exemplo. Os grupos

surgem conforme as tecnologias evoluem”, explica o especialista em desenvolvimento web do W3C Brasil, Reinaldo Ferraz. Para Clécio Bachini, diretor de pesquisa e desenvolvimento da Soyuz Sistemas, vivemos um momento no qual o dispositivo não é mais a estrela, mas sim a experiência que a aplicação proporciona e sua adaptação ao ambiente. “Isso é a principal questão do device-agnostic, porque eu posso dar continuidade ao meu trabalho em qualquer lugar, de acordo com os meus interesses”. Nesse contexto, a interoperabilidade da web é a chave. “É possível pensar em uma aplicação em uma loja de aplicativos que não faz ideia de como ela é feita, e ela pode ser toda baseada em web”, lembra Ferraz.

No smartphone ou na televisão Bachini acredita que, com o tempo, existirão mais sistemas operacionais baseados em um núcleo Linux, C ou outra linguagem baseada em UNIX, mas com interface totalmente web. “A web é essencial para isso. Ela está se tornando a grande máquina universal. É possível colocar um engine de web em qualquer dispositivo e rodar. A preocupação é que ele renderize e que rode aplicações JavaScript mais rápido. É o que acontece hoje com aplicações no navegador Chrome ou mesmo no Firefox OS”, exemplifica, mencionando o sistema operacional livre mantido pela Mozilla Foundation. Desenvolvedor evangelista do Firefox OS, David Ruiz complementa: o navegador web é o elemento comum entre a tela de um smartphone e um televisor inteligente, permitindo a interoperabilidade. “Alguns aparelhos da LG utilizam um sistema operacional web, o WebOS. Qualquer aplicativo que você desenvolver para web, empacotar e colocar uma casca para distribuir em uma appstore vai funcionar nela”.


22 > Capa

Ruiz aponta alguns pilares para explicar o avanço dessa postura. O principal é a melhoria de performance dos browsers, capazes de interpretar e compilar códigos JavaScript com mais eficiência. “O navegador deixou de ser apenas uma janela para a informação. Agora, quanto mais responsabilidade você jogar para o navegador, melhor”. Outro aspecto são as práticas de design responsivo. Por meio de media queries, é possível definir dentro do CSS a quantidade de informação a ser exibida, seja qual for a dimensão da tela. “Em vez de simplesmente espremer todo o conteúdo, é preciso encontrar a melhor forma de apresentar o que é mais relevante ou esconder o que não interessa”. Finalmente, Ruiz destaca a possibilidade de uma abordagem API first, ou seja, disponibilizar uma camada onde as informações são recuperadas por meio de múltiplos suportes. “Assim, as versões para acessar em desktop ou mobile tornam-se novas aplicações, que vão acessar informações estruturadas, armazenadas e acessadas por meio de APIs”, explica Ruiz. Posturas agnósticas contrastam com crenças fortes. No mercado de apps para dispositivos móveis, os números reforçam o reino absoluto dos sistemas operacionais iOS e Android. Ambos possuem fãs dispostos a defender a programação na linguagem nativa desses aparelhos: facilidade de aprendizagem, tempo de desenvolvimen-

to, aparência, aproveitamento de funcionalidades, performance, monetização etc.

Desenvolvimento web x sistemas nativos Lançado pela Apple na última WWDC, a linguagem de programação Swift representa a última cartada para cativar seus desenvolvedores. “Esta foi uma aposta proprietária, focada nos produtos da Apple, para criar uma forma muito simples de programar aplicações”, observa David Ruiz, lembrando que um clone do jogo Flappy Bird foi produzido em poucas horas após seu lançamento. “É bastante promissora, mas continua fechada para o seu sistema”, reitera. “É o papel da Apple manter o seu nicho. Mas eles sabem o que está acontecendo, gradualmente eles já aderem aos padrões web. Quando o mercado começar a se acertar, eles estarão prontos”, aposta Clécio Bachini. Para ele, essa briga entre desenvolvedores nativos e web tende a acabar. “A tendência é que essas interfaces migrem para a web, independentemente da linguagem de programação. Isso não quer dizer que vai ser tudo igual: ainda teremos experiências com estilo iOS e outras Android. O objetivo é fazer com que a aplicação se adapte mais facilmente à experiência que o usuário espera”. Segundo Ruiz, há ainda uma visão equivocada sobre a performance de aplicações baseadas na web. A principal propaganda negativa veio em 2012, quando o Facebook lançou sua


Capa < 23

aplicação para iPhone baseada em HTML5: diante das reclamações, Mark Zuckerberg voltou atrás, optou pela linguagem nativa e alegou ter sido “um erro” usar padrões web. “Em resposta, a Sencha Labs produziu uma aplicação web chamada Fastbook”, recorda. Um vídeo comparativo mostrou que o problema não estava no embate entre abordagens, mas na qualidade do código. Você pode assistir ao vídeo “The Making of Fastbook: An HTML5 Love Story” em http://ow.ly/ytMAe.

Do webmaster ao profissional multidisciplinar O exemplo do aplicativo Facebook em HTML5 ressalta a importância de desenvolvedores capazes de atender às demandas do mercado. No caso da web, a evolução remete à figura do “webmaster”. Popular em meados dos anos 1990, era o profissional responsável por tudo. Com o tempo, especialistas em arquitetura da informação, usabilidade e design dividiram a tarefa, dando fôlego a quem se dedica ao código-fonte. Para David Ruiz, o desenvolvimento front end evoluiu rapidamente nos últimos anos. “Uma das razões para isso é o NodeJS, que permite que você execute linhas de comando, códigos e tarefas dentro do seu computador programando em JavaScript”, opina. Ferramentas como Grunt e Gulp, bem como frameworks como o AngularJS, deram maior poder de desenvolvimento a esses profissionais. Com esses avanços, a trilha para o desenvolvimento multiplataforma por meio da web passa por uma nova divisão de especializações: entre back end e front end. Ruiz entende que essa divisão é clara e necessária. “Quem desenvolve back end se responsabiliza pela arquitetura, pela construção das APIs. Já o front end tem que ter uma preocupação com o desenvolvimento das tecnologias, para conseguir extrair o melhor

do hardware que está sendo utilizado”. Clécio Bachini vê com cautela essa separação absoluta. Ele já viu projetos fracassarem porque o back end não consegue dialogar com o front end. Assim, o profissional de web precisa ser multidisciplinar. “Ele precisa saber algo sobre banco de dados e correlação entre eles, existe uma camada semântica importante. Conhecer ainda um pouco de design, outras linguagens... Um pouco de tudo, mesmo que não execute. Existem pessoas nas duas pontas do seu código, com informação no meio. É fundamental entender as melhores formas de ela ser transmitida”, sugere. Ainda que pareça difícil fazer qualquer prognóstico em relação ao futuro (afinal, quando poderemos dizer que a “Internet das Coisas” é algo corriqueiro?), está claro que “a web continua muito forte, cada vez mais para todos”, como afirma Reinaldo Ferraz. Desenvolver na web e adotar uma postura agnóstica revela oportunidades, mas ao mesmo tempo exige escolhas. Então, em que você acredita? O W3C possui dezenas de grupos de trabalho e interesse, que discutem a evolução na web tanto em dispositivos móveis quanto sua aplicação em automóveis. Veja alguns: HTML: http://www.w3.org/html/wg/ Web Applications: http://www.w3.org/2008/ webapps/ Data On the Web Best Practices: http://www. w3.org/2013/dwbp/wiki/Main_Page Device API: http://www.w3.org/2009/dap/ Web Performance: http://www.w3.org/2010/ webperf/ Web Real-Time Communications: http://www.w3.org/2011/04/webrtc/ Automotive and Web Platform Business Group: http://www.w3.org/ community/autowebplatform/ Você encontra a lista complete dos grupos em http://www.w3.org/Consortium/activities e os Community e Business Group aqui: http://www. w3.org/community/groups/



Comunidade < 25

CocoaHeads Brasil A comunidade de desenvolvedores iOS e OSX que mais cresce em todo o Brasil

Pergunte a qualquer desenvolvedor Apple de norte a sul do País sobre a qualidade dos eventos focados em desenvolvimento de aplicativos para iOS e OSX no Brasil, e as respostas serão sempre muito parecidas: “são de baixa qualidade”, “evento bom é evento no exterior”, “só para iniciantes...”, e até mesmo “existe evento para desenvolvedor Apple no Brasil?”. Estas também eram nossas respostas há um tempo. Foi quando participamos, em 2011, de um evento local do CocoaHeads da cidade de Palo Alto, nos Estados Unidos, e vimos que eventos de qualidade não precisam ser realizados em estruturas gigantes, uma vez ao ano, com uma logística e custos que assustam qualquer organizador (e patrocinadores). Ao contrário. São espaços fornecidos por empresas ou universidades, com palestras técnicas de qualidade e uma audiência que está lá para conversar, aprender e ensinar. Imediatamente vimos que esse era o modelo que estavamos buscando para a comunidade brasileira de desenvolvedores Apple. O que é o CocoaHeads? O CocoaHeads é uma comunidade formada por pessoas que possuem a mesma paixão:

desenvolvimento iOS e OSX. Ela existe desde a década de 70 e foi ganhando o mundo. Hoje está presente em todos os continentes em mais de 100 cidades (também conhecidos como chapters CocoaHeads - ou “capítulos CocoaHeads”, em português). Os eventos são periódicos, sendo que em alguns chapters chegam a ser semanais, e podem acontecer em diversos formatos, como as CocoaTalks, que são rodadas de palestras técnicas com palestrantes locais e/ ou convidados; as Drinkups, encontros mais informais em bares ou restaurantes com um mix de código, Apple, bebidas e comidas; e os Hackathons, em que um ou mais chapters se reúnem para desenvolver alguma solução que geralmente resulta em um novo app nas lojas de aplicativos da Apple. O CocoaHeads no Brasil O CocoaHeads Brasil é primeira iniciativa do grupo em toda América Latina e está crescendo por todo o País. Em menos de seis meses, já são quatro chapters ativos: Belo Horizonte, Goiânia, Rio de Janeiro e São Paulo, com outros seis já organizando seus primeiros eventos - Aracajú, Brasília, Fortaleza, Florianópolis, Maceió e Salvador. Até o fim de 2014, preten-


26 > Comunidade

demos estar em mais 15 cidades brasileiras. No Brasil, criamos um modelo diferente dos adotados em outros CocoaHeads pelo mundo. Enquanto nos Estados Unidos e na Europa cada chapter é independente e isolado, optamos por criar um hub central, no qual os chapters locais estão ligados ao CocoaHeads Brasil. Esse modelo está fazendo com que os chapters crescam em conjunto, compartilhando entre si experiências, recursos, projetos e melhorias, fortalecendo a comunidade como um todo. Os encontros brasileiros são mensais e geralmente acontecem simultaneamente em todos os chapters, na segunda quinta-feira de cada mês. A participação nesses eventos é gratuita, e o desenvolvedor pode obter mais informações sobre locais e datas no cocoaheads.com.br Projetos atuais e planos para o futuro O objetivo do CocoaHeads é fazer com que a comunidade de desenvolvedores Apple converse, troque experiências e boas práticas. Queremos que os desenvolvedores se fortaleçam tecnicamente e se agrupem para criarem as próximas startups do momento. Nesse sentido, estamos com algumas iniciativas inéditas em nosso país, como o projeto de pesquisa que visa a traçar o perfil atual do desenvolvedor mobile brasileiro - um questionário focado no desenvolvedor de qualquer plataforma que será usado para conhecer o profissional e traçarmos estratégias para esse público. Interessados em participar da pesquisa podem acessar o website do CocoaHeads Brasil e preencher o questionário. Estamos também com projetos para atrair mulheres para o mundo do desenvolvimento, hoje dominado por homens, além de iniciati-

vas focadas em desenvolvedores iniciantes e de outras plataformas interessados em iniciar uma carreira como desenvolvedor Apple. Como levar o CocoaHeads para sua cidade Se sua cidade ainda não possui um chapter CocoaHeads e você deseja ser um chapter leader local, entre em contato conosco pelo email chapters@cocoaheads.com.br Daremos todo o suporte com transferência de know-how para que novos chapters se formem e tornem-se produtivos e saudáveis. Onde nos encontrar? A melhor maneira de nos encontrar é pelo nosso site, local onde todas informações sobre o CocoaHeads Brasil são centralizadas, incluindo os vídeos das palestras de nossos eventos em todo o país. Estamos presentes também nas principais redes sociais. Entre em contato conosco e participe da maior comunidade de desenvolvedores iOS e OSX do Brasil.

Acompanhe o CocoaHeads e participe! http://www.cocoaheads.com.br/ https://twitter.com/CocoaHeadsBR https://facebook.com/CocoaHeadsBrasil/ https://github.com/cocoaheadsbr/ Bruno Koga trabalha com iOS desde 2009, mas nos últimos meses tem se dedicado a participar de conferências ao redor do mundo e a conhecer e agradecer as pessoas que admira. Atual embaixador de Appsterdam no Brasil, quer ajudar a melhorar a comunidade de App Makers no país e mostrar para o mundo do que somos capazes. @brunokoga | brunokoga.com George Villasboas é integrador do movimento CocoaHeads no Brasil e sonha em ver a comunidade brasileira de desenvolvedores ganhando o mundo. Engenheiro, web developer desde 1997 e iOS developer desde 2010. Participou de projetos de mobilidade para diversas empresas listadas na Fortune 500 e co-autor de títulos promovidos pela Apple em diversas AppStores. @ghvillasboas | http://lnkd.in/bwzXVTk | contato@cocoaheads.com.br


Chegou a hora de elevar seu servidor à categoria que ele merece. Traga seus dados para o Cloud Server Pro Locaweb. Instale seu servidor na nuvem com as configurações que quiser, definindo linguagens e parâmetros de acordo com o seu projeto, sem surpresas nos custos. Tudo isso com desempenho otimizado e segurança fortificada garantidos pela Tecnologia Intel®. Traga seus dados para a nuvem da Locaweb, pioneira em Cloud Computing no Brasil.

R$ 49,90

Grátis: Ferramentas de Monitoração Cloud Server Pro Locaweb Tecnologia inteligente para seu projeto ir mais longe. Locaweb.com.br/CloudServerPro

Locaweb.com.br

Copyright© 2013 Intel Corporation. Todos os direitos reservados. Intel, o logo Intel, Xeon e Xeon Inside são marcas de propriedade da Intel Corporation nos EUA e em outros países.

Mensalidades a partir de


28 > Por dentro do W3C

Aplicações e conteúdo dinâmico acessível Por Reinaldo Ferraz, Especialista em Desenvolvimento Web do W3C Brasil

Quando a primeira versão das WCAG (Diretrizes para Conteúdo acessível na Web) foi publicada, em maio de 1999, não era possível criar conteúdos dinâmicos ou manipular elementos multimídia na Web sem um plug-in ou aplicativo proprietário. Nessa época, as diretrizes eram suficientes para tornar conteúdo acessível, afinal a Web era composta apenas formulários, tabelas, imagens e outros elementos estáticos. Nove anos depois surgiram as WCAG 2.0, criadas com base na versão 1.0, que ampliou as possibilidades para tornar o conteúdo acessível. Mas a Web demandava mais... Conteúdos dinâmicos ainda tinham barreiras sérias de acessibilidade, inclusive porque as tecnologias assistivas não conseguiam acessar modais ou áreas que eram atualizadas sem um “refresh” completo da página. Para tornar esse conteúdo dinâmico acessível na Web o W3C publicou a recomendação WAI-ARIA 1.0, que se tornou uma Recomendação do W3C em março de 2014 (http://www.w3.org/TR/wai-aria/). WAI-ARIA (Accessible Rich Internet Applications) define a forma de tornar conteúdo, principalmente aplicações Web, acessíveis para pessoas com deficiências. Essa documentação auxilia especialmente conteúdo dinâmico e interfaces de usuário com controles avançados. WAI-ARIA funciona com as tecnologias já existentes, como HTML e SVG

e proporciona uma forma de aplicar os requisitos das WCAG para aplicações ricas na Web. Aplicações web complexas tornam-se inacessíveis quando as tecnologias assistivas não podem determinar a semântica de partes de um documento ou quando o usuário não é capaz de navegar de forma eficaz em todas as partes do site ou aplicação. WAI-ARIA divide a semântica em roles (papéis), states e properties (estados e propriedades). Roles servem para identificar o elemento ou a aplicação na interface e estão divididas em quatro tipos: • Abstract Roles: Usadas para ontologias. Não devem ser utilizadas para conteúdo • Widget Roles: Utilizadas para definir interfaces de widgets, como alert, dialog, slider, tab, etc. • Document Structure Roles: Descrevem as estruturas que organizam o conteúdo em uma página, por exemplo article, group, img, region, etc. Estruturas de documentos geralmente não são interativos. • Landmark Roles: São regiões da página destinadas a marcação de navegação, por exemplo banner, main, navigation, etc.


Por dentro do W3C < 29

A lista completa de roles está em http://www.w3.org/TR/wai-aria/roles#roles_ categorization

não for possível utilizar a semântica do HTML para tornar o conteúdo acessível. Sempre dê prioridade para as WCAG.

Cada uma das “roles” pode ser manipulada e definida por diversos “states and properties”, por exemplo, um link definido como item de um checkbox pode ser definido como “true” ou “false” para que o usuário tenha um retorno acessível do resultado da ação.

A Web está em constante evolução e conforme ela evolui, navegadores e tecnologias assistivas devem acompanhar esse processo. Por esse motivo o W3C tem uma preocupação imensa com a acessibilidade. A Web foi criada com o intuito de ser acessível desde sua concepção e esse princípio deve acompanhar sua evolução. E nós, criadores e mantenedores dos códigos que circulam pela Web, temos uma responsabilidade imensa de manter esse legado de uma Web acessível para as atuais e futuras gerações, afinal, dentro de algumas décadas nós poderemos ser os usuários de tecnologias assistivas que vão acessar esse conteúdo na Web. E ele deve ser acessível. Para o nosso próprio bem.

<li role=”menuitemcheckbox” aria-checked=”true”>Link ativo</li> A lista completa de states and properties para cada role está em http://www.w3.org/TR/wai-aria/states_and_ properties Uma das principais diferenças entre as WCAG e ARIA é que a primeira utiliza os elementos semânticos do HTML para tornar o conteúdo acessível. Já WAI-ARIA possibilita a mudança da semântica de um elemento para torna-lo acessível. Eu explico. Neste exemplo, o desenvolvedor precisa criar um cabeçalho que é um botão. Para esse caso a recomendação é: • Não faça isso: <h1 role=button>botão</h1> • Faça isso: <h1><button>botão</button></h1> • Ou então isso: <h1><span role=button>botão</span> </h1> Porque se role=button for colocado dentro do H1, a estrutura de acessibilidade dos objetos tratará esse elemento como <button>botão</button> e perderá sua característica de cabeçalho. Por esse motivo WAI-ARIA deve ser utilizado somente onde

Reinaldo Ferraz é especialista em desenvolvimento web do W3C Brasil. Formado em Desenho e Computação Gráfica e pós graduado em Design de Hipermídia pela Universidade Anhembi Morumbi, em São Paulo. Trabalha há mais de 12 anos com desenvolvimento web. Coordenador do Prêmio Nacional de Acessibilidade na Web e do Grupo de Trabalho em Acessibilidade na Web e representante do W3C Brasil em plenárias técnicas do W3C. @reinaldoferraz


30 > Design de Dados

Contando histórias com visualização de dados Por Carine Roos, fundadora da empresa “Androidella – Estratégias em Comunicação Digital” e jornalista apaixonada por dados

Para Alberto Cairo, professor de visualização de dados da Universidade de Miami e autor do livro “The Functional Art: An Introduction to Information Graphics and Visualization”, os infográficos são ferramentas, assim como martelos, serras e chaves de fenda; são instrumentos que nós elaboramos e construímos com o propósito de ampliar nossas habilidades além dos seus limites naturais, para alcançar resultados que seriam extremamente difíceis – ou até mesmo impossíveis – se tentássemos fazê-las sem o suporte de tais ferramentas. “Nós, humanos, somos nascidos ciborgues, estamos acostumados a pegar matérias-primas do ambiente (seja aço e madeira, ou informações e dados) e dar a eles novas formas que sejam adaptadas a certas tarefas ou objetivos”. A analogia bastante interessante nos remete

ao quão difícil seria extrair significados e tendências, por exemplo, de uma planilha imensa com vários dados no Excel, OpenOffice ou Google Spreadsheet, pois conseguimos enxergar apenas números, ao passo que, ao transformarmos esses dados em um gráfico de barras ou de linhas, permitimos ao nosso cérebro extrair significados e padrões a partir dessas informações. É por meio da visualização que os padrões se tornam claros e facilmente assimilados. O professor Cairo explica que muitas visualizações são bonitas, funcionais, mas não produzem bons insights, sendo que um bom infográfico deve possuir as três características. “A visualização não é apenas sobre gráficos, mas sobre encontrar o equilíbrio certo entre a boa escrita e a boa visualização”. O contexto pode ser fornecido por meio de marcado-


Design de Dados < 31

res, legendas e destaques, explicando sobre exceções, tendências e padrões nos quais você, leitor, não iria se concentrar caso essa informação extra não estivesse destacada.

“A visualização não é apenas sobre gráficos, mas sobre encontrar o equilíbrio certo entre a boa escrita e a boa visualização” Assim, é necessário que o designer se atente ao explicar os dados, não pense apenas neles se baseando nos atributos estéticos. Às vezes, nos apaixonamos por um projeto gráfico porque ele parece legal, quando ele pode, na realidade, não ser o melhor projeto para explicar aqueles dados. “Você deve se preocupar primeiro com a estrutura, a precisão, a integridade, a profundidade e a funcionalidade. Só depois você deve pensar em decorações – se decorações forem de fato necessárias – ou um estilo visual peculiar baseado em determinadas tipografias e paletas de cores”, sinaliza Alberto Cairo. Dessa forma, é preciso ter cuidado para não deixar que as visualizações falem por si, mas que elas sejam utilizadas para ajudar a explicar os dados. Ao revelar padrões, tente demonstrá-los. Uma boa referência de visualização que fornece contexto, e é de grande

utilidade pública para os britânicos, é o Guia anual dos gastos públicos governamentais por departamento do Reino Unido, realizado pelo The Guardian, que é uma visualização que mostra os gastos em diferentes departamentos no Reino Unido no último ano fiscal. Veja em http://ow.ly/ykWWM Vale destacar que qualquer pessoa com acesso à Internet pode construir hoje visualizações e mapas sem muito conhecimento técnico. Por causa de ferramentas disponíveis como OpenRefine (para limpeza dos dados), Datawrapper e Tableau (para visualização de dados), Google Fusion Tables e CartoDB (para criação de mapas) e muitas outras é que é viável uma pessoa fazer o trabalho sozinha.

“Você deve se preocupar primeiro com a estrutura, a precisão, a integridade, a profundidade e a funcionalidade. Só depois você deve pensar em decorações – se decorações forem de fato necessárias – ou um estilo visual peculiar baseado em determinadas tipografias e paletas de cores”


32 > Design de Dados

Entretanto, o primeiro passo para a produção de infográficos e visualizações é entender a ideia e pensá-la visualmente; caso contrário, você não conseguirá explicá-la. Em seguida, você precisará traduzi-la para o seu público, encontrando uma maneira de exibi-la de forma que esteja explicando bem a sua ideia. Uma boa dica apontada pelo editor de dados do Twitter, Simon Rogers, é reduzir a complexidade das histórias. Quanto menos dados forem usados para contar um a história, melhor será a visualização.

Para mais referências, veja a leitura de infográficos recomendada por Alberto Cairo (veja no box ao final) e o blog do Simon Rogers.

Veja mais: Livro “The functional art” http://www.thefunctionalart.com/

Jonathan Corum, editor de gráficos de Ciência no The New York Times, também destaca que uma maneira fácil de contar uma história é mostrar mudança, seja o movimento de uma abelha ou uma sequência de rastreamento de uma célula. Ele utiliza bastante sequências para mostrar mudanças e encadeá-las com detalhes do que está ocorrendo em cada etapa.

Vale destacar que qualquer pessoa com acesso à Internet pode construir hoje visualizações e mapas sem muito conhecimento técnico. Talvez você esteja se perguntando como irá escolher o que é interessante. Então siga o esquema de perguntas de Jonathan: “É simples? Você pode explicar esses dados de forma simples para alguém que nunca tenha ouvido falar sobre esse assunto? É interessante? Qual é a melhor maneira possível de contar essa história? O quão simples eu posso fazer isso?”

- Leituras de infográficos recomendada por Alberto Cairo: http://ow.ly/ykXfy - Simon Rogers – blog: http://simonrogers.net/archives/ - OpenRefine - http://openrefine.org/

Carine Roos é jornalista especializada em comunicação digital e fundadora da empresa Androidella - Estratégias em Comunicação Digital. Já trabalhou para clientes como NETmundial, W3C Brasil, UNESCO, Ministério da Saúde, Centro Cultural Banco do Brasil, UNICEF e Hospital Israelita Albert Einstein. http://lnkd.in/bj2aDD3 | @carineroos | carine@androidella.com.br


www.ead.sebrae.com.br

Como inovar?

fornecedores?

Concorrência?

Calma.

Acesse o portal de educação A distância do sebrae.

E o melhor de tudo: é grátis.

O portal de educação a distância do Sebrae inovou. Agora com cursos durante o ano inteiro, vagas ilimitadas e início imediato. E ainda oferece tutores para esclarecer suas dúvidas. Tudo prático, interativo e o melhor: gratuito. Clique, aprenda e empreenda.

Especialistas em pequenos negócios / 0800 570 0800 / sebrae.com.br


34 > DIY

É hora de programar a sua casa e as coisas à sua volta! Por Manoel Lemos, CDO da Abril, investidor anjo e fundador do Fazedores.com Já programamos para desktop, para a web e para mobile, mas é hora de programar todas as coisas. Prepare-se para a Internet das Coisas e tome controle de tudo à sua volta. Uma das coisas mais legais que me lembro de ter feito com um de meus primeiros computadores, um CP400 Color II, quando tinha uns oito ou nove anos de idade, foi controlar uma pequena lâmpada com o computador e também fazê-lo reagir de acordo com a iluminação de meu quarto. Era tudo bem básico, e não foi preciso nenhum circuito especial. O CP400 era um daqueles computadores que você ligava na televisão e gravava seus programas em fitas K-7 utilizando um gravador comum. Para isso, ele tinha uma interface com três cabos: um era conectado à saída de som do gravador e era usado para ler - escutar - os dados que estavam gravados na fita; outro era conectado à entrada de microfone do gravador e era usado para gravar dados e programas; e um último que servia para controlar o gravador remotamente (ligando ou desligando o motor do gravador).

Tudo o que fazemos com programas em nossos desktops e na web também pode ser aplicado para controlar coisas do dia-a-dia O BASIC do CP400 tinha um comando chamado MOTOR, que controlava o gravador através dos parâmetros ON ou OFF. MOTOR ON ligava o motor e MOTOR OFF, desligava. Investigando um pouco, descobri que a coisa toda era bem simples - o comando MOTOR ON fechava o circuito entre os dois fios daquele cabo e o MOTOR OFF, abria. Então, bastou colocar

uma pilha e uma lâmpada no lugar do gravador e o computador estava pronto para controlar programaticamente aquela lâmpada. Para medir o nível de iluminação do quarto, usei a porta do joystick. O CP400 tinha duas portas para joysticks analógicos que nada mais eram que dois potenciômetros conectados à alavanca de controle. Um deles controlava o eixo X e o outro o eixo Y. Para ler os valores do Joystick, o BASIC contava com um comando chamado JOYSTK, que recebia como parâmetro um número de 0 a 3, indicando qual dos potenciômetros seria lido e retornava um valor entre 0 e 63. Se a leitura de JOYSTK(0) indicasse 0, isso significava que o joystick esquerdo estava com sua alavanca toda para o lado esquerdo. E se ele indicasse 63, ela estava toda para o lado direito. A única coisa que fiz foi substituir um dos potenciômetros por um resistor sensível a luz (um LDR). E aí, lendo o valor com a função JOYSTK, era possível saber como estava a iluminação do quarto. Daí para frente, a brincadeira era criar programas bem simples que controlassem a pequena luz de acordo com a iluminação do quarto. Parece simples, mas aquilo era o mais próximo de uma casa inteligente que eu já tinha chegado. A sensação de estar programando as coisas ao meu redor era incrível. Era como ter superpoderes. Hoje, mais de 30 anos depois, tenho dedicado boa parte de meu tempo livre construindo projetos de eletrônica com Arduino e outras plataformas para criar objetos (ou coisas) conectadas à Internet e que possam ser controladas através de programação. Isso é o que está no centro do que estamos chamando de Internet das Coisas.


DIY < 35

Nessa rede de coisas conectadas, objetos de nosso dia-a-dia, como luminárias, portas, janelas, equipamentos de som, motores e uma infinidade de sensores, passam a ser ativos, inteligentes e controláveis por meio da rede e de programas de computador. Dessa maneira, eles passam a ser muito mais capazes do que eram antes. Porém, hoje, a maioria das coisas que compramos ainda não pode ser controlada e as que podem não possuem necessariamente APIs e protocolos abertos. E isso complica bem a vida. Nesse caso, você tem algumas alternativas e vou falar de duas delas. A primeira funciona quando já existe algum tipo de interface de controle no objeto que você quer controlar. Ela pode ser na forma de uma porta de controle, como no caso do gravador que eu citei no começo do artigo, pode ser através de um controle remoto comum ou, em alguns casos, através da rede IP de sua casa. Sim, cada vez mais, equipamentos vêm com conexão à rede para serem controlados por apps em telefones celulares ou outros equipamentos, mas nem todos oferecem uma documentação de suas interfaces, protocolos ou APIs de controle. Nesses casos, você precisa emular as alternativas de controle existentes de alguma maneira. Você pode ligar seu computador às portas existentes e emular os sinais, enviar os comandos do controle remoto com um emissor de infravermelho, ou fazer a engenharia reversa dos protocolos de controle e emulá-los com algum programa em seu computador. Com um pouco de paciência, você conseguirá controlar grande parte das funcionalidades desses objetos através de programas em seu computador ou smartphone. A segunda é para os objetos que não possuem nenhum tipo de interface de controle remoto. Nesse caso, se o objeto possui teclas de controle, você pode usar os botões já existentes no equipamento que quer controlar e ligá-los com fios até seu computador e, com a ajuda de alguns circuitos, simular a ativação dos botões. Em outros casos, você precisará criar alguns

circuitos que façam a ponte entre seu computador - que comandará tudo - e o objeto. Isso pode ser feito facilmente com plataformas como o Arduino. A parte mais chata é achar maneiras de o Arduino controlar o objeto. Isso pode requerer que você abra o objeto e faça uma boa engenharia reversa de como ele funciona. Aos poucos, você poderá identificar o que faz o quê, e aí poderá pensar em como fazer uma interface dele com o Arduino. Depois, é só escolher como quer enviar os comandos para o Arduino, o que já é mais simples, e existem vários exemplos na rede de como fazer isso. O que mais tenho usado ultimamente é o controle através da rede IP. Para isso, coloco um shield Ethernet no Arduino para que ele fale com a rede e escrevo os programas necessários para o Arduino receber os comandos e para meu computador enviá-los. Bom, a ideia não é dar todos os detalhes de como você pode fazer isso, mas sim mostrar que as possibilidades estão abertas. Tudo o que fazemos com programas em nossos desktops e na web também pode ser aplicado para controlar coisas do dia-a-dia. Se você pesquisar um pouco, ficará surpreso com a quantidade de coisas interessantes que existem na web sobre esse tipo de projeto e o que você pode fazer com eles. Além de dedicar meu tempo a esse tipo de projeto, criei o site Fazedores para disseminar informações deste mundo, e você pode aprender algumas coisas por lá. É hora de tomarmos controle das coisas. Vamos nessa?

Manoel Lemos é fundador do Fazedores.com. Engenheiro da computação, adora inventar coisas, mergulhar com tubarões e motivar suas filhas a conhecer o mundo e a entender como as coisas funcionam. Trabalha na Abril como Chief Digital Officer, adora empreender, ajudar outros empreendedores e também atua como investidor anjo em startups que queiram mudar o mundo. @mlemos | http://fazedores.com


36 > Tecnologia do Futuro

Ambientes virtuais com ferramentas open source Por Flávia Jobstraibizer, Analista de Sistemas, Editora-chefe das Revistas Linux Magazine e Admin Magazine

É possível manter soluções robustas para virtualização utilizando software open source. Conheça as ferramentas com as quais você pode se beneficiar. Foi-se o dia em que não era seguro manter soluções de virtualização ou cloud computing baseadas 100% em plataforma livre. Atualmente é possível encontrar as mais diversas ferramentas para gerenciamento de ambientes virtualizados e estruturas de computação em nuvem, além de ferramentas para monitoramento de redes virtuais, detecção e resolução de problemas e várias outras funções, todas baseadas em software livre. Goldman Sachs, Wells Fargo Securities, Gartner e outros agentes proeminentes da indústria de pesquisas preveem que a tecnologia de computação em nuvem e os ambientes virtualizados serão a mais significativa mudança de TI desta década. Até mesmo grandes empresas, como Intel, Yahoo! e HP, atualmente colaboram com ferramentas open source para o mercado de virtualização e cloud, como é o caso do OpenCirrus (http://ow.ly/yCFVy), concebido para apoiar a pesquisa sobre a concepção, o fornecimento e a gestão de serviços em escala global e multidatacenter dos serviços de infraestrutura de cloud computing. Outro projeto extremamente interessante e funcional é o Eucalyptus (https://www.eucalyptus.com), criado ori-

ginalmente para empresas e órgãos governamentais e que atualmente está disponível para todos os tipos de usuários. Utilizando-se do conceito IaaS (Infrastructure-as-a-Service ou Infraestrutura como Serviço), o Eucalyptus é uma plataforma completa para prover infraestrutura virtualizada, permitindo que seus usuários possam estabelecer seus próprios ambientes computacionais em nuvem.

Interface clara e limpa do Eucalyptus As versões open source da ferramenta podem ser encontradas no GitHub do projeto (http://ow.ly/yCGuM). O Eucalyptus proporciona o uso mais eficiente da capacidade


Tecnologia do Futuro < 37

computacional de uma empresa, aumentando assim a produtividade e a inovação, a instalação de novos aplicativos e a proteção dos dados sensíveis ao garantir backups e recuperações mais rápidos. O Eucalyptus virou a base para diversos novos projetos, incluindo o Ubuntu Enterprise Cloud (http://ow.ly/yCGvW).

Gerenciador de imagens de instalação do Ubuntu Enterprise Cloud, baseado em Eucalyptus Mas se você acha que para por aí, engana-se. A mundial NASA também contribui para o mercado open source de ferramentas para infraestrutura de cloud, com seu inovador Nebula (http://ow.ly/yCGwT). Baseado no Eucalyptus, o Nebula é um projeto desenvolvido para fornecer uma alternativa para a disponibilização de centrais de dados, construída especialmente para atender à demanda de engenheiros que necessitavam de processamento de dados adicionais. O projeto OpenNebula (http://opennebula.org), versão open source baseada na ferramenta, utiliza KVM como hypervisor, possui um enxuto guia de instalação e configuração bastante simplificado. O reconhecido VMware (http://vmware.com) é outra ferramenta imprescindível para quem

deseja manter ambientes virtualizados. Com versões livres e proprietárias, o aplicativo se encaixa nas mais diversas necessidades. Se a intenção é virtualizar máquinas Windows, Linux, Solaris, Mac OS X ou outros sistemas operacionais com a finalidade de obter acesso remoto como se estivesse conectado diretamente à máquina, esta é a solução ideal.

Ubuntu virtualizando Windows com VMware Se você precisa de uma solução menos complexa e mais básica, o OpenVZ (http://wiki.openvz.org) pode ser a melhor escolha. Ele cria várias máquinas virtuais seguras, containers isolados (também conhecidos como EV ou VPS) em um único servidor físico que permita melhor utilização do servidor e a garantia de que os aplicativos em execução nos ambientes não entrem em conflito. Cada recipiente realiza e executa seus processos exatamente como um servidor stand-alone, e que podem ser reiniciados de forma independente. Uma vantagem do OpenVZ é a possibilidade de coexistir sem conflitos com outras soluções de virtualização que porventura você tenha em sua rede.


38 > Tecnologia do Futuro

Interface web do OpenVZ O popular hypervisor Xen (http://www.xen.org) é a primeira solução que vem à cabeça dos administradores de sistemas no momento em que pensam em criar um ambiente virtualizado. Esse pacote de código aberto para virtualização de servidores foi desenvolvido pela Universidade de Cambridge e funciona no Linux, suportando uma ampla gama de sistemas operacionais convidados. Com base no mesmo projeto, podemos citar ainda o Xen Cloud Platform (http://ow.ly/yCGBJ), que oferece infraestrutura para criação de plataformas cloud completas, com uma gestão baseada em padrões de APIs, métricas de SLA e consumo detalhado com base em uso de recursos. Existem ainda uma centena de excelentes ferramentas para virtualização que podem ser utilizadas em ambientes corporativos de pequena escala, mas a melhor forma de escolher entre uma delas é verificar a sua real necessidade, os recursos de hardware disponíveis, link de conexão com a Internet, quantidade de usuários etc. Dimensionar essa necessidade, e realizar alguns testes com a ferramenta escolhida, é o ideal para obter um ambiente virtualizado seguro e eficaz.

Flávia Jobstraibizer é editora-chefe das Revistas Linux Magazine e Admin Magazine, analista de sistemas, autora de livros de informática e defensora da liberdade digital. Mãe de dois meninos lindos, solteira convicta e workaholic assumida, mantém vários projetos em paralelo nas áreas de TI e terceiro setor. Toca violoncelo, odeia cigarro e adora estudar, aprender, conversar com gente inteligente e tomar Piña Colada de vez em quando. http://flaviajobs.com.br | @flaviajobs



40 > Propriedade

Propriedade Industrial: e o software? Por Alexandre Alvaro, professor em Engenharia de Software na UFSCar/Sorocaba e Co-Founder da aaTag Na área de tecnologia, nos deparamos diariamente com notícias a respeito de patentes, seja por um processo entre as gigantes empresas da área ou mesmo novas ideias/ invenções que surgem dia após dia. Entretanto, pouco discutimos sobre todas as formas de propriedade industrial existentes e disponíveis, principalmente sobre as formas de proteção para software no Brasil. Todavia, para que possamos entender todas as nomenclaturas, vou descrever brevemente as formas de proteção existentes no Brasil, definidas pelo INPI (Instituto Nacional de Propriedade Intelectual): 1) Patente é um título de propriedade temporária sobre uma invenção ou modelo de utilidade, outorgado pelo Estado aos inventores, autores ou outras pessoas físicas ou jurídicas detentoras de direitos sobre a criação. Ou seja, uma patente pode ser de invenção ou de modelo de utilidade. a) Invenção é a criação de algo para um problema técnico específico dentro de um determinado campo tecnológico e que atenda aos requisitos de atividade inventiva, novidade e aplicação industrial. Exemplificando, o telefone inventado por Graham Bell, a patente da Apple para o NFC em dispositivos touchscreen, dentre outras. b) Modelo de Utilidade (MU) seria uma nova forma ou disposição conferida em objeto que resulte em melhoria funcional no seu uso de fabricação. Ou seja, prover melhorias na forma, na qualidade, produtividade ou custo para se fazer algo já conhecido. Por exemplo, uma nova forma de inserir o chip no smartphone, uma nova tesoura esteticamente e ergonomicamente melhor do que as atualmente existentes, um mouse com maior facilidade de uso e encaixe nas mãos, dentre outros exemplos.

2) Desenho Industrial (DI) seria toda forma plástica que possa servir para fabricação de produtos, que se caracterize por nova configuração ornamental. Por exemplo, um novo formato de liquidificador ou um novo formato para telefones sem fio. 3) Registro de Marca é um sinal que individualiza os produtos ou serviços de uma determinada empresa e os distingue dos produtos e serviços de seus concorrentes. Assim, uma marca de empresa (contendo texto e/ou figuras) pode ser registrada para proteção, como Coca-Cola, Google, Twitter, MacDonalds etc. 4) Software Segundo o INPI, software é definido assim: “expressão de um conjunto organizado de instruções em linguagem natural ou codificada, contida em suporte físico de qualquer natureza, de emprego necessário em máquinas automáticas de tratamento da informação, dispositivos, instrumentos ou equipamentos periféricos, baseados em técnica digital ou análoga, para fazê-los funcionar de modo e para fins determinados”. O software (por si só) não pode ser patenteado no Brasil. Mas se existir um objeto com a funcionalidade que o software introduziu (por exemplo, equipamento ou processo), pode-se incluir o software na patente. Por outro lado, por si só, o software obedece às regras de Direito Autoral, ou seja, ao conjunto de direitos exclusivos relativos à proteção das “criações do espírito”. As características do direito de autor são: • Objeto da proteção, que está relacionado à forma como a ideia se expressa (não à ideia em si); • Concessão do direito, que nasce com a criação, independentemente da obra;


Propriedade < 41

O software (por si só) não pode ser patenteado no Brasil. Mas se existir um objeto com a funcionalidade que o software introduziu, pode-se incluir o software na patente • Registro é facultativo, não sendo constitutivo de direito, porém é o meio de se provar a autoria;

• Segurança jurídica nos negócios envolvendo o software (apropriação de ativos intangíveis); • Nos casos de transferência de direitos, o con-

• Validade do direito é de 50 anos, contados a partir de 1º de janeiro do ano seguinte à data de criação ou publicação.

trato averbado no certificado garante os direitos contra terceiros; e • Abrangência internacional.

O direito autoral pode ser moral ou patrimonial. É moral quando qualquer pessoa deseja reivindicar autoria e defender a integridade da obra e opor-se a modificações que denigram sua honra. É patrimonial quando o empregador ou o contratante tem o direito sobre o software a ser reivindicada a autoria. Importante ressaltar aqui um ponto a que poucos dão atenção: supondo que você é funcionário CLT de uma empresa e, na hora do almoço (ou no fim de semana com o uso de notebook da empresa), você crie um software para sua startup - de quem é a propriedade deste software? Da empresa! Isso mesmo, afinal, ela tem o direito de tudo que for produzido na hora de trabalho contratado por ela ou mesmo utilizando equipamentos dela em qualquer horário (e até mesmo fora da empresa). Para realizar o depósito, é necessário realizar a comprovação de autoria, seja por meio de alguma publicação relacionada ou por provas relacionadas à criação. Ainda, o conteúdo a ser depositado pode ser o software integral ou, preferencialmente, partes especificas que representem o diferencial da obra produzida. Assim, com o depósito em mãos, você tem algumas vantagens, como: • Instrumento legítimo para a comprovação da autoria (ainda que relativa) e da titularidade do programa de computador;

Por fim, a pergunta que fica é: mas é vantajoso eu registrar meu software no INPI? Depende. Depende, pois software é abstrato, está em todo lugar, é muito dinâmico e muito fácil de ser copiado. Quando existir um grande diferencial na regra de negócio de seu software ou mesmo restringir que ex-funcionários levem (partes) do código para empresas concorrentes, pode ser bem interessante. Por outro lado, para startups que precisam ser ágeis e dinâmicas, estas devem se preocupar em ser cada vez mais rápidas em atualizar e desenvolver novas funcionalidades. Afinal, quem não conseguiria fazer um software exatamente igual ao Twitter, ao Facebook e ao SurveyMonkey, por exemplo, sem nunca ter visto o código por trás dessas ferramentas?

Alexandre Alvaro é sorocabano, aprendiz eterno e curioso por natureza. Além disso, é Doutor em Ciência da Computação pela UFPE e Professor da UFSCar - Sorocaba; é co-founder da aaTag e apaixonado por correr riscos na criação de startups e P&D&I. Ainda trabalha para que Sorocaba/SP seja um polo de referência em TICs no Brasil. alealvaro.com | @alealvaro | br.linkedin.com/in/alealvaro


SERVIDOR DEDICADO DIALIDC Chega um momento em que seu negรณcio precisa de mais seguranรงa, estabilidade e desempenho na internet

Serivdores de alto desempenho e conexรฃo garantida .

ENTRE EM CONTATO

DataCenter 100% no Brasil

Monitoramento 24 horas

Atendimento personalizado para atender suas necessidades

SP

(11) 3514-9800

MG

(31) 3519-9800

RJ

(21) 3512-9800

PR

(41) 3012-0000

BA

(71) 3512-9800

DF

(61) 3246-9890

GO

(62) 3412-9890

PE

(81) 3771-9800

CE

(85) 3771-9800

dialhost.com.br


Wordpress < 43

3 ferramentas de cache para acelerar seu WordPress Por Andressa Dorneles, jornalista e analista de conteúdo da KingHost Por Filipe Cífali, analista de infraestrutura de webhosting na KingHost Acelerar seu site em WordPress certamente traz grandes benefícios. Além de ser uma experiência favorável para o usuário, pode ser um fator determinante para o posicionamento na página de buscas do Google. Por isso, aqui vão algumas dicas de como utilizar plugins de cache para aumentar a velocidade de entrega de conteúdo na sua página!

O que é cache e como ele pode trazer benefícios Cache é uma cópia de um conteúdo que costuma ser gerado dinamicamente, servindo a requisições subsequentes de maneira mais rápida, evitando o reprocessamento desnecessário de conteúdo. O objetivo do cache é reduzir o custo de acesso de sites. Existem técnicas que aumentam a performance de um site exercendo regras sobre os navegadores para tipos de arquivos diferentes, como de imagens, que raramente são alterados, podendo ter tempo de cache alto. Esse tipo de cache é armazenado no browser. Já conteúdo dinâmico tem seu cache armazenado diretamente no servidor web, pois é necessário um controle de alterações mais eficaz. O cache pode beneficiar o site reduzindo a demanda de recursos em cada acesso único e, em casos de cache client side, também pode reduzir o conteúdo entregue.

O tempo e a quantidade ideal de cache dependem de cada projeto, pois cada conteúdo pode ter um tipo diferente de cache conforme as regras de negócio do site.

Por que plug-ins de cache? Um plug-in de cache é um fator muito importante em um blog de sucesso. Se você utiliza o WordPress, a cada visita esse CMS irá passar por um processo de montagem da página ligado pela conexão com o banco de dados e montagem do código HTML. Quando um site recebe um tráfego pesado, uma carga significativa no servidor pode re-


44 > Wordpress

tardar o carregamento das páginas e até mesmo torná-lo indisponível. Se o cache estiver habilitado, apenas o primeiro visitante irá passar por esse processo. Depois, todos os demais internautas irão visitar páginas HTML que já estão prontas, e o processo será muito mais rápido. Existem diversos plug-ins de cache que aceleram a sua página em WordPress. Neste artigo, vamos falar sobre três ferramentas que quando utilizadas em conjunto podem aumentar ainda mais a velocidade de sites em WP.

OPcode O OPCode é uma extensão do PHP que foi gerada para aumentar a performance de execução de código ao ser processado no servidor. Após a abertura do plano, que era proprietário, a Zend introduziu-o ao PHP e tem mostrado suporte para o projeto.

Toda vez que um script é executado, a engine do PHP precisa compilar o código fonte em algo que a linguagem de máquina possa entender, resultando em um OPcode. Quando uma nova requisição é realizada, antes de o PHP compilar o código fonte, o software de cache intercepta e verifica se o OPcode do script já existe no cache. Caso não exista, o sistema de cache passa para o PHP Engine gerar o OPcode e o armazena no cache. Nas requisições subsequentes para o mesmo script, o OPcode será obtido a partir do cache, e não será necessário ser compilado pelo Engine do PHP novamente. Esse processo economiza de forma considerável o processamento de CPU no servidor. É claro que, se houver mudanças no código fonte em um script que já tenha o OPcode no cache, a mudança será identificada pelo sistema, que irá proceder com a devida atualização.


Wordpress < 45

W3 Total Cache Este plug-in melhora a experiência do usuário no seu site, aumentando o desempenho do servidor e reduzindo os tempos de download. Com ele, você tem uma infinidade de opções de otimização, como minimização de código fonte e integração com sua rede de distribuição de conteúdo (CDN). Com o W3 Total Cache instalado, seu blog pode carregar 10 vezes mais rápido e economizar até 80% de largura de banda. O tempo de inatividade é reduzido e a qualidade é drasticamente melhorada. Importante: Antes de instalar o W3 Total Cache, é necessário que você remova ou desinstale todos os plug-ins de cache que esteja usando (por exemplo, o WP Super Cache). Se você tiver algum plugin de cache correndo, é natural que tenha problemas na ativação.

O Varnish pode aumentar a velocidade de 300 a 1.000 vezes, principalmente de elementos estáticos, e diminuir bastante a utilização de memória, deixando para o Apache somente a execução de conteúdo dinâmico, como scripts PHP e CGI. A implantação do Varnish não requer mudanças na programação do site. Caso ele rode no mesmo servidor que o Apache, existe a necessidade de ajuste das portas de comunicação e uso de um IP adicional. Também pode ser utilizado para balancear a carga entre dois ou mais servidores web. As técnicas de cache são usadas para melhorar o desempenho do site, ao preservar recursos do servidor, permitindo que ele possa entregar o conteúdo a mais usuários. Planejar e oferecer acesso rápido aos usuários do seu site é um dos passos essenciais para o sucesso da sua página!

Varnish Varnish é um servidor HTTP usado como proxy de cache para conteúdo web. Ele atua de forma transparente, independentemente de linguagens de programação e bancos de dados, pois age diretamente na camada HTTP, utilizando somente cache de conteúdo já gerado. Basicamente, quando um cliente acessa um site que possui um Varnish, ele acessa o Varnish, que confere se já possui cache do conteúdo acessado. Se tiver, entrega o conteúdo imediatamente. Caso contrário, busca o conteúdo no servidor original (que fará o processamento), armazena-o em cache e entrega o retorno ao usuário inicial. Após esse armazenamento, o fluxo é repetido em novos acessos, com a vantagem de que o cache fica armazenado na memória RAM do servidor, aumentando a velocidade de entrega de conteúdo.

Filipe Cifali é analista de infraestrutura de webhosting na KingHost e trabalha há 5 anos com o mercado de hospedagem de sites. Especializado em Linux, cursa Sistemas de Informação e possui certificação da Sisnema para Administração de Ambientes Linux. É co-fundador do PyTchê, grupo de usuários Python do Rio Grande do Sul, apoiador de Open Source e compartilhador de idéias nas horas vagas. @FilipeCifali Andressa Dorneles é analista de conteúdo da KingHost e acadêmica de jornalismo da Unisinos, em São Leopoldo (RS). Já foi editora de conteúdo de sites de esportes e de notícias como Band RS, além de repórter e produtora na Rádio Gaúcha. andressa.silva@kinghost.com.br


46 > 7Masters

NoSQL Ivan Rosolen falou sobre o Cassandra: como funciona, sua possíveis usabilidades e seus pontos positivos: http://ow.ly/zWD4x Mauro Pichiliani analisou criticamente o NoSQL, sua usabilidade, performance e a relação com o armazenamento de big data, por exemplo: http://ow.ly/zWD5v A utilização do DataStore (banco de dados NoSQL sem schema) para replicação de dados com consistência eventual e não tran-

sacional em estruturas do Google AppEngine foi o assunto abordado por Renzo Nuccitelli: http://ow.ly/zWD9X

Python Audio Lazy: como funciona e suas aplicações – essa foi a apresentação de Danilo Bellini: http://ow.ly/zWDb5 Rafael Novello falou sobre processamento distribuído com Python e Celery: http://ow.ly/zWDcs


7Masters < 47

O 7Masters - Encontro iMasters de Especialistas, acontece todos os meses, na última quartafeira de cada mês, no iMasters Lab. São 7 profissionais que apresentam assuntos inovadores e diferentes em lightning talks de sete minutos. O tema é definido pela equipe iMasters, mas você pode dar sua sugestão. Escreva para setemasters@ imasters.com.br e opine, sugira um tema ou o nome de um profissional para participar. Aqui você confere uma seleção dos últimos 7Masters. E pode se preparar para os próximos! Acompanhe as datas em setemasters.imasters.com.br.

A API Brainiak Restful Hypermedia para web semantica, criado na Globo.com, foi apresentada por Rodrigo Senra: http://ow.ly/zWDhR

Internet das Coisas, Biohacking, Open Hardware e Android foram assuntos da apresentação do mestre Ricardo Ogliari: http://ow.ly/zWDn1

Giovane Liberato apresentou um sistema de recomendação para conteúdos educacionais, que começou como o seu trabalho de graduação e hoje é o seu trabalho profissional http://ow.ly/zWDjN

Ubiratan Soares falou sobre desenvolvimento nativo para Google Glass usando o GDK http://ow.ly/zWDtJ

Android Lucio Maciel falou sobre animações para aplicativos Android e a importância disso para uma melhor experiência do usuário http://ow.ly/zWDlZ

Quer indicar um tema ou um mestre para as próximas edições? Envie um email para 7masters@imasters.com.br



E-commerce< 49

E-commerce: desafios e frameworks Por Ivo Nascimento, analista de sistemas e desenvolvedor sênior na e-Smart Framework é uma palavra utilizada tanto por profissionais de negócios quanto pelos de tecnologia. Ela descreve os recursos capazes de servir de base confiável para o desenvolvimento de uma determinada atividade, reduzindo o esforço estrutural, aquele relacionado a estabelecer condições para que uma atividade seja realizada com sucesso, como o framework que utilizei para escrever este artigo. O computador, o software Pages, o tema e o formato do texto - esses componentes formam o framework que me permite focar em desenvolver o texto sem me preocupar com como registrar o texto ou onde está meu “errorex”, por exemplo. Em e-commerce, coexistem frameworks de práticas de negócio e de desenvolvimento de software. Há, também, uma terceira classe de frameworks que dão suporte para as duas áreas, capazes de proporcionar uma maior proximidade e velocidade em um processo de realização conjunta. É nessa classe de frameworks que o Magento se destaca. O Magento proporciona, desde o momento de sua instalação, os recursos de desenvolvimento capazes de dar suporte para as decisões de negócio em ambientes de mudança e agilidade, indo de lojas de um só produto a catálogos de milhões de SKUs. Uma das características técnicas do Magento de que mais gosto é sua implementação “event-driven”. Por meio da implementação de observers (http://ow.ly/yuKow), permite que ações sejam anexadas a eventos que ocorrem inclusive na interface web.

Um exemplo do core do Magento é este método, que atualiza o estoque de um produto quando ele é adicionado ao Order. public function createOrderItem($observer) { $item = $observer->getEvent()->getItem(); $children = $item->getChildrenItems(); if (!$item->getId() && empty($children)) { Mage::getSingleton(‘cataloginvento ry/stock’)->registerItemSale($item);

}

return $this;

}

Com a utilização de observers, fica fácil estender o Magento e, por exemplo, monitorar as palavras mais buscadas no seu site para conseguir descobrir novas oportunidades de negócio, comunicar o Centro de Distribuição (CD) sobre um novo pedido no momento em que ele é pago e, assim, reduzir o tempo de atendimento, ou ainda criar mecanismos que demandem automaticamente os fornecedores quando o estoque atingir o limite mínimo.


50 > E-commerce

São mais de 400 gatilhos de eventos oficialmente distribuídos pelo framework e que permitem esse tipo de desenvolvimento, mas, caso você precisar de um novo, a plataforma permite que você o crie de uma maneira rápida e segura, seguindo três passos: configuração do XML, criação da classe que implementa o recurso e a adição da trigger no código, como no exemplo:

Mage::dispatchEvent([label_do_evento], [array de dados]); Um outro recurso disponível no Magento é o Business Rule Engine - BRE (http://ow.ly/yuKtf), que aparece com o nome de Rule Conditions. BREs tornam maleáveis os pontos do software onde elas são utilizadas, constituindo uma ferramenta comum em ambientes com ritmo de mudança muito acelerado, exatamente como é o e-commerce, com sua necessidade de resposta rápida para mudanças no mercado. A composição de campanhas de marketing através de BREs permite compor cenários complexos com muita velocidade, colocá-los em teste e realizar aprimoramentos a partir do conhecimento surgido da experimentação, sem a necessidade inicial de desenvolvimento. No exemplo abaixo, está configurada uma ação de upselling. Quando o modelo de um produto é 2610, o Magento irá sugerir o produto modelo w810i.

É possível compor uma campanha que oferece 10% de desconto para um grupo de clientes na compra de determinados produtos, para um método de pagamento específico, desde a instalação do Magento, e se houver novos parâmetros que você deseja utilizar para compor o conjunto de regras da BRE isso pode ser feito com segurança por um programador Magento.


E-commerce< 51

Além dos recursos que já citei, o Magento oferece suporte para localização do site, utilização de mais temas para o front-end e centenas de extensões, muitas delas gratuitas e mantidas pela comunidade. Atualmente são três as versões de Magento disponíveis no mercado: Community, Enterprise e a GO (SaaS), rodando o code base na versão 1.9. Paralelo a isso, está em desenvolvimento a versão 2.0, que atualiza práticas de programação e promete aumentar ainda mais a produtividade dos desenvolvedores envolvidos com e-commerce.

IIvo Nascimento é programador, fascinado por padrões e algoritmos. Atua como desenvolvedor sênior na e-Smart. É estudante de licenciatura matemática e entusiasta de xadrez (http://ow.ly/yc59y) @ivonascimento | iannsp@gmail.com


52 > Sr. Conteúdo

Conteúdo para todos Por Bruno Rodrigues, Consultor de Informação e Comunicação Digital

Toda boa ação de Comunicação Digital baseia-se em dois pilares: informação e relacionamento. Como estes dois conceitos sempre se entrelaçam, muitas vezes fica difícil saber como trabalhar conteúdos para públicos com objetivos que mudam a cada momento e medir a exata intenção de relacionamento que se pretende com a informação publicada. Por isso, antes de mais nada, é preciso conhecer os tipos de informação que circulam no meio digital. Veremos a seguir alguns deles, que considero os principais.

Informação institucional O que se escreve sobre uma marca é institucional. Ou seja, não importa se é em um site ou em uma rede social, a descrição da uma empresa, o que ela faz, o que produz e sua relação com seus públicos, tudo é institucional. Este tipo de informação é o mais antigo da web, e remete ao momento em que a ‘internet’ saiu dos recônditos acadêmicos em meados dos anos 90. A informação institucional é base do conteúdo web, e precisa ser o mais preciso, checado e detalhado de todos. Ela é o cartão de visitas, a primeira impressão que fica da marca e a interface decisiva para o público decidir se vai ou não se relacionar com ela e, por consequência, com seus produtos e serviços. A produção de conteúdo um site ou rede

pode e deve ser compartilhada entre profissionais de diversos perfis, mas, na elaboração de conteúdo institucional, nada mais eficaz que um jornalista ou redator publicitário walguém cuja função primordial no dia-a-dia é a de escrever.

Informação sobre produtos e serviços Desdobramento natural da informação institucional, a informação sobre produtos e serviços traz objetividade ao universo de conteúdo sobre uma marca. Enquanto o conteúdo institucional procura envolver e impactar, o conteúdo sobre produtos e serviços demonstra, objetivamente, o que uma marca é capaz de produzir e oferecer a seus públicos. Em nenhum outro tipo de conteúdo é preciso ter tanto conhecimento de causa quanto na informação sobre produtos e serviços: quanto mais dados sobre um produto, e mais se conhece sobre um serviço, maior é a possibilidade de o usuário querer incluir a marca em sua vida antes mesmo de experimentar o que ela tem a oferecer – apenas pelas descrições apuradas do que é apresentado. Aqui é preciso emanar persuasão, então é fundamental entender o motivo pelo qual um futuro cliente poderá se interessar pela marca e seus derivados. E nada melhor que o meio digital para cruzar uma descrição textual com um vídeo de demonstração bem produzido ou uma galeria de fotos abrangente.


Sr. Conteúdo < 53

“É cada vez mais difícil separar informação de relacionamento em um ambiente onde a convergência é a regra geral. Ainda assim, quem estuda e produz conteúdo deve saber separar um do outro, e colocar os dois em perspectiva para entendê-los cada vez mais, e melhor. Isso é o que, atualmente, distingue um profissional mediano de um ótimo gestor de conteúdo“

Informação como entretenimento Trabalhar a informação como entretenimento é como dar voz a um projeto inanimado: o produto final já está lá, e pode ser um game ou um conteúdo em storytelling, mas é a palavra que irá clarear o caminho das pedras que o usuário precisa conhecer para lidar com a experiência que terá adiante.

A informação institucional é base do conteúdo web, e precisa ser o mais preciso, checado e detalhado de todos. Mais do que meras instruções que deve obedecer, o texto na informação como entretenimento funciona como um roteiro, onde a palavra serve como esclarecimento, estímulo e orientação. Assim, saber construir conteúdos que possuam lógica, encadeamento e clareza é fundamental para quem trabalha com formatos de entretenimento. Não basta contar uma história, é preciso saber como contá-la e conhecer bem a quem ela se destina. Na informação como entretenimento, o texto é companheiro de viagem de quem está experimentando a história, e desta forma o relacionamento surge no exato momento em que o usuário adentra o ambiente de imersão. Além

disso, o texto funciona como sentidos para quem acompanha a história: as palavras que o guiam são seus olhos, ouvidos e a toda a interação que terá com os elementos ao redor.

Informação para trabalho Um dos principais sustentáculos de um portal corporativo, a informação para trabalho é o coração do conteúdo de uma intranet. Enquanto o material noticioso é o ‘conteúdo-âncora’ de um portal interno, a informação voltada para facilitar a rotina de trabalho do empregado deve ser valorizada e colocada no topo da lista dos conteúdos a priorizar. Muitos ainda veem informação para trabalho como sinônimo de forma de acesso a ferramentas, ou as ferramentas em si, mas uma informação textual, pura e simples, também possui um coeficiente de funcionalidade comprovado usualmente em testes de uso de intranets - tão significativo quanto o de um aplicativo. Provar que as informações contidas na intranet são essenciais para a rotina de trabalho é o preço a ser pago para mostrar aos funcionários da empresa de que o portal corporativo é realmente útil – simples assim. Ou uma intranet tem utilidade, ou ela morre. Pensar em criar ambientes de relacionamento em uma


54 > Sr. Conteúdo

intranet – como redes sociais internas - sem provar que já é hábito na empresa produzir conteúdos úteis para sua ‘porta de entrada’ – o portal corporativo – será bem mais difícil. Se a empresa não faz, o que garante que o empregado o fará?

Informação e relacionamento Quando o texto é uma informação em movimento, como o caso de um post em uma rede social, que é criado para ser comentado e que supõe resposta, ele é ao mesmo tempo veículo e mensagem. Por isso, este é um tipo de informação que merece ser lapidado com todo o cuidado, mas, ao mesmo tempo, é um conteúdo produzido em quantidade e frequência como nenhum outro. Atenção, portanto.

Muitos ainda veem informação para trabalho como sinônimo de forma de acesso a ferramentas, ou as ferramentas em si, mas uma informação textual, pura e simples, também possui um coeficiente de funcionalidade Neste processo, estar aberto a questionamentos e saber encaminhá-los, sem inter-

romper a cadeia de contato - respostas precisam ser dadas, sempre -, se junta o fato de que, diferentemente do que acontece em outros canais, a réplica da marca precisa ser o mais breve possível. Nas redes, o usuário não espera. Desta forma, o que mais se pede da informação como relacionamento é agilidade e flexibilidade. Os conteúdos nas redes são vistos como informação efêmera, e o são – mas apenas para os que não os consumiram. Para quem os assimilou e com eles se relacionou, são eles que representam a marca e servirão como meio de relacionamento com o usuário.

Bruno Rodrigues é Consultor de Informação e Comunicação Digital, autor dos livros ‘Webwriting’ (2000, 2006 e nova edição em 2014) e de ‘Padrões Brasil e-Gov: Cartilha de Redação Web (2010), padrão brasileiro de redação online’. Também é instrutor de Webwriting e Arquitetura da Informação no Brasil e no exterior. bruno-rodrigues.blog.br | @brunorodrigues


Review < 55

Apiary – Fazendo muito mais que apenas documentar Por João Batista Neto, Líder de Desenvolvimento do iMasters Há algum tempo, venho trabalhando diretamente com APIs de diversos tipos. Tanto APIs públicas abertas, quanto fechadas. Em partes, meu trabalho está na criação de documentações, SDKs e artigos técnicos para utilização e consumo. Uma das maiores dificuldades na criação de documentação de API, além, claro, da manutenção, é a ilustração de seu uso para o desenvolvedor que está tento o primeiro contato com ela. Ao iniciar a integração, é natural que o desenvolvedor precise, por exemplo, saber como suas requisições HTTP estão sendo recebidas pela API e qual está sendo a resposta da API, para aquela requisição específica. Ilustrar o recebimento da requisição e a resposta para essa requisição, em uma documentação, não é uma tarefa simples. E é justamente nesse ponto que o Apiary mostra sua força.

Primeiro contato Eu já tinha uma conta no Apiary há algum tempo, mas apenas recentemente fui realmente utilizá-lo para um caso de uso em produção. A interface do Apiary é bastante simples e a organização facilita sua utilização:


56 > Review

De um lado, temos o conteúdo da API. A separação por recurso/verbo HTTP simplifica tanto a criação da documentação para aquele recurso/verbo, quanto o entendimento daquilo que está sendo documentado. Algumas documentações podem ter diversos recursos e o ToC no lado direito facilita a navegação entre os recursos.

Documentação facilitada A ferramenta já seria excelente, por cumprir muito bem seu propósito de documentar. Mas como manter a documentação é uma tarefa, talvez, ainda mais complexa que escrever a documentação, o Apiary oferece a integração com um repositório no Github. Isso significa que podemos escrever toda a documentação em Markdown e, ao fazer push para o repositório, a documentação no Apiary é atualizada automaticamente.

Ambiente de testes Pronto, escrevi a documentação da minha API. E agora?

Apesar de o Apiary ter a documentação como foco, o ponto mais forte, na minha opinião, é o Mock Server. Ao definir os recursos da API e os verbos, podemos também definir o que é esperado para determinada requisição HTTP e qual será a resposta, se a requisição for feita corretamente. O Mock Server é composto por dois ambientes distintos:

1. O próprio Mock Server, para onde devemos enviar as requisições de teste. 2. O Traffic Inspector, que monitora as requisições feitas para o Mock Server. Para localizar a URL do Mock Server, basta observar a coluna da direita, logo abaixo a tabela de conteúdo. Será alguma coisa como: netojoaobatista.apiary-mock.com. Uma vez localizada a URL do Mock Server, basta fazer uma requisição HTTP como documentado na sua API. Assim que a requisição for feita, basta verificar o Traffic Inspector, para ver como ela chegou na API e qual foi a resposta dada pela API:


Review < 57

“Ilustrar o recebimento da requisição e a resposta para essa requisição, em uma documentação, não é uma tarefa simples. E é justamente nesse ponto que o Apiary mostra sua força”

Prós

Contras

• A interface é simples e intuitiva. Muito fácil de utilizar.

• O Mock Server é bastante rígido com o que foi especificado. Se você colocou 3 espaços na documentação, então a requisição deve ser feita com 3 espaços.

• Permite a utilização de Markdown para a documentação. • É possível documentar cada verbo HTTP de cada recurso. • É possível descrever como serão as requisições e respostas HTTP. • O Mock Server e Traffic Inspector facilitam a integração, ao ilustrar como a requisição foi recebida e o que foi retornado. Permite, ainda, mostrar se a requisição foi bem sucedida ou se houve algum erro.

Conclusão Se você está desenvolvendo uma API e precisa documentá-la, o Apiary é, certamente, uma excelente ferramenta. A facilidade de escrever e manter a documentação, já seriam argumentos o suficiente para sua utilização. Mas o Mock Server + Traffic Inspector são o algo mais. Documentação de API é algo feito para o desenvolvedor. O que melhor, então, para o desenvolvedor, que oferecer um ambiente para ele “brincar” com sua API, enquanto lê a documentação?

• Permite integração com Github, tanto com repositórios públicos, quanto privados.

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



Conexão Vale do Silício < 59

Operações sem operador Por Fernanda Weiden, Gerente de Engenharia do Facebook No último dia 30 de maio, aconteceu, em Santa Clara, Califórnia (EUA), a primeira conferência dedicada a “Site Reliability Engineers” (SRE), ou “Production Engineers” (PE) como somos chamados no Facebook. O evento é chamdo SREcon (https://.usenix.org/conference/srecon14). Tive a honra de ser uma das três pessoas convidadas pela Usenix para criar o programa do evento, dedicado a ambientes de produção de larga escala. Uma das motivações para criação da SREcon foi criar um evento focado no trabalho que esses engenheiros fazem, de Production Engineer para Production Engineer (PE), com foco no que fazemos todos os dias: criar soluções de engenharia para desafios operacionais. Acho que é interessante explicar a dinâmica desse trabalho, então resolvi dedicar essa edição a tentar esclarecer um pouco o que significa ser um “Production Engineer” ou um “Site Reliability Engineer”. De tempos em tempos, temos Hackathons no Facebook. Nesses eventos, engenheiros passam horas trabalhando em projetos muitas vezes ambiciosos, que não necessariamente tenham relação com o que eles fazem no dia a dia. Numa reunião de PE logo em seguida de um dos eventos, estávamos compartilhando quais projetos tínhamos trabalhado na última Hackathon. Um dos engenheiros comenta: “Eu fiz nosso servidor de DNS ficar mais rápido”. Do outro lado da sala, alguém pergunta “Mais rápido quanto?”, e o cara responde “100 vezes mais rápido”. Na minha equipe, passamos um tempo pensando em como otimizar o algoritmo

que usamos para distribuição de informação nos clusters que fazem armazenamento de dados em memória. Nossa intenção era encontrar uma forma de distribuir esses dados de maneira que melhorasse a distribuição da carga. Depois de alguns testes, muita análise de dados e muitos “brainstormings”, conseguimos otimizar a eficiência em 40%. Mais análise de dados referentes ao comportamento dos objetos em memória, e descobrimos a periodicidade que precisamos refazer esse mapeamento de carga.

“De um ponto de vista disciplinar, o que muda de um analista de sistemas para um PE ou SRE não é a profundidade do conhecimento, mas a diversidade dele: PEs precisam entender de redes, arquitetura, sistemas, desenvolvimento e operações” Quando estamos pensando em operações de larga escala, é importante que cada desafio operacional seja respondido com uma solução de engenharia. Se você tiver que fazer a mesma coisa duas vezes, manualmente, tenha certeza que existe alguma coisa errada no modo de operação da sua equipe. E o trabalho, com o passar do tempo, vai se tornando chato. PEs são profissionais dedicados a tudo que existe em torno de cada produto que compõe infra estrutura, mas geralmente não do produto em si. Muitas vezes, grande parte dos planos das equipes de analistas que trabalham no desenvolvimento desses produtos são influenciados pelos profissionais


60 > Conexão Vale do Silício

“Quanto mais engenharia colocamos em resolver operações, menos operações precisam ser feitas de forma manual, e mais tempo pode ser dedicado a quebra-cabeças cada vez mais complexos” que têm a responsabilidade de fazer com que, uma vez todas as peças estejam supostamente no lugar, tudo vai funcionar como deveria. E de forma eficiente.

resolver operações, menos operações precisam ser feitas de forma manual, e mais tempo pode ser dedicado a quebra-cabeças cada vez mais complexos.

Performance, eficiência, confiabilidade são parte do dia a dia desse tipo de profissional. Como otimizar o uso de CPU de um sistema? Como melhorar o desempenho de certos tipos de requisições? Como propagar mudanças de configuração para milhares de computadores?

E tudo isso tem que acontecer com o sistema rodando, sem afetar o ambiente de produção. É muito mais do que pilotar um jato: é pilotar um jato e refazer o motor em pleno vôo.

“Se você tiver que fazer a mesma coisa duas vezes, manualmente, tenha certeza que existe alguma coisa errada no modo de operação da sua equipe” De um ponto de vista disciplinar, o que muda de um analista de sistemas para um PE ou SRE não é a profundidade do conhecimento, mas a diversidade dele: PEs precisam entender de redes, arquitetura, sistemas, desenvolvimento e operações. A cada dia, novos desafios se revelam, novas possibilidades para ganhos em performance, novas possibilidades para melhorar a compreensão da mudança de comportamento desses sistemas com o tempo. E o quanto mais engenharia colocamos em Fernanda Weiden trabalha com infraestrutura de grande escala, atualmente no time de engenharia do Facebook responsável for caching e segurança. Anteriormente, 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.


Dados < 61

Minerando experiências e histórias Por Mauro Pichiliani, Bacharel em Ciência da Computação, Mestre e Doutorando em Computação pelo ITA As marcas e os profissionais que trabalham com marketing e comunicação estão sempre à procura de informações, estatísticas e outras maneiras de mensurar qual é o impacto que suas campanhas e eventos estão gerando no público. Considerando o momento atual, em que cada vez mais se utilizam redes sociais e praticamente toda esquina tem alguém falando sobre Big Data, novas ideias para a coleta e a análise de como o público está reagindo ao que lhe é apresentado vêm sendo encaradas como tendências para guiar futuros investimentos e decisões relacionadas ao posicionamento estratégico de marcas. Uma tendência que atualmente vem sendo muito explorada por quem trabalha com monitoramento de redes sociais é a análise de sentimentos. Em termos simples, essa análise emprega técnicas já conhecidas de mineração de dados e processamento de linguagem natural para classificar tweets, posts no Facebook ou Google+, mensagens em fóruns, comentários e até mesmo o conteúdo ligado a imagens do Instagram. O objetivo é verificar como anda a percepção do público por meio da captura e da classificação do conteúdo circulado nas redes sociais através do agrupamento dessas interações em sentimentos positivos ou negativos. De fato, muitas empresas grandes, como a IBM, vêm apostando forte em recursos para esse tipo de análise. Entretanto, classificar os sentimentos é apenas o passo inicial e é possível ir muito além disso. Um dos princípios importantes apresentados logo no início da formação de novos publicitários, jornalistas, profissionais de marketing e comunicação é que as pessoas possuem uma chance maior de

se engajar com histórias, experiências e narrativas do que com fatos, dados, estatísticas e informações puras. Há até regras e técnicas para atingir o engajamento e fazer com que o público se relacione de forma emocional, já que esse tipo de conteúdo possui maior probabilidade de ser lembrado e comentado. Até recentemente, a tarefa de montar uma história ou narrativa a partir de dados e fatos ficava exclusivamente nas mãos de profissionais especializados, tais como jornalistas. Porém, com a quantidade, volume e velocidade de dados relacionados a marcas e eventos presentes em redes sociais, tal tarefa vem se tornando cada vez mais difícil. Ou seja, não dá mais para deixá-la apenas na mão do estagiário de mídias sócias: é preciso que a coleta e a análise sejam automatizadas. Afinal de contas, é humanamente impossível extrair experiências e histórias relevantes quando 10 milhões de tweets são gerados durante um jogo da copa do mundo, por exemplo.

Uma tendência que vem sendo muito explorada atualmente por quem trabalha com monitoramento de redes sociais é a análise de sentimentos Hoje, existem diversas técnicas e estudos que vão além da mineração de sentimentos. Uma rápida pesquisa em repositórios acadêmicos mostra que muitos trabalhos (veja no quadro “leia mais”) já conseguem


62 > Dados

minerar experiências, problemas, soluções, dicas e insatisfações. Em alguns casos, já é até possível prever quando o consumidor vai causar “aquele” barraco, acreditando que “fazer mimimi” nas redes sociais vai fazer com que seu problema chegue até os responsáveis, ou que a imagem da marca seja arranhada de alguma forma. Uma definição formal de mineração de experiência é a seguinte: ela visa a coletar automaticamente ocorrências de experiências pessoais, bem como opiniões de grandes quantidades de conteúdo gerado pelo usuário, tais como blogs e fórum, e armazená-las em um banco de dados de experiência com índices semanticamente ricos. Colocando dessa, maneira a mineração de experiências pode parecer seca e impalatável, mas quem trabalha com dados e informações reconhece que essa técnica equivale a descobrir verdadeiras minas de ouro. Um exemplo clássico é a análise de histórias e experiência em eventos. Suponha que uma marca vai patrocinar um evento presencial como um show. Como as marcas geralmente não fazem nada para ser pequeno, ou seja, elas procuram alcançar a maior quantidade possível de pessoas, é razoável esperar que um público grande se locomova até o local físico do show, possivelmente gerando problemas com estacionamento, filas, falta de organização, preços etc. Uma análise de experiências pode ajudar a detectar, por exemplo, congestionamento de avenidas e ruas e ir além: descobrir quem postou um atalho em uma rede social para evitar o tráfego, ou até identificar dicas de outras pessoas sobre estacionamentos lotados, locais com muitos flanelinhas, ou a barraca de lanches com o melhor sanduíche. De posse dessas dicas e recomendações, a conta oficial do Twitter do evento pode ajudar a informar pessoas que ainda nem saíram de casa ou que ainda estão se direcionando para o local. Ou talvez a assessoria de imprensa do evento possa montar um infográfico interativo com estes dados. Ou quem sabe montar um aplicativo mobile para o evento com as dicas e recomendações mineiradas.

Essas informações importantes são classificadas como utilitárias. Algo mais interessante é a captura de experiências pessoais e que potencialmente podem impactar outras pessoas quando divulgadas. Por exemplo, que tal descobrir automaticamente a história de uma pessoa que está indo a esse show porque seus pais sempre foram fãs da banda e juntaram dinheiro para o ingresso fazendo hora extra no trabalho? Ou quem sabe identificar aquele fã que ficou na fila dias antes de o portão abrir e levou uma camiseta do filho que ainda não nasceu para ser autografada porque o bebê foi concebido enquanto a música da banda estava tocando de fundo? Tais experiências são interessantes para serem divulgadas quando o organizador do evento estiver em uma coletiva de imprensa ou fornecendo uma entrevista para um jornalista, uma vez que se destacam de fatos estatísticos e têm potencial para que as pessoas se relacionem com as histórias dos outros. Sem contar a possibilidade de tal narrativa viralizar e atingir proporções épicas em termos de divulgação.

Leia mais Solution mining for specific contextualised problems: towards an approach for experience mining: http://ow.ly/yI3cp Experience Mining: Building a Large-Scale Database of Personal Experiences and Opinions from Web Documents: http://ow.ly/yI3ff Mining and visualizing local experiences from blog entries: http://ow.ly/yI3k8 Tip information from social media based on topic detection: http://ow.ly/yI3mp

Mauro Pichiliani é bacharel em Ciência da Computação, Mestre e Doutorando em Computação pelo ITA (Instituto Tecnológico de Aeronáutica). Trabalha há mais de 10 anos utilizando diversos bancos de dados e ferramentas de programação. @pichiliani | pichiliani@gmail.com



64 > Desenvolvimento Zen

Excelência no Desenvolvimento Por Anderson Casimiro, entusiasta PHP e Open Source, co-criador e organizador do PHPSP

Scientia Potentia est Salve, meus caros! Na edição anterior da Revista iMasters (#10 – maio/2014 - acesse em imasters.com.br/revista), falei sobre o App Engine. Hoje vamos pular a continuação dessa conversa para analisar algumas outras vertentes sobre desenvolvimento que não ferramentas. Desta vez vou falar mais sobre minhas inspirações como desenvolvedor e pilares que acredito que fizeram de mim o profissional que sou hoje e que me levam dia a dia e me levarão a diversos objetivos. O título fala sobre Excelência - mas o que afinal é isso? Em resumo, excelência é superar expectativas. Como isso se aplica à vida profissional? Há uma pequena história que talvez você já conheça, mas eu vou relatar aqui resumidamente: “Um profissional foi reclamar com o seu chefe sobre a rápida evolução de um novo companheiro de trabalho enquanto que ele, que estava há tanto tempo na empresa, não recebia o reconhecimento que acreditava ser merecido. O chefe o interrompeu e pediu que ele fosse à feira que havia ali perto e descobrisse o valor do abacaxi; resmungando, ele foi. Ao retornor da rua, falou com o chefe “o abacaxi custa R$ 4 patrão. E como eu ia dizendo...”. Antes de conseguir continuar a conversa, foi novamente interrompido quando o novo colega de trabalho entrou na sala – o chefe o havia chamado. O chefe fez o mesmo pedido a

ele. O novato foi à feira e, quando voltou, trouxe o resultado: “o abacaxi está 4 reais, mas consegui um desconto. Se o senhor quiser para uma salada, outras frutas estão também em promoção - aqui estão os valores com os descontos”- e entregou uma pequena lista para o chefe, que agradeceu e pediu para que retornasse ao seu posto. Então ele virou para o insatisfeito e perguntou: ‘há algo em que eu possa ajudar’.” Esse é um exemplo bem simples da diferença entre fazer somente o que é pedido e ir além. Aprendi cedo esse conceito - quando ainda vendia cachorro quente com minha avó, que dizia que não era só o lanche que estávamos entregando - mas algo que as pessoas gostassem de verdade e que devíamos tratar os clientes como gostaríamos de ser recebidos por exemplo nas casas de nossos parentes. Tínhamos clientes fiéis na região que sempre traziam amigos para conhecer. Mais uma vez: não era só o lanche, mas o cuidado e asseio, além de um bom atendimento faziam toda a diferença.

“Comecei a desenvolver com PHP ainda em 2001 e até hoje estudo todos os dias. Scientia Potentia est ou, Conhecimento é Poder” Quando comecei a trabalhar com tecnologia, tive oportunidade de aplicar este conceito novamente. Melhorei algumas rotinas


Desenvolvimento Zen < 65

no hospital para o qual eu prestava serviço - o que me garantiu um lugar no CPD de lá. Nesse ponto, minha carreira em desenvolvimento começou de fato a fluir. Ao longo dos anos fui aprendendo, conhecendo novas pessoas, novos mestres e os pilares que apresentarei a seguir são os principais para mim, por isso vou detalhá-los.

Agilidade Você provavelmente já ouviu falar no Guepardo. Ele é o mais veloz animal terrestre, chegando a velocidades de mais de 100Km/h. Mas não é a velocidade que garante o seu alimento. Em uma caçada, ele consegue acompanhar sua presa mesmo quando ela toma outra direção bruscamente.

“Encontrar o equilíbrio entre velocidade e qualidade é fundamental para o Desenvolvimento de Software” Quando digo agilidade não estou falando em ser veloz, mas sim em ser efetivo - como o Guepardo. Encontrar o equilíbrio entre velocidade e qualidade é fundamental para o Desenvolvimento de Software. Inclusive, esse é um dos principais conceitos por trás

do movimento Ágil, que visa a responder prontamente a mudanças durante o desenvolvimento, o mais rápido possível. Realizar o menor esforço (tempo) para conseguir o melhor resultado (entrega) - e esse resultado idealmente não deve voltar, do contrário temos retrabalho e perda de tempo. Para encontrar tal equilíbrio devemos procurar ferramentas que auxiliam na produtividade, tais como Metodologias de Desenvolvimento (como Scrum, Kanban e XP), softwares que nos ajude nisso, como IDES, e a aplicação de conceitos de qualidade no nosso dia a dia.

Qualidade Uma das maiores fabricantes de automóveis do oriente revolucionou a produção de veículos com ideias simples que garantiram a ela a possibilidade de fabricar seus veículos assim que os mesmos eram pedidos (o que ficou conhecido como Just-In-Time, ou JIT), com qualidade e praticamente nenhum desperdício, apenas cuidando da qualidade em cada etapa do processo produtivo. Como podemos aplicar isso ao desenvolvimento? Para ter qualidade precisamos de métricas, principalmente para sabermos se estamos


66 > Desenvolvimento Zen

indo bem ou mal, evoluindo ou regradindo. Vamos a um exemplo clássico com software: testes unitários. Vamos dizer que temos 50 testes em nossa aplicação e que isso representa uma cobertura de 10% de nosso código. Conforme evoluímos a aplicação, o índice de cobertura cai, e então perdemos qualidade. Se aumentamos o número de testes, e, consequentemente sua cobertura, melhoramos a qualidade. Este é só um exemplo, mas imagine todas as métricas que podemos fazer com software: testes unitários, testes de comportamento, complexidade, métricas de performance, benchmarks. Saber mensurar essas métricas e aprimorá-las continuamente vai garantir um ótimo desempenho em qualquer projeto. Evoluir a qualidade do software significa evoluir também para o nosso próximo pilar.

Conhecimento Você não pode conceber um software sem conhecer como se faz, certo? Comecei a desenvolver com PHP ainda em 2001 e até hoje (eu diria até eu cansar, o que não é fácil) estudo todos os dias, seja com livros, lendo blogs, vendo textos nas redes sociais, participando de eventos. Scientia

Potentia est ou, Conhecimento é Poder. Durante todos esses anos, me aprofundei em conhecer o PHP e todo dia tenho aprendido algo novo, novas (e antigas, mas eficientes) maneiras de fazer as coisas acontecer. Em outras palavras tenho me especializado em PHP. Mas nem só de linguagem vive o Desenvolvimento - Sistemas Operacionais, Redes Servidores, Bancos de Dados tradicionais e NoSql, Integração Contínua, Ferramentas de Desenvolvimento, Cloud Computing,Programação client-side, Mobile... nem as velhas e boas disciplinas e como Matemática e Português. Apesar de não dedicar a maior parte do tempo a cada um desses temas, tenho um leque de opções sempre que preciso decidir por um ou outro em cada tema, por exemplo, quando escolher o Apache frente ao Nginx, MongoDB frente ao Mysql ou PostgreSql, etc. Ter diversas cartas na manga sempre é bom, principalmente quando você conhece esses assuntos. Saber usá-las adequadamente vai fazer a diferença em qualquer


Desenvolvimento Zen < 67

projeto. E outro ponto: você não precisa ser um especialista em tópicos periféricos – o que não te impede de se tornar um também –, mas saber razoavelmente seu funcionamento e como obter mais informação é fundamental na construção de projetos de sucesso. O que nos leva a um dos mais importantes pilares: a criatividade.

Criatividade Muitos pensadores e filósofos têm as mais diversas opiniões sobre esse tema, mas algo é sempre certo: a criatividade surge quando existe a insatisfação – parece até redundante, mas você não vai além se estiver acomodado com/em seu ambiente, sua zona de conforto. Tudo o que conhecemos através da tecnologia surgiu de pensamentos fora dos modelos contemporâneos a eles. Indo a 1994, Rasmus Lerdorf queria apenar gerir eficientemente seu “blog” - disso surgiu a linguagem predominante na web. Outro exemplo é o microframework Respect, que surgiu quando era desnecessariamente complicado fazer validações em formulários. Em 1963 começou a produção de um programa de TV que era um tapa buraco na programação inglesa, e que hoje é a série de ficção científica a mais tempo no ar. Um pixel tornou o que era destinado a ser um mero personagem de jogo, na década de 70, a um ícone da cultura nerd.

“Nada do que conhecemos vai ser reconhecido se não soubermos usar bem cada conhecimento, cada habilidade, para construir nossas aplicações e em nossos projetos dentro e fora do código”

O que quero dizer aqui é que nada do que conhecemos vai ser reconhecido se não soubermos usar bem cada conhecimento, cada habilidade, para construir nossas aplicações e, porque não, nossos projetos dentro e fora do código. Estimular a criatividade fazendo experimentos com código, processo, ou qualquer projeto que você ainda não imaginou faz, sim, toda a diferença!

Conclusão Neste artigo falei “por alto” dos pilares que eu priorizei no meu desenvolvimento pessoal. Faço aqui o convite para que você busque os seus pilares. E mais: não busque ser excelente em um deles, mas seja Excelente em seu modo de agir, tente sempre superar as expectativas. Não se atenha somente em testar seu código, melhorar seu processo de desenvolvimento. Em uma adaptação livre de Aristóteles, deixo meus votos a vocês: “Nós somos aquilo que fazemos repetidamente. Excelência, então, não deveria ser um modo de agir, mas um hábito”. Sejam sempre excelentes! Até a próxima!

Anderson Casimiro atua com desenvolvimento web desde 2001 também gerindo times de desenvolvimento 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



Mobile < 69

Desenvolvimento para iOS - uma reflexão sobre passado, presente e futuro Por Bruno Koga, embaixador de Appsterdam no Brasil Por George Villasboas, líder do capítulo brasileiro do CocoaHeads Na World Wide Developer Conference deste ano, o conhecido WWDC ou simplesmente “dub-dub” para os mais próximos, a Apple deixou claro seu recado para a comunidade de desenvolvedores de sua plataforma: “Escreva código, mude o mundo”. Uma frase tão simples e óbvia que, ao lê-la, nós, desenvolvedores, pensamos: “Mas não é exatamente isso que estamos fazendo há tantos anos?”, ou seja, escrevendo código para os devices da Apple e tentando fazer a vida das pessoas melhor? Na época do evento, ficou claro que duas coisas poderiam ocorrer a partir dali: ou teríamos melhorias incrementais (como aconteceu em anos anteriores), ou seguramente teríamos algo que seria uma ruptura com o passado e um novo horizonte de oportunidades iria se abrir. Contrariando todas as expectativas, inclusive as nossas, o segundo aconteceu!

A melhor época para começar a desenvolver aplicativos para iOS foi quando a Apple disponibilizou o SDK pela primeira vez. Se existe uma “segunda melhor época”, podemos afirmar com convicção que é agora. Após os anúncios do keynote, os sentimentos dos participantes nos corredores do Moscone Center West (local onde historicamente acontece a WWDC) eram uma mistura de felicidade com frustração. Felicidade, pois todos estávamos muito satisfeitos com os anúncios e tivemos boas novidades. Frustração, porque sabíamos que uma carga de conhecimento e experiência que acumulávamos há anos com o Objective-C seria substituída algo novo - a desconhecida

e intrigante linguagem Swift. Por essa, ninguém esperava. Conversando com alguns engenheiros amigos que trabalham na Apple há anos, eles mesmos foram surpreendidos pelo anúncio, e alguns tomaram conhecimento da linguagem poucas horas antes da apresentação. Apenas um pequeno grupo de pessoas estava trabalhando secretamente em um projeto que mais tarde se tornou o Swift. Historicamente, a Apple sempre valorizou sua comunidade de desenvolvedores, buscando estabelecer altos padrões de engenharia de software, User Interface (UI) e User Experience (UX). Veja um dos seus aplicativos para iOS, o GarageBand: um bom exemplo de como fazer uso da tecnologia existente para criar algo que beira a magia. Quem é usuário desse aplicativo sabe do que ele é capaz. E não é por menos. Um dos principais motivos para a retenção de usuários no universo Apple é a AppStore, e nela foi criada um ciclo virtuoso, no qual bons apps a preços acessíveis atraem um grande público, que por sua vez atrai mais bons desenvolvedores, que vão construir apps cada vez melhores, e assim por diante. Evolução – da tecnologia e também do usuário E não é só tecnologia, hardware, recursos e apps que estão evoluindo. O usuário também está evoluindo junto. Façamos uma reflexão sobre o passado do desenvolvimento para a Apple. Mais especificamente, o passado do desenvolvimento para iOS. Um telefone, um iPod e um comunicador de internet. Assim foi apresentado o iPhone. Natural que a necessidade do usuário fosse suprida apenas com


70 > Mobile

webapps, ou aplicativos em HTML que imitavam a interface do iPhoneOS (nome do iOS na época), pois a web era a sinônimo de internet. Lembrando que não era possível, para o usuário comum, instalar aplicativos além dos que já eram embarcados no aparelho. iPhone lançado, usuários e crítica fascinados com o novo gadget, e meses depois a Apple anuncia o primeiro SDK (Software Development Kit) para desenvolvedores, que permitiria a criação de aplicativos nativos para o iPhone, e não mais os chatos e limitados webapps. Junto com o SDK foi lançada a AppStore, oferecendo aos desenvolvedores e usuários um local único e centralizado para vender e comprar aplicativos. Para os desenvolvedores surgia uma oportunidade ainda maior, pois a loja de aplicativos resolveria uma grande dificuldade que existia na época - a divulgação e a logística de entrega. O que antes era uma dor de cabeça, agora estava a um toque de distância do usuário, com um cartão de crédito pronto para ser usado, criando uma verdadeira corrida do ouro na indústria. O interessante disso tudo isso é observar que desenvolvedores e usuários estão sempre lado a lado nessa evolução. Olhando para trás, vemos que desde o lançamento do iPhone, em 2007, a Apple já preparava o terreno para receber desenvolvedores no futuro e iniciar uma parceria com eles, criando um mercado até então inexistente. Ao lançar o iPhoneOS 2.0, a Apple disponibilizou um SDK completo e de qualidade, fazendo com que o iPhone não fosse apenas um fantástico sistema operacional, mas também uma poderosa plataforma em que desenvolvedores pudessem criar aplicativos de qualidade. Uma boa parte dos frameworks que usamos até hoje, como o UIKit, foram liberados nessa versão. A partir daí, a atenção ao desenvolvedor cresceu exponencialmente. Com o iOS 3 (e o surgimento do iPhone 3GS), vieram novas APIs, como sensor de proximidade, in-app purchases e APIs para streaming de áudio e vídeo, que abriram portas para uma nova gama de aplicativos. Em 2009, com a versão 3.2 do iOS, a Apple lançou o iPad e, com ele, vieram novos paradigmas de de-

sign de interface para uma tela maior. A versão 4 trouxe, para os usuários, multitasking, AirPlay, AirPrint, Game Center, entre outras centenas de funcionalidades e melhorias. Já o iOS 5 incluía a Siri, Notification Center, iMessages, updates over-the-air e, claro, o iCloud. Do ponto de vista do desenvolvedor, essas versões juntas foram responsáveis pela introdução de blocks, ARC (Automatic Counting Reference), literals e milhares de novas APIs, como o GCD (Grand Central Dispatch), que facilitou o desenvolvimento de aplicações multi-thread, UIAppearance, Storyboards, Schemes e integração do Xcode com o GIT.

O Swift é uma linguagem moderna, que incorpora padrões que há anos são requisitados por desenvolvedores de todo o mundo, sem deixar de lado uma de suas principais características, que é o foco em produtividade. O iOS 6 trouxe importantes ferramentas de interface, como Collection Views e Auto-Layout, que pré-anunciavam mudanças no tamanho de tela de um iPhone que poderia ser lançado em um futuro próximo - o que de fato aconteceu meses depois, com as telas de 4” introduzidas no iPhone 5. Com a vinda do iOS 7, a Apple quis também passar a mensagem de que os usuários de dispositivos móveis evoluíram. Elementos esqueumórficos já não eram mais necessários e foram completamente removidos do sistema, promovendo uma drástica mudança visual. A UI agora estava mais natural, próxima do usuário e de como ele interage com ela. Simulações de física foram incorporadas aos elementos de UIKit (UIKit Dynamics), que passaram a responder à ação da gravidade, elasticidade e posicionamento do dispositivo, em uma interface viva, mas focada no que é importante: o conteúdo. Muitos aplicativos foram refeitos do zero e muitos outros surgiram, mostrando


Mobile < 71

que a nova cara do iOS e os novos paradigmas de design tinham sido realmente mudanças positivas. Foram apresentadas também ferramentas como o Bots e frameworks novos como o XCTest, que davam suporte para os desenvolvedores garantirem a qualidade dos seus códigos, gerando testes automatizados. O iOS 8, junto com o OSX Yosemite, está agora diminuindo a distância entre o mobile e o desktop, em uma estratégia amadurecida na qual um não compete com o outro, mas são complementares, no sentido de tornarem as transições entre um e outro suaves e sem passos extras. Comece a escrever um e-mail no iPhone, chegue ao escritório, abra o iMac e continue exatamente de onde parou. Comece a navegar na web no iMac e continue na mesma página no iPad. O iPhone tocou? Atenda no OSX ou no iPad. E essa mesma tecnologia que torna isso possível, conhecida como Handoff, está disponível para desenvolvedores e seus apps. E agora, o futuro presente Por fim, a Apple está começando um novo capítulo em sua história com os desenvolvedores, rompendo os laços com as arquiteturas do passado e introduzindo uma nova linguagem de programação chamada Swift. Ela vem com as promessas de tornar o código mais seguro e com alto desempenho. Testes mostram que códigos que demandam processamento (como criptografia) chegam a ser processados até 70% mais rapidamente quando escritos em Swift. Mas não é só isso. O Swift é uma linguagem moderna, que incorpora padrões que há anos são requisitados por desenvolvedores de todo o mundo, como generics, tuples, inferência de tipos, closures e outros, sem deixar de lado uma de suas principais características, que é o foco em produtividade. A melhor época para começar a desenvolver aplicativos para iOS foi, sem dúvida, quando a Apple disponibilizou o SDK pela

primeira vez. Se existe uma “segunda melhor época”, podemos afirmar com convicção que é agora. A Apple raramente dá ponto sem nó. Analisando o histórico de lançamentos de APIs e de versões dos seus sistemas operacionais, podemos ter a certeza de que a introdução do Swift e de todas as novidades apresentadas na WWDC deste ano são apenas o começo de uma nova evolução no mundo do desenvolvimento de software. A nova linguagem de programação é apenas o meio pelo qual a Apple conseguirá, cada vez mais, facilitar o trabalho do desenvolvedor e abrir as portas para um futuro no qual os dispositivos, existentes e os que estão por vir, sejam cada vez mais integrados e poderosos. A Apple já não é mais um ou outro produto, mas sim um ecossistema pensado como um produto único, formado por vários componentes integrados de uma maneira sem precedentes na indústria, e o desenvolvedor é mais do que nunca o elemento fundamental desse ecossistema. As sementes para a próxima década estão plantadas. Se você sempre sonhou com uma oportunidade para aprender a desenvolver aplicativos para os dispositivos da Apple, a sua hora chegou, não deixe para depois.

Bruno Koga trabalha com iOS desde 2009. Atual embaixador de Appsterdam no Brasil, quer ajudar a melhorar a comunidade de App Makers no país e mostrar para o mundo do que somos capazes. @brunokoga | brunokoga.com George Villasboas é integrador do movimento CocoaHeads no Brasil. Engenheiro, web developer desde 1997 e iOS developer desde 2010, já participou de projetos de mobilidade para diversas empresas listadas na Fortune 500 e é co-autor de títulos promovidos pela Apple em diversas AppStores. @ghvillasboas | http://lnkd. in/bwzXVTk | contato@cocoaheads.com.br


72 > iMasters Box

iMasters Box Seleção: Flávia Jobstraibizer - fjobs@linuxmagazine.com.br - envie suas sugestões de ferramentas!

Construct 2

GitLab

Ambiente de desenvolvimento de jogos que agiliza e facilita a criação de games interplataforma. Utiliza as bibliotecas dos principais sistemas operacionais para criar jogos de maneira muito fácil. Sua preocupação será em criar uma história e desenvolver as imagens do jogo. A ferramenta possui uma programação intuitiva, bastando selecionar em seus componentes o comportamento predefinido dos personagens, cenários, trilha sonora e outros objetos da tela. Se você é iniciante vai gostar, caso seja um desenvolvedor mais experiente vai se impressionar com as facilidades disponíveis na ferramenta.

Software de código aberto (licença MIT Expat) para colaboração de código. Criar projetos e repositórios, gerenciar o acesso, fazer as revisões de código e gerenciar repositórios Git de maneira local. Cada projeto pode ter também um issue tracker e um Wiki para ajudar nas revisões de código e melhorar a colaboração com os pedidos de mesclagem. Foi desenvolvido em Ruby on Rails.

Acesse: http://ow.ly/ybg3s

Acesse http://ow.ly/ybg5G


iMasters Box < 73

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!

ElasticSearch

Freemind

Plataforma de busca Open Source baseado no Apache Lucene. Foi desenvolvido por Shay Banon em Java. ElasticSearch criou um conjunto de funcionalidades que tornam o trabalho de indexação e busca bem mais simples. Como é um servidor, as aplicações devem utilizá-lo como clientes, solicitando ações e recebendo os devidos resultados. Nesse caso por meio do protocolo HTTP. As principais qualidades do ElasticSearch são sua API Restful, sua capacidade de distribuição e ser Schema free. Isso significa que, sua aplicação terá capacidade de aumentar o desempenho adicionando novos nós.

Freemind é uma ferramenta online gratuita, que cria gráficos simples e claros, sem adornos, e os exporta em formato bastante compatíveis, como HTML, PDF e JPEG. Seu funcionamento é rápido e fácil: basta criar os blocos e movê-los pela página. caso o mapa tenha muito conteúdo, é possível ocultar partes dele rapidamente sob seus temas principais, quando estes não estiverem sendo usados, reativando-os quando necessário. Os mapas podem dar links as páginas web, documentos ou pastas no computador do usuário, rede local ou Internet. Acesse: http://ow.ly/vsU29

Acesse http://ow.ly/ybg78





Turn static files into dynamic content formats.

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