Demo Blog

Como fazer um cliente em Java e um servidor em C++

por Anônimo , , , , ,

Partindo do princípio de que você instalou ambos os orb's, tanto o jacOrb (que vem junto com o JDK do Java, para instalar basta seguir este tutorial e pronto) e o omniOrb (para instalar baste seguir este outro tutorial ).

Agora para realizar a chamada entre o cliente em Java utilizando o orb jacOrb e o servidor em C++ utilizando o omniOrb, faça o seguinte :

Pegue o echo.idl que fica dentro da pasta idl, a pasta idl esta dentro da pasta aonde foi instalado o omniOrb.

Agora copie este echo.idl para uma pasta qualquer, iremos gerar os stubs/skeletons para ela:

idlj echo.idl

Ele irá gerar uma pasta chamada echo, entre nela e crie um arquivo .java, EchoClient.java (ele que fará o papel do nosso cliente Java) e cole o seguinte código :

EchoClient.java
import org.omg.CosNaming.*;
import org.omg.CORBA.*;

public class EchoClient {
   
    public static void main(String args[]) {
        try {
            String SetInfo, ReturnInfo, ref;
            org.omg.CORBA.Object objRef;
            Echo EchoRef;
            ORB orb = ORB.init(args, null);

            objRef = orb.resolve_initial_references("NameService");
            NamingContext ncRef = NamingContextHelper.narrow(objRef);

            // locate the service
            NameComponent nc =  new NameComponent("test", "my_context");
            NameComponent nc2 = new NameComponent("Echo", "Object");
           
            NameComponent path[] = { nc,nc2 };
            EchoRef = EchoHelper.narrow(ncRef.resolve(path));

            if (args.length > 1) {
                SetInfo = args[1];
            } else {

            }
           
            System.out.println("Começando o processo do cliente: ");
            ReturnInfo = EchoRef.echoString("UFSCAR");
            System.out.println(ReturnInfo);
           
        } catch (Exception e) {
            System.out.println("ERROR : " + e);
        }
    }
}

Cole o código acima no arquivo criado, EchoClient.java, salve e feche.
Agora compile todos os .java que tive na pasta :

javac *.java

Agora uma coisa importante, é necessário alterar um valor no arquivo omniORB.cfg que utilizamos para instalar o omniOrb, lembram ?
Pois bem, acesse o arquivo como root para poder alterar :

no Ubuntu:
sudo gedit .omniORB.cfg

Fedora :
su


gedit .omniORB.cfg

Altere supportBootstrapAgent = 0 para supportBootstrapAgent = 1 em omniORB.cfg.
Isso é necessário para poder permitir a interoperabilidade entre os orb's, tudo bem ?

Agora digite

make

na pasta aonde esta o exemplo da pasta echo que é subdiretório da pasta 'build' que criamos para instalar o omniOrb lembram ?

Por exemplo:
Eu instalei o omniOrb em :
/home/valter/Corba/omniOrb/install/

A pasta idl, aonde estará o echo.idl esta em :
/home/valter/Corba/omniOrb/install/omniORB-4.1.4/idl/

A pasta build estará em :
/home/valter/Corba/omniOrb/install/build

Os arquivos de exemplo que utilizamos serão compilados na pasta :
/home/valter/Corba/omniOrb/install/omniORB-4.1.4/build/src/examples/echo/ (dê o 'make' aqui)

O código fonte esta em :
/home/valter/Corba/omniOrb/install/omniORB-4.1.4/src/examples/echo


A separação de código fonte e arquivos compilados se dá porque utilizamos a instalação automático do omniOrb para o linux, então o arquivo que há em /home/valter/Corba/omniOrb/install/omniORB-4.1.4/build/src/examples/echo/ irá rodar os arquivos que foram configurados baseados na arquitetura do computador.

Agora inicialize o serviço de nomes do omniOrb

omniNames -start

Isso fará com que ele esteja recebendo e enviando pela porta padrão 2809

Inicialize o servidor
Entre na pasta aonde foi digitado o 'make' :

./eg3_impl


Agora inicialize o cliente :

java EchoClient -ORBInitialPort 2809

Deverá ter uma saída assim :

Começando o processo do cliente:
UFSCAR

Lembrando que o servidor só retorna a mensagem que foi enviada pelo cliente.
É isso.

Agora para que o servidor gere uma string que seja um código você deve implementar esse código no arquivo :

eg3_impl.cc que fica em :
/home/valter/Corba/omniOrb/install/omniORB-4.1.4/src/examples/echo (no meu caso)

Procure pelo método

char* Echo_i::echoString(const char* mesg)

Dentro dele construa a sua implementação de geração do código único e converta para que seja do tipo char*, que ele irá retornar para o cliente Java, tudo bem ?

É isso pessoal, espero ter ajudado.

Um forte abraço.
Valeu Gustavo pela ajuda!
1 comentários mais...

Google tem 2076 vagas de emprego para 2010

por Anônimo

Da Reuters
 
Você já se perguntou o quanto o Google sabe sobre você?
O Google planeja contratar mais de duas mil pessoas em todo o mundo, ampliando sua força de trabalho à medida que se expande a novos mercados e disputa talentos com rivais de crescimento mais rápido.
O maior serviço mundial de buscas na Internet, cujo vice-presidente financeiro disse a investidores em setembro que o setor estava travando uma 'guerra pelo talento', tem vagas em aberto para 2.076 pessoas em seu site, de acordo com um levantamento da Reuters.
O número de vagas é quase seis vezes mais alto que o encontrado em pesquisa semelhante realizada em março de 2009.
A onda de contratações acontece em meio às mais de 20 aquisições realizadas pela empresa até agora este ano, que ajudaram a ampliar o quadro do Google a mais de 23,3 mil funcionários no final de setembro, alta de quase 18 por cento ao longo de 2010.
'Estamos acelerando nossas contratações e o número de vagas abertas, nos últimos 12 meses', disse Jordan Newman, porta-voz do Google.
Ele não comentou sobre o número exato de vagas, mas disse que a página de ofertas de emprego do site estava completamente atualizada e que era monitorada com cuidado.
O Google, que detém cerca de dois terços do mercado mundial de buscas na Internet, está em atrás de novas oportunidades de crescimento em diversos mercados, entre os quais o sistema operacional Android para celulares inteligentes, publicidade online convencional e software de produtividade para uso online.
Essas incursões surgem enquanto a empresa luta para conter o avanço do gigante das redes sociais Facebook, que está desafiando o Google na conquista das verbas publicitárias e dos talentos de engenharia, bem como a Apple, no mercado celular.
Este mês, o Google anunciou internamente planos para conceder a todos os seus funcionários um aumento de 10 por cento em 2011, de acordo com reportagens, decisão que muita gente no setor interpretou como esforço para reter seus melhores funcionários.
As vagas atualmente disponíveis no Google se destinam primordialmente a engenheiros e pessoal de vendas, e cerca de metade delas são para postos nos Estados Unidos. Alguns dos empregos são definidos como temporários, mas a maior parte parece permanente.

Fonte


0 comentários mais...

Como fazer comunicação cliente/servidor em Java usando Corba

por Anônimo

Aula do professor Frank Siqueira que pode ser visualizada aqui.

Arquivos utilizados no tutorial :
Servidor.java
Cliente.java
Banco.idl
Auto_AtendimentoImpl.java

Descrição
Essa atividade mostrará como utilizar o CORBA para efetuar a comunicação entre objetos distribuídos.

Roteiro
Especificando a Interface do Servidor

Suponha a interface do servidor de um banco, que deve ser acessado tanto pelo sistema de auto-atendimento pela Internet quanto pelos caixas eletrônicos.

Primeiramente, devemos definir a interface IDL do servidor. Iremos utilizar a seguinte interface:

Banco.idl
module banco {

  typedef unsigned long conta; 
  typedef double valor; 

  const string nome_banco = "UFSC";
  const string moeda = "R$"; 

  enum aplicacao { poupanca, fundo_acoes, renda_fixa };

  struct transacao { 
    unsigned long data; // Formato: ddmmyyyy
    string<12>    descricao; 
    valor         quantia; 
  };

  typedef sequence  transacoes; 
  exception conta_inval { conta c; };
  exception saldo_insuf { valor saldo; };

  interface auto_atendimento {
    readonly attribute string boas_vindas;
    valor saldo ( in conta c ) 
          raises ( conta_inval );

    void extrato ( in conta c, out transacoes t, out valor saldo ) 
         raises ( conta_inval );  

    void transferencia ( in conta origem, in conta destino, in valor v )
         raises ( conta_inval, saldo_insuf );  

    void investimento ( in conta c, 
         in aplicacao apl, in valor v ) 
         raises ( conta_inval, saldo_insuf ); 

  };

  interface caixa_eletronico: auto_atendimento {
    void saque ( in conta c, in valor v ) 
         raises ( conta_inval, saldo_insuf );

  }; 

};


Salve a descrição de interface acima no arquivo Banco.idl e a compile com o comando:

idlj -fall Banco.idl

Note que foram gerados diversos arquivos no diretório banco, dentre os quais estão as stubs e skeletons que serão usados pela aplicação e classes que correspondem aos tipos de dados e exceções definidos no arquivo IDL.
Implementando o código do Servidor

Agora devemos implementar o servidor. O arquivo auto_atendimentoImpl.java contém uma implementação limitada dos métodos especificados na interface de auto-atendimento. O arquivo servidor.java contém o código necessário para instanciar o servidor e registrá-lo no serviço de nomes. Salve estes dois arquivos no diretório banco criado pelo compilador IDL.

atendimentoImpl.java
package banco;



import org.omg.CosNaming.*;

import org.omg.CORBA.*;



class auto_atendimentoImpl extends auto_atendimentoPOA

{  

  public String boas_vindas () { return "Bem-vindo ao banco " + banco.nome_banco.value; };

  public double saldo (int c) throws banco.conta_inval { return 0.0; }

  public void extrato (int c, banco.transacoesHolder t, org.omg.CORBA.DoubleHolder saldo) throws banco.conta_inval {}

  public void transferencia (int origem, int destino, double v) throws banco.conta_inval, banco.saldo_insuf {}

  public void investimento (int c, banco.aplicacao apl, double v) throws banco.conta_inval, banco.saldo_insuf {}

}

servidor.java
package banco;



import org.omg.CosNaming.*;

import org.omg.CORBA.*;

import org.omg.PortableServer.*;

import java.io.*;



public class servidor

{

  public static void main(String args[]) {

    try{

      // Cria e inicializa o ORB

      ORB orb = ORB.init(args, null);



      // Cria a implementação e registra no ORB

      auto_atendimentoImpl impl = new auto_atendimentoImpl();



      // Ativa o POA

      POA rootpoa = POAHelper.narrow(

        orb.resolve_initial_references("RootPOA"));

      rootpoa.the_POAManager().activate();



      // Pega a referência do servidor

      org.omg.CORBA.Object ref = 

        rootpoa.servant_to_reference(impl);

      auto_atendimento href = auto_atendimentoHelper.narrow(ref);

   

      // Obtém uma referência para o servidor de nomes

      org.omg.CORBA.Object objRef = 

        orb.resolve_initial_references("NameService");

      NamingContextExt ncRef = 

        NamingContextExtHelper.narrow(objRef);



      // Registra o servidor no servico de nomes

      String name = "AutoAtendimento";

      NameComponent path[] = ncRef.to_name( name );

      ncRef.rebind(path, href);



      System.out.println("Servidor aguardando requisicoes ....");



      // Aguarda chamadas dos clientes

      orb.run();

    } catch (Exception e) {

        System.err.println("ERRO: " + e);

        e.printStackTrace(System.out);

    }

    System.out.println("Encerrando o Servidor.");

  }

}

Compile todos os arquivos do servidor com o comando:

javac banco/*.java


Implementando o código do Cliente

O cliente CORBA (arquivo cliente.java) localiza o servidor e faz chamadas aos seus métodos.

cliente.java
import banco.*;

import org.omg.CORBA.*;

import org.omg.CosNaming.*;

import org.omg.CosNaming.NamingContextPackage.*;



public class cliente {



  public static void main(String args[]) {

    try {

      // Cria e inicializa o ORB

      ORB orb = ORB.init(args, null);



      // Obtem referencia para o servico de nomes

      org.omg.CORBA.Object objRef = orb.resolve_initial_references("NameService");

      NamingContextExt ncRef = 

        NamingContextExtHelper.narrow(objRef);

 

      // Obtem referencia para o servidor

      String name = "AutoAtendimento";

      auto_atendimento server = auto_atendimentoHelper.narrow(ncRef.resolve_str(name));



      // Imprime mensagem de boas-vindas

      System.out.println(server.boas_vindas());



      // Obtem o numero da conta

      System.out.print("Entre o numero da sua conta: ");

      java.io.BufferedReader reader = new java.io.BufferedReader(new java.io.InputStreamReader(System.in));

      String conta = reader.readLine();



      // Imprime o saldo atual

      System.out.println("Seu saldo eh de R$" + server.saldo(Integer.parseInt(conta)));



    } catch (Exception e) {

        System.out.println("ERROR : " + e) ;

        e.printStackTrace(System.out);

    }

  }

}



Compile o cliente com o comando:

javac cliente.java

Executando a Aplicação no Windows

Primeiramente, inicie o ORB com o comando:

> start orbd

Em seguida, inicie o servidor:

> start java banco.servidor

Finalmente, inicie o cliente com o comando:

> java cliente

Para fazer a comunicação entre máquinas diferentes, indique ao cliente que o ORB estará rodando em outro computador:

> java cliente -ORBInitialHost

Obs.: as restrições de segurança impostas na rede do laboratório não permitem essa forma de comunicação entre máquinas.
Executando a Aplicação no Linux

Primeiramente, inicie o ORB com o comando:

> orbd -ORBInitialPort 2500 &

Em seguida, inicie o servidor em um terminal:

> java banco.servidor -ORBInitialPort 2500

Finalmente, inicie o cliente executando em outro terminal o comando:

> java cliente -ORBInitialPort 2500

Para fazer a comunicação entre máquinas diferentes, indique ao cliente que o ORB estará rodando em outro computador:

> java cliente -ORBInitialHost -ORBInitialPort 2500


Espero que ajude,
um forte abraço.
1 comentários mais...

Como fazer comunicação cliente/servidor em Java usando Corba

por Anônimo , , ,

Para este tutorial é necessario ter a JDK da Sun no seu Windows, Linux, eu fiz um tutorial ensinando como instalar a JDK no linux, que pode ser visto aqui.

Aula do professor Frank Siqueira que pode ser visualizada aqui.

Arquivos utilizados no tutorial :
Servidor.java
Cliente.java
Banco.idl
Auto_AtendimentoImpl.java

Descrição
Essa atividade mostrará como utilizar o CORBA para efetuar a comunicação entre objetos distribuídos.

Roteiro
Especificando a Interface do Servidor

Suponha a interface do servidor de um banco, que deve ser acessado tanto pelo sistema de auto-atendimento pela Internet quanto pelos caixas eletrônicos.

Primeiramente, devemos definir a interface IDL do servidor. Iremos utilizar a seguinte interface:

Banco.idl
module banco {

  typedef unsigned long conta; 
  typedef double valor; 

  const string nome_banco = "UFSC";
  const string moeda = "R$"; 

  enum aplicacao { poupanca, fundo_acoes, renda_fixa };

  struct transacao { 
    unsigned long data; // Formato: ddmmyyyy
    string<12>    descricao; 
    valor         quantia; 
  };

  typedef sequence  transacoes; 
  exception conta_inval { conta c; };
  exception saldo_insuf { valor saldo; };

  interface auto_atendimento {
    readonly attribute string boas_vindas;
    valor saldo ( in conta c ) 
          raises ( conta_inval );

    void extrato ( in conta c, out transacoes t, out valor saldo ) 
         raises ( conta_inval );  

    void transferencia ( in conta origem, in conta destino, in valor v )
         raises ( conta_inval, saldo_insuf );  

    void investimento ( in conta c, 
         in aplicacao apl, in valor v ) 
         raises ( conta_inval, saldo_insuf ); 

  };

  interface caixa_eletronico: auto_atendimento {
    void saque ( in conta c, in valor v ) 
         raises ( conta_inval, saldo_insuf );

  }; 

};


Salve a descrição de interface acima no arquivo Banco.idl e a compile com o comando:

idlj -fall Banco.idl

Note que foram gerados diversos arquivos no diretório banco, dentre os quais estão as stubs e skeletons que serão usados pela aplicação e classes que correspondem aos tipos de dados e exceções definidos no arquivo IDL.
Implementando o código do Servidor

Agora devemos implementar o servidor. O arquivo auto_atendimentoImpl.java contém uma implementação limitada dos métodos especificados na interface de auto-atendimento. O arquivo servidor.java contém o código necessário para instanciar o servidor e registrá-lo no serviço de nomes. Salve estes dois arquivos no diretório banco criado pelo compilador IDL.

atendimentoImpl.java
package banco;



import org.omg.CosNaming.*;

import org.omg.CORBA.*;



class auto_atendimentoImpl extends auto_atendimentoPOA

{  

  public String boas_vindas () { return "Bem-vindo ao banco " + banco.nome_banco.value; };

  public double saldo (int c) throws banco.conta_inval { return 0.0; }

  public void extrato (int c, banco.transacoesHolder t, org.omg.CORBA.DoubleHolder saldo) throws banco.conta_inval {}

  public void transferencia (int origem, int destino, double v) throws banco.conta_inval, banco.saldo_insuf {}

  public void investimento (int c, banco.aplicacao apl, double v) throws banco.conta_inval, banco.saldo_insuf {}

}

servidor.java
package banco;



import org.omg.CosNaming.*;

import org.omg.CORBA.*;

import org.omg.PortableServer.*;

import java.io.*;



public class servidor

{

  public static void main(String args[]) {

    try{

      // Cria e inicializa o ORB

      ORB orb = ORB.init(args, null);



      // Cria a implementação e registra no ORB

      auto_atendimentoImpl impl = new auto_atendimentoImpl();



      // Ativa o POA

      POA rootpoa = POAHelper.narrow(

        orb.resolve_initial_references("RootPOA"));

      rootpoa.the_POAManager().activate();



      // Pega a referência do servidor

      org.omg.CORBA.Object ref = 

        rootpoa.servant_to_reference(impl);

      auto_atendimento href = auto_atendimentoHelper.narrow(ref);

   

      // Obtém uma referência para o servidor de nomes

      org.omg.CORBA.Object objRef = 

        orb.resolve_initial_references("NameService");

      NamingContextExt ncRef = 

        NamingContextExtHelper.narrow(objRef);



      // Registra o servidor no servico de nomes

      String name = "AutoAtendimento";

      NameComponent path[] = ncRef.to_name( name );

      ncRef.rebind(path, href);



      System.out.println("Servidor aguardando requisicoes ....");



      // Aguarda chamadas dos clientes

      orb.run();

    } catch (Exception e) {

        System.err.println("ERRO: " + e);

        e.printStackTrace(System.out);

    }

    System.out.println("Encerrando o Servidor.");

  }

}

Compile todos os arquivos do servidor com o comando:

javac banco/*.java


Implementando o código do Cliente

O cliente CORBA (arquivo cliente.java) localiza o servidor e faz chamadas aos seus métodos.

cliente.java
import banco.*;

import org.omg.CORBA.*;

import org.omg.CosNaming.*;

import org.omg.CosNaming.NamingContextPackage.*;



public class cliente {



  public static void main(String args[]) {

    try {

      // Cria e inicializa o ORB

      ORB orb = ORB.init(args, null);



      // Obtem referencia para o servico de nomes

      org.omg.CORBA.Object objRef = orb.resolve_initial_references("NameService");

      NamingContextExt ncRef = 

        NamingContextExtHelper.narrow(objRef);

 

      // Obtem referencia para o servidor

      String name = "AutoAtendimento";

      auto_atendimento server = auto_atendimentoHelper.narrow(ncRef.resolve_str(name));



      // Imprime mensagem de boas-vindas

      System.out.println(server.boas_vindas());



      // Obtem o numero da conta

      System.out.print("Entre o numero da sua conta: ");

      java.io.BufferedReader reader = new java.io.BufferedReader(new java.io.InputStreamReader(System.in));

      String conta = reader.readLine();



      // Imprime o saldo atual

      System.out.println("Seu saldo eh de R$" + server.saldo(Integer.parseInt(conta)));



    } catch (Exception e) {

        System.out.println("ERROR : " + e) ;

        e.printStackTrace(System.out);

    }

  }

}



Compile o cliente com o comando:

javac cliente.java

Executando a Aplicação no Windows

Primeiramente, inicie o ORB com o comando:

> start orbd

Em seguida, inicie o servidor:

> start java banco.servidor

Finalmente, inicie o cliente com o comando:

> java cliente

Para fazer a comunicação entre máquinas diferentes, indique ao cliente que o ORB estará rodando em outro computador:

> java cliente -ORBInitialHost

Obs.: as restrições de segurança impostas na rede do laboratório não permitem essa forma de comunicação entre máquinas.
Executando a Aplicação no Linux

Primeiramente, inicie o ORB com o comando:

> orbd -ORBInitialPort 2500 &

Em seguida, inicie o servidor em um terminal:

> java banco.servidor -ORBInitialPort 2500

Finalmente, inicie o cliente executando em outro terminal o comando:

> java cliente -ORBInitialPort 2500

Para fazer a comunicação entre máquinas diferentes, indique ao cliente que o ORB estará rodando em outro computador:

> java cliente -ORBInitialHost -ORBInitialPort 2500


Espero que ajude,
um forte abraço.
1 comentários mais...

Maioria dos brasileiros prefere trabalho Home Office

por Anônimo

Maioria dos brasileiros prefere trabalho Home Office
Pesquisa da Cisco revela que maioria também estaria disposta a trocar salários altos por mobilidade e flexibilidade de horário de trabalho

Sexta-feira, 19 de novembro de 2010 às 17h15

A maioria dos brasileiros acredita que a produtividade não está relacionada com a jornada de trabalho dentro das empresas. Uma pesquisa encomendada pela Cisco revela que 76% acreditam que não é preciso estar fisicamente no local de trabalho para ser produtivo. A preferência dos brasileiros por trabalhar remotamente está acima da média mundial, que foi de 60%, e só abaixo da Índia, com 93% e China, com 81%.

A pesquisa também revelou que 83% dos brasileiros estariam dispostos a trocar salários altos por maior mobilidade e flexibilidade de horário de trabalho. A média mundial para este item foi de 66%.

"Este resultado reflete o desejo dos profissionais pela mobilidade como forma de aliar suas responsabilidades com qualidade de vida. Isso tem sido cada vez mais realidade com o uso de soluções tecnológicas pelas empresas", afirma Ghassan Dreibi Junior, gerente de desenvolvimento de negócios de Segurança para a América Latina.

Intitulada "The Cisco Connected World Report", a pesquisa foi realizada com cerca de 2.600 pessoas, entre usuários finais e executivos de TI de 13 países: Brasil, EUA, México, Reino Unido, França, Espanha, Alemanha, Itália, Rússia, Índia, China, Japão e Austrália. As entrevistas foram realizadas entre 16 de agosto e 7 de setembro.

Mais da metade dos entrevistados em todo mundo (57%) consegue conectar sua rede de trabalho remotamente, com destaque para o grande número de usuários finais da Espanha e Reino Unido (44% em cada um dos países), que afirmaram conseguir acessar informações da rede corporativa de qualquer lugar e em qualquer hora. No Brasil, o percentual chegou a 32%.

A maioria dos usuários finais pesquisados também acredita que os dispositivos fornecidos pelas empresas deveriam estar disponíveis para uso profissional e pessoal. A média mundial foi de 66%; e no Brasil, México e China, de 77%, enquanto que na Índia o percentual chegou a 95%.

Com relação ao preparo das empresas para prover mobilidade para os funcionários, quase metade dos executivos de TI entrevistados (45%) em todo mundo afirmou que suas companhias ainda não estão preparadas para isso. Por outro lado, mais da metade dos profissionais de TI do Brasil (57%) e China (65%) afirmou que suas empresas estão trabalhando no sentido de prover mais mobilidade para seus funcionários. Garantir segurança é o maior desafio na hora de prover mobilidade nas empresas, de acordo com os profissionais de TI. Este item foi o mais citado (57% do total mundial) pelos entrevistados.

Políticas de TI e mobilidade

A pesquisa "Cisco Connected World" mostrou ainda que as políticas de TI das empresas precisam se adequar ao desejo dos funcionários pela mobilidade, especialmente para aqueles que querem acessar redes corporativas de variados dispositivos, como computadores pessoais, smartphones e iPad´s, e ainda utilizar redes sociais e ampliar comunicação por vídeo. Embora 82% dos profissionais de TI afirmaram que suas empresas contam com políticas adequadas, 64% dos usuários finais entrevistados acreditam que as políticas de suas empresas precisam ser melhoradas. O percentual dos usuários finais brasileiros para este item chegou a 74%.

O estudo também mostrou que quase metade das empresas em todo mundo (41%) proíbem acesso a rede sociais, como Facebook, MySpace e YouTube. O percentual no Brasil chegou a 51%. A restrição ao acesso ao Twitter é de 35% no mundo e 37% no Brasil. Para 36% dos executivos de TI dos países pesquisados, e 32% no Brasil, o uso de redes sociais não tem relação com os negócios das empresas, podendo ser uma perda de tempo para os funcionários.

O uso de vídeo como forma de comunicação nas empresas está crescendo rapidamente. Globalmente, 68% dos profissionais de TI acreditam que o uso dessa solução deve crescer no futuro, especialmente entre países como México (85%), China (85%), Brasil (82%) e Espanha (82%). Apesar dessa percepção, 41% dos usuários finais entrevistados ainda não podem utilizar vídeo atualmente nas companhias. Entre eles, 34% esperam utilizar o vídeo como ferramenta de comunicação no trabalho nos próximos dois anos.

A pesquisa completa está disponível aqui.

Fonte
0 comentários mais...

Como instalar e utilizar o omniOrb no Ubuntu

por Anônimo ,

Bem pessoal, eu estou escrevendo este tópico (meio diferente,rs) pois estou cursando no momento a disciplina Sistema Distribuídos e estou em um projeto que requer a utilização da tecnologia CORBA.
Mais especificamente, preciso criar um servidor em C++ e um cliente em Java, bem a implementação de um cliente Java e servidor Java pode ser encontrada aqui.


Bem agora vou explicar como instalar o omniOrb no Ubuntu.

Faça o download da última versão em download .

Descompacte em algum local de sua preferência no meu caso eu utilizei :

/home/valter/Corba/omniOrb/install/omniORB-4.1.4

Faça a instalação do pacote de desenvolvimento para Python, já que o idl do omniOrb (omniidl) utiliza o Python para fazer os arquivos .hh e .cc gerados, iremos discutir mais adiante.

sudo apt-get install python-dev

Importante : para instalar o omniOrb no Fedora instale o pacote de desenvolvimento do Python com o comando : # yum install python-devel
Depois pode fazer os mesmos passos que o descrito abaixo para o Ubuntu.

Depois de instalado do pacote de desenvolvedor para Python crie uma pasta 'build' dentro da sua pasta do omniOrb, ex :

$ cd /home/valter/Corba/omniOrb/install/omniORB-4.1.4/
$ mkdir build

É recomendável criar esta pasta para configurarmos a instalação pois assim poderemos ter várias instacias, caso dê errado a configuração, apague a pasta e repita o processo de criação da pasta build e então faça os seguintes passos novamente.
Agora vamos configurar a instalação do omniOrb no Ubuntu :

$ cd build

$ ../configure --prefix=

No meu caso ficou :

$ ../configure --prefix=/home/valter/Corba/omniOrb/program/

Com isso estamos definindo aonde será a nossa pasta de instação do omniOrb.

Depois compile com o comando 'make', ex:

$ make

Depois de compilar vamos instalar, executando o comando, é necessário logar como root neste comando :

$ sudo make install

Uma coisa deve ficar clara, a parte de configuração pode ser feita de forma automática (que foi como fizemos) ou pode ser feita manualmente, já que fizemos de forma automática teremos que ir aonde construímos o nosso omniOrb, ou seja o nosso /build, então precisamos definir as bibliotecas e executáveis necessários para o omniOrb, então vá para sua pasta /build/src
E dê o comando 'make export', ex :

$ make export

No meu caso ficou :

$ cd /home/valter/Corba/omniOrb/install/omniORB-4.1.4/build/src/
$ make export

Agora vamos configurar o serviço de nomes, essa parte é muito importante, um exemplo de serviço de nomes pode ser visto no arquivo 'sample.cfg', ele sera a base para o nosso serviço de nomes, que terá todas as suas variáveis de configuração no arquivo omniORB.cfg, então faça o seguinte:

Copie o arquivo 'sample.cfg' que fica localizado dentro da pasta aonde foi extraido o omniOrb, no meu caso como inicial ficou :

/home/valter/Corba/omniOrb/install/omniORB-4.1.4/sample.cfg

Copie o sample.cfg para alguma pasta de sua preferência, e renomeie este arquivo de sample.cfg para omniORB.cfg, como iremos rodar o nosso exemplo na mesma máquina é necessário informar isso no arquivo que acabamos de renomear, abra o omniORB.cfg e localize a linha :

InitRef = NameService=corbaname::my.host.name

altere para :

InitRef = NameService=corbaname::localhost

Feito isso agora precisamos informar as variáveis de ambiente que o omniOrb necessita, que são duas :

OMNIORB_CONFIG : Irá conter o caminho o nosso arquivo de configuração, o omniORB.cfg

OMNINAMES_LOGDIR : Irá conter o caminho para aonde deve ser gerado um arquivo log quando o serviço de nomes for iniciado

Para isso execute :

sudo gedit /etc/bash.bashrc

Acesse o arquivo como root com o comando acima e adicione as seguintes linhas (de acordo com o seu contexto é claro) :

export OMNIORB_CONFIG=/home/valter/Corba/omniOrb/program/omniORB.cfg

export OMNINAMES_LOGDIR=/home/valter/Corba/omniOrb/program

Lembrando que você deve alterar os respectitvas caminhos de acordo aonde esta localizado o arquivo omniORB.cfg e aonde você quer que seja criado o log quando o serviço de nomes for iniciado.

Depois disso é bom reiniciar o computador.

Bom, agora vamos construir e executar alguns exemplos apenas para verificarmos se esta correta o nosso ambiente omniOrb.
Os códigos de exemplos estão localizados dentro :

$cd /home/valter/Corba/omniOrb/install/omniORB-4.1.4/src/examples/

Aqui você verá várias pastas contem alguns exemplos de programas que utilizam o omniOrb, mas lembrando que nosso omniOrb foi construido na pasta /build, lembra ?
Então os exemplos que vamos executar estão em :

cd /home/valter/Corba/omniOrb/install/omniORB-4.1.4/build/src/examples/

Isso se dá pois configuramos o nosso omniOrb de forma automática, agora que estamos dentro da pasta examples digite o comando 'make':

$ make

Isso fará que todos os exemplos será compilados, agora entre na pasta echo, dentro dela execute os comandos :

$ ./eg1

Deverá ter a saída :
I said, "Hello!".
The Echo object replied, "Hello!".

Depois execute :
$ ./eg2_impl

Deverá ter a saída :
IOR:010000000d00000049444c3a4563686f3a312e3000000000010000000000000064000000010102000c0000003139322e3136382e322e3300c69700000e000000fe6e14e34c000012df000000000000000200000000000000080000000100000000545441010000001c00000001000000010001000100000001000105090101000100000009010100

Copie esta saída, sim copie TODA a saída.
O IOR é uma referência única ao objeto que queremos acessar através do nosso cliente, note que o terminal ficará aguardando algo, na verdade é o nosso servidor que esta esperando o cliente enviar o IOR para executar uma função que retorna uma string.

Agora iremos executar o cliente, para isso abra outro terminal e digite :
$ ./eg2_clt

No meu caso ficou :
./eg2_clt IOR:010000000d00000049444c3a4563686f3a312e3000000000010000000000000064000000010102000c0000003139322e3136382e322e3300c69700000e000000fe6e14e34c000012df000000000000000200000000000000080000000100000000545441010000001c00000001000000010001000100000001000105090101000100000009010100

Deverá ter como saída:
I said, "Hello!".
The Echo object replied, "Hello!".

Note que no terminal que teve como o comando ./eg2_impl teve como saída :
Upcall Hello!

Informando que recebeu uma chamada do cliente, agora vamos executar um cliente e servidor que estariam em máquinas separadas:

Agora precisamos iniciar o nosso serviço de nomes, então execute :

$ omniNames -start

No meu caso teve como saída :

valter@Eniac:~/Corba/omniOrb/install/omniORB-4.1.4/build/src/examples/echo$ omniNames -start

Tendo como saída no meu caso :

Tue Nov 16 21:42:45 2010:

Starting omniNames for the first time.
Wrote initial log file.
Read log file successfully.
Root context is IOR:010000002b00000049444c3a6f6d672e6f72672f436f734e616d696e672f4e616d696e67436f6e746578744578743a312e300000010000000000000070000000010102000c0000003139322e3136382e322e3300f90a00000b0000004e616d6553657276696365000300000000000000080000000100000000545441010000001c000000010000000100010001000000010001050901010001000000090101000354544108000000f516e34c0100131c
Checkpointing Phase 1: Prepare.
Checkpointing Phase 2: Commit.
Checkpointing completed.

Note que será gerado dois arquivos aonde você definiu o caminho para a variável OMNINAMES_LOGDIR, que novamente, no meu caso ficou em :

/home/valter/Corba/omniOrb/program

Os arquivos gerados são : omninames-Eniac.bak, omninames-Eniac.log (no meu caso, o nome pode ser diferentes para cada computador)

Agora com o nosso serviço de nomes iniciado e rodando vamos abrir outro termianal e executarmos o nosso servidor :

$ ./eg3_impl

Deverá ter como saída um IOR :
IOR:010000000d00000049444c3a4563686f3a312e3000000000010000000000000064000000010102000c0000003139322e3136382e322e33003ed400000e000000fe7118e34c0000135e000000000000000200000000000000080000000100000000545441010000001c00000001000000010001000100000001000105090101000100000009010100

Agora vamos executar o cliente :

$ ./eg3_clt

Como saída, deverá ter :
I said, "Hello!".
The Echo object replied, "Hello!".

Prontinho,rs.

Há mais explicações sobre o omniOrb dentro da pasta ./doc e mais exemplos a serem executados também.

Bem espero que ajude a todos, pois deu um trabalhão descubrir isso tudo,rs.

Gostaria de agradecer ao Allan Vidal e ao Tiago Pasqualini.

Um forte abraço a todos.
3 comentários mais...

Show ao vivo com um holograma no Japão, demais!

por Anônimo , ,

O japão sempre foi um país que admirei não somente pela sua história, mas também pela sua criatividade e os avanços tecnológicos.
Agora, criar um personagem e fazer um show desse personagem com holograma!! Isso é demais!

0 comentários mais...

Procura algo?

Busque aqui para achar algo no site:

Caso não tenha achado o que procurava, me envie um email para que eu possa cuidar disso para você.

Paperblog :Os melhores artigos dos blogs