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/

segunda-feira, 20 de junho de 2011

Computação Musical

A computação musical é uma área da ciência da computação dedicada ao estudo das aplicações dos computadores a problemas musicais [E. M. Miletto].

A computação musical envolve o estudo de métodos e algoritmos para a síntese e processamento de sons digitais e às técnicas de representação e manipulação de informações musicais.

O marco inicial da computação musical foi a criação do telefone. Invenção que estabeleceu que o som pode ser convertido em sinal elétrico. Em 1957, Max Mathews, considerado pai da computação musical, criou o primeiro software musical, o Music I. Que tocava 17 segundos de uma composição. A partir dai foi criado uma serie de programas musicais.

Na decada de 70 ja existiam ligações entre computador e instrumentos, mas foi só em 1983 que surgiu a MIDI para padronizar esse tipo de comunicação. Como o computador ja havia sido utilizado para musica, ele foi rapidamente empregado na ligação com sintetizadores através da MIDI.

Com o avanço da tecnologia, ouve um barateamento dos computadores e tambem uma simplicidade maior para aquisição de aplicações para computação musical. Hoje em dia podemos encontrar varios tipos de softwares musicais, com varias funcionalidades. Alguns desses softwares são:

Softwares para acompanhamento, que produzem ritmos em tempo real que permitem ao musico realizar composições e arranjos com certa facilidade. Para isso basta fornecer informações básicas sobre a música como: andamento, harmonia, instrumento e etc.

Softwares para edição de partitura, que auxiliam na composição e pré-produção. São usados para editar e imprimir partituras. Permitem que o compositor escolha o tipo de pauta, notas, claves etc.

Softwares para gravação de áudio. Próprios para gravação multicanal, produção e edição de áudio. Permite gravar múltiplas e simultâneas trilhas de áudio. Podendo manipular o áudio digitalmente para obter resultados desejados.

Enfim, existe uma serie de softwares musicais. Se há alguma duvida em qual usar, a resposta esta no tipo do trabalho que deseja ser feito.

Para desenvolver uma aplicação musical, existem varias ferramentas e ambientes de programação para computação musical. Como por exemplo:

MusicXML, que é um formato de arquivo de notação musical aberto. Que tem como ideia criar um tradutor universal para a notação musical ocidental.

JMSL, é uma ferramenta de desenvolvimento baseada em Java para experimentos em composição algorítmica, performance ao vivo e projeto de instrumentos inteligentes.

4ML, é uma linguagem de marcação para música e letra escrita em XML. Fornece uma forma independente de plataforma, flexível e simples de escrever musica.

JavaSound é uma API de baixo nível do Java, utilizada para controlar a entrada e saída de som de um computador. Suas principais característica é a alta qualidade do áudio capturado e seu pequeno uso do CPU.

Alem desses existem ainda o jMax, OpenMusic, SMDL e outros.


Para estudar computação musical, não necessariamente é preciso ser músico, mas, é claro que você não escapará de estudar alguns conceitos de música, o básico, mas necessário, pois, para achar a melhor solução de um problema é necessário defini-lo corretamente conhecendo suas causas e estudar o que pode ser feito.


Referência:

E. M. Miletto, L. L. Costalonga, L. V. Flores, E. F. Fritsch, M. S. Pimenta e R. M. Vicari. Introdução à Computação Musical

quarta-feira, 15 de junho de 2011

As Ferramentas que Dão Vida à Imaginação

Olá para todos! Novamente eu estou aqui para falar mais um pouco sobre a Realidade Virtual. Quem ja assistiu filmes de animação como por exemplo o "Ice of Age" ou o recém lançado "Rio", ambos dirigidos pelo brasileiro Carlos Saldanha e nunca teve a vontade de fazer sua própria animação?
 
Pois é, agora você pode!
É simples e fácil de montar seu desenho animado, basta apenas de uma ferramenta que possibilite a criação de bonecos em 3D. E aí eu volto a falar nessa grande tecnologia que é a Realidade Virtual. A qual permite a criação de ambientes com personagens que interagem com o usuário em 3 dimensões.


Umas das ferramentas que eu vou abordar nesse post é o Blender.
O blender é um programa open source (código aberto) que foi desenvolvido pela Blender Foudation, pra modelagem, composição, edição de video, animação, criação de aplicações interativas em 3D e muito mais como por exemplo os jogos. O software é multiplataforma, estando disponível em vários sistemas operacionais.
Bem, originalmente o blender foi criado para ser uma aplicação in-house pelo estúdio holandês de animação NeoGeo Studio. Em 1998, o co-fundador Ton Roosendaal fundou uma nova companhia chamada Not a Number para desenvolver e distribuir o programa fornecendo serviços comerciais que estavam relacionados ao blender, mas em 2002 a empresa de Ton acabou falindo por causa das poucas vendas e por problemas financeiros. Foi no mesmo ano que Roosendaal abriu uma nova empresa, mas ao contrario da outra essa não foi a falência. 
Ton fundou a Blender Foudation e em julho do mesmo ano lançou uma campanha chamada "Free Blender" pra poder arrecadar $100.000 euros para os investidores do Blender concordarem em deixar o programa como código aberto. E eles conseguiram os $100.000 euros em apenas sete semanas, e no dia 13 de Outubro de 2002 finalmente o blender foi lançado como sendo de código aberto sob os termos da GNU - General Public License. Atualmente, o Blender é desenvolvido pela Blender Foudation sendo suportado por doações da comunidade e vendas de materiais relativos ao Blender no e-Shop.

Agora que vocês já conhecem um pouco sobre o Blender... vamos assistir um video sobre como criar uma pequena e simples cadeira nessa incrível ferramenta!


A outra ferramenta que eu irei falar pra vocês é nova no mercado, mas já está ganhando credibilidade pois além de ser simples de ser manipulada, as imagens criada nesse programa é leve e ainda leva na certidão de nascimento o nome do seu pai, a grande Google Company. Estou falando do SketchUp.

Assim como o Blender, o Google SketchUp é uma ferramenta para criação de modelos em 3D. Foi desenvolvido pela At Last Software, uma empresa americana, localizada em Boulder,Colorado a qual foi adquirida pela Google como foi anunciado em 14 de Março de 2006. A versão atual em português é a 8.0, que está disponivel para Windows e Macintosh.
O SketchUp pode ser baixado gratuitamente, é muito facil de usar e pode ser usado por qualquer atividade profissional que precise desenvolver rascunhos de produtos em 3 dimensões. Esse software é muito utilizado por arquitetos, designers de móveis, desenhistas técnicos, game designers e varias outras profissões relacionadas aos trabalhos que necessitem visualizações em 3D.
O nome surgiu pela fácil criação de esboços de modelos ou maquetes em 3D, por isso ser chamado de Sketch que significa "esboço" em inglês. O modelo gerado por essa ferramenta pode ser animações com formato de arquivos digital AVI ou imagens em formatos digitais como JPG, PNG, GIF, BMP, etc.
Além de tudo isso, foram criados vários plug-ins, para diversas funções, como o plug-in para o Google Earth, para o MicroStation, foi desenvolvido também um plug-in para o ArchiCAD, dentre muitos outros.
Existe uma página na web que é a 3D Warehouse, onde vários usuários de todo o mundo publicam suas criações tornando-as acessiveis gratuitamente a qualquer pessoa. Ela funciona como uma espécie de depósito de modelos em 3D.

Agora que já conhecem um pouco sobre essas duas ferramentas, que tal aproveitar as férias de julho para tentar criar seu próprio mundo virtual. Use sua imaginação! e se for usar o Google SketchUp não esqueça de publicar seu modelo na 3D Warehouse para que todos possam admirar seu trabalho.

 
Para quem ficou interessado nessa Tecnologia, ai estão os links para download dessas duas ferramentas:
  • http://www.baixaki.com.br/download/google-sketchup-free.htm
  • http://www.baixaki.com.br/download/blender.htm


Fontes: 

http://sketchup.google.com/intl/pt-BR/
http://pt.wikipedia.org/wiki/SketchUp
http://www.blender.com.br/
http://www.blender.org/
http://pt.wikipedia.org/wiki/Blender