Demo Blog

Google lança livro online sobre Google Web Toolkit e Google App Engine

por Anônimo


Hi everyone,

I'm glad to announce a free, online GWT 2.1 & GAE mini-book. It's
available at
http://code.google.com/p/gwt-gae-book

The book aims to introduce engineers on how to professionally develop
applications using Google Web Toolkit and App Engine by developing a
full real application step by step.

I'd like to thank the following persons for reviewing the contents and
suggesting numerous improvements before making the book public:
Philippe Beaudoin, Christian Goudreau, John Patterson, Zack Grossbart.
Thanks!

Hope you'll find it useful. Looking forward to your feedback and
contributions,
Marius.
0 comentários mais...

50 Free Apps We're Most Thankful For

por Anônimo


50 Free Apps We're Most Thankful For As we prepare to give thanks for our delicious Thanksgiving meals (and impending food comas), let's not forget to pay tribute to the wonderful developers who bring us our favorite free apps.

Earlier this week we asked you to share the free apps you're most thankful for, and you came through with thousands of votes for apps covering the desktop, mobile phone, and devices in between. With a little spreadsheet magic and a few choices of our own, we bring you the top 50 free apps we're all most thankful for. Whether you're celebrating the holiday or not, it's a great list of free software that ought to make for some gluttonous downloading. The popular apps are some of the more obvious, however, so be sure to look further down the list for new free software you may not yet know about. Happy Thanksgiving, everybody!
The 50 Free Apps We're Most Thankful For

1.
Dropbox

See also: Dropbox Syncs and Backs Up Files Between Computers Instantaneously, The Cleverest Ways to Use Dropbox That You're Not Using, and Create a Highly Organized, Synchronized Home Folder with Dropbox
2.
VLC (Video Lan Client)

See also: Master Your Digital Media with VLC, Set a Video as Your Wallpaper with VLC, and VLC 1.0 Records Video from DVDs
3.
Google Chrome

See also: The Power User's Guide to Google Chrome, 2009 Edition, Create Your Own Google Chrome Themes, How and Why Chrome Is Overtaking Firefox Among Power Users, and Top 10 Must-Have Browser Extensions
4.
Firefox

See also: Power User's Guide to Firefox 3, Top 10 Firefox 3.5 Features, and Top 10 Must-Have Browser Extensions
5.
Opera

See also: Opera 11 Beta Introduces Tab Stacking for Customized Grouping, Opera 11 Alpha Brings Chrome-Like Extensions to the Speedy Browser, and Top 10 Must-Have Browser Extensions
6.
Google Apps

See also: Trick Out Google Apps for Your Domain, Seven Easy Ways to Integrate Your Google AppsCollaborate with Co-Workers Using Google Apps Team Edition, A First Look at Google Voice,Top 10 Clever Google Voice Tricks, and Turn Gmail Into Your Ultimate GTD Inbox
7.
Simplenote and Notational Velocity

See also: The Holy Grail of Ubiquitous Plain-Text Capture, Simplenote Offers Synchronized Notes on iPhones-And Now It's Free, and mNote Syncs Your Simplenote Notes with Android Phones
8.
CCleaner

See also: CCleaner 2.0 Decrapifies Your PC, Run CCleaner on a Schedule to Keep Your PC Crap-Free, and CCleaner Enhancer Makes CCleaner Even Better, Now Cleans 270 New Apps
9.
uTorrent

See also: uTorrent 3.0 Alpha Adds Web Interface Support for iPad, Android and How to Boost Your BitTorrent Speed and Privacy
10.
Transmission

See also: Manage Your BitTorrent Downloads with Transmission and Transmission 2.0 Adds a Whole Lot of Stability to the Popular BitTorrent Client
11.
sabnzbd+

See also: How to Get Started with Usenet in Three Simple Steps
12.
Open Office

See also: A First Look at OpenOffice.org 3.0, OpenOffice.org 3.2 Improves Startup Times, Office 2007 Compatibility, and OpenOffice.org 3.1's Usability Tweaks
13.
Skype

See also: our full Skype coverage
14.
Evernote

See also: Expand Your Brain with Evernote and Clever Uses for Evernote
15.
GIMP

See also: Is GIMP better than Photoshop?, Tweak GIMP to be More Like Photoshop, and Cartoonify Photos with the GIMP
16.
KeePass

See also: Best Password Manager: KeePass and Eight Best KeePass Plug-Ins to Master Your Passwords
17.
LastPass

See also: The Intermediate Guide to Mastering Passwords with LastPas
18.
7zip

See also: Hive Five Winner for Best File Compression Tool: 7-Zip
19.
ImgBurn

See also: Download of the Day: ImgBurn (Windows), Hive Five Winner for Best CD and DVD Burning Tool: ImgBurn, and Turn Your PC into a DVD Ripping Monster
20.
Microsoft Security Essentials

See also: Microsoft Security Essentials Ranks as Best-Performing Free Antivirus and Stop Paying for Windows Security; Microsoft's Security Tools Are Good Enough
21.
AutoHotkey

See also: Automate Windows with AutoHotkey, Turn Any Action into a Keyboard Shortcut, and The Best Time-Saving AutoHotkey Tricks You Should Be Using
22.
Pandora

See also: Best Music Discovery Service: Pandora, Discover new music with Pandora, and How to access Pandora from outside the U.S.
23.
FileZilla

See also: Hive Five Winner for Best FTP Client: FileZilla, FTP File Transfer Across Platforms with Filezilla 3.0, and Build a Home FTP Server with FileZilla
24.
TrueCrypt

See also: Best File Encryption Tool: TrueCrypt and Geek to Live: Encrypt your data
25.
Handbrake

See also: Best DVD-Ripping Tool: Handbrake, Rip DVDs to Friendlier Formats with HandBrake, and Calculate the Perfect Handbrake Video Encoding Settings for Your Device
26.
VirtualBox

See also: The Beginner's Guide to Creating Virtual Machines with VirtualBox and How to Run Mac OS X in VirtualBox on Windows
27.
Audacity

See also: Digitize and Clean Your Analog Audio Collection with Audacity, Learn how to use Audacity for podcasting, and Remove Vocals from MP3s with Audacity
28.
Paint.NET

See also: Download of the Day: Paint.NET 3 (Windows), Pinta Brings Paint.NET's Just-Enough Image Editing to Every Computer, and Basic image editing with Paint.NET
29.
iTunes

See also: Geek to Live: iTunes power tips, Install iTunes Without the Extra Bloat, The 23 Best iTunes Add-ons, and our full iTunes coverage
30.
Thunderbird

See also: our full Thunderbird coverage and Backing up Gmail with Thunderbird
31.
Foobar2000

See also: Hack Attack: Roll your own killer audio player with foobar2000 and Screenshot Tour: The beautiful and varied world of foobar2000
32.
Pidgin

See also: Chat Across IM Platforms with Pidgin 2.4, Ten Must-Have Plug-ins to Power Up Pidgin, and Use Dropbox to Sync Your Pidgin Profile Across Multiple PCs
33.
Adium

See also: our full Adium coverage
34.
avast!

See also: Avast Free Antivirus 5.0 Adds Behavior Monitor, Heuristics Engine, and Improved Performance and Free anti-virus roundup
35.
TeamViewer

See also: Download of the Day: TeamViewer (Windows) and TeamViewer Arrives on Android for Small-Screen Remote Control and Tech Support
36.
TweetDeck

See also: Best Twitter Client: TweetDeck, TweetDeck Offers Features Twitter Lacks, and Use Evernote with TweetDeck for Better Twitter Memory
37.
Launchy

See also: Integrate Everything Search Tool and Launchy, Take Launchy beyond application launching, and Screenshot Tour: Tweaking Launchy
38.
Quicksilver

See also: Hack Attack: A beginner's guide to Quicksilver and Top 10 Quicksilver Plug-ins
39.
Instapaper

See also: Battle of the Bookmark-and-Read-Later Apps: Instapaper vs. Read It Later
40.
ReadItLater

See also: Battle of the Bookmark-and-Read-Later Apps: Instapaper vs. Read It Later
41.
XBMC

See also: Build a Silent, Standalone XBMC Media Center On the Cheap, Turbo Charge Your New XBMC Installation, Transform Your Classic Xbox into a Killer Media Center, and Turn Your XBMC Media Center into a Video Game Console
42.
PuTTY

See also: Put PuTTY in the Tray with PuTTY Tray, Add Tabs to PuTTY with PuTTY Connection Manager, and KiTTY Adds Session Saving, Portability, and More to PuTTY
43.
Cyberduck

See also: FTP for Free with Cyberduck and Cyberduck FTP Client Updates with Google Docs Support, New S3 Features
44.
Perian

See also: Perian Makes Nearly Every Video Playable in QuickTime
45.
XAMPP

See also: Run Your Personal Wikipedia from a USB Stick
46.
Windows Live Essentials

See also: First Look at Windows Live Essentials Beta's New Social Features and Lifehacker Faceoff: iLife '11 vs. Live Essentials 2011
47.
Winamp

See also: Manage your music with Winamp and Control Winamp Remotely from Any Browser
48.
TeraCopy

See also: Speed up file copying with TeraCopy and Hive Five Winner for Best Alternative File Copier: TeraCopy
49.
Eclipse

See also: Tips for Using Eclipse Effectively
50.
MediaMonkey

See also: MediaMonkey 3.2 Syncs with More Devices, Adds Auto Folder Watching

And that's the list! Items on this year's list garnered a minimum of ten votes (with a few exceptions), with popular apps pulling in far more. Dropbox took the lead with 137 votes, followed by VLC and 109, and Firefox 97. Happy downloading, and happy Thanksgiving!

Fonte
1 comentários mais...

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...

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