Acessando Banco de Dados em Java (PARTE 3)

Postador por Alisson Cruz

A interface Connection Como o exemplo anterior (Acessando Bancos de Dados em Java - PARTE 2) demonstrou, as interfaces fundamentais para obter acesso a um repositório de dados em Java são:
1. Connection
2. Statement e suas variantes: PreparedStatement e CallableStatement
3. ResultSet


A Interface Connection é responsável por manter a conexão estabelecida com o repositório de dados através da chamada a DriverManager.getConnection(). A interface Connection tem 3 responsabilidades essenciais: criar ou preparar statements (sentenças SQL), executar o controle de transações com o repositório e criar objetos DatabaseMetaData, que permitem pesquisar dinamicamente que capacidades estão presentes no repositório de dados. Recapitulando, vimos que a API JDBC usa o padrão de chamada FactoryMethod, para possibilitar que a criação dos diversos objetos de controle de uma transação com um repositório de dados seja adiada para o momento da execução, após o JDBC Driver que possibilita o acesso ser registrado em DriverManager. Desta forma, cada objeto na cadeia de execução de JDBC cria o seu sucessor na cadeia. Ou seja:
DriverManager -> Connection -> Statement (ou variantes) -> ResultSet

Connection pode criar Statement, PreparedStatement e CallableStatement através de um conjunto de chamadas:

createStatement() -> cria uma instância de Statement para execução de SQL no repositório

createStatement(tipo de cursor, concorrência) -> idem ao anterior, especificando o tipo de cursor a criar e o nivel de concorrência da conexão.

Antes da versão 2.0, só se podia conectar um banco de dados JDBC com cursores unidirecionais. Isto é, uma aplicação que lia a linha 1 e em seguida a linha 2 da tabela não podia retornar à linha 1 sem estabelecer um novo result set. A partir da versão 2, se o repositório de dados suportar esta característica, podemos estabelecer cursores bidirecionais de dois tipos: sensiveis, em que as alterações havidas previamente na linha são refletidas na releitura, ou insensíveis, em que as alterações havidas na linha não se refletem na releitura. O tipo de cursor que o repositório suporta é uma informação retornada por DatabaseMetadata.

O controle de transações compreende basicamente 3 grupos de funções:

getAutoCommit() e setAutoCommit(boolean toSet) -> permitem examinar ou definir que cada solicitação ao banco tenha commit imediato.

getTransactionIsolation() e setTransactionIsolation(int transIso) -> permitem examinar ou definir com que tipo de isolamento de transações aquela conexão deve operar.

commit() e rollback() -> se o banco não está em modo autocommit, commit confirma a transação no banco enquanto que rollback cancela as alterações da transação.

Um grupo de funções pouco explorado da interface Connection é o grupo que trata de ResultSets read-only, composto das funções isReadOnly() e setReadOnly(boolean setRead). Estas funções permitem estabelecer trancas de apenas leitura no banco de dados, evitando que o banco seja saturado por trancas de escrita (trancas de bloqueio), o que permite uma maior concorrência no acesso ao banco.

Acessando Banco de Dados em Java (PARTE 2)

Postador por Alisson Cruz

No artigo passado, mostramos o primeiro exemplo de acesso a um banco de dados com JDBC. Neste artigo começaremos a explicar alguns motivos implementados no padrão utilizando o exemplo do artigo passado. O que nos chama a atenção logo de cara é que o código JDBC não se assemelha ao que o programador iniciante em Java está acostumado. Por exemplo, fazemos:

Connection con = DriverManager.getConnection(parametros da conexão);  ao invés de 
Connection con = new Connection();  


JDBC é um padrão onde está definida uma estrutura geral de acesso ao driver de banco de dados através de interfaces e o fornecedor se encarrega de implementar as classes que concretamente vão realizar o serviço. Ora, cada fornecedor tem o seu driver específico, construído como uma classe JDBC. A chamada à função forName(classe) registra a classe nomeada na JVM corrente:


Quote:
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver").getInstance(); o Sun JDBC-ODBC bridge 



Quote:
Class.forName("COM.ibm.db2.jdbc.net.DB2Driver").newInstance(); para o IBM DB2 


podemos ainda utilizar o método registerDriver da classe DriverManager para isso:

Quote:
DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver()); para o Oracle 8i 



O comportamento do driver JDBC é uma incógnita. Depende sobretudo da arquitetura de acesso oferecida pelo banco de dados. Por exemplo, alguns bancos de dados vão exigir uma conexão com um cliente local. Outros utilizam arquivos de configuração. Para tratar com as diferenças entre os diversos produtos, DriverManager utiliza o padrão Factory Method para instanciar Connection.

Este padrão é utilizado por todas as interfaces de JDBC. 
Por exemplo:

Connection con = DriverManager.getConnection("jdbc:odbc:meusCdsDb","conta","senha");  
  
Statement stm = con.createStatement();  
  
ResultSet rs = stm.executeQuery(alguma query SQL);  


O problema é simplesmente este: não sabemos, em tempo de compilação, qual a estrutura de classe terá a classe do driver que DriverManager irá carregar. Isto é feito dinamicamente, no momento em que o driver é registrado com DriverManager. Usando o padrão FactoryMethod a necessidade de verificar a estrutura do driver estaticamente é transformada numa chamada padrão de função que pode ser realizada em tempo de execução. As classes que implementam concretamente essas interfaces no DB2, por exemplo, são DB2Connection, DB2Statement e DB2ResultSet e estão presentes no pacote db2java.zip. 

Para os programadores migrados de outros padrões, este padrão é equivalente, no mundo dos objetos, às funções callback, tão comuns nos SDKs do Windows. A diferença é que um callback registra uma função a ser chamada. O FactoryMethod cria um objeto.

Se você deseja saber mais sobre o padrão FactoryMethod, recomendo "Design Patterns: Principles
of Reusable Object Oriented Software" de Erich Gamma e outros.

Java Morrendo ??

Uma pergunta lançada numa lista de discussão nos ultimos dias me deixou realmente intrigado. Alguém afirmou que a Microsoft estava parando o desenvolvimento em Java (provavelmente devido à recente decisão judicial no caso Sun X Microsoft) e perguntou se por causa disso Java não estaria morrendo. A resposta (que continua sendo postada) foi um sonoro NÃO. Os argumentos variaram desde os motivos religiosos, tipo "M$ Jamais", até decisões bem pensadas tipo "...adivinhe quantas companhias estão desenvolvendo uma JVM para a plataforma Wintel neste momento ?". Eu tenho minha humilde opinião a respeito.

A aceitação e compromisso do mercado em relação a Java deve-se a diversos fatores:

1. Claramente há uma profunda mudança de visão sobre como construir sistemas em andamento no mercado. O modelo cliente-servidor apoiado na plataforma Wintel é dispendioso, difícil de manter e não se ajusta às necessidades do mundo Internet. Irá desaparecer ? Não, certamente que não, mas irá sendo posicionado num nicho ao invés de ser utilizado como uma solução universal. O modelo Internet veio para ficar e mandar.

2. Java permite economia em escala quando seu modelo de portabilidade é bem utilizado. Mesmo em ambientes com padrões públicos e conhecidos, como C++, portar código é um desafio. Em outros ambientes ainda mais populares e mais conhecidos, portar código varia entre o impossível e o pesadelo. Empresas como a PointBase, de bancos de dados pervasivos, estão, nas palavras de seu CEO: "...empregando mais engenheiros de portabilidade de código que a Oracle, sem gastar um tostão na folha de pagamentos com isso. Onde estão eles ? Na Sun, Na IBM, Na HP..." (JDJ dez/2002). 

3. Players pesados estão jogando neste mercado. Nomes como IBM, Oracle, HP, Inprise, (que, ao que parece, agora vai com tudo para o mercado Linux), o Apache.org e a própria Sun, para citar alguns, deixam o desenvolvedor e o empresário bastante tranqüilos quanto a seu futuro. Linux ainda é incipiente em relação a Java, mas a oferta de JVMs da IBM parece estar surtindo efeito também nesta plataforma.

4. XML vem com um modelo de representação de informação que, pela primeira vez, oferece um meio a baixo custo de expressar estruturas de dados complexas com a certeza de que serão lidas onde quer que sejam necessárias. A portabilidade dos dados demanda portabilidade do código para sua interpretação, pois, como dito no item dois, manter portabilidade custa caro. Java tem uma proposta bastante interessante neste campo.

Portanto, Java já ultrapassou a fronteira de sustentação que separa produtos de plataformas. O máximo que pode acontecer agora, IMHO, é a linguagem se estabelecer num nicho e aí ficar para sempre. Lembram do velho e bom FORTRAN ? Passa muito bem, obrigado.

Acessando banco de dados em Java (Parte 1)

Postador por Alisson Cruz

Acessando banco de dados em Java (Parte 1)

Uma funcionalidade essencial em qualquer sistema é a habilidade para comunicar-se com um repositório de dados. Podemos definir repositório de dados de várias maneiras, por exemplo, como um pool de objetos de negócio num ORB ou um banco de dados. Bancos de dados constituem o tipo mais comum de repositório. Java dispõe de uma API para acessar repositórios de dados: a Java DataBase Connectivity API ou JDBC API. A JDBC implementa em Java a funcionalidade definida pelo padrão SQL Call Level Interface ou SQLCLI. Um outro exemplo de API que implementa o SQL Call Level Interface é o popularíssimo ODBC das plataformas Wintel. A maioria dos fornecedores de bancos de dados oferece uma implementação particular de SQLCLI. A vantagem de JDBC é a portabilidade da aplicação cliente, inerente da linguagem Java. A especificação corrente da JDBC API é a 2.1. 


 
A JDBC compreende uma especificação para ambos: os desenvolvedores de drivers JDBC e os desenvolvedores de aplicações clientes que precisem acessar bancos de dados em Java. Estaremos dando uma olhada no desenvolvimento de aplicações em Java, então, é uma boa idéia começar com o suporte de dados. 

Existem 4 tipos de diferentes de drivers JDBC (para uma lista de fornecedores por especificação e tipo, vide http://www.javasoft.com/products/jdbc/drivers.html ):

- Uma vez que ODBC é uma especificação padrão do mundo Wintel, o tipo 1 é um driver de ponte entre Java e ODBC. O driver de ponte mais conhecido é o fornecido pela Sun o JDBC-ODBC bridge. Este tipo de driver não é portável, pois depende de chamadas a funções de ODBC implementadas em linguagem C e compiladas para Wintel, ou outra plataforma ODBC compatível, as chamadas funções nativas.

- O driver tipo 2 é implementado parcialmente em Java e parcialmente através de funções nativas que implementam alguma API específica do fornecedor de banco de dados. Este tipo faz o que se chama de wrap-out, ou seja, provê uma interface Java para uma API nativa não-Java.

- O tipo 3 é um driver totalmente Java que se comunica com algum tipo de middleware que então se comunica com o banco de dados

- O tipo 4 é um driver totalmente Java que vai diretamente ao banco de dados.

Numa próxima parte veremos ainda um driver gratuito que permite acessar bancos de dados que ofereçam suporte apenas ao Bridge (tipo 1) via rede. Veremos a seguir como acessar um banco de dados através de JDBC. Nosso cenário básico é uma pequena aplicação de controle dos meus CDs (clássica !) implementada em algum xBase compatível. Em próximos exemplos iremos utilizar outros bancos de dados.
Para utilizarmos a JDBC num programa em Java, precisamos declarar o pacote que contém a JDBC API:


Acessando bancos de dados em JDBC

import java.sql.*;  


A primeira coisa a fazer é estabelecer uma conexão com o banco de dados. Fazemos isso em dois passos: primeiro carregamos o driver para o banco de dados na JVM da aplicação (1). Uma vez carregado, o driver se registra para o DriverManager e está disponível para a aplicação. Utilizamos então a classe DriverManager para abrir uma conexão com o banco de dados (2). A interface Connection designa um objeto, no caso con, para receber a conexão estabelecida:



try //A captura de exceções SQLException em Java é obrigatória para usarmos JDBC.  
{  
  // Este é um dos meios para registrar um driver  
  Class.forName("sun.jdbc.odbc.JdbcOdbcDriver").getInstance();  
   
  // Registrado o driver, vamos estabelecer uma conexão  
  Connection con = DriverManager.getConnection("jdbc:odbc:meusCdsDb","conta","senha");  
}  
catch(SQLException e)  
{  
  // se houve algum erro, uma exceção é gerada para informar o erro  
  e.printStackTrace(); //vejamos que erro foi gerado e quem o gerou  
}  




Estabelecida a conexão, podemos executar comandos SQL para o banco de dados. Vejamos como realizar uma consulta sobre o título, numero de faixas e o artista de cada CD no banco de dados. Podemos usar 3 interfaces para executar comandos SQL no banco de dados. A primeira delas é a interface Statement, que permite a execução dos comandos fundamentais de SQL (SELECT, INSERT, UPDATE ou DELETE). A interface PreparedStatement nos permite usufruir de SQL armazenado ou pré-compilado no banco, quando o banco de dados suportar este recurso. A terceira interface é CallableStatement, e permite executar procedimentos e funções armazenados no banco quando o banco suportar este recurso. Vejamos como utilizar a interface Statement. Nos próximos artigos sobre JDBC iremos investigar as outras. 


// Após estabelecermos a conexão com o banco de dados  
// Utilizamos o método createStatement de con para criar o Statement  
Statement stm = con.createStatement();  
  
// Vamos executar o seguinte comando SQL :  
String SQL = "Select titulo, autor, total_faixas from MeusCDs";  



A interface ResultSet permite colher os resultados da execução de nossa query no banco de dados. Esta interface apresenta uma série de métodos para prover o acesso aos dados: 


// Definido o Statement, executamos a query no banco de dados  
ResultSet rs = stm.executeQuery(SQL);  
  
// O método next() informa se houve resultados e posiciona o cursor do banco  
// na próxima linha disponível para recuperação  
// Como esperamos várias linhas utilizamos um laço para recuperar os dados  
while(rs.next())  
{  
  // Os métodos getXXX recuperam os dados de acordo com o tipo SQL do dado:  
  String tit = rs.getString("titulo");  
  String aut = rs.getString("autor");  
  int totalFaixas = rs.getInt("total_faixas");  
  
  // As variáveis tit, aut e totalFaixas contém os valores retornados  
  // pela query. Vamos imprimí-los  
  
  System.out.println("Titulo: "+tit+" Autor: "+aut+" Tot. Faixas: "+totalFaixas);  
}  




E nosso acesso está terminado. O importante agora é liberar os recursos alocados pelo banco de dados para a execução deste código. Podemos fazer isso fechando o Statement, que libera os recursos associados à execução desta consulta mas deixa a conexão aberta para a execução de uma próxima consulta, ou fechando diretamente a conexão, que encerra a comunicação com o banco de dados. Para termos certeza de que vamos encerrar esta conexão mesmo que uma exceção ocorra, reservamos o fechamento para a cláusula finally() do tratamento de exceções. 



finally  
{  
  try  
  {  
  con.close();  
  }  
  catch(SQLException onConClose)  
  {  
  System.out.println("Houve erro no fechamento da conexão");  
  onConClose.printStackTrace();  
  }  
}  





Uma classe para listar uma tabela

Vamos colocar tudo isso em conjunto para termos uma visão em perspectiva:

package wlss.jdbcTutorial;  
   
  import java.sql.*;  
  
  class Exemplo1  
  {  
   
  public static void main(String args[])  
  {  
  
   
  // A captura de exceções SQLException em Java é obrigatória para usarmos JDBC.  
  // Para termos acesso ao objeto con, ele deve ter um escopo mais amplo que o bloco try  
   
  Connection con = null;  
  
  try  
  {  
  // Este é um dos meios para registrar um driver  
  Class.forName("sun.jdbc.odbc.JdbcOdbcDriver").getInstance();  
   
  // Registrado o driver, vamos estabelecer uma conexão  
  con = DriverManager.getConnection("jdbc:odbc:meusCdsDb","conta","senha");  
  
  // Após estabelecermos a conexão com o banco de dados  
  // Utilizamos o método createStatement de con para criar o Statement  
  Statement stm = con.createStatement();  
   
  // Vamos executar o seguinte comando SQL :  
  String SQL = "Select titulo, autor, total_faixas from MeusCDs";  
  
  // Definido o Statement, executamos a query no banco de dados  
  ResultSet rs = stm.executeQuery(SQL);  
   
  // O método next() informa se houve resultados e posiciona o cursor do banco  
  // na próxima linha disponível para recuperação  
  // Como esperamos várias linhas utilizamos um laço para recuperar os dados  
  while(rs.next())  
  {  
  
  // Os métodos getXXX recuperam os dados de acordo com o tipo SQL do dado:  
  String tit = rs.getString("titulo");  
  String aut = rs.getString("autor");  
  int totalFaixas = rs.getInt("total_faixas");  
  
  // As variáveis tit, aut e totalFaixas contém os valores retornados  
  // pela query. Vamos imprimí-los  
  
  System.out.println(48:"Titulo: "+tit+" Autor: "+aut+"49: Tot. Faixas: "+totalFaixas);  
  }  
  
  }  
  catch(SQLException e)  
  {  
  // se houve algum erro, uma exceção é gerada para informar o erro  
  e.printStackTrace(); //vejamos que erro foi gerado e quem o gerou  
  }  
  finally  
  {  
  try  
  {  
  con.close();  
  }  
  catch(SQLException onConClose)  
  {  
  System.out.println("Houve erro no fechamento da conexão");  
  onConClose.printStackTrace();  
  }  
  } // fim do bloco try-catch-finally  
  } // fim da main  
   
  } // fim de nosso primeiro exemplo !  




Computação nas Nuvens: O futuro.

Postador por Alisson Cruz

Nos próximos anos deveremos ouvir muito os termos “computação nas Nuvens “, “cloud computing ” e SaaS – Software-as-a-Service “. O conceito é claro, cada vez mais as informações estarão disponíveis e mais pessoas terão acesso a essas informações, graças à disponibilização de muitos serviços on-line, muitos gratuitamente, e que devem baratear o preço dos computadores, inclusive, aumentando a presença on-line de pequenas empresase fornecedores de serviços.

O conceito não é novo para quem trabalha com internet, mas ganha cada vez mais destaque com declarações da Google estar trabalhando na sua “computações nas Nuvens”. O termo refere-se à possibilidade de utilizarmos computadores menos potentes que podem se conectar à Web e utilizar todas as ferramentas on-line, seguindo o exemplo que o Google propõe com o Google Docs, Gmail e tantas outras aplicações. Assim, o computador seria simplesmente uma plataforma de acesso às aplicações, que estariam em uma grande nuvem – a Internet.
Vale lembrar, que como o termo não é nada novo, já existem vários sites que são praticamente sistemas operacionais on-line, além de muitos serviços que disponibilizam ferramentas fantásticas on-line. Exemplo recente da Adobe, que disponibilizou uma versão on-line do Photoshop.

O preço dos computadores cairá?

Computadores terão o preço reduzido, cada vez mais o preço das máquinas cairá devido ao fato de que um computador para acessar a internet não necessita de muitos recursos, basta ter um processador simples, um pouco de memória que você estará satisfeito com o resultado, com isto, você terá mais mobilidade, pois os celulares da nova geração (3G) tem acesso à internet, e você poderá acessar os seus arquivos e documentos de qualquer lugar através da conexão a internet oferecida por seu celular.

Os sistemas operacionais

Com esta nova tendência quem ganhará força será o sistema operacional LINUX, pois com a pouca necessidade de recursos, a maior sendo um browser, fará com que grandes empresas como Microsoft comecem a ter preocupações quanto a seu futuro. Há grande necessidade de se estar conectado fará com que softwares como sistemas operacionais e outros tendam a migrar para a internet, tornando o “desktop” de sua máquina online, e assim os sistemas que estarão rodando nas máquinas sejam apenas para suportar seu browser.

Mobilidade

Eis a palavra do futuro da computação. Você terá tudo ao seu alcance.

Brasil recebe conferência sobre padronização na web

Postador por Francisco Coelho

O W3C (Consórcio World Wide Web), entidade com escritório brasileiro baseado na sede do Comitê Gestor da Internet no Brasil (CGI.br), realizará em 23 e 24 de novembro deste ano, em São Paulo, a 1ª Conferência Web W3C Brasil.



O evento, que deve receber 400 profissionais da área e ainda trazer convidados brasileiros e internacionais, promoverá debates e discussões sobre a evolução da web, a padronização de suas tecnologias e seu impacto na sociedade e cultura.

Diversos temas relacionados a tendências da web estarão presentes no evento. A programação incluirá abordagens sobre o benefício imediato e futuro do uso de padrões; acessibilidade e usabilidade; web semântica; mecanismos de busca; mobilidade; governo eletrônico; segurança e privacidade; modelos de negócios; redes sociais e computação em nuvem - cloud computing.
"Queremos reunir a comunidade atuante em tecnologias web para discutir como torná-la universal conforme o princípio do W3C: web para todos, em qualquer dispositivo, lugar, língua e cultura. Será ainda uma oportunidade para mostrar às organizações os benefícios do uso de padrões e apresentar os mais recentes como o HTML 5 e CSS 3", disse Vagner Diniz, gerente do W3C Brasil.
Pesquisadores, desenvolvedores, usuários, empresas, agências digitais e mídias farão parte do público participante da conferência e podem submeter ao W3C temas e trabalhos para serem inclusos na programação do evento.
O evento ocorre no Hotel Blue Tree Towers Morumbi, em São Paulo. Mais informações podem ser obtidas no site www.w3c.br.



Fonte: Terra

Certificação LPI - Linux

Postador por Alisson Cruz

Certificação LPI - Linux

Certificação LPI - Porque se certificar em Linux ?

Provar a competência profissional é a chave para o sucesso! Sem mais, nem menos.

O sistema operacional Linux está presente em 67% dos servidores na Internet e nos 208 maiores computadores do mundo. É um mercado de 12 bilhões de dólares que precisa ser explorado por profissionais habilidosos e competentes capazes de criar, manter e administrar estes sistemas computacionais.

Para garantir a entrada e sustentabilidade dos técnicos no mercado de trabalho, o Linux Professional Institute - LPI - criou a Certificação LPIC avalisa o uso profissional do sistema em todo o mundo.

O Programa LPIC foi desenvolvido para certificar a competência do sistema de administração usando o sistema operacional Linux e suas ferramentas associadas. Foi desenvolvido para ser neutro em termos de distribuição, seguindo o Linux Standard Base entre outros padrões e convenções relevantes.

A demanda cresce 30% ao ano

A demanda de profissionais Linux pelas empresas e de interessados em cursos pelos centros de treinamentos é promissora. Dados do IDC de 2006 revelam que a base instalada Linux no Brasil, cresce 30% ao ano e já está em 64% das empresas brasileiras, um crescimento superior a 50% em relação a 2004.

Este instituto de pesquisas prevê ainda que o segmento continue em expansão a uma taxa média de 30% da base instalada ao ano, superior à área de TI como um todo, que deve crescer de 13% a 14%. Serviços ligados a Linux representam 49% do total de mercado. Até 2009 serão abertas 630 mil novas vagas em TI na América Latina, 466 mil em softwares, sendo 210 mil no Brasil. Atualmente são 892 mil empregos no país, sendo 657 mil em programas de computador.

Outras empresas envolvidas nesse mercado sustentam que nunca o profissional Linux esteve tão valorizado.

As certificações nesse segmento são fundamentais

A profissão de analista de sistemas não é regulamentada, não tem conselho e desta forma seu exercício é livre. Ela independe de diploma ou comprovação de educação formal, resultando em autoregulação da área.

A certificação garante, para os gestores e empresários, que aquele profissional contratado é qualificado. Quando um treinamento é “top de linha”, a garantia de qualificação do profissional é maior ainda. No Brasil, já foram aplicadas cerca de quatro mil provas para certificação Linux Professional Institute (LPI) desde 2002.

Porque se Certificar em Linux ?

  • Comprovar sua competência!
  • Ter vantagem competitiva diante de um empregador em potencial!
  • Estabelecer-se como consultor independente de sucesso!
  • Diversificar e definir sua carreira!
  • Ter um diferencial de renome no seu currículo!
  • Aumentar sua respeitabilidade como freelancer!
  • Garantir uma promoção no trabalho!
  • Aprofundar seus conhecimentos de redes e sistemas operacionais!
  • Abrir novas oportunidades de negócios OpenSource!
  • Preparar-se para concursos públicos que exigem conhecimentos de Linux!
  • Aumentar sua empregabilidade!
  • Oferecer novas soluções para potenciais clientes!
Cinco passos para passar na certificação Linux - clique aqui

Banda larga móvel já chegou em 11% das cidades brasileiras

Postador por Francisco Coelho


A banda larga móvel está presente em 11,3% dos municípios brasileiros em junho de 2009, atingindo 62% da população, de acordo com o primeiro Balanço da Banda Larga Móvel, feito pela fabricante de equipamentos de telecomunicações Huawei em parceria com a consultoria Teleco. Existem no País 4 milhões de aparelhos 3G em uso, ou 1,7% da base de usuários.

O estudo mostra que o Brasil está abaixo da média mundial de 5 acessos a cada 100 habitantes: a densidade é de 2,1 acessos de banda larga móvel a cada 100 habitantes, totalizando 4 milhões de acessos por mês. Para comparação, essa densidade é de 74 acessos/100 habitantes no Japão. A pesquisa indica que esse mercado deve crescer mais de 70% até 2014, com mais de 60 milhões de acessos.
Em comparação à banda larga fixa, a versão móvel deve ultrapassar o número de acessos no Brasil em 2011, em um atraso de dois anos em relação à média mundial. A pesquisa indica ainda que o acesso feito à internet móvel pelo celular já é maior que a feita usando modems: 2,1 milhões de aparelhos em uso, contra 1,8 milhão de modems no segundo trimestre de 2009.
A pesquisa mostra ainda que São Paulo, Rio de Janeiro e Minas Gerais são os estados com maior percentual de municípios cobertos por tecnologias 3G.
Segundo a Huawei, os problemas da banda larga no País são a baixa oferta de serviços pré-pagos e o preço dos aparelhos, mas que tem um papel a cumprir na ampliação da banda larga no Brasil, incluindo seu uso em netbooks e smartphones.
O estudo define banda larga móvel como acessos feitos em redes móveis celulares com velocidades acima de 256 Kbps usando tecnologias como 3G e 3,5G (WCDMA, HSPA, Wi-Max ou EVDO).


Zumo Notícias

Saiba por que a computação quântica é o futuro

Postador por Francisco Coelho

Mais de 400 milhões de transistores são inseridos em chips dual-core fabricados usando o processo de 45nm da Intel. Isto em breve dobrará, de acordo com a Lei de Moore. E isto ainda será como computar com pedrinhas em comparação com a computação quântica.

A computação quântica é um assunto bem complicado - hummm, vejamos, mecânica quântica mais computadores. Vou tentar manter isto no nível básico, mas recentes descobertas como esta (http://tinyurl.com/m5sp4n) provam que você definitivamente deve começar a prestar atenção nela. Algum dia, no futuro, a computação quântica estará quebrando códigos, operando buscas pela internet e talvez, apenas talvez, fazendo funcionar os nossos painéis holográficos estilo Star Trek.
Antes de entrarmos na parte quântica, vamos começar somente com a parte "computação". Tudo se resume a bits. Eles são a estrutura básica da informação de computação. Eles têm dois estados - 0 ou 1, desligado ou ligado, falso ou verdadeiro, e por aí vai. Mas dois estados definidos é uma chave. Quando você junta um monte de bits, geralmente 8 deles, você consegue um byte. Como em kilobytes, megabytes, gigabytes e por aí vai.
As suas fotos digitais, músicas, documentos, tudo isso não passa de longas cadeias de 1s e 0s, segmentados em filamentos de 8 dígitos. Em função da sua estrutura binária, um computador clássico opera de acordo com uma certa lógica que a torna excelente para certos tipos de computação - as coisas genéricas e básicas que você faz todos os dias - mas não tão boa para outras, como encontrar gigantescos fatores primos (aquelas coisas das nossas antigas aulas de matemática), que são uma importante parte da quebra de códigos.
A computação quântica opera de acordo com um tipo diferente de lógica - ela de fato usa a regra da mecânica quântica para computar. Bits quânticos, chamados de qubits, são diferentes dos bits comuns porque eles não têm apenas dois estados. Eles têm múltiplos estados, ou melhor, superposições - eles podem ser 0 ou 1 ou 0-1 ou 0+1 ou 0 e 1, tudo ao mesmo tempo. É muito, muito mais profundo que o velho bit comum.
A capacidade de um qubit de existir em múltiplos estados - o combo de todos eles em superposição - abre uma porta incrivelmente grande de possibilidades para o poder computacional porque ele é capaz de fatorar números a velocidades insanamente maiores que os computadores comuns.
O emaranhamento - um estado quântico que dita as correlações estreitas entre os sistemas - é a chave para isto. É um troço bem difícil de se descrever, então eu pedi ajuda para o Boris Blinov, um professor do Grupo de Computação Quântica por Íons Capturados (http://depts.washington.edu/qcomp/) da Universidade de Washington. Ele usou o Gato de Schrödinger (http://tinyurl.com/5zzdou) para explicar: basicamente, se você tiver um gato dentro de uma caixa fechada e lançar gás venenoso lá dentro, o gato ou estará morto, 0, ou vivo, 1.
Até eu abrir a caixa para descobrir, ele existe em ambos os estados - uma superposição. Esta superposição é destruída quando eu a mensuro. Mas suponha que eu tenha dois gatos em duas caixas correlacionadas e eu aplico o mesmo processo. Se eu abrir uma caixa e o gato estiver vivo, isto significa que o outro gato também estará, mesmo que eu nunca tenha aberto aquela caixa. É um fenômeno quântico com uma correlação mais forte do que você consegue compreender em uma simples aula de física, e por causa disto você pode fazer algo como algoritmo quântico - mude uma parte do sistema e o resto responderá em consequência sem alterar o resto da operação. Isto é parte do motivo para ela ser mais veloz em certos tipos de cálculos.
A outra parte, explica Blinov, é que você consegue obter verdadeiro paralelismo na computação - ou seja, de fato processar um monte de informações em paralelo, "não como o Windows" ou mesmo outros tipos de computadores clássicos que prometem paralelismo.
Então, pra que a computação quântica serve?
Por exemplo, uma senha que levaria anos para se quebrar pela força bruta usando os computadores de hoje poderia levar poucos segundos com um computador quântico, então há um bocado de coisas malucas para as quais os governos (em especial o dos EUA) poderiam colocá-la em uso no campo da criptografia.
E também seria útil para os engenheiros de busca do Google, Microsoft e outras empresas, já que você pode buscar e indexar bancos de dados muito, muito mais rapidamente. E não devemos nos esquecer das aplicações científicas - não é nenhuma surpresa que os computadores clássicos sejam bem ruins para modelar mecânica quântica. Jonathan Home, do Instituto Nacional de Padrões e Tecnologia dos EUA, sugere que, do jeito que anda a computação em nuvem, se você precisa executar um cálculo insano, é capaz de preferir alugar um mainframe quântico no quintal do Google.
O motivo para ainda não estarmos detonando com os computadores quânticos agora é que este lance quântico, neste momento, ainda é extremamente frágil. E sempre será, já que os estados quânticos não são exatamente robustos.
Estamos falando de trabalho com íons - em vez de elétrons - e, se você acha que o sobreaquecimento é um problema dos processadores atuais, você não faz a menor ideia. Na descoberta revelada pela equipe de Home no INCT (em inglês, pelo atalho http://tinyurl.com/lmx954) - completar um conjunto inteiro de operações quânticas de "transporte", deslocando informações de uma área do "computador" para outra - eles trabalharam com um único par de átomos, usando lasers para manipular os estados dos íons de berílio, armazenando os dados e executando uma operação antes de transferir esta informação para um diferente local no processador. O que permitia que funcionasse sem acabar com o processador e perder todos os dados devido ao calor eram os íons de magnésio refrigerando os íons de berílio conforme estes eram manipulados. E estes lasers têm limitação do quanto podem fazer. Se você quiser manipular mais íons, precisará acrescentar mais lasers.
Poxa, a computação quântica é tão frágil e desajeitada que, quando conversamos com o Home, ele disse que boa parte do esforço é voltado para bolar métodos de correção de erros. Em cinco anos, diz ele, nós provavelmente estaremos trabalhando com míseras dezenas de qubits. O estágio em que se encontra agora, diz Blinov, é "o equivalente a confeccionar um transistor confiável" de algumas décadas atrás.
Mas isso não quer dizer que estas poucas dezenas de qubits não serão úteis. Mesmo que elas não sejam alocadas para quebrar códigos na Agência de Segurança Nacional dos EUA - seriam necessários 10.000 qubits para uso em criptografia de alto nível - ainda é poder de computação quântica suficiente para calcular propriedades de novos materiais, coisa que seria difícil de modelar com um computador clássico.
Em outras palavras, os cientistas de materiais poderiam já na próxima década desenvolver um case para o iPhone 10G ou os primórdios do próximo processador cavalar da Intel usando computadores quânticos. Só não espere é um computador quântico na sua mesa de trabalho nos próximos 10 anos.
(Um agradecimento especial a Jonathan Home do Instituto Nacional de Padrões e Tecnologia e ao professor Boris Blinov da Universidade de Washington!)


Gizmodo

Algoritmo de computador decifra texto antigo

Postador por Francisco Coelho


Pesquisador aponta para manuscritos antigos: programa utiliza um algoritmo de reconhecimento de padrões semelhante ao aplicado pelas organizações policiais para identificar e comparar impressões digitais.

Pesquisadores de Israel desenvolveram um programa capaz de decifrar textos antigos anteriormente ilegíveis, abrindo caminho a um serviço de busca em estilo Google para documentos históricos.
O programa utiliza um algoritmo de reconhecimento de padrões semelhante ao aplicado pelas organizações policiais para identificar e comparar impressões digitais.
Mas nesse caso o programa identifica palavras, letras e até mesmo estilos de caligrafia, o que pouparia horas de estudo aos historiadores e religiosos.
Ao reconhecer esses padrões, o computador é capaz de recriar com grande precisão porções de texto que se tenham esmaecido ao longo do tempo ou até mesmo sido encobertas por textos de outros escribas, disse Itay Bar-Yosef, um dos pesquisadores da Ben-Gurion University of the Negev.
"Quanto mais textos o programa analisar, mais inteligente e preciso ele se torna", disse Bar-Yosef.
O computador trabalha com cópias digitais de textos, designando valores numéricos para cada pixel de escrita, dependendo de seu brilho. O programa separa a escrita do fundo, e em seguida identifica linhas, letras e palavras individuais.
Também analisa a caligrafia e o estilo de escrita, para que possa "preencher as lacunas" de caracteres manchados ou atenuados que de outra maneira seriam indiscerníveis, disse Bar-Yosef.
A equipe concentrou seu trabalho em antigos textos hebraicos, mas diz que o programa pode ser usado também pra analisar documentos em outros idiomas.
Os pesquisadores publicaram seu trabalho, que continua em desenvolvimento, em estudo na revista acadêmica Pattern Recognition, que sai em dezembro em versão impressa mas já está disponível online.
Um programa aberto ao uso de todos os acadêmicos deve estar pronto em dos anos, disse Bar-Yosef.
E bibliotecas de todo o mundo que estão se esforçando para digitalizar suas coleções afirmam que o programa pode acionar um sistema de buscas instantâneas em qualquer banco de dados digitalizados sobre antigos manuscritos.



Fonte: Info

GPS é usado para monitorar pacientes com dificuldades mentais

Postador por Francisco Coelho



Pacientes com doenças relacionadas à demência e seus familiares poderão ficar mais tranquilos e levar vidas próximas da normalidade. Um novo dispositivo GPS está sendo testado na cidade inglesa de Warwickshire para evitar que idosos se percam de suas famílias.



Pessoas com variados tipos de demência, como o Mal de Alzheimer ou mesmo a bastante comum esclerose, costumam ter lapsos de memória e podem se perder ao sair de casa por não se lembrarem de onde vieram ou quem são. Por isso, o serviço social de cuidado ao adulto da cidade inglesa de Warwickshire está distribuindo o aparelho para alguns pacientes selecionados.
O dispositivo, que é do tamanho de um relógio de pulso, acompanha todos os movimentos do paciente pelo Sistema de Posicionamento Global (GPS). Caso ele saia de uma zona pré-determinada por seus parentes, um alarme é enviado diretamente ao telefone de seus responsáveis.
Além de funcionar na rua o aparelho também será útil dentro de casa. Através de pequenos sensores sem fio anexados às portas da residência será possível conferir os locais por onde o paciente passou, se saiu de seu quarto, se foi até a cozinha, se ficou na sala.
De acordo com o site Daily Mail um homem identificado apenas como Pete resolveu entrar para o programa para ajudar seu pai, John, a ter uma vida melhor. John, que tem 71 anos, já foi resgatado pela polícia e por sua família diversas vezes depois de se perder.
"Papai sempre adorou dar longas caminhadas com o cachorro mas ele começou a se perder em outras partes da cidade", disse Pete. "Conversamos com papai a respeito do GPS e ele está feliz em usá-lo porque sente que está sendo cuidado mesmo quando não estamos lá", completa.
"Novas tecnologias estão dando uma maior liberdade e promovendo a independência das pessoas. Nosso trabalho nesse campo é para que elas tenham escolha e controle sobre como querem ser tratados, então podemos personalizar serviço para atender às suas necessidades¿ informou o dr. Graeme Betts, diretor de serviços comunitários e adultos de Warwickshire ao site Telegraph.
O site TechRadar cita um projeto anterior que ainda não chegou ao mercado, um tênis com GPS embutido que serviria para o mesmo propósito.



Geek

Kaspersky Internet Security 2010 - Português

Postador por Lincoln Carvalho

O Kaspersky Anti- Virus 2010 inclui novas funcionalidades etecnologias de protecção únicas no mercado, para fazer frente às ameaças online, tanto conhecidas como desconhecidas. Com um consumo mínimo de recursos, o Kaspersky Anti-Virus 2010 permite obter uma protecção à medida das necessidades de cada utilizador. Barra de Ferramentas para browsers Web que o avisa sobre páginas infectadas ou inseguras. Novo! Protecção básica contra roubo de identidade que inclui Teclado Virtual. Melhorado! Protecção proactiva de última geração contra ataques de dia zero e ameaças desconhecidas. Melhorado! Modo de Jogo para suspender alertas, actualizações e análises. Novo!


Versão final do Opera 10 já pode ser baixada

Postador por Francisco Coelho


A Opera Software liberou nesta terça-feira, 1º de setembro, a versão final do Opera 10. O navegador está disponível para as plataformas Windows, Mac e Linux.
O novo browser promete ser até 40% mais rápido do que a última versão 9.6. Segundo a companhia norueguesa, o navegador também tem melhor desempenho em conexões discadas.
Uma novidade que deve agradar aos usuários é a possibilidade de realizar atualizações automáticas por meio do próprio browser, deixando de lado a necessidade de buscá-las na internet. A interface, desenvolvida pelo designer Jon Hicks, também se tornou mais intuitiva e agradável.







Fonte: Olhar Digital

Em agosto, Chrome e Firefox sobem e IE cai

Postador por Francisco Coelho



O Internet Explorer perdeu 1,1% de mercado em agosto quando comparado com julho. O browser da Microsoft, agora, tem 66,6% de participação, segundo pesquisa da Net Applications.


O Firefox, da Mozilla, manteve a segunda colocação em agosto abocanhando mais 0,8% do mercado – hoje já possui o total de 23,3%. Neste período, o Chrome, do Google, ganhou 1,25% da fatia, conquistando 2,9% do segmento.
Em agosto, o Safari, browser da Apple, se tornou dono de 4,1% do mercado, e o Opera, da Opera Software, registrou um pequeno crescimento de 0,1% em um mês, totalizando 2,1% do mercado, de acordo com o relatório.
Quer ver as novidades dos navegadores disponíveis na web? Então clique NESTA matéria que o Olhar Digital preparou!


Fonte: Olhar Digital

Google Chrome virá instalado em notebooks da Sony

Postador por Francisco Coelho





A Sony e o Google fecharam um acordo para instalação do navegador Chrome nos notebooks da linha Vaio fabricados pela empresa.
Este é o primeiro acordo deste tipo feito pelo Google, o que posiciona o Chrome como um concorrente direto para o Internet Explorer, que vem pré-instalado na maioria dos PCs e notebooks vendidos hoje.
A Sony e o Google não divulgaram mais detalhes sobre o acordo e nem se os notebooks com o Chrome instalado serão vendidos apenas nos EUA.




Fonte: Baboo

Vídeo Aula: 1000 Cursos e Apostilas da Digerati | ISO Download

Postador por Lincoln Carvalho

Torne-se um verdadeiro expert em informática: 1.000 Cursos e Apostilas: Aprimore seus conhecimentos em Análise de Sistemas, Banco de Dados, Editoração Gráfica, Hardware, Linux e muito mais.

GANHE DINHEIRO: Consertando Computadores! Todas as ferramentas necessárias para você recuperar dados perdidos, fazer overclock em equipamentos antigos e outros. Dicas para você se tornar um excelente profissional de informática. NO CD: Cursos e Apostilas, Videoaula, Análise de Sistema, Backup, Benchmark, Desempenho, Recuperação de Arquivos, Impressoras e muito mais!

Análise de Sistemas 45 Apostilas -> Auditoria em Informática, Indução a Ciência da Computação, Sistemas Básicos, Teste de Software Estratégias e Técnicas, Projeto de Sistemas de Software I, II, III, IV, V, VI, VII , métricas, etc;
Banco de Dados 60 Apostilas -> Access, Banco de Dados Delphi,Banco de Dados 4 Módulos, Crystal Reports 6.0, Estrutura de Dados, Interbase 5.6 e 6.0, PHP Mysql, Introdução ao MySql, Comandos SQL em Oracle, Oracle Linux, SQL Server 6.5, Contrução de Comandos em SQL, Dicas Oracle SQL, Principais Instruções em SQL etc…

Gráficos 164 Apostilas -> 3DStudio, 3DStudio Max, 3DViZ, AutoCAD Básico, CAD, Curso de AutoCAD 64 Aulas, Curso de CAD 3D 10 Aulas, Lições de Computação Gráfica, CorelDraw 8, Efeitos no PhotoPaint, Conceitos de Cores, Editoração Eletrônica, Fotografia Digital e Foto Jornalismo, Freehand 8, Manipulação 3D, Fundamentos Gráficos, Lições e Tutoriais GIMP, OpenGL, Programação Open, Lições Zbrush e etc;

Hardware 30 Apostilas -> Disco Rígido, Expandindo a Memória, Funcionamento Interno, Gabinetes, Manuseio de Equipamentos, Montagem, Placas de Vídeo, Placa-Mãe, Sistemas de Controle, Barramentos I e II, CD-ROM, Como Montar um PC, BIOS Setup, Evolução dos Processadores e etc;

Linux 9 Apostilas -> Comandos Básicos do Linux, Debian GNU, Editor de Textos, Linux Passo a Passo 1 e 2, Programação C-Shell, Samba e Samba Avançado e Apostila de Linux;

Programação 219 Apostilas -> Algoritmo, Algoritmo Estruturado, Lições ASP, Assembly 26 Capítulos, Assembly para Iniciantes, Apostila C, C++, Aplicações Gráficas 3D em C, Curso de C, 47 Tutoriais em C, Instrodução ao C, Uso de CGI, Segurança em CGI, Clipper, Delphi , Curso Delphi, Recursos do Delphi, Fundamentos Object Pascal, Produção de DLL em Delphi, Programação em JAVA, Certificação em Java, Java Swing, Java Orientado a Objetos, 300 Idéias para Programar, Programação Estruturada, Realidade Virtual, Visual Basic 90 Dicas, VBScript, Desenvolvendo aplicações em Visual Basic, Instrodução ao Visual Basic 5, Visual Basic 5 Avançado, Visual Basic 6 para VB .NET, Computação de Alto Desempenho, Ferramentas CASE;

Redes 14 Apostilas -> Configurando Rede Local, Montando Pequenas Redes, Arquitetura TCP-IP 1 e 2, Cabeamento Estruturado, Cabeamento, Especificação Técnica, Gerência Integrada, Introdução SDH, Introdução, Segurança, TCP-IP Estudo Geral, Treinamento em Redes, TCP-IP;

Webdesign 318 Apostilas -> Director, Director 7, Dreamweaver Comandos, Dicas, Formulários, Login, Navigation Bar, Templates e etc, Fireworks Botões Aqua, Criando Logomarca, Criando Menu, Curvas, Fatiando um Layout, Pixel, Art, Texto Linear, Sombra Perspectiva e etc;

Flash - ActionScript 1 e 2, Efeitos, Guia Passo a Passo, Menu Seguindo o Mouse, Prototype, Standards ActionScript, Variáveis com JavaScript e etc, FreeHand, Como Construir HomePage, WebDesigner, PageMaker, Photoshop - Palheta Toolbox, Palheta Navigator, Background, Botão 3D com textura 3D, Canais do Photoshop 1,2,3,4 ; Colorindo Imagens PB, Como fazer Brushes, Contornos a Mão Livre, Criando GIF Transparente, e muito mais…

* Tamanho: 590 MB (1 CD)
* Formato: ISO
* Idioma: Português