Demo Blog

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

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

Configurando para receber emails no Evolution

por Anônimo

Evolution é um software gratuito muito utilizado para receber/enviar emails.

Bem para configurá-lo faça a seguintes configurações :
Editar -> Preferências -> Contas -> Adicionar/Editar
Image and video hosting by TinyPic

Image and video hosting by TinyPic

Image and video hosting by TinyPic

Image and video hosting by TinyPic

Image and video hosting by TinyPic

Image and video hosting by TinyPic

Em resumo:
POP:
1. Ativar POP na sua conta do Gmail. Não se esqueça de clicar em Salvar Alterações quando terminar.
2. Configure o seu cliente para corresponder às configurações abaixo:
Servidor de entrada de e-mail (POP3) - requer SSL: pop.gmail.com
Utilizar SSL: Sim
Porta: 995
Servidor de saída de e-mail (SMTP) - requer TLS: smtp.gmail.com(utilizar autenticação)
Utilizar autenticação: Sim
Utilizar STARTTLS: Sim (alguns clientes o chamam de SSL)
Porta: 465 ou 587
Nome da conta: seu nome de usuário do Gmail (incluindo @gmail.com)
Endereço de e-mail: seu endereço de e-mail do Gmail completo (nomedeusuario@gmail.com)
Senha: sua senha do Gmail

A menos que esteja usando o modo recente para fazer download de mensagens em vários clientes, verifique se você optou por não deixar mensagens no servidor. Suas definições nas Configurações do Gmail determinam se as mensagens ficam ou não no servidor, portanto, essa configuração no seu cliente não afetará a forma em que o Gmail lida com seus e-mails.

Lembre-se de que, se o seu cliente não suporta autenticação de SMTP, não será possível enviar mensagens com o seu cliente usando o seu endereço do Gmail.
3. Agora você está pronto para usar POP com a sua conta do Gmail.


IMAP:
Servidor de entrada de e-mail (IMAP) - requer SSL: imap.gmail.com
Utilizar SSL: Sim
Porta: 993
Servidor de saída de e-mail (SMTP) - requer TLS: smtp.gmail.com(usa autenticação)
Usa autenticação: Sim
Utilizar STARTTLS: Sim (alguns clientes o chamam de SSL)
Porta: 465 ou 587
Nome da conta: seu nome de usuário do Gmail (incluindo @gmail.com)
Endereço de e-mail: seu endereço de e-mail do Gmail completo (nomedousuario@gmail.com)
Senha: sua senha do Gmail

Lembre-se de que, se o seu cliente não oferece suporte à autenticação de SMTP, não será possível enviar mensagens dele usando o seu endereço do Gmail.

Sincronizar os seus contatos:
- Clique no painel de contatos do evolution
- No painel lateral, clique com o botão direto e em seguida Novo Catálogo de Endereços
- Altero o tipo para Google
- Preencha com os dados da conta (recomendo usar SSL
- Ao clicar no botão OK, seus contatos do Gmail estarão disponíveis no painel lateral.

O evolution nos trás ainda a opção de sincronizar localmente os contas, com isso mantemos um backup local ou ainda uma cópia para consulta off-line.

Bem é isso.
Abraços.
0 comentários mais...

Video Tutorial : Como carregar as próximas páginas dentro da mesma página web

por Anônimo

Autor Pager é um complemento dísponivel tanto para Firefox quanto Google Chrome que possibilita carregar as próximas páginas de uma determinada página web.

Espero que gostem.

Abraços.

0 comentários mais...

Vídeo Tutorial:Controle seu firefox pelo mouse

por Anônimo

Espero que gostem,rs.

Abraços.

0 comentários mais...

Google Instant Preview–Veja sites em sua busca no Google

por Anônimo

Já faz algum tempo que diversos usuários do Google começaram a experimentar um novo recurso chamado de Instant Previews, agora, lançado oficialmente, a novidade oferece a todos os usuários a possibilidade de visualizar um site a partir da página de busca do Google sem a necessidade de entrar no mesmo.

Sem título

Google Instant Previews

Existem extensões que realizam essa tarefa, e outros serviços de busca oferecem algo semelhante (o Bing exibe uma prévia, mas somente do texto), mas o pessoal do Google decidiu tornar o recurso em algo padrão.
Os previews são gerados em menos de um décimo de segundo e atualizados dinamicamente na medida em que o conteúdo do site muda. Para utilizá-lo o usuário precisa clicar em uma pequena lupa que aparece ao lado de cada link do resultado na busca, ele então exibe um painel do lado direito da página, mostrando uma miniatura do site em questão.

Fonte

0 comentários mais...

Kinect–A nova aposta da Microsoft

por Anônimo

Kinect é um hardware que é acoplado no XBOX 260, aonde ele consegue fazer o reconhecimento de voz e gestos do jogador, uma nova maneira de não apenas jogar, sem controles, mas também de interagir com  vídeos, música de uma forma diferente.

Veja a entrevista completa com o diretor criativo do Kinect, Kudo Tsunoda, aqui.

0 comentários mais...

Rakesh Vaidyanathan, presidente do BRICs Institute

por Anônimo

Uma entrevista com Rakesh Vaidyanathan, a qual gostei muito do ponto de vista do mesmo, vale a pena conferir.

0 comentários mais...

GameTrailers–Saiba tudo sobre os games

por Anônimo

Um site que eu conheço a um certo tempo e gostaria de compartilhar com vocês, com matérias novas todos os dias, vale a pena passar por lá, com certeza,rs.

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