quinta-feira, 25 de agosto de 2011

Formas de Interação com Games: Camera Kombat

Outra forma legal de interação com games é o Camera Kombat. Jogo de luta multplayer criado por estudante de Ciência da Computação do Centro Universitário SENAC - SP. O jogo é baseado em reconhecimento de gestos e depende dos movimentos do jogados para que seu 'personagem' possa relizar suas ações.

O camera Kombat permite que o usuário use seu corpo como dispositivo de entrada. Eliminando assim, a necessidade do uso de joysticks. Para jogar é necessário que o computador possua uma câmera para a captura da imagem e que os jogadores fiquem sempre ao seu alcance para que todos os movimentos sejam recolhidos e interpretados. Para a identificação dos gestos, primeiramente devem ser identificadas as regiões do corpo do jogador, como, cabeça e pés. Então quando o jogador esticar o braço para frente, por exemplo, é realizado um calculo baseado na extremidade de cima do da imagem capturada do jogador, no caso a cabeça, e o software executa uma ação de acordo com aquele gesto que foi identificado.

À medida que os movimentos forem sendo identificados, como um soco ou um chute, é lançado um objeto virtual em direção ao adversário que pode ser visto na tela do computador. O jogador adversário precisa desviar desse objeto para não 'perder life' e contra-atacar da mesma forma.

A linguagem utilizada na criação do projeto foi C, sob o paradigma de programação estruturada. Para acesso a implementação de qualidade de técnicas e métodos de visão computacional foi utilizada a biblioteca OpenCV, que possui uma serie de algoritmos preparados para trabalhar em aplicações que demandam processamento de imagem.

O resultado desse trabalho é uma forma divertidíssima do usuário interagir com o jogo e impossível de ficar parado. Veja abaixo um vídeo de demonstração do Camera Kombat.





Referência:

DE PAULA, L.R.P., BONINI, R.N. AND MIRANDA, F.R.. 2006. Camera Kombat – Interação Livre para Jogos.

domingo, 21 de agosto de 2011

O HTML5

O HTML5 é a quinta versão da linguagem HTML. Esta nova versão traz consigo importantes mudanças quanto ao papel do HTML no mundo da Web, trazendo novas funcionalidades como semântica e acessibilidade, com novos recursos antes só possíveis por meio de outras tecnologias, e trazendo uma importante disseminação dentre todos os novos navegadores de internet, tornando-o mais universal e com os novos elementos, que valorizam a semântica, incluindo as tags nav, header, section, aside, e footer, o desenvolvimento para a web com HTML5 a partir de agora estará em um nível superior. As novidades não acabam por aí, dentre todas, podemos citar as seguintes:

· Utilização de um plugin gratuito de áudio e vídeo via tags.

· Elemento

· Drag and Drop de elementos.

· Cross-document e cross-domain messages.

· Histórico de navegação em Ajax.

· Geolocation API.

· Network status (online/offline).

· Maior controle de dados sobre formulários.

· contentEditable – Editor rico de conteúdo.

· Armazenamento de dados no cliente.

· Web worker threads.

Com essas novidades, o HTML5 causa uma mudança no desenvolvimento, apoiando normas abertas que expõem tecnologias subjacentes permitindo a integração, inovação e desenvolvimento de aplicações e serviços complexos facilmente.

Mehores sites que utilizam html5:
Galeria HTML5

Até os próximos post.

sexta-feira, 19 de agosto de 2011

Formas de Interação com Games: Air Guitar

Sabe aquela competição onde os participantes devem tocar uma guitarra imaginária como se fosse uma guitarra de verdade e tem até um campeonato mundial? Pesquisadores do Centro de Informática da UFPE desenvolveram um framework voltado para a prática dessa atividade chamada de Air Guitar.


Esse framework permite que o usuário utilize suas mãos como dispositivo de entrada. Para que funcione basta ficar em frente à camera do computador e fazer com que suas mãos estejam sempre ao seu alcance. O rastreamento das mãos é feito através da identificação de cores, por isso, o jogador precisa usar um par de luvas de uma cor que esteja em contraste em relação ao ambiente. Dado inicio ao jogo, a câmera captura os movimentos das mãos do jogador, identificando suas intenções, como uma batida nas cordas e a posição da mão no braço da guitarra.



Veja abaixo o vídeo de demonstração do framework para a prática do Air Guitar:






O framework faz uso de algumas bibliotecas para auxiliar no seu processamento, como DSVideoLib que é usada na captura da imagem pela web cam, FMOD X que é responsável pela saída de sons, enquanto o códifo foi escrito na linguagem C++.


Referencias:

FIGUEIREDO, L.S., TEIXEIRA, J.M.X.N., CAVALCANTI, A.S., TEICHRIEB, V. AND KELNER, J.. 2009. An open-source framework for air guitar games.

quarta-feira, 3 de agosto de 2011

Páginas PHP não são vírus!

Na edição do Jornal Hoje, da Rede Globo do dia 29/07/2011 foi ao ar uma matéria com o título “Saiba como não cair na armadilha de mensagens eletrônicas falsas”, onde vários assuntos de segurança foram abordados. Porém, o que teve repercussão entre os programadores foi um comentário que o especialista em segurança na internet Jefferson D'addario fez em menção as páginas PHP, ao dizer que … quando for .php pode ser, em grande maioria programas…“.

Este comentário criou revoltas principalmente entre os grupos de desenvolvedores php. O que levou os profissionais que trabalham com esta tecnologia ficarem receosos de, como iriam explicar ao seus clientes que a Rede Globo cometeu um erro na publicação de sua matéria, entre outros problemas que poderão ser gerados pela informação mal elaborada por parte do Jornal da Rede Globo.

Este fato incentivou a criarem uma petição pública contra a reportagem, no qual a TV Globo veio a se retratar através de seu site, assim como também postou uma nova matéria explicando que as maiorias das páginas programadas em php não oferecem riscos.

PHP é uma linguagem de programação do lado do servidor, gratuito e independente de plataforma, com grandes funções e muita documentação. Seu propósito principal é de implementar soluções web velozes, simples e eficientes. Assim como PHP existem várias outras linguagens direcionadas para web (exemplos: Java, Asp, Ruby, Perl, Python) e por ser uma linguagem muito utilizada de fácil e rápida implementação, está sendo muito visada como uma das formas com qual as quadrilhas virtuais criam ataques através da internet, o que não se referem dizer que todas páginas com extensão .php são vírus.

Matéria antes da edição

http://www.youtube.com/watch?v=uFc6QGIragg&feature=related

Matéria Editada

http://g1.globo.com/jornal-hoje/noticia/2011/07/saiba-como-nao-cair-na-armadilha-de-mensagens-eletronicas-falsas.html

Retratação da Rede Globo

Nova Matéria: http://g1.globo.com/videos/jornal-hoje/v/veja-como-paginas-de-internet-programadas-em-php-nao-oferecem-risco/1581419/

Comentário no site:O Jornal Hoje errou, na versão original desta reportagem, ao informar que a terminação php, em um site, poderia indicar uma tentativa de golpe. A informação está incorreta e já foi retirada do texto abaixo, assim como do vídeo apresentado na edição desta sexta-feira (29 de julho) do Jornal Hoje.”.

Retratação do Especialista

http://www.daddario.com.br/detalhes-da-entrevista-para-jornal-hoje-dia-290711-phpvirus-jhoje/

Petição Pública

http://www.peticaopublica.com.br/?pi=PHPJHOJE

quinta-feira, 23 de junho de 2011

Campanha #minhainternetcaiu

Nessa terça-feira (21/06) o Twitter teve no topo do Trending Topics do Brasil a hashtag #minhainternetcaiu. Os usuários buscavam mobilizar os outros internautas e chamar atenção do Ministério das Comunicações, mencionando o twitter do Ministro Paulo Bernardo, para a campanha "Banda Larga é um Direito Seu!".

O site organizador da campanha (http://campanhabandalarga.org.br), diz que o Governo Federal criou o PNBL, Plano Nacional da Banda Larga, para ampliar o acesso à internet no país. Porém, o governo está agora prestes a fechar acordos que trazem beneficios para as empresas de telecomunicações sem a imposição de controle tarifário, metas de universalização, parametros suficientes de qualidade e gestão pública das redes. E que o 'tuitaço' deveria ser feito para pressionar o Ministerio das Comunicações e garantir nossos direitos acima dos interesses privados.

O Ministério das Comunicações, diz no documento do PNBL 'O Brasil em alta velocidade', que a meta é que até a copa do mundo do Brasil, metade dos brasileiros tenha acesso à internet banda larga em seus domicílios; que todas as micro e pequenas empresas, que tenham demanda, possuam acesso à internet e que a velocidade mínima de conexão deve aumentar pelo menos 10 vezes até 2014.

Enquanto o proposto no plano não acontece, o preço vem sendo o fator que mais afeta o crescimento da internet no país. Nas grandes cidades, a concorrencia fez o preço da banda larga cair, porém o resto do país o acesso à internet é lento e caro. Segundo a revista INFO Exame desse mês, 48% das conexões variam entre 512kbps e 2Mbps, apenas 5.5% dos usuários contratam serviços acima de 8Mbps e por incrivel que pareça 7% ainda usam internet discada.

Espero que essas mudanças aconteçam o quanto antes, no meu caso por exemplo, a internet precisa melhorar muito para ser considerada Banda Larga, já que a velocidade mínima estabelecida pela União Internacional de Telecomunicações para banda larga deve ficar entre 1,5Mbps e 2Mbps.

quarta-feira, 22 de junho de 2011

Entendendo o Hibernate com Annotation



O Hibernate é um framework para o mapeamento Objeto-Relacional escrito na linguagem Java, mas também é disponível em .Net como o nome NHibernate. Ele facilita o mapeamento dos atributos entre uma base tradicional de dados relacionais e o modelo objeto de uma aplicação, mediante o uso de arquivos (XML) para estabelecer esta relação. O objetivo do Hibernate é diminuir a complexidade entre os programas Java, baseado no modelo orientado a objeto. Mas o framework não é uma boa opção para todos os tipos de aplicação, ele é mais indicado para sistemas que contam com um modelo rico, onde a maior parte da lógica de negócios fica na própria aplicação Java. Segundo a documentação oficial o Hibernate pretende retirar do desenvolvedor cerca de 95% das tarefas mais comuns de persistência de dados.

Como opção, iremos utilizar um recurso que veio com o JDK 5.0, chamado de Annotation ao invés de arquivos XML como eram feitos anteriormente. Resumindo o Hibernate transforma os dados de um objeto em uma linha de uma tabela de um banco de dados, ou de forma inversa. Com o mapeamento via anotações não é necessário criar nenhum arquivo XML para fazer o mapeamento, apenas colocar as anotações (Annotations) na classe POJO relacionada a tabela. Com o Hibernate também é possível mapear todos os relacionamentos existentes entre as tabelas de um banco de dados relacional.

Exemplo:

Algumas Annotations:

@Entity: declara a classe como uma entidade, ou seja, uma classe persistente.

@Table: define qual será o nome da tabela usando o atributo name.

@Id: define qual campo será usado como identificador.

@GeneretedValue: identifica a estratégia de geração de identificadores.

@Column: define qual coluna da tabela será mapeada.

  • name: nome da coluna na tabela do banco de dados que representa o atributo;
  • unique: indica se a coluna na tabela que representa o atributo possui a restrição de unicidade ou não. Por padrão, assume o valor false;
  • nullable: indica se a coluna na tabela que representa o atributo pode assumir valor nulo ou não. Por padrão, assume o valor true indicando que pode assumir valores nulos;
  • length: informa o tamanho máximo assumido pelo valor da coluna na tabela;
  • precision: informa a precisão decimal dos possíveis valores para a coluna mapeada pelo atributo;
  • insertable: indica se o atributo será inserido no momento da inserção de uma linha na tabela. Por padrão assume o valor true;
  • updatable: indica se o atributo será atualizado no momento da atualização de uma linha na tabela. Por padrão assume o valor true.


@Temporal: utilizada para mapeamento de datas e hora. Recebe um valor como argumento que pode ser:

  • TemporalType.DATE: usado para mapear datas;
  • TemporalType.TIME: usado para mapear hora;
  • TemporalType.TIMESTAMP: usado para mapear datas e hora.

Será apresentada a configuração a partir do arquivo hibernate.cfg.xml, este arquivo apresentará as propriedades de inicialização e os caminhos das classes mapeadas.

As descrições das propriedades a serem configuradas são:

  • hibernate.dialect: implementação do dialeto SQL específico do banco de dados a ser utilizado. Usado para identificar as particularidades do banco de dados;
  • hibernate.connection.driver_class: nome da classe do driver JDBC do banco de dados que está sendo utilizado;
  • hibernate.connection.url: é a URL de conexão específica do banco que está sendo utilizado;
  • hibernate.connection.username: é o nome de usuário com o qual o Hibernate deve se conectar ao banco;
  • hibernate.connection.password: é a senha do usuário com o qual o Hibernate deve se conectar ao banco;
  • hibernate.show_sql: utilizado para definir se os SQL’s gerados pelo Hibernate devem ou não ser exibidos no console (true | false).


No próximo post sobre Hibernate veremos como funciona a arquitetura do Hibernate, alguns mapeamentos de relacionamento e também as configurações necessárias para persistir um dado.

Abraços e até o próximo...

terça-feira, 21 de junho de 2011

Internet: Conhecendo um pouco de sua história



Boa noite pessoal! Aquí estou novamente postando mais um artigo, e talvez seja meu último, demorei mais dessa vez, mas aposto que adoraram minha ausência né?! Hehe. Bem, voltando, hoje falarei a respeito de uma coisa que está tão presente em nossas vidas que apenas percebemos quando nos sentimos (desconectados), falo da nossa estimada INTERNET. Não vos falarei de termos técnicos, contarei um pouco sobre o surgimento e a evolução ao longo dos anos porque creio que ela merece esse momento de homenagem.

A internet causou no âmbito da informática e das comunicações pelo mundo uma grande revolução. O telefone, rádio e computador são exemplos da forte capacidade de integração da Internet. Difundindo informações e possibilitando a interação entre as pessoas sem limitar-se com as dimensões geográficas (nesse momento mesmo estou assistindo a liga japonesa de futebol Shimizu Vs Kawasaki Frontale).

Tudo começou com bons investimentos e compromisso com a pesquisa através das universidades, indústria e do Governo. Sua história atinge não apenas o campo das comunicações via computador, mas toda a sociedade à medida que cresce a necessidade de novas ferramentas online, por exemplo, para comércio eletrônico, busca de informações e claro relações sociais, olha aí voltei a falar de Redes Sociais.

As primeiras interações foram memorandos escritos por J. C. R. Licklider em agosto de 1960 trabalhando no MIT Laboratory for Computer Science, discutindo os primeiros conceitos de uma grande rede, ele mencionava um mundo interconectado formado por computadores através do quais todos poderiam rapidamente ter acesso a dados e programas de qualquer local.

Leonard Kleinrock, em julho de 1961, também do MIT, publicou o primeiro trabalho sobre a teoria da comutação de pacotes. Ele junto com seu parceiro Roberts analisaram a possibilidade das comunicações usando pacotes ao invés de circuitos dando um grande passo em direção a redes de computadores. Próximo passo foi fazer os computadores manterem conexão entre si. Em 1965, enquanto trabalhava com Thomas Merrill, Roberts ligou o computador TX-2 em Massachusetts ao Q-32 na Califórnia através de uma ligação de baixa velocidade através da linha de telefone, criando a primeira área de amplo alcance com computadores em rede. Mas o sistema telefônico da época era muito ruim para este tipo de serviço, confirmando assim, a convicção de Kleinrock sobre a necessidade de comutação de pacotes.

Mais tarde, Howard Frank e seu grupo da Network Analysis Corp trabalharam com Roberts para aperfeiçoar a topologia da rede. Em dezembro de 1970, a NWG Network Working Group sob comando de Steve Crocker (que palestrou no Campus Party de 2011), concluiu o primeiro protocolo ARPANET host-to-host, denominado de NCP Network Control Protocol. Durante 1971-1972, os usuários da rede finalmente puderam começar a desenvolver aplicações.

Em março de 1972, Ray Tomlinson, da BBN, escreveu uma mensagem de e-mail bem simples através de um software de envio e leitura. Nesse momento o e-mail tornou-se o aplicativo de internet mais popular e mostrando o que a World Wide Web viria a ser.

A idéia de redes de arquitetura aberta, introduzido por Robert Kahn no final de 1972, pouco depois de chegar a DARPA, seguiu quatro regras: cada rede ser diferenciada, e mudanças internas não deveriam ser exigidos de qualquer dessas redes antes de ser ligado à Internet; se um pacote não chegar ao destino final, seria retransmitido rapidamente a partir do ponto de parada; os gateways e roteadores, chamados na época de caixas pretas, seriam utilizados para conectar as redes, nenhuma informação seria retida pelos gateways para mantê-los simples e evitar complicação na adaptação e recuperação dos modos de falha.

Kahn juntou-se com Vint Cerf, que possuía amplo conhecimento da antiga NPC, para trabalhar num protocolo mais poderoso dando origem ao TCP/IP, o esforço inicial funcionou razoavelmente, apesar de ser algo totalmente novo, para transferência de arquivos e aplicações remotas como login. Daí em seguida pensaram em separar o IP do TCP porque este não estava corrigindo tantos erros quanto se esperava, a organização ficou da seguinte forma: o IP "era o meio-campista" ficou com o encaminhamento de pacotes, já o TCP "era o volante" controlando o fluxo e recuperando os pacotes perdidos. Mas, o TCP ainda não estava dando conta para resolver os problemas de aplicações, surgiu o protocolo UDP que dava acesso direto aos serviços considerados primordiais de IP. Inicialmente, pensou-se que o TCP seria grande e complexo demais para ser executado em um computador pessoal, surge então David Clark com seus colegas pesquisadores do grupo MIT para produzirem a primeira implementação para a Xerox Alto (primeira estação de trabalho desenvolvida na Xerox PARC) e depois para os computadores da IBM PC, mostrando que estações de trabalho, bem como grande sistemas poderiam fazer parte da Internet.

Com tanto crescimento da internet novas técnicas surgiram, por exemplo, criação do Sistema de Domínio de Nomes (por Paul Mockapetris, que estava na USC's Information Sciences Institute). No ínicio de 1970 as redes de computadores começaram a ser financiadas por empresas como: Departamento de Energia e a NASA. Em oito anos de duração, o backbone cresceu de seis nós com links de 56Kbps (quem aí sente falta daquele sonzinho massa do discador? E ainda mais da emoção quando conseguia pegar uma linha livre) para 21 nós múltiplos com 45Mbps. A Internet também cresceu para mais de 50.000 redes em todos os continentes, desse total só a europa tomava 29.000 redes. O segredo do crescimento foi o acesso livre a documentos, especialmente as especificações de protocolos. O início da ARPANET e da Internet em pesquisas universitárias promoveram a tradição comum entre estudantes de compartilhar idéias.

Como muitas pessoas trabalhavam na Web por causa de seu crecimento; em 1995, uma nova organização coordenadora foi formada, o W3C World Wide Web Consortium, inicialmente liderado pelo laboratório MIT’s Laboratory for Computer Science por Al Vezza e Tim Berners-Lee, inventores da Web e logicamente do primeiro navegador intitulado WorldWideWeb. Hoje, o W3C é responsável pela administração de vários protocolos e padrões associados à web.

Enfim, a internet tornou-se uma nova forma de comercialização, como: fornecimento de serviços básicos de rede, oferta de produtos e prestadoras de serviços tanto de conectividade ou não; a Web forneceu aos usuários acesso fácil as informações, e tudo isso alanvacado por um pequeno grupo de pesquisadores. Com tanto crescimento a questão que deve ser pensada não é apenas como a tecnologia vai mudar, mas como tudo isso será administrado, caso no futuro a internet perca toda essa influência que tem em nossas vidas, não será por falta de tecnologia, mas porque assim como o futuro da humanidade (filosofei agora hein? hahahaha) não se pode definir um rumo.

Até mais, Valmir!

Fontes:

http://www.ufpa.br/dicas/net1/int-h196.htm

http://web.mit.edu/